[{"data":1,"prerenderedAt":266},["ShallowReactive",2],{"cats-en":3,"apps-cat-all-en":28},{"id":4,"extension":5,"items":6,"meta":25,"stem":26,"__hash__":27},"categories\u002Fen\u002Fcategories.yml","yml",[7,10,13,16,19,22],{"slug":8,"label":9},"dev-tools","Dev Tools",{"slug":11,"label":12},"ai","AI",{"slug":14,"label":15},"games","Games",{"slug":17,"label":18},"mobile","Mobile",{"slug":20,"label":21},"cli","CLI",{"slug":23,"label":24},"utilities","Utilities",{},"en\u002Fcategories","MvaEfwnqgassJcsI3pKwUkdu-xCj98IMS9cksTLQ_Cw",[29,92,178],{"id":30,"body":31,"category":14,"extension":5,"featured":73,"header":74,"meta":88,"slug":89,"stem":90,"__hash__":91},"apps\u002Fen\u002Fapps\u002Ffifteen-game.yml",[32,55,64],{"name":33,"type":34,"args":35},"Features","features",{"items":36},[37,40,43,46,49,52],{"title":38,"description":39},"3x3 to 6x6 grids","Pick your difficulty. All puzzles are guaranteed solvable.",{"title":41,"description":42},"Multi-tile sliding","Click any tile on the same row or column as the empty cell — all tiles between slide at once.",{"title":44,"description":45},"Score tracking","Move counter and timer. Best score tracked per session.",{"title":47,"description":48},"Keyboard & mouse","WASD, arrow keys, or mouse click. Resizable window with auto-scaling board.",{"title":50,"description":51},"Sound effects","Kenney.nl sound assets. Adjustable volume.",{"title":53,"description":54},"Cross-platform","Linux, macOS (x86_64 + ARM), Windows. Single binary, no dependencies.",{"name":56,"type":57,"args":58},"Controls","code",{"commands":59},[60,61,62,63],"Move tile     WASD \u002F Arrow keys \u002F Mouse click","Navigate menus     WASD \u002F Arrow keys","Select     Enter \u002F Space \u002F Mouse click","Back \u002F Menu     Escape",{"name":65,"type":66,"args":67},"Changelog","changelog",{"entries":68},[69],{"date":70,"version":71,"text":72},"2026-05-02","v0.1.0","Initial release — 3x3 to 6x6 grids, multi-tile sliding, score tracking, sound effects",true,{"name":75,"tagline":76,"description":77,"platforms":78,"installCommand":82,"links":83,"requirements":86,"screenshot":87},"Fifteen Puzzle","A classic sliding tile puzzle with warm, tactile visuals. Built with Rust and macroquad.","3x3 to 6x6 grids, guaranteed solvable puzzles, multi-tile sliding, move counter, timer, best score tracking.",[79,80,81],"Linux","macOS","Windows","curl -fsSL appcrate.dev\u002Ffifteen-game | sh",{"github":84,"download":85},"https:\u002F\u002Fgithub.com\u002Folamedia\u002Ffifteen-game","https:\u002F\u002Fgithub.com\u002Folamedia\u002Ffifteen-game\u002Freleases","Rust binary. ~1.3 MB. MIT License.","\u002Fscreenshots\u002Ffifteen-game.png",{},"fifteen-game","en\u002Fapps\u002Ffifteen-game","35t0GiSlTyuZvDWdFcs6IddoK1XaSDbu44SpBD_td_k",{"id":93,"body":94,"category":8,"extension":5,"featured":73,"header":164,"meta":175,"slug":154,"stem":176,"__hash__":177},"apps\u002Fen\u002Fapps\u002Fprocess-manager.yml",[95,116,131,143,148,158],{"name":33,"type":34,"args":96},{"items":97},[98,101,104,107,110,113],{"title":99,"description":100},"Docker-compose style config","Define services in pm.yaml — command, environment, depends_on, working_dir, restart policy.",{"title":102,"description":103},"Interactive TUI","Navigate services, start\u002Fstop\u002Frestart individually or all at once. Keyboard-driven.",{"title":105,"description":106},"Daemon mode","pm up starts a background daemon. Services keep running after TUI exit.",{"title":108,"description":109},"Per-service logs","pm logs \u003Cservice> tails output. Add -f to follow.",{"title":111,"description":112},"Restart policies","no, on-failure, or always. Exponential backoff: 1s to 32s cap.",{"title":114,"description":115},"Hot reload","pm reload picks up config changes without restarting running services.",{"name":117,"type":57,"args":118},"Usage",{"commands":119},[120,121,122,123,124,125,126,127,128,129,130],"pm                  # launch TUI (default)","pm up               # start all services","pm up api db        # start named services","pm stop             # stop all","pm stop api         # stop named","pm restart          # restart all","pm status           # print status table","pm logs api         # tail logs","pm logs api -f      # follow logs","pm reload           # reload config","pm shutdown         # shut down daemon",{"name":132,"type":57,"args":133},"TUI keybindings",{"commands":134},[135,136,137,138,139,140,141,142],"↑\u002F↓ or k\u002Fj    Navigate services","s \u002F Enter      Start selected","x              Stop selected","r              Restart selected","a              Start all","z              Stop all","R (shift)      Reload config","q              Quit TUI (services keep running)",{"name":144,"type":145,"args":146},"Config example","markdown",{"content":147},"Create `pm.yaml` in your project root:\n\n```yaml\nservices:\n  web:\n    command: python3 -m http.server 8080\n    environment:\n      PYTHONUNBUFFERED: \"1\"\n    depends_on:\n      - logger\n    restart: on-failure\n\n  logger:\n    command: bash -c \"while true; do echo heartbeat; sleep 5; done\"\n```\n\nAll fields except `command` are optional. `working_dir` defaults to the config directory.\n",{"name":149,"type":150,"args":151},"Tags","tags",{"tags":152},[153,154,155,156,157,20],"rust","process-manager","docker-compose","tui","daemon",{"name":65,"type":66,"args":159},{"entries":160},[161],{"date":162,"version":71,"text":163},"2026-04-19","Initial release — daemon, TUI, YAML config, restart policies, per-service logs",{"name":165,"tagline":166,"description":167,"platforms":168,"installCommand":169,"links":170,"requirements":173,"screenshot":174},"pm","Docker-compose-like process manager with TUI dashboard. Runs any command, not limited to Node\u002FBun.","YAML config, dependency ordering, restart policies, interactive TUI, daemon mode, per-service logs.",[79],"curl -fsSL appcrate.dev\u002Fpm | sh",{"github":171,"download":172},"https:\u002F\u002Fgithub.com\u002Folamedia\u002Fprocess-manager","https:\u002F\u002Fgithub.com\u002Folamedia\u002Fprocess-manager\u002Freleases","Rust binary. Linux x86_64. MIT License.","\u002Fscreenshots\u002Fprocess-manager.png",{},"en\u002Fapps\u002Fprocess-manager","5PMiIXgvwDc-grN7Zb_4RczLcgpYExOnBhEVu_m0sLE",{"id":179,"body":180,"category":20,"extension":5,"featured":73,"header":252,"meta":262,"slug":263,"stem":264,"__hash__":265},"apps\u002Fen\u002Fapps\u002Fskills.yml",[181,202,217,234,238],{"name":33,"type":34,"args":182},{"items":183},[184,187,190,193,196,199],{"title":185,"description":186},"Any git source","GitHub, GitLab, self-hosted, SSH, local paths. Not locked to any single provider.",{"title":188,"description":189},"Auto-detect agents","Finds installed coding agents and installs skills to the right places. 13 agents supported.",{"title":191,"description":192},"Interactive prompts","Multi-select skills and agents. Remembers your preferences between runs. Non-interactive mode for CI.",{"title":194,"description":195},"Symlink or copy","One canonical copy with symlinks per agent, or independent copies. Global or project-local scope.",{"title":197,"description":198},"Lock file tracking","Global and local lock files track sources, hashes, timestamps. Update and restore from lock.",{"title":200,"description":201},"Skill discovery","Scans priority directories, falls back to recursive search. YAML frontmatter for metadata.",{"name":117,"type":57,"args":203},{"commands":204},[205,206,207,208,209,210,211,212,213,214,215,216],"$ skills add owner\u002Frepo","$ skills add https:\u002F\u002Fgithub.com\u002Fowner\u002Frepo","$ skills add gitlab:group\u002Frepo","$ skills add .\u002Fmy-skills","$ skills add owner\u002Frepo@my-skill","$ skills add owner\u002Frepo --agent cursor --agent claude-code","$ skills add owner\u002Frepo --all --copy","$ skills add owner\u002Frepo --global","$ skills list --json","$ skills update","$ skills remove my-skill","$ skills init my-new-skill",{"name":218,"type":150,"args":219},"Supported agents",{"tags":220},[221,222,223,224,225,226,227,228,229,230,231,232,233],"Claude Code","Cursor","Codex","OpenCode","Cline","Windsurf","Roo Code","Goose","Augment","Continue","GitHub Copilot","Gemini CLI","Hermes",{"name":235,"type":145,"args":236},"How it works",{"content":237},"Parse any source — GitHub shorthand, full URLs, SSH, GitLab prefixes, local paths. Shallow clone for remote sources.\n\nDiscover SKILL.md files by scanning priority directories first, then falling back to recursive search. Interactive multi-select for skills and agents, with saved preferences between runs.\n\nInstall to a canonical location, then symlink (or copy) to each agent's skills directory. Lock file tracks source, hash, and agent list for updates and reproducibility.\n",{"name":65,"type":66,"args":239},{"entries":240},[241,245,249],{"date":242,"version":243,"text":244},"2026-04-24","v0.3.0","Two-stage install flow, session-persistent preferences, all skills unchecked by default",{"date":246,"version":247,"text":248},"2026-04-15","v0.2.0","Update command, lock file v3, hash-based change detection",{"date":250,"version":71,"text":251},"2026-03-30","Initial release — add, list, remove, init, 13 agents supported",{"name":253,"tagline":254,"description":255,"platforms":256,"installCommand":257,"links":258,"requirements":261},"Skills","Install agent skills from any git source. One command — works with every coding agent.","A standalone CLI that fetches skill definitions (SKILL.md files) from any git repository and installs them for your AI coding agents.",[79],"curl -fsSL appcrate.dev\u002Fskills | sh",{"github":259,"download":260},"https:\u002F\u002Fgithub.com\u002Folamedia\u002Fskills-rs","https:\u002F\u002Fgithub.com\u002Folamedia\u002Fskills-rs\u002Freleases","Rust binary, no runtime dependencies. Requires git installed.",{},"skills","en\u002Fapps\u002Fskills","h_KG2ErtjY5F8QMZLaicnXefr6Fyun-QoLQbH9OXwiw",1777756433983]