From 694abcd2c14cb35596550a6db9584e0f6071ba1d Mon Sep 17 00:00:00 2001 From: OpeItcLoc03 Date: Wed, 6 May 2026 18:19:48 +0000 Subject: [PATCH] meta(tasks): create [project-creation-lifecycle-skill] in claude-skills --- .tasks/STATUS.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/.tasks/STATUS.md b/.tasks/STATUS.md index c535bb8..c310617 100644 --- a/.tasks/STATUS.md +++ b/.tasks/STATUS.md @@ -123,3 +123,34 @@ _Updated: 2026-05-05 (interns-repo-read-skill-updates done — both skills 0.2.0 --- + +## ⚪ [project-creation-lifecycle-skill] — Extend `project-bootstrap` (or add a new `create-project` skill) to cover the **full new-project lifecycle**, not just upgrading an existing folder. + +**Gap surfaced 2026-05-06** при промоушене брейнсторма `factory-bootstrap`: репо `git.kzntsv.site/OpeItcLoc03/factory` был создан ad-hoc (git init + gitea repo create + push), без бутстрапа `.tasks/STATUS.md` и `.wiki/index.md`. Из-за этого `projects-meta-mcp:sync-runner.ts:69` отбрасывал репо как «не проект», и `knowledge_ingest target=factory` / `tasks_create target=factory` валились с «project not in cache». Промоушн встал, пришлось вручную сидить layout через прямые `Write` + push. Это чинится один раз в скиле, а не каждый раз руками. + +**Что должен делать новый flow** (один обход): +1. Создать локальную папку `~/projects//` (валидация: latin, kebab-case, не существует). +2. `git init` + первоначальный `.gitignore` + минимальный `README.md`. +3. Создать гитеа-репо в org/user через Gitea API (auth из `~/.config/projects-mcp/auth.toml`), set remote, push initial commit. +4. Делегировать в `setup-wiki` + `setup-tasks` для канонического layout (или inline-fallback с записью в bootstrap-manifest). +5. `node ~/projects/.common/lib/projects-meta-mcp/dist/sync.js` — re-sync кэша, чтобы новый репо стал виден projects-meta. +6. Опционально: `tasks_create target=_meta slug=-onboarded` — чтобы новый проект засветился на кросс-проектном борде с момента создания. + +**Два варианта дизайна — выбрать в скил-creator:** +- **(a) Extend `project-bootstrap`** — добавить flag `--create` (или авто-detection «папки нет / git remote нет»), который запускает шаги 1–3 и 5–6. Существующий path для «уже существующая папка → upgrade» сохраняется. Плюс: один скил для всего lifecycle. Минус: SKILL.md распухает. +- **(b) Новый скил `create-project`** — отдельный entry-point, в конце дёргает `project-bootstrap` для шагов 4 (layout). Плюс: single-responsibility. Минус: ещё один скил в реестре, юзеру выбирать какой звать. + +Склоняюсь к (a) — `project-bootstrap` уже знает про оба режима init/upgrade (см. SKILL.md Step 0), четвёртый под-режим «greenfield + remote create» естественно туда ложится. Но это решение уровня skill-creator. + +**Acceptance criteria:** +- Новый flow прогоняется на пустой папке: `~/projects/.test-greenfield/` → один вызов скила → конец: репо в gitea, layout в `.wiki/`/`.tasks/`, виден в `mcp__projects-meta__meta_status`. +- Существующий upgrade-mode не сломан (regression-test на `.factory/` после этого фикса — re-run должен быть no-op). +- README скила обновлён. + +**Status:** ready +**Where I stopped:** (not started) +**Next action:** skill-creator: выбрать вариант (a) extend project-bootstrap vs (b) new create-project; реализовать; smoke-test на пустой папке. +**Branch:** n/a + + +---