[{"data":1,"prerenderedAt":281},["ShallowReactive",2],{"apps-ru":3,"site-ru":242,"categories-ru":260},[4,69,157],{"id":5,"body":6,"category":48,"extension":49,"featured":50,"header":51,"meta":65,"slug":66,"stem":67,"__hash__":68},"apps\u002Fru\u002Fapps\u002Ffifteen-game.yml",[7,30,39],{"name":8,"type":9,"args":10},"Возможности","features",{"items":11},[12,15,18,21,24,27],{"title":13,"description":14},"Поля от 3×3 до 6×6","Выбирайте сложность. Все комбинации гарантированно решаемы.",{"title":16,"description":17},"Мульти-сдвиг плиток","Нажмите на любую плитку в том же ряду или столбце, что и пустая ячейка — все промежуточные плитки сдвинутся.",{"title":19,"description":20},"Отслеживание результатов","Счётчик ходов и таймер. Лучший результат сохраняется за сессию.",{"title":22,"description":23},"Клавиатура и мышь","WASD, стрелки или мышь. Окно масштабируется с автоподстройкой поля.",{"title":25,"description":26},"Звуковые эффекты","Звуки от Kenney.nl. Регулируемая громкость.",{"title":28,"description":29},"Кроссплатформенность","Linux, macOS (x86_64 + ARM), Windows. Один бинарник, без зависимостей.",{"name":31,"type":32,"args":33},"Управление","code",{"commands":34},[35,36,37,38],"Сдвиг плитки     WASD \u002F Стрелки \u002F Клик мыши","Навигация по меню     WASD \u002F Стрелки","Выбор     Enter \u002F Пробел \u002F Клик мыши","Назад \u002F Меню     Escape",{"name":40,"type":41,"args":42},"История версий","changelog",{"entries":43},[44],{"date":45,"version":46,"text":47},"2026-05-02","v0.1.0","Первый релиз — поля от 3×3 до 6×6, мульти-сдвиг, учёт результатов, звуковые эффекты","games","yml",true,{"name":52,"tagline":53,"description":54,"platforms":55,"installCommand":59,"links":60,"requirements":63,"screenshot":64},"Fifteen Puzzle","Классическая головоломка «Пятнашки» с тёплой графикой. Написана на Rust и macroquad.","Поля от 3×3 до 6×6, гарантированно решаемые комбинации, мульти-сдвиг плиток, счётчик ходов, таймер, лучший результат.",[56,57,58],"Linux","macOS","Windows","curl -fsSL appcrate.dev\u002Ffifteen-game | sh",{"github":61,"download":62},"https:\u002F\u002Fgithub.com\u002Folamedia\u002Ffifteen-game","https:\u002F\u002Fgithub.com\u002Folamedia\u002Ffifteen-game\u002Freleases","Бинарный файл Rust. ~1.3 МБ. Лицензия MIT.","\u002Fscreenshots\u002Ffifteen-game.png",{},"fifteen-game","ru\u002Fapps\u002Ffifteen-game","6Ig0EuBC43LQTppy_HW05Z_pM_yVB6WmLwB2yKLK_fc",{"id":70,"body":71,"category":142,"extension":49,"featured":50,"header":143,"meta":154,"slug":131,"stem":155,"__hash__":156},"apps\u002Fru\u002Fapps\u002Fprocess-manager.yml",[72,93,108,120,125,136],{"name":8,"type":9,"args":73},{"items":74},[75,78,81,84,87,90],{"title":76,"description":77},"Конфигурация в стиле docker-compose","Описывайте сервисы в pm.yaml — команда, переменные окружения, depends_on, рабочая директория, политика перезапуска.",{"title":79,"description":80},"Интерактивный TUI","Навигация по сервисам, запуск\u002Fостановка\u002Fперезапуск по отдельности или всех сразу. Управление с клавиатуры.",{"title":82,"description":83},"Режим демона","pm up запускает фоновый демон. Сервисы продолжают работать после выхода из TUI.",{"title":85,"description":86},"Логи по сервисам","pm logs \u003Cсервис> показывает вывод. Добавьте -f для потоковой трансляции.",{"title":88,"description":89},"Политики перезапуска","no, on-failure или always. Экспоненциальная задержка: от 1с до 32с.",{"title":91,"description":92},"Горячая перезагрузка","pm reload подхватывает изменения конфига без перезапуска работающих сервисов.",{"name":94,"type":32,"args":95},"Использование",{"commands":96},[97,98,99,100,101,102,103,104,105,106,107],"pm                  # запустить TUI (по умолчанию)","pm up               # запустить все сервисы","pm up api db        # запустить выбранные","pm stop             # остановить все","pm stop api         # остановить выбранный","pm restart          # перезапустить все","pm status           # таблица статусов","pm logs api         # логи сервиса","pm logs api -f      # следить за логами","pm reload           # перезагрузить конфиг","pm shutdown         # остановить демон",{"name":109,"type":32,"args":110},"Клавиши TUI",{"commands":111},[112,113,114,115,116,117,118,119],"↑\u002F↓ или k\u002Fj   Навигация по сервисам","s \u002F Enter      Запустить выбранный","x              Остановить выбранный","r              Перезапустить выбранный","a              Запустить все","z              Остановить все","R (shift)      Перезагрузить конфиг","q              Выход из TUI (сервисы продолжают работать)",{"name":121,"type":122,"args":123},"Пример конфигурации","markdown",{"content":124},"Создайте `pm.yaml` в корне проекта:\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\nВсе поля кроме `command` опциональны. `working_dir` по умолчанию — директория конфига.\n",{"name":126,"type":127,"args":128},"Теги","tags",{"tags":129},[130,131,132,133,134,135],"rust","process-manager","docker-compose","tui","daemon","cli",{"name":40,"type":41,"args":137},{"entries":138},[139],{"date":140,"version":46,"text":141},"2026-04-19","Первый релиз — демон, TUI, YAML-конфиг, политики перезапуска, логи по сервисам","dev-tools",{"name":144,"tagline":145,"description":146,"platforms":147,"installCommand":148,"links":149,"requirements":152,"screenshot":153},"pm","Менеджер процессов в стиле docker-compose с TUI-панелью. Запускает любые команды.","YAML-конфиг, порядок зависимостей, политики перезапуска, интерактивный TUI, демон, логи по сервисам.",[56],"curl -fsSL appcrate.dev\u002Fpm | sh",{"github":150,"download":151},"https:\u002F\u002Fgithub.com\u002Folamedia\u002Fprocess-manager","https:\u002F\u002Fgithub.com\u002Folamedia\u002Fprocess-manager\u002Freleases","Бинарный файл Rust. Linux x86_64. Лицензия MIT.","\u002Fscreenshots\u002Fprocess-manager.png",{},"ru\u002Fapps\u002Fprocess-manager","GGz362ARS7ezGHwrtQ44KiuYzj1oZ-p_9Pu8iRuEHhk",{"id":158,"body":159,"category":135,"extension":49,"featured":50,"header":228,"meta":238,"slug":239,"stem":240,"__hash__":241},"apps\u002Fru\u002Fapps\u002Fskills.yml",[160,181,192,209,213],{"name":8,"type":9,"args":161},{"items":162},[163,166,169,172,175,178],{"title":164,"description":165},"Любой git-источник","GitHub, GitLab, Bitbucket, self-hosted, SSH, локальные пути. Не привязан к одному провайдеру.",{"title":167,"description":168},"Авто-определение агентов","Находит установленные агенты (Cursor, Claude Code, Codex, Windsurf, Cline и др.) и устанавливает навыки в нужные места.",{"title":170,"description":171},"Интерактивные запросы","Множественный выбор навыков и агентов. Запоминает предпочтения между запусками. Неинтерактивный режим для CI.",{"title":173,"description":174},"Симлинк или копия","Одна каноническая копия с симлинками для каждого агента или независимые копии. Глобальная или проектная область.",{"title":176,"description":177},"Lock-файл","Глобальные и локальные lock-файлы отслеживают источники, хеши, временные метки. Обновление и восстановление из lock.",{"title":179,"description":180},"Обнаружение навыков","Рекурсивный поиск SKILL.md файлов в любой структуре репозитория. YAML frontmatter для метаданных.",{"name":94,"type":32,"args":182},{"commands":183},[184,185,186,187,188,189,190,191],"$ skills add owner\u002Frepo","$ skills add https:\u002F\u002Fgitlab.com\u002Fgroup\u002Frepo","$ skills add .\u002Flocal-skills --global","$ skills add owner\u002Frepo --agent cursor --skill coding-mode -y","$ skills list --json","$ skills update","$ skills remove old-skill","$ skills init my-new-skill",{"name":193,"type":127,"args":194},"Поддерживаемые агенты",{"tags":195},[196,197,198,199,200,201,202,203,204,205,206,207,208],"Claude Code","Cursor","Codex","OpenCode","Cline","Windsurf","Roo Code","Goose","Augment","Continue","GitHub Copilot","Gemini CLI","Hermes",{"name":210,"type":122,"args":211},"Почему мы это создали",{"content":212},"У каждого AI-агента свой каталог навыков\u002Fправил. Если вы используете несколько агентов или переключаетесь между ними, приходится копировать SKILL.md файлы вручную. Если вы ведёте общий репозиторий навыков, стандартного способа установки из него нет.\n\nSkills — единый бинарник, который понимает конвенции каталогов всех основных агентов. Укажите на любой git-репозиторий (или локальную папку), выберите нужное, и он сделает остальное — клонирование, обнаружение, санитизация, симлинки, отслеживание в lock-файле и обновления.\n\nНаписан на Rust. Без Node, без Python, без runtime. Скачал, запустил, готово.\n",{"name":214,"type":41,"args":215},"Журнал изменений",{"entries":216},[217,221,225],{"date":218,"version":219,"text":220},"2026-04-28","v0.3.0","Двухэтапный процесс установки, сохранение предпочтений в сессии, все навыки отключены по умолчанию",{"date":222,"version":223,"text":224},"2026-04-15","v0.2.0","Команда update, lock-файл v3, определение изменений по хешу",{"date":226,"version":46,"text":227},"2026-03-30","Первый релиз — add, list, remove, init, поддержка 12 агентов",{"name":229,"tagline":230,"description":231,"platforms":232,"installCommand":233,"links":234,"requirements":237},"Skills","Установка навыков AI-агентов из любого git-источника. Одна команда — работает с каждым агентом.","Один бинарник, который понимает конвенции каталогов всех основных агентов. Укажите на любой git-репозиторий, выберите нужное, и он сделает остальное.",[56,57,58],"curl -fsSL appcrate.dev\u002Fskills | sh",{"github":235,"download":236},"https:\u002F\u002Fgithub.com\u002Fappcrate\u002Fskills","https:\u002F\u002Fappcrate.dev\u002Fskills\u002Freleases","Бинарник на Rust, без runtime-зависимостей. ~4 МБ. Требуется установленный git.",{},"skills","ru\u002Fapps\u002Fskills","Y7rxBFRorPlZCWMNANPBiGDGCU4fBrPhnz3itRcFIxE",{"id":243,"extension":49,"hero":244,"meta":247,"stem":248,"values":249,"__hash__":259},"site\u002Fru\u002Fsite.yml",{"title":245,"subtitle":246},"Простые приложения. Каждое — под свою задачу.","Инструменты, игры и утилиты — ничего лишнего.",{},"ru\u002Fsite",[250,253,256],{"title":251,"description":252},"Одна задача — одно приложение","Без попыток стать платформой. Каждый инструмент решает ровно одну задачу.",{"title":254,"description":255},"Честные цены","Без скрытых платежей. Плати один раз или пользуйся бесплатно — зависит от приложения.",{"title":257,"description":258},"Без телеметрии","Никакого трекинга. Краш-репорты — только если вы сами включите. Данные остаются у вас.","9k4Coq6ImxHDY_7-0Ae2xtiKA6FL3dK7P1s0h9d8amg",{"id":261,"extension":49,"items":262,"meta":278,"stem":279,"__hash__":280},"categories\u002Fru\u002Fcategories.yml",[263,265,268,270,273,275],{"slug":142,"label":264},"Инструменты разработчика",{"slug":266,"label":267},"ai","ИИ",{"slug":48,"label":269},"Игры",{"slug":271,"label":272},"mobile","Мобильные",{"slug":135,"label":274},"CLI",{"slug":276,"label":277},"utilities","Утилиты",{},"ru\u002Fcategories","r8O8ao0LdLLhzuiSt0zGgDX3hRd8PRZb-v6NpWG9E9g",1777756433983]