From a2a5b3a01d022a8490eee3efdb8bb264e89fe891 Mon Sep 17 00:00:00 2001 From: Alex Ant Date: Fri, 27 Mar 2026 23:39:33 +0500 Subject: [PATCH] rework for c9s & blagorost --- CLAUDE.md | 1 + bmad-c9s/CLAUDE.md | 101 ++++++ bmad-c9s/README.md | 169 ++++++++++ bmad-c9s/commands/_README.md | 11 + bmad-c9s/commands/architecture.md | 9 + bmad-c9s/commands/brainstorm.md | 9 + bmad-c9s/commands/c9s-init.md | 9 + bmad-c9s/commands/c9s-master-review.md | 7 + .../commands/c9s-monorepo-component-git.md | 9 + bmad-c9s/commands/c9s-push-results.md | 7 + bmad-c9s/commands/c9s-status.md | 7 + bmad-c9s/commands/c9s-submit-for-review.md | 8 + bmad-c9s/commands/create-agent.md | 7 + bmad-c9s/commands/create-story.md | 11 + bmad-c9s/commands/create-ux-design.md | 9 + bmad-c9s/commands/create-workflow.md | 7 + bmad-c9s/commands/dev-story.md | 9 + bmad-c9s/commands/prd.md | 9 + bmad-c9s/commands/product-brief.md | 9 + bmad-c9s/commands/research.md | 9 + bmad-c9s/commands/solutioning-gate-check.md | 9 + bmad-c9s/commands/sprint-planning.md | 9 + bmad-c9s/commands/tasks-documents-time.md | 9 + bmad-c9s/commands/tech-spec.md | 9 + bmad-c9s/commands/workflow-init.md | 9 + bmad-c9s/commands/workflow-status.md | 7 + bmad-c9s/config/c9s-config.template.yaml | 37 +++ bmad-c9s/docs/FORMAT-CAPITAL-GITHUB.md | 164 ++++++++++ bmad-c9s/docs/GIT-COMMITS-POLICY.md | 75 +++++ bmad-c9s/docs/TASKS-DOCUMENTS-TIME-POLICY.md | 81 +++++ bmad-c9s/skills/bmb/builder/SKILL.md | 39 +++ bmad-c9s/skills/bmm/analyst/SKILL.md | 57 ++++ bmad-c9s/skills/bmm/architect/SKILL.md | 55 ++++ bmad-c9s/skills/bmm/developer/SKILL.md | 62 ++++ bmad-c9s/skills/bmm/pm/SKILL.md | 56 ++++ bmad-c9s/skills/bmm/scrum-master/SKILL.md | 46 +++ bmad-c9s/skills/bmm/ux-designer/SKILL.md | 55 ++++ .../skills/cis/creative-intelligence/SKILL.md | 50 +++ bmad-c9s/skills/core/bmad-master-c9s/SKILL.md | 95 ++++++ .../skills/core/c9s-master-review/SKILL.md | 58 ++++ .../core/c9s-monorepo-component-git/SKILL.md | 107 ++++++ .../skills/core/c9s-results-push/SKILL.md | 47 +++ .../core/c9s-submit-for-review/SKILL.md | 41 +++ .../bmm-workflow-status.c9s.template.yaml | 53 +++ bmad-c9s/templates/issue.template.md | 26 ++ .../templates/results_commits.template.yaml | 16 + .../templates/sprint-status.c9s.template.yaml | 14 + bmad-c9s/templates/story.template.md | 22 ++ bmad-c9s/utils/helpers-ru.md | 140 ++++++++ install-v6.ps1 | 307 ++++++++---------- install-v6.sh | 241 +++++++------- 51 files changed, 2123 insertions(+), 290 deletions(-) create mode 100644 bmad-c9s/CLAUDE.md create mode 100644 bmad-c9s/README.md create mode 100644 bmad-c9s/commands/_README.md create mode 100644 bmad-c9s/commands/architecture.md create mode 100644 bmad-c9s/commands/brainstorm.md create mode 100644 bmad-c9s/commands/c9s-init.md create mode 100644 bmad-c9s/commands/c9s-master-review.md create mode 100644 bmad-c9s/commands/c9s-monorepo-component-git.md create mode 100644 bmad-c9s/commands/c9s-push-results.md create mode 100644 bmad-c9s/commands/c9s-status.md create mode 100644 bmad-c9s/commands/c9s-submit-for-review.md create mode 100644 bmad-c9s/commands/create-agent.md create mode 100644 bmad-c9s/commands/create-story.md create mode 100644 bmad-c9s/commands/create-ux-design.md create mode 100644 bmad-c9s/commands/create-workflow.md create mode 100644 bmad-c9s/commands/dev-story.md create mode 100644 bmad-c9s/commands/prd.md create mode 100644 bmad-c9s/commands/product-brief.md create mode 100644 bmad-c9s/commands/research.md create mode 100644 bmad-c9s/commands/solutioning-gate-check.md create mode 100644 bmad-c9s/commands/sprint-planning.md create mode 100644 bmad-c9s/commands/tasks-documents-time.md create mode 100644 bmad-c9s/commands/tech-spec.md create mode 100644 bmad-c9s/commands/workflow-init.md create mode 100644 bmad-c9s/commands/workflow-status.md create mode 100644 bmad-c9s/config/c9s-config.template.yaml create mode 100644 bmad-c9s/docs/FORMAT-CAPITAL-GITHUB.md create mode 100644 bmad-c9s/docs/GIT-COMMITS-POLICY.md create mode 100644 bmad-c9s/docs/TASKS-DOCUMENTS-TIME-POLICY.md create mode 100644 bmad-c9s/skills/bmb/builder/SKILL.md create mode 100644 bmad-c9s/skills/bmm/analyst/SKILL.md create mode 100644 bmad-c9s/skills/bmm/architect/SKILL.md create mode 100644 bmad-c9s/skills/bmm/developer/SKILL.md create mode 100644 bmad-c9s/skills/bmm/pm/SKILL.md create mode 100644 bmad-c9s/skills/bmm/scrum-master/SKILL.md create mode 100644 bmad-c9s/skills/bmm/ux-designer/SKILL.md create mode 100644 bmad-c9s/skills/cis/creative-intelligence/SKILL.md create mode 100644 bmad-c9s/skills/core/bmad-master-c9s/SKILL.md create mode 100644 bmad-c9s/skills/core/c9s-master-review/SKILL.md create mode 100644 bmad-c9s/skills/core/c9s-monorepo-component-git/SKILL.md create mode 100644 bmad-c9s/skills/core/c9s-results-push/SKILL.md create mode 100644 bmad-c9s/skills/core/c9s-submit-for-review/SKILL.md create mode 100644 bmad-c9s/templates/bmm-workflow-status.c9s.template.yaml create mode 100644 bmad-c9s/templates/issue.template.md create mode 100644 bmad-c9s/templates/results_commits.template.yaml create mode 100644 bmad-c9s/templates/sprint-status.c9s.template.yaml create mode 100644 bmad-c9s/templates/story.template.md create mode 100644 bmad-c9s/utils/helpers-ru.md diff --git a/CLAUDE.md b/CLAUDE.md index 5ed767e..d564bd8 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -22,6 +22,7 @@ claude-code-bmad-skills/ │ ├── hooks/ # Session/tool hooks │ └── examples/ # Example project templates ├── bmad-v6/ # Legacy/source BMAD implementation +├── bmad-c9s/ # Coopenomics: Capital/GitHub results, RU, .c9s/ (см. bmad-c9s/CLAUDE.md). Ревью: `on_review` только по явной команде оператора — скилл `c9s-submit-for-review`, см. bmad-c9s/docs/TASKS-DOCUMENTS-TIME-POLICY.md §2 ├── docs/ # GitHub Pages documentation site └── install-v6.sh/ps1 # Installation scripts ``` diff --git a/bmad-c9s/CLAUDE.md b/bmad-c9s/CLAUDE.md new file mode 100644 index 0000000..a158730 --- /dev/null +++ b/bmad-c9s/CLAUDE.md @@ -0,0 +1,101 @@ +# BMAD-c9s (Coopenomics) — руководство для проекта + +Пакет **bmad-c9s** — адаптация идей **BMAD v6** под: + +- **русский язык** общения и артефактов (по желанию команды — см. `default_language` в конфиге); +- **репозиторий результатов Capital**, синхронизируемый с БД через GitHub (`project` / `issue` / `story` в канонических путях); +- **разделение канона Capital и операционки BMAD**: в **`{base}/.c9s/`** — только статусы воркфлоу и служебные YAML; **вся** продуктовая проза (бриф, PRD, исследования, техспека, UX) — как **требования (story)** в **`{base}/requirements/*.md`** (см. FORMAT). + +Источник методологии v6 (англ.): каталог `bmad-v6/` в этом репозитории — **не править** как эталон; для c9s используйте скиллы из `bmad-c9s/skills/`. + +--- + +## Как подключать скиллы (Cursor / Claude Code) + +Копируйте или симлинкуйте нужные `SKILL.md` в каталог скиллов редактора (см. документацию Cursor Skills). Минимальный набор: + +| Скилл | Когда включать | +|--------|----------------| +| `bmad-master-c9s` | Старт сессии, маршрутизация по фазам, инициализация `.c9s/` | +| `c9s-master-review` | Только роль «мастер»: перевод задачи `on_review` → `done` | +| `c9s-submit-for-review` | **Только по команде оператора:** задача → `on_review` + commit/push в results | +| `c9s-results-push` | **Опционально:** явный commit/push; **базово** — автофиксация по [GIT-COMMITS-POLICY](docs/GIT-COMMITS-POLICY.md) | +| `c9s-monorepo-component-git` | Монорепо: ветки `component/…` от `dev`, merge в `dev` по команде; хэш в `results_commits.yaml` **в results** (`.c9s/`, см. GIT-COMMITS-POLICY §2.4) | +| Роли BMM / CIS / builder | По фазе задачи (см. таблицу ниже) | + +Полные пути: + +- `bmad-c9s/skills/core/bmad-master-c9s/SKILL.md` +- `bmad-c9s/skills/core/c9s-master-review/SKILL.md` +- `bmad-c9s/skills/core/c9s-submit-for-review/SKILL.md` +- `bmad-c9s/skills/core/c9s-results-push/SKILL.md` +- `bmad-c9s/skills/core/c9s-monorepo-component-git/SKILL.md` +- `bmad-c9s/skills/bmm/*/SKILL.md` +- `bmad-c9s/skills/cis/creative-intelligence/SKILL.md` +- `bmad-c9s/skills/bmb/builder/SKILL.md` + +--- + +## Жёсткое правило: хранилище — файлы, не чат + +1. **Канон Capital** (проект, компонент, задача, требование) — только **`.md`** под `results_root`, пути из [docs/FORMAT-CAPITAL-GITHUB.md](docs/FORMAT-CAPITAL-GITHUB.md). +2. **Бриф, PRD, исследование, техспека, мозговой штурм, UX на уровне продукта** — **story** в **`{base}/requirements/{slug}.md`** (`type: story`, `content_format`, `status`). Агент **ведёт** эти файлы при проработке сверху вниз. +3. **Задача** (`issues/{slug}.md`) — отдельная **dev-единица** после планирования: в **теле** файла весь контекст для **одного** сеанса выполнения (вводный промпт, краткое исследование, критерии, ссылки на `requirements/*.md` при необходимости). Подпапок `issues/…-requirements/` и отдельных story «на задачу» **нет**. +4. **`{base}/.c9s/`** — **не** для содержательных документов: только `workflow-status.yaml`, при необходимости `sprint-status.yaml` и т.п. +5. Длинные списки **не** оставлять только в чате — в **`requirements/`** или в **теле** нужного **`issues/*.md`**. +6. **Наименование требований (`requirements/*.md`) — обязательно:** поле **`title`** в frontmatter задаётся **только на русском языке**. Заголовок должен быть **чётким и понятным** (по нему сразу ясно, о чём документ). Не использовать английский как «замену смысла»: вместо голых `PRD`, `Tech spec`, `UX doc` — русские формулировки («Описание требований к …», «Техническое задание на …», «Сценарии и макеты …» и т.п.). Техническое имя файла (`storySlug`) — транслит от русского заголовка по правилам Capital (см. FORMAT). +7. **Документы и крупные шаги — только через задачи (`issues/*.md`), строго:** PRD, техспека, архитектурный документ, бриф, исследование, пакет UX и любой аналогичный шаг **не начинать** без создания **задачи** в момент старта работы; содержание — в **`requirements/*.md`** (story), процесс и критерии — в теле задачи. Подробно: [docs/TASKS-DOCUMENTS-TIME-POLICY.md](docs/TASKS-DOCUMENTS-TIME-POLICY.md). +8. **Учёт времени и `estimate`:** в задачах **`estimate: 0`**, если пользователь **явно** не указал иное. Задачу создаём и **пушим** при начале работы; в frontmatter новой задачи — **`created_by`**, **`submaster`**, **`creators`** по [TASKS-DOCUMENTS-TIME-POLICY.md](docs/TASKS-DOCUMENTS-TIME-POLICY.md) §1. Перевод в **`on_review`** — **только** по **явной команде оператора** (скилл **`c9s-submit-for-review`** или прямой запрос); агент **не** ставит **`on_review`** автоматически после своей работы. Тогда — **`updated_at`** + commit/push. Система считает фактическое время до **`on_review`**. Подробно: тот же документ §1–2. +9. **Git — репозиторий результатов:** после значимых правок агент **сам** делает **commit** и **push** (сообщения на русском). Скилл **`c9s-results-push`** — для явных отдельных операций; см. [docs/GIT-COMMITS-POLICY.md](docs/GIT-COMMITS-POLICY.md). +10. **Git — монорепозиторий кода:** без изменений — только скилл **`c9s-monorepo-component-git`**. + +--- + +## Конфигурация + +1. Скопируйте [config/c9s-config.template.yaml](config/c9s-config.template.yaml) в корень **активного** репозитория результатов как `c9s-config.yaml` (или задайте путь в глобальном конфиге редактора). +2. Ключевые поля: `results_root`, `active_project_slug` (slug корневого проекта = имя папки под `results_root`), `coopname`, `username`. +3. **Прод vs тест**: смените `results_root` на каталог с `results-test` или продовым `results`. + +Подробности разрешения путей и обновления `updated_at`: [utils/helpers-ru.md](utils/helpers-ru.md). + +--- + +## Фазы и роли (кратко) + +| Фаза | Роли (скиллы) | Куда писать | +|------|----------------|-------------| +| 1 Анализ | analyst, creative-intelligence | Сначала **`issues/*.md`** на шаг, затем **`requirements/*.md`** (story); см. [TASKS-DOCUMENTS-TIME-POLICY](docs/TASKS-DOCUMENTS-TIME-POLICY.md); при необходимости — **`project.md`** / **`component.md`** + `updated_at` | +| 2 Планирование | pm, ux-designer | **`requirements/*.md`** + задачи **`issues/*.md`** на каждый оформляемый шаг (PRD, техспека, …) | +| 3 Архитектура | architect | Задача **`issues/*.md`**, затем **`requirements/*.md`** (story / диаграммы) | +| 4 Реализация | scrum-master, developer | **`issues/*.md`** (всё для задачи в теле файла), код в **монорепе**, не в results | +| Операционка | bmad-master-c9s, sm | **`.c9s/*.yaml`** (фазы, спринт), не смешивать с story | + +--- + +## Статусы задач и роль мастера + +- Обычные роли **не ставят** статус задачи **`done`**. +- **`on_review`** — **не** автоматически после работы агента: только когда **оператор** явно командует передать задачу мастеру (**`c9s-submit-for-review`** / «отправь на ревью»). До этого задача остаётся в **`in_progress`** (или **`todo`**). +- Скилл **`c9s-master-review`** может перевести **`on_review` → `done`** (и при необходимости откатить в `in_progress`). + +Подробности и ограничения Capital при импорте: [docs/FORMAT-CAPITAL-GITHUB.md](docs/FORMAT-CAPITAL-GITHUB.md). + +--- + +## Команды-обёртки + +Каталог [commands/](commands/) — короткие сценарии на русском; полная логика в соответствующих скиллах и в `bmad-v6/commands/` (англ.) при необходимости детализации. + +--- + +## Git (результаты и код) + +- Коммиты/push, задачи и время: [docs/GIT-COMMITS-POLICY.md](docs/GIT-COMMITS-POLICY.md), [docs/TASKS-DOCUMENTS-TIME-POLICY.md](docs/TASKS-DOCUMENTS-TIME-POLICY.md) +- Журнал merge → `dev` для взносов (ручной учёт для кооператива): шаблон [templates/results_commits.template.yaml](templates/results_commits.template.yaml) → **`results_commits.yaml` в репозитории результатов** (по умолчанию **`.c9s/results_commits.yaml`** у активного проекта или путь **`results_commits_log`** в `c9s-config.yaml`); **не** в монорепозитории кода — см. [docs/GIT-COMMITS-POLICY.md](docs/GIT-COMMITS-POLICY.md) §2.4 + +## Ссылки на код монорепозитория (Coopenomics) + +- Форматы файлов: `monocoop/components/controller/.../file-format.service.ts` +- Синхронизация GitHub: `github-sync.service.ts` +- Подготовка markdown (content_format, issue): план `capital-md-sync-bmad-prep` в `.cursor/plans/` diff --git a/bmad-c9s/README.md b/bmad-c9s/README.md new file mode 100644 index 0000000..ffe481f --- /dev/null +++ b/bmad-c9s/README.md @@ -0,0 +1,169 @@ +# BMAD-c9s — как пользоваться + +Пакет связывает **методологию BMAD** (фазы от анализа до кода) с **репозиторием результатов BLAGOROST** (Markdown + GitHub) и **русским** контекстом. Скиллы подсказывают агенту, *куда* писать файлы и *какую роль* играть, чтобы артефакты потом нормально импортировались в систему. + +--- + + +## Классическая цепочка BMAD (концептуально) + +В жизни проектов шаги **сжимают**, **переставляют** или **пропускают**; ниже — **идеальный скелет**: зачем каждая роль и **что именно** она передаёт следующей (всё в каноне c9s: сначала **`issues/*.md`** на шаг работы, затем текст — в **`requirements/*.md`** как **story**, плюс обновления **`project.md` / `component.md`** при уточнении видения). + +**1. Аналитик (`analyst`) и при необходимости CIS (`creative-intelligence`)** +*Зачем первыми:* до «что строим» нужно понять **проблему**, **пользователя**, **контекст**, **ограничения** и **гипотезы** — иначе PRD и архитектура будут про несуществующую задачу. +*Что формируют:* задачи под шаг («исследование…», «бриф…») и **story** в `requirements/`: бриф, заметки интервью, исследование рынка/конкурентов, формулировка проблемы, гипотезы ценности. **CIS** добавляет **варианты идей**, SWOT, мозговой штурм — тоже через задачу и story, если это отдельная смысловая сессия. +*Передача PM:* не «сырой чат», а **согласованный слой смысла** в файлах: кто страдает, от чего, что уже пробовали, какие допущения, какие открытые вопросы. PM опирается на это, чтобы не выдумывать требования в вакууме. + +**2. PM (`pm`), параллельно или следом — UX (`ux-designer`)** +*Что получает от аналитики:* проблему, контекст, гипотезы (и при необходимости — идеи из CIS). +*Что формирует:* задачи «Подготовить PRD…», «Техспека…» и сами **story** в `requirements/`: **PRD** (цели, scope, приоритеты, риски в продуктовой логике), **техспека** на уровне «что система должна уметь» без привязки к конкретным сервисам. **UX** — задачи на сценарии, CJM, потоки (текст/diagram в story), критерии доступности; пересечение с PM: продуктовые формулировки и границы опыта. +*Передача архитектору / см:* **что** должно получиться для пользователя и бизнеса, **в каком порядке важнее**, какие **нефункциональные ожидания** уже видны (без детальной внутренней схемы). + +**3. Архитектор (`architect`)** +*Что получает:* утверждённое или черновое видение из PRD/техспеки и UX (границы возможностей, интеграции на словах). +*Что формирует:* задачу на архитектурный срез и **story** с **границами системы**, **компонентами**, **потоками данных**, **ADR**, схемами (MERMAID и т.д. по FORMAT). Здесь отвечают на «**как** это устроено внутри», сохраняя совместимость с тем, что уже решили PM/UX. +*Передача см / разработке:* картина для **декомпозиции на работы** и оценки рисков реализации (что тянуть первым, где неопределённость). + +**4. Scrum Master (`scrum-master`)** +*Что получает:* бэклог смысла из предыдущих фаз (часто уже есть черновые **issues** от PM). +*Что формирует:* цели спринта (в т.ч. через `.c9s/sprint-status.yaml`), **уточнение формулировок задач**, готовность к разработке (`todo` / `in_progress`, **`estimate: 0`** по политике c9s, если не оговорено иное). +*Передача developer:* **issues** с полным телом под **один сеанс выполнения**, ссылки на нужные **`requirements/*.md`**. + +**5. Developer (`developer`)** +*Что получает:* конкретную **задачу** и связанные требования. +*Что формирует:* код в **монорепозитории**, обновления в **`issues/*.md`** (итог в теле, **`in_progress`** до команды оператора); **`on_review`** — только после **`/c9s-submit-for-review`**; **не** дублирует продуктовую прозу в `.c9s/`. + +**Связка цепочки:** `analyst` / CIS → **pm** (+ при необходимости **ux-designer**) → **architect** → **scrum-master** → **developer**. Переходы фиксируйте через **`/c9s-status`** и **`workflow-status.yaml`**, чтобы следующий сеанс знал фазу; при малом объёме несколько ролей может взять один сеанс, но **артефакты и задачи** лучше не смешивать без явной пометки в файлах. + +--- + + +## С чего начать (минимум для теста) + +1. **Установите скиллы и команды** из корня репозитория `claude-code-bmad-skills`: + - macOS/Linux: `./install-v6.sh` + - Windows: `.\install-v6.ps1` + В `~/.claude/` появятся `skills/bmad/`, `commands/bmad/`, `config/bmad/` (копия из `bmad-c9s/`). + +2. **Откройте в IDE репозиторий результатов** (тот, где лежит дерево `results/` или тестовый клон) — либо сам `claude-code-bmad-skills`, если гоняете только методологию на пустой заготовке. + +3. **Скопируйте конфиг** + `bmad-c9s/config/c9s-config.template.yaml` → в **корень репозитория результатов** как `c9s-config.yaml` и заполните: + - `results_root` — абсолютный путь к корню клона с `results/` + - `active_project_slug` — имя папки проекта первого уровня под `results/` (как в Capital) + - `coopname`, **`username`** — для новых **`issues/*.md`** в frontmatter: **`created_by`**, **`submaster`**, **`creators`** (см. [TASKS-DOCUMENTS-TIME-POLICY.md](docs/TASKS-DOCUMENTS-TIME-POLICY.md) §1) + +4. **Перезапустите Claude Code** (или Cursor с подключёнными скиллами), откройте проект с `c9s-config.yaml`. + +5. **Первый запрос к агенту** (выберите формулировку): + - Вызов команды: **`/c9s-init`** + - или: «Инициализируй bmad-c9s по `c9s-config.yaml`» + Агент должен опереться на скилл **`bmad-master-c9s`**, создать `{кореньАктивногоПроекта}/.c9s/` (операционка), стартовый `workflow-status.yaml` и при необходимости пустой **`requirements/`** для будущих story. + +6. **Проверка состояния:** **`/c9s-status`** — должен показать пути, фазу и **какой скилл логично включить дальше**. + +**Главная точка входа в методологию — скилл `bmad-master-c9s`.** Остальные скиллы — «роли» по фазам; без конфига и `.c9s/` оркестратору не за что зацепиться. + +--- + +## Что вы получите после инициализации + +| Что | Где | Зачем | +|-----|-----|--------| +| `c9s-config.yaml` | корень репозитория результатов | Пути к `results`, slug проекта, идентификаторы | +| `.c9s/workflow-status.yaml` (и при необходимости другие YAML) | внутри папки активного Capital-проекта | **Только** операционка BMAD: фазы, спринт — **не** текст требований | +| **`requirements/*.md`** | `{base}/requirements/` | **Все** содержательные артефакты: бриф, PRD, техспека, мозговой штурм, UX — как **story** (`type: story`, `content_format`, frontmatter по FORMAT) | +| Задачи (dev-единица, контекст в теле) | `issues/*.md` | Канон Capital; без подпапок `*-requirements/` | +| `project.md` / `component.md` | под `results_root` | Описание проекта/компонента | + +**Правило:** агент **создаёт** story в `requirements/` и **ведёт** их до реализации (обновляет текст и `updated_at`); цикл «сформулировал требование → реализовал» идёт по этим же файлам и связанным `issues/`. Длинные списки — только в `.md`, не в чате. + +--- + +## Скиллы и когда их звать + +| Скилл (папка) | Когда использовать | +|----------------|-------------------| +| **bmad-master-c9s** | Старт, `/c9s-init`, `/c9s-status`, «с чего начать», смена фазы | +| **c9s-master-review** | Только роль мастера: задача в **`on_review` → `done`** (исполнители **не** ставят `done`) | +| **c9s-submit-for-review** | **Оператор:** явная команда → задача **`on_review`** + commit/push (агент **не** ставит ревью сам) | +| **analyst** | Фаза 1: проблема, бриф, исследование | +| **creative-intelligence** | Фаза 1: мозговой штурм, идеи, SWOT | +| **pm** | Фаза 2: PRD, приоритеты, tech-spec в контексте плана | +| **ux-designer** | Фаза 2: сценарии, UX, доступность | +| **architect** | Фаза 3: архитектура, границы, схемы (mermaid и т.д. в разрешённых местах) | +| **scrum-master** | Фаза 4: спринт, разбиение, истории | +| **developer** | Фаза 4: реализация (код — в **монорепе**, не в `results`) | +| **builder** | Мета: новые скиллы/шаблоны под c9s | + +В Cursor можно явно написать: «Следуй скиллу bmad-master-c9s» или «Роль analyst из bmad-c9s». + +--- + +## Сценарии использования + +### Сценарий A — Первый прогон «с нуля» + +1. Заполнить `c9s-config.yaml`. +2. `/c9s-init`. +3. `/c9s-status` — убедиться, что фаза и пути верные. +4. Сформулировать цель (например: «Опиши проблему и гипотезы для фичи X») и работать через **analyst** / **creative-intelligence** по политике c9s: **сначала** задача **`issues/*.md`**, **затем** **story** в **`requirements/{slug}.md`** (не только проза в `requirements/` без issue). +5. Дальше — **pm** / **architect** дополняют или дробят story и задачи по FORMAT; импорт в Capital проверяется по каноническим путям. + +### Сценарий B — Уже есть проект в `results/` + +1. Проверить, что `active_project_slug` совпадает с папкой проекта. +2. `/c9s-init` (добавит `.c9s/` и при отсутствии — `requirements/`, не ломая существующие md). +3. `/c9s-status` → дальше по рекомендованной фазе (часто **pm** или **architect**). + +### Сценарий C — Только методология, без реального Capital-дерева + +1. Временно задать `results_root` на любую папку и создать минимальную структуру вручную **или** завести **`requirements/`** и писать story даже без полного дерева Capital. +2. Иметь в виду: без канонических путей импорт в Capital не проверить — это режим «отладка промптов и скиллов». + +### Сценарий D — От агента к мастеру (два шага) + +1. Агент закончил черновик — задача остаётся в **`in_progress`** (оператор читает PRD, правит вручную, просит доработки и т.д.). +2. Когда оператор **готов** передать задачу мастеру: явная команда (**`/c9s-submit-for-review`**, «отправь задачу … на ревью») → агент ставит **`on_review`**, **`updated_at`**, commit/push в results ([TASKS-DOCUMENTS-TIME-POLICY.md](docs/TASKS-DOCUMENTS-TIME-POLICY.md) §2). +3. Мастер вызывает **`c9s-master-review`**: **`done`** или возврат в **`in_progress`**. + +## Команды (slash) + +Файлы в [commands/](commands/) — короткие сценарии; полная логика в соответствующих **SKILL.md**. + +| Команда | Скилл | Назначение | +|---------|--------|------------| +| `/c9s-init` | bmad-master-c9s | Конфиг, `.c9s/` (YAML), при необходимости каталог `requirements/` | +| `/c9s-status` | bmad-master-c9s | Сводка и рекомендация следующего скилла | +| `/c9s-submit-for-review` | c9s-submit-for-review | Оператор: задача → **`on_review`** + commit/push (не автоматически после агента) | +| `/prd`, `/architecture`, `/create-story`, … | роли BMM и др. | Как в BMAD v6, но с опорой на c9s и русские обёртки | + +Подробные англоязычные тексты команд — в `bmad-v6/commands/` (эталон, не менять в рамках c9s). + +--- + +## Документация рядом + +| Файл | Содержание | +|------|------------| +| [CLAUDE.md](CLAUDE.md) | Обзор пакета, таблица фаз, правила хранения | +| [docs/FORMAT-CAPITAL-GITHUB.md](docs/FORMAT-CAPITAL-GITHUB.md) | Канон путей и frontmatter | +| [utils/helpers-ru.md](utils/helpers-ru.md) | Разрешение корня проекта, `updated_at`, hash | +| [commands/_README.md](commands/_README.md) | Общие шаги перед работой по командам | + +--- + +## Частые вопросы + +**Почему агент «не знает», куда писать?** +Нет `c9s-config.yaml` в корне открытого проекта или не вызван `/c9s-init` — оркестратор не привязан к дереву. + +**Можно ли обойтись одним скиллом?** +Для навигации и инициализации — да, **`bmad-master-c9s`**. Для качественной роли (архитектор, PM) лучше явно переключать скилл фазы. + +**Где эталон BMAD на английском?** +Каталог `bmad-v6/` в родительском репозитории — только справка; рабочая логика для Coopenomics — в `bmad-c9s/`. + +--- + +Удачного теста: **`/c9s-init`** → **`/c9s-status`** → одна короткая задача для **analyst** с новым файлом **`requirements/brief-*.md`** (полный frontmatter story по FORMAT). diff --git a/bmad-c9s/commands/_README.md b/bmad-c9s/commands/_README.md new file mode 100644 index 0000000..67646e2 --- /dev/null +++ b/bmad-c9s/commands/_README.md @@ -0,0 +1,11 @@ +# Команды bmad-c9s (русский) + +Каждый файл — краткий сценарий. Полная методология: `bmad-v6/commands/*.md` (англ.). + +Общие шаги перед работой: + +1. Активируй соответствующий **скилл** из `bmad-c9s/skills/`. +2. Прочитай [docs/FORMAT-CAPITAL-GITHUB.md](../docs/FORMAT-CAPITAL-GITHUB.md), [docs/GIT-COMMITS-POLICY.md](../docs/GIT-COMMITS-POLICY.md) и [utils/helpers-ru.md](../utils/helpers-ru.md). +3. Пиши содержание в **файлы story** под **`requirements/`** (и `issues/` по канону); в **`.c9s/`** — только YAML/статусы воркфлоу, не брифы и не PRD. +4. Git: [c9s-push-results.md](c9s-push-results.md), [c9s-monorepo-component-git.md](c9s-monorepo-component-git.md). +5. Задачи и время: [tasks-documents-time.md](tasks-documents-time.md), передача на ревью мастеру: [c9s-submit-for-review.md](c9s-submit-for-review.md). diff --git a/bmad-c9s/commands/architecture.md b/bmad-c9s/commands/architecture.md new file mode 100644 index 0000000..65aedae --- /dev/null +++ b/bmad-c9s/commands/architecture.md @@ -0,0 +1,9 @@ +# /architecture (c9s) + +**Скилл:** `c9s-bmm-architect` + +**Фаза:** 3 + +**Выход:** `requirements/architecture-*.md` с явным `content_format` (MARKDOWN / MERMAID / …). + +**Детали:** `bmad-v6/commands/architecture.md` diff --git a/bmad-c9s/commands/brainstorm.md b/bmad-c9s/commands/brainstorm.md new file mode 100644 index 0000000..bf5c696 --- /dev/null +++ b/bmad-c9s/commands/brainstorm.md @@ -0,0 +1,9 @@ +# /brainstorm (c9s) + +**Скилл:** `c9s-creative-intelligence` (или `c9s-bmm-analyst`) + +**Фаза:** 1 + +**Выход:** **`requirements/brainstorm-{slug}.md`** (story, `content_format: MARKDOWN`) + +**Детали:** `bmad-v6/commands/brainstorm.md` diff --git a/bmad-c9s/commands/c9s-init.md b/bmad-c9s/commands/c9s-init.md new file mode 100644 index 0000000..b35872a --- /dev/null +++ b/bmad-c9s/commands/c9s-init.md @@ -0,0 +1,9 @@ +# /c9s-init + +**Скилл:** `bmad-master-c9s` + +**Цель:** создать `c9s-config.yaml` (из шаблона), каталог `.c9s/` (только YAML/операционка), начальный `workflow-status`, при отсутствии — **`requirements/`** для story. + +**Шаги:** см. раздел `/c9s-init` в `skills/core/bmad-master-c9s/SKILL.md`. + +**Шаблоны:** `config/c9s-config.template.yaml`, `templates/bmm-workflow-status.c9s.template.yaml`. diff --git a/bmad-c9s/commands/c9s-master-review.md b/bmad-c9s/commands/c9s-master-review.md new file mode 100644 index 0000000..e72d73d --- /dev/null +++ b/bmad-c9s/commands/c9s-master-review.md @@ -0,0 +1,7 @@ +# /c9s-master-review + +**Скилл:** `c9s-master-review` + +**Цель:** ревью задач в `on_review`, перевод в `done` или откат в `in_progress`, обновление `updated_at` в `issues/*.md`. + +**Ограничение:** импорт в Capital может отклонить смену статуса по правам — см. скилл. diff --git a/bmad-c9s/commands/c9s-monorepo-component-git.md b/bmad-c9s/commands/c9s-monorepo-component-git.md new file mode 100644 index 0000000..63b253e --- /dev/null +++ b/bmad-c9s/commands/c9s-monorepo-component-git.md @@ -0,0 +1,9 @@ +# c9s-monorepo-component-git + +Работа с **монорепозиторием кода**: создание ветки **`component/…`** от **`dev`**, коммиты только в ней, по команде — **merge в `dev`**, запись полного SHA merge в **`results_commits.yaml`** в **репозитории результатов** (по умолчанию **`.c9s/results_commits.yaml`** у проекта; см. GIT-COMMITS-POLICY §2.4), затем commit/push **results**. + +Полная логика: скилл `bmad-c9s/skills/core/c9s-monorepo-component-git/SKILL.md`. + +Политика: `bmad-c9s/docs/GIT-COMMITS-POLICY.md`. + +Прямые коммиты в `dev` **запрещены**. diff --git a/bmad-c9s/commands/c9s-push-results.md b/bmad-c9s/commands/c9s-push-results.md new file mode 100644 index 0000000..f83cdba --- /dev/null +++ b/bmad-c9s/commands/c9s-push-results.md @@ -0,0 +1,7 @@ +# c9s-push-results + +**Опционально:** отдельный `commit`/`push` в **репозитории результатов** по явной просьбе (особое сообщение, повторный push). + +По умолчанию агент **уже** коммитит и пушит после правок — см. `bmad-c9s/docs/GIT-COMMITS-POLICY.md` §1. + +Скилл: `bmad-c9s/skills/core/c9s-results-push/SKILL.md`. diff --git a/bmad-c9s/commands/c9s-status.md b/bmad-c9s/commands/c9s-status.md new file mode 100644 index 0000000..ebbb095 --- /dev/null +++ b/bmad-c9s/commands/c9s-status.md @@ -0,0 +1,7 @@ +# /c9s-status + +**Скилл:** `bmad-master-c9s` + +**Цель:** показать активный `results_root`, фазу по `.c9s/workflow-status.yaml`, рекомендованный следующий скилл. + +**Шаги:** раздел `/c9s-status` в `skills/core/bmad-master-c9s/SKILL.md`. diff --git a/bmad-c9s/commands/c9s-submit-for-review.md b/bmad-c9s/commands/c9s-submit-for-review.md new file mode 100644 index 0000000..bce15b5 --- /dev/null +++ b/bmad-c9s/commands/c9s-submit-for-review.md @@ -0,0 +1,8 @@ +# c9s-submit-for-review + +**Оператор** явно передаёт задачу мастеру: статус **`on_review`**, новый **`updated_at`**, **commit + push** в репозиторий результатов. + +Не путать с «агент закончил черновик» — **`on_review`** только после **твоей** команды (прочитал PRD, проверил результат и т.д.). + +Скилл: `bmad-c9s/skills/core/c9s-submit-for-review/SKILL.md` +Политика: `bmad-c9s/docs/TASKS-DOCUMENTS-TIME-POLICY.md` §2. diff --git a/bmad-c9s/commands/create-agent.md b/bmad-c9s/commands/create-agent.md new file mode 100644 index 0000000..05385e7 --- /dev/null +++ b/bmad-c9s/commands/create-agent.md @@ -0,0 +1,7 @@ +# /create-agent (c9s) + +**Скилл:** `c9s-bmb-builder` + +**Цель:** описать нового агента/роль как скилл в `bmad-c9s/skills/` с русским `SKILL.md`. + +**Детали:** `bmad-v6/commands/create-agent.md` diff --git a/bmad-c9s/commands/create-story.md b/bmad-c9s/commands/create-story.md new file mode 100644 index 0000000..3f926ca --- /dev/null +++ b/bmad-c9s/commands/create-story.md @@ -0,0 +1,11 @@ +# /create-story (c9s) + +**Скилл:** `c9s-bmm-scrum-master` или `c9s-bmm-pm` + +**Фаза:** 2–4 + +**Выход:** новый файл `requirements/{slug}.md` или `issues/{issue}-requirements/{slug}.md` по [FORMAT](../docs/FORMAT-CAPITAL-GITHUB.md); шаблон `templates/story.template.md`. + +**Обязательно:** `content_format`, `hash`, `updated_at`. + +**Детали:** `bmad-v6/commands/create-story.md` diff --git a/bmad-c9s/commands/create-ux-design.md b/bmad-c9s/commands/create-ux-design.md new file mode 100644 index 0000000..17de187 --- /dev/null +++ b/bmad-c9s/commands/create-ux-design.md @@ -0,0 +1,9 @@ +# /create-ux-design (c9s) + +**Скилл:** `c9s-bmm-ux-designer` + +**Фаза:** 2–3 + +**Выход:** `requirements/ux-*.md` (MARKDOWN/MERMAID), ссылки на мокапы вне results при необходимости. + +**Детали:** `bmad-v6/commands/create-ux-design.md` diff --git a/bmad-c9s/commands/create-workflow.md b/bmad-c9s/commands/create-workflow.md new file mode 100644 index 0000000..76d790a --- /dev/null +++ b/bmad-c9s/commands/create-workflow.md @@ -0,0 +1,7 @@ +# /create-workflow (c9s) + +**Скилл:** `c9s-bmb-builder` + +**Цель:** добавить или изменить воркфлоу в пакете `bmad-c9s` (команда + скилл + ссылка на FORMAT). + +**Детали:** `bmad-v6/commands/create-workflow.md` diff --git a/bmad-c9s/commands/dev-story.md b/bmad-c9s/commands/dev-story.md new file mode 100644 index 0000000..c6d56a0 --- /dev/null +++ b/bmad-c9s/commands/dev-story.md @@ -0,0 +1,9 @@ +# /dev-story (c9s) + +**Скилл:** `c9s-bmm-developer` + +**Фаза:** 4 + +**Цель:** реализация в **монорепозитории**; в results — обновление связанного **`issues/*.md`** (тело, **`updated_at`**, статус **`in_progress`** при активной работе). Статус **`on_review`** агент **не** выставляет — только по команде оператора (**`/c9s-submit-for-review`**, см. `commands/c9s-submit-for-review.md` и [TASKS-DOCUMENTS-TIME-POLICY.md](../docs/TASKS-DOCUMENTS-TIME-POLICY.md) §2). **`done`** — только скилл **`c9s-master-review`**. + +**Детали:** `bmad-v6/commands/dev-story.md` (канон BMAD); для статусов и времени — bmad-c9s выше. diff --git a/bmad-c9s/commands/prd.md b/bmad-c9s/commands/prd.md new file mode 100644 index 0000000..b53f455 --- /dev/null +++ b/bmad-c9s/commands/prd.md @@ -0,0 +1,9 @@ +# /prd (c9s) + +**Скилл:** `c9s-bmm-pm` + +**Фаза:** 2 + +**Выход:** PRD как **требования (story)** в **`requirements/*.md`** (`type: story`, `content_format: MARKDOWN`); при росте — несколько связанных story; затем декомпозиция в **`issues/*.md`** при необходимости. Не использовать `.c9s/` для текста PRD. + +**Детали:** `bmad-v6/commands/prd.md`, шаблон логики `bmad-v6/templates/prd.md` diff --git a/bmad-c9s/commands/product-brief.md b/bmad-c9s/commands/product-brief.md new file mode 100644 index 0000000..309273c --- /dev/null +++ b/bmad-c9s/commands/product-brief.md @@ -0,0 +1,9 @@ +# /product-brief (c9s) + +**Скилл:** `c9s-bmm-analyst` + +**Фаза:** 1 + +**Выход:** **`requirements/product-brief-{slug}.md`** (story, `content_format: MARKDOWN`); при необходимости — ключевые тезисы дублировать/сжать в теле **`project.md`** + `updated_at`. + +**Детали:** `bmad-v6/commands/product-brief.md` diff --git a/bmad-c9s/commands/research.md b/bmad-c9s/commands/research.md new file mode 100644 index 0000000..cd8e9bb --- /dev/null +++ b/bmad-c9s/commands/research.md @@ -0,0 +1,9 @@ +# /research (c9s) + +**Скилл:** `c9s-bmm-analyst` + +**Фаза:** 1 + +**Выход:** **`requirements/research-{slug}.md`** (story, `content_format: MARKDOWN`) + +**Детали:** `bmad-v6/commands/research.md` diff --git a/bmad-c9s/commands/solutioning-gate-check.md b/bmad-c9s/commands/solutioning-gate-check.md new file mode 100644 index 0000000..0f35d8e --- /dev/null +++ b/bmad-c9s/commands/solutioning-gate-check.md @@ -0,0 +1,9 @@ +# /solutioning-gate-check (c9s) + +**Скилл:** `c9s-bmm-architect` + `c9s-bmm-pm` + +**Фаза:** 3 + +**Выход:** чек-лист как **story** в **`requirements/gate-check-{slug}.md`** (`content_format: MARKDOWN`) со ссылками на существующие story/issues. + +**Детали:** `bmad-v6/commands/solutioning-gate-check.md` diff --git a/bmad-c9s/commands/sprint-planning.md b/bmad-c9s/commands/sprint-planning.md new file mode 100644 index 0000000..c39ff95 --- /dev/null +++ b/bmad-c9s/commands/sprint-planning.md @@ -0,0 +1,9 @@ +# /sprint-planning (c9s) + +**Скилл:** `c9s-bmm-scrum-master` + +**Фаза:** 4 + +**Выход:** `.c9s/sprint-status.yaml` (шаблон `templates/sprint-status.c9s.template.yaml`), обновления `issues/*.md` (`estimate`, `status`, `updated_at`). + +**Детали:** `bmad-v6/commands/sprint-planning.md` diff --git a/bmad-c9s/commands/tasks-documents-time.md b/bmad-c9s/commands/tasks-documents-time.md new file mode 100644 index 0000000..2e90fb8 --- /dev/null +++ b/bmad-c9s/commands/tasks-documents-time.md @@ -0,0 +1,9 @@ +# Задачи под документы и учёт времени + +Строгое правило: PRD, архитектура, бриф, UX-пакет и т.п. — **сначала** `issues/*.md`, **затем** `requirements/*.md`. + +`estimate: 0` по умолчанию; старт — push задачи. **`on_review`** — **только** по команде оператора: **`/c9s-submit-for-review`** или явная формулировка (см. `commands/c9s-submit-for-review.md`). + +Новая задача **`issues/*.md`:** в frontmatter — **`created_by`**, **`submaster`**, **`creators`** = **`username`** из конфига ([§1](../docs/TASKS-DOCUMENTS-TIME-POLICY.md)). + +Полный текст: `bmad-c9s/docs/TASKS-DOCUMENTS-TIME-POLICY.md`. diff --git a/bmad-c9s/commands/tech-spec.md b/bmad-c9s/commands/tech-spec.md new file mode 100644 index 0000000..d395f7b --- /dev/null +++ b/bmad-c9s/commands/tech-spec.md @@ -0,0 +1,9 @@ +# /tech-spec (c9s) + +**Скилл:** `c9s-bmm-pm` + +**Фаза:** 2 + +**Выход:** **`requirements/tech-spec-*.md`** (story, `content_format: MARKDOWN`); уточнения и версии — правки того же или новых story, не `.c9s/`. + +**Детали:** `bmad-v6/commands/tech-spec.md` diff --git a/bmad-c9s/commands/workflow-init.md b/bmad-c9s/commands/workflow-init.md new file mode 100644 index 0000000..c1ee896 --- /dev/null +++ b/bmad-c9s/commands/workflow-init.md @@ -0,0 +1,9 @@ +# /workflow-init (c9s) + +**Эквивалент:** `/c9s-init` + +**Скилл:** `bmad-master-c9s` + +Инициализация bmad-c9s в репозитории результатов: конфиг, `.c9s/`, статус воркфлоу. + +См. `commands/c9s-init.md`. diff --git a/bmad-c9s/commands/workflow-status.md b/bmad-c9s/commands/workflow-status.md new file mode 100644 index 0000000..7bc8dab --- /dev/null +++ b/bmad-c9s/commands/workflow-status.md @@ -0,0 +1,7 @@ +# /workflow-status (c9s) + +**Эквивалент:** `/c9s-status` + +**Скилл:** `bmad-master-c9s` + +См. `commands/c9s-status.md`. diff --git a/bmad-c9s/config/c9s-config.template.yaml b/bmad-c9s/config/c9s-config.template.yaml new file mode 100644 index 0000000..f9cc85f --- /dev/null +++ b/bmad-c9s/config/c9s-config.template.yaml @@ -0,0 +1,37 @@ +# Скопируйте в корень репозитория результатов как c9s-config.yaml +# или укажите путь к этому файлу в настройках агента. + +# Абсолютный путь к каталогу-корню клона репозитория результатов +results_root: /Users/USER/dacom-code/foundation/results + +# Slug активного корневого проекта = имя папки первого уровня под results_root +# (совпадает с generateSlug(title) корневого project.md) +active_project_slug: my-project-slug + +# Идентификация в frontmatter задач/требований +coopname: your-coop +# Аккаунт в кооперативе (blockchain username). Должен совпадать с тем, что в каждой новой issues/*.md: +# created_by: +# submaster: +# creators: [] +# Без этих трёх полей с корректным username учёт времени в Capital не работает. +# То же значение — в results_commits.yaml → username при учёте merge в dev. +username: your-username + +# Язык артефактов и общения по умолчанию +default_language: ru + +# Опционально: относительный путь к вложенному компоненту от корня проекта +# Пример: components/backend-api +# active_component_path: "" + +# --- Монорепозиторий кода (скилл c9s-monorepo-component-git) --- +# Абсолютный путь к корню git монорепозитория (монорепо кода; журнал merge НЕ здесь) +# monorepo_root: /Users/USER/dacom-code/foundation/monocoop +# Имя каталога компонента под components/ (desktop, controller, sdk, …) +# active_component_git_slug: desktop +# Журнал merge → dev для ручной подачи взносов: YAML в репозитории результатов. +# Относительно {results_root}/{active_project_slug} или абсолютный путь. По умолчанию — .c9s/results_commits.yaml +# results_commits_log: .c9s/results_commits.yaml +# Последний зафиксированный SHA merge (дубль; канон — файл results_commits_log) +# last_merge_to_dev_commit_hash: "" diff --git a/bmad-c9s/docs/FORMAT-CAPITAL-GITHUB.md b/bmad-c9s/docs/FORMAT-CAPITAL-GITHUB.md new file mode 100644 index 0000000..c04981a --- /dev/null +++ b/bmad-c9s/docs/FORMAT-CAPITAL-GITHUB.md @@ -0,0 +1,164 @@ +# Спецификация markdown для Capital ↔ GitHub (bmad-c9s) + +Документ фиксирует **канон путей и frontmatter** для репозитория результатов, согласованный с импортом в контроллере Coopenomics (расширение **capital**). Реализация: `FileFormatService`, `GitHubSyncService` в монорепозитории. + +**Связанная подготовка controller:** план `capital-md-sync-bmad-prep` — явный `content_format` у story, расширенный набор полей при создании/обновлении issue/story из Git, политика **без поля `id` в markdown задачи** (канон идентификации в Git — **`hash`**; человекочитаемый `id` задачи живёт в БД и может появиться в файле после цикла DB→Git, если экспорт изменится). + +--- + +## 1. Корень репозитория и slug + +- **`results_root`** — абсолютный путь к клону репозитория результатов (прод или тест), задаётся в `c9s-config.yaml`. +- **`parentSlug`** — slug от **названия** корневого проекта (транслитерация кириллицы, как в `generateSlug` на бэкенде). Совпадает с именем каталога первого уровня: `{results_root}/{parentSlug}/`. +- **`componentSlug`** — slug дочернего проекта-компонента. + +Смена **`title`** у сущности меняет slug и **путь файла**; синхронизация использует индекс файлов для переименований. + +--- + +## 2. Дерево путей (канон) + +| Сущность | Путь относительно `results_root` | +|----------|-----------------------------------| +| Корневой проект | `{parentSlug}/project.md` | +| Компонент | `{parentSlug}/components/{componentSlug}/component.md` | +| Задачи | только под проектом/компонентом: `{base}/issues/{issueSlug}.md` | +| Требования уровня проекта/компонента | `{base}/requirements/{storySlug}.md` | + +Здесь **`base`** = `{parentSlug}` для корня или `{parentSlug}/components/{componentSlug}` для компонента. + +**`project_hash` в задаче и требовании** для компонента — hash **проекта компонента** (не корневого проекта), в соответствии с данными Capital. + +**bmad-c9s:** отдельных файлов «требований к задаче» и путей вида `issues/{issueSlug}-requirements/` **нет**. Сама задача — единица декомпозиции на **один** сеанс выполнения (один промпт разработчика): весь контекст для реализации, краткое исследование перед работой, критерии приёмки и ссылки на продуктовые **`requirements/*.md`** (если нужно) — **в теле** `{base}/issues/{issueSlug}.md` под frontmatter. + +### 2.1. Требования (story) как носитель продуктовой прозы уровня выше задачи + +В методологии **bmad-c9s** бриф, PRD, исследование, архитектурные срезы, UX на уровне продукта — это **story** в **`{base}/requirements/{storySlug}.md`** (`type: story`, **`content_format`**, статус **`pending`** / **`completed`** / **`cancelled`**). Это **не** дублируется отдельными story на каждую задачу: задача ссылается на них при необходимости, но **описание работ** живёт в **`issues/*.md`**. + +### 2.2. Язык и заголовки требований (bmad-c9s, обязательно) + +Для **всех** файлов **`{base}/requirements/{storySlug}.md`**: в frontmatter поле **`title`** — **только на русском языке**. Это основное **человекочитаемое наименование** документа; формулировка **чёткая и понятная** (краткий предметный заголовок, по которому без догадок понятно содержание). Имя файла (`storySlug`) при ручном создании — транслитерация русского заголовка по правилам slug (как на бэкенде); не задавать **`title`** на английском ради «удобного» slug. + +--- + +## 3. Что не импортируется из Git в БД как project/issue/story + +Каталоги вроде **`results/`**, **`meetings/`**, **`messages/`** и прочие произвольные папки **не проходят** тот же импорт, что канонические markdown сущностей. Их содержимое не следует считать «автоматически в Capital». + +**Операционные файлы bmad-c9s** (статусы фаз BMAD, служебные YAML) — в **`{base}/.c9s/`**. Они **не** импортируются как story/issue. Содержательные документы уровня продукта — в **`requirements/`**; контекст выполнения задачи — в **теле** **`issues/*.md`**, а не в `.c9s/` и не в подпапках у `issues/`. + +--- + +## 4. Обязательность `updated_at` + +При **любом** осмысленном редактировании файла, который должен затянуться в БД при импорте Git→Capital, выставляйте **`updated_at`** в frontmatter в **новое** значение **ISO 8601** (как в примерах: `2026-03-27T13:32:02.225Z`). + +Логика на бэкенде: обновление сущности выполняется, если `updated_at` в файле **строго новее**, чем в БД. + +--- + +## 5. Статусы и приоритеты (строго эти строки) + +**Задача (`issue`):** `backlog`, `todo`, `in_progress`, `on_review`, `done`, `canceled`. + +**Требование (`story`):** `pending`, `completed`, `cancelled`. + +**Приоритет задачи:** `urgent`, `high`, `medium`, `low`. + +--- + +## 6. Поля frontmatter (построчный формат) + +Парсер на бэкенде — **простой построчный** `key: value`. Массивы в одной строке: `creators: [user1, user2]`. Избегайте многострочного YAML в frontmatter. + +### 6.1. Проект / компонент (`project.md` / `component.md`) + +| Поле | Обязательность | +|------|----------------| +| `type` | `project` | +| `title` | да | +| `hash` | да | +| `coopname` | да | +| `parent_hash` | да (у корня — нулевой hash из практики команды) | +| `created_at`, `updated_at` | рекомендованы | +| Тело | описание проекта/компонента (markdown) | + +Статусы проекта в смысле blockchain **в этих файлах через текущий `projectToMarkdown` не сериализуются**; менять жизненный цикл проекта в Capital — через UI/API, если иначе не согласовано. + +### 6.2. Задача (`issue`) + +| Поле | Примечание | +|------|------------| +| `type` | `issue` | +| `title` | да | +| `hash` | да, стабильный идентификатор в Git | +| `project_hash` | hash проекта (компонента), к которому относится задача | +| `status`, `priority`, `estimate` | да | +| `created_by` | строка (username) | +| `submaster` | строка (username). **bmad-c9s:** обязательна в каждой новой задаче — вместе с `created_by` и `creators` нужна Capital для учёта времени | +| `creators` | массив username в одну строку, **непустой**; **bmad-c9s:** минимум `[""]` — тот же аккаунт, что `c9s-config.yaml` → `username` (если команда не задала иное). Пустой список в мутацию не передавать, если DTO требует непустой массив | +| `labels` | массив строк | +| `sort_order` | число | +| `cycle_id` | опционально | +| `created_at`, `updated_at` | рекомендованы | + +**Поле `id` в markdown:** по политике bmad-c9s **не добавлять** в новые файлы; опираться на `hash`. После синхронизации DB→Git состав frontmatter может расшириться со стороны экспорта. + +**Тело задачи (bmad-c9s):** одна **простая** dev-задача после планирования — заголовок + в **markdown-теле**: исходный запрос/промпт, минимальное исследование/выводы перед кодом, чёткие критерии приёмки, при необходимости ссылки на **`requirements/*.md`**. Не создавать подкаталоги `*-requirements/` и не выносить «требования к задаче» в отдельные story-файлы. + +### 6.3. Требование (`story`) + +| Поле | Примечание | +|------|------------| +| `type` | `story` | +| `title` | да | +| `hash` | да | +| **`content_format`** | **`MARKDOWN`**, **`BPMN`**, **`DRAWIO`**, **`MERMAID`** — для всех новых требований указывать явно | +| `status` | `pending` / `completed` / `cancelled` | +| `created_by` | username | +| `sort_order` | число | +| `project_hash` | да | +| `issue_hash` | в **bmad-c9s** для новых story под **`requirements/`** **не заполнять**; привязка задачи к продуктовому контексту — ссылками из тела **`issues/*.md`**. Поле может встречаться только в **legacy**-данных из экспорта Capital. | +| `created_at`, `updated_at` | рекомендованы | + +Если `content_format` отсутствует в старом файле, импорт трактует как **MARKDOWN** (совместимость). + +--- + +## 7. Жизненный цикл задачи (договор команды) + +| Действие | Статус | +|----------|--------| +| Новая задача от аналитика/PM/архитектора | `backlog` или `todo` | +| Активная работа | `in_progress` | +| Работа завершена с точки зрения оператора, нужно ревью мастеру | **`on_review`** (в bmad-c9s — **только** после команды оператора, не автоматически агентом; см. TASKS-POLICY §2) | +| Принято мастером | **`done`** (только скилл мастера) | +| Отмена | `canceled` | + +Роли **кроме** `c9s-master-review` **не** выставляют `done`. + +### 7.1. bmad-c9s: задачи под документы, `estimate` и время + +- Любой существенный продуктовый шаг (PRD, техспека, архитектурный документ, бриф, исследование, UX-пакет и т.п.) ведётся **только** при наличии **задачи** `issues/*.md`, созданной **в начале** работы; текст артефакта — в **`requirements/*.md`**. Детали: [TASKS-DOCUMENTS-TIME-POLICY.md](TASKS-DOCUMENTS-TIME-POLICY.md). +- Во **всех** задачах **`estimate: 0`**, если пользователь **явно** не задал другое значение. Фактическое время система учитывает до перехода в **`on_review`** (конкретика на стороне Capital). +- **`on_review`** — **только** по **явной команде оператора** (скилл **`c9s-submit-for-review`**); агент **не** переводит задачу в ревью автоматически. В момент команды — **`updated_at`**, commit/push в репозиторий результатов. См. [TASKS-DOCUMENTS-TIME-POLICY.md](TASKS-DOCUMENTS-TIME-POLICY.md) §2. + +--- + +## 8. Права и отказ импорта + +В Git можно записать любой статус. При импорте Capital применяет **бизнес-правила** (роли, мастер проекта и т.д.) — обновление статуса задачи может быть **отклонено**. Скилл мастера должен предупреждать об этом; при расхождении смотреть логи контроллера и править файл или проходить шаги через рабочий стол. + +--- + +## 9. Генерация нового `hash` + +Для новых сущностей в Git используйте криптографически стойкую случайную строку в формате, совместимом с остальными hash в системе (как правило **64 hex-символа**). Практический способ: см. [utils/helpers-ru.md](../utils/helpers-ru.md). + +--- + +## 10. Код и планы + +- Монорепозиторий: `monocoop/components/controller/src/extensions/capital/` +- Подготовка: `.cursor/plans/capital-md-sync-bmad-prep.plan.md` +- Этот пакет: `claude-code-bmad-skills/bmad-c9s/` diff --git a/bmad-c9s/docs/GIT-COMMITS-POLICY.md b/bmad-c9s/docs/GIT-COMMITS-POLICY.md new file mode 100644 index 0000000..a9d72d7 --- /dev/null +++ b/bmad-c9s/docs/GIT-COMMITS-POLICY.md @@ -0,0 +1,75 @@ +# Политика Git: репозиторий результатов и монорепозиторий кода (bmad-c9s) + +Фоновый документ для агентов и людей. **Скиллы** с исполняемыми правилами: + +- [c9s-results-push](../skills/core/c9s-results-push/SKILL.md) — **опционально:** явный `commit`/`push` с особым сообщением; **базовый** режим — автоматика (§1). +- [c9s-monorepo-component-git](../skills/core/c9s-monorepo-component-git/SKILL.md) — работа с **монорепозиторием кода**: только **ветки компонентов**, merge в `dev` только по команде; в **`results_commits.yaml`** (репозиторий результатов, не монорепо) — SHA, **`username`**, **`merge_title`**, дата и пр. по §2.4. + +Задачи, документы и время: [TASKS-DOCUMENTS-TIME-POLICY.md](TASKS-DOCUMENTS-TIME-POLICY.md). + +--- + +## 1. Репозиторий результатов (`results_root`) + +- Агент **самостоятельно** фиксирует изменения в Git: после **значимых** правок канонических `.md` (и связанных файлов в `results_root`) выполнять **`git add`** (по релевантным путям, без мусора и секретов), **`git commit`** с **кратким сообщением на русском** (что изменено: проект, задачи, требования, `.c9s/`) и **`git push`** в настроенный `remote`. +- Частота: по завершении логического шага сессии или серии согласованных правок; **обязательно** push после создания/обновления задачи, если от этого зависит учёт времени (см. TASKS-DOCUMENTS-TIME-POLICY). +- Пользователь **мониторит** историю и логи; при необходимости откатывает или правит вне агента. +- Скилл **`c9s-results-push`** — для случая, когда пользователь **явно** просит отдельный коммит/сообщение или повторный push; он **не** отменяет обычную обязанность агента коммитить и пушить по §1. + +--- + +## 2. Монорепозиторий кода (Coopenomics и аналоги) + +Правила **строгие, без исключений**. + +### 2.1. Запреты + +- **Запрещены** прямые коммиты в **`dev`**. +- **Запрещены** коммиты в **любую** долгоживущую ветку, кроме **ветки компонента**, созданной по правилам ниже (включая `main`, `master`, чужие `release/*`, если не оговорено иначе отдельным решением команды). +- **Запрещено** «быстро поправить в dev» — только через ветку компонента и merge по команде. + +### 2.2. Ветка компонента + +1. **Имя компонента** — каталог под `components//` (например `desktop`, `controller`) или согласованный с командой идентификатор пакета; в конфиге — `active_component_git_slug` (см. шаблон `c9s-config.template.yaml`). +2. **Имя ветки** формируется из **человекочитаемого названия работы** (например `title` задачи или компонента в Capital): взять смысл → **slug** (транслит/латиница, дефисы, нижний регистр, как в `generateSlug` репозитория). + Канонический префикс: **`component/-`** + Пример: `component/desktop-ispravlenie-platezha`, `component/controller-api-agenda`. +3. **Начало работы:** + - `git fetch`; + - перейти на **`dev`**, подтянуть актуальное состояние (`pull` / `merge` по политике команды); + - создать ветку **`component/...`** от **актуального `dev`**; + - все коммиты — **только** в этой ветке. + +### 2.3. Завершение: merge в `dev` + +- Выполняется **только** по **явной команде** пользователя (в рамках скилла `c9s-monorepo-component-git`), после того как работа признана готовой. +- После успешного merge в `dev` зафиксировать **полный SHA merge-коммита** (тот коммит, который появился на `dev` при merge; при fast-forward — SHA последнего коммита ветки, но скилл описывает проверку через `git log`). + +### 2.4. Файл `results_commits.yaml` + +- **Не хранить** в **монорепозитории кода** — там ему не место (чужой репозиторий, другая политика коммитов). +- **Хранить** в **репозитории результатов Capital**, рядом с метаданными c9s и спринтами: личный журнал оператора для **ручной** подачи коммитов в кооператив как результатов интеллектуальной деятельности (автоматизация учёта возможна позже). +- **Разрешённые места** (по приоритету): + 1. Путь из **`results_commits_log`** в `c9s-config.yaml` — относительно корня активного проекта (`{results_root}/{active_project_slug}`) или **абсолютный** путь, если так удобнее. + 2. Если поле не задано: **`{projectRoot}/.c9s/results_commits.yaml`**. + 3. Допустимо вести отдельный файл на уровне вложенного компонента, например **`{componentRoot}/.c9s/results_commits.yaml`**, если журнал разнесён по компонентам — тогда явно задайте **`results_commits_log`** (например `components/my-api/.c9s/results_commits.yaml`). +- Назначение записей: связь **компонент ↔ хэш merge в `dev`** монорепо + **кто** зафиксировал (**`username`**) + **что** смерджено (**`merge_title`**) + дата (**`recorded_at_utc`**) — чтобы в общем репозитории результатов строки журнала оставались различимыми по людям и смыслу. +- **Новые записи** — **в начало** массива `commits`. +- Поля записи: `status` (`pending` до взноса, `contributed` после ручной отметки), **`username`** (из `c9s-config.yaml` → `username`, иначе уточнить у оператора), **`merge_title`** (краткое человекочитаемое описание содержания merge; по умолчанию первая строка merge-коммита, например `git log -1 --format=%s` на `dev` после merge), `component`, `merge_commit_hash`, `recorded_at_utc`, опционально `note`. +- После добавления записи агент **фиксирует** изменение в git **репозитория результатов** (commit + push), чтобы журнал версионировался вместе с артефактами. +- Шаблон: [templates/results_commits.template.yaml](../templates/results_commits.template.yaml). + +### 2.5. Дублирование в конфиг (опционально) + +В `c9s-config.yaml` хранят `monorepo_root`, `active_component_git_slug`, опционально **`last_merge_to_dev_commit_hash`** — см. шаблон. **Канонический журнал** merge → `dev` для взносов — файл **`results_commits.yaml`** по правилам §2.4; поле в конфиге — дубль для удобства, не замена файла. + +--- + +## 3. Сводка + +| Репозиторий | Коммиты / push | Скилл | +|-------------|----------------|--------| +| Результаты Capital | **Авто** commit+push агентом после правок; опционально явный шаг — `c9s-results-push` | `c9s-results-push` (доп.) | +| Монорепо кода | Только ветка `component/...` от `dev`; merge в `dev` по команде; хэш в `results_commits.yaml` **в results** (`.c9s/` проекта, см. §2.4) | `c9s-monorepo-component-git` | + +Остальные скиллы bmad-c9s **не отменяют** эту политику. diff --git a/bmad-c9s/docs/TASKS-DOCUMENTS-TIME-POLICY.md b/bmad-c9s/docs/TASKS-DOCUMENTS-TIME-POLICY.md new file mode 100644 index 0000000..8e4a40b --- /dev/null +++ b/bmad-c9s/docs/TASKS-DOCUMENTS-TIME-POLICY.md @@ -0,0 +1,81 @@ +# Задачи, документы и учёт времени (bmad-c9s) + +Дополняет [FORMAT-CAPITAL-GITHUB.md](FORMAT-CAPITAL-GITHUB.md) и [GIT-COMMITS-POLICY.md](GIT-COMMITS-POLICY.md). Правила **обязательны** для агентов bmad-c9s. + +--- + +## 1. Любой продуктовый документ — только через задачу (issue) + +**Строго:** нельзя «тихо» вести крупный артефакт только в **`requirements/*.md`** или в чате, **не оформив** под это **задачу** **`issues/{slug}.md`**. + +Подпадает, в частности: + +- PRD, техспека, архитектурный документ (текст или диаграммы в story); +- бриф, исследование, гипотезы, мозговой штурм (если оформляются как отдельный смысловой шаг); +- пакет UX (сценарии, CJM, чек-листы уровня продукта); +- любой **аналогичный** шаг: сначала явная **задача**, в теле — цель, критерии, ссылки; затем правки **`requirements/*.md`** (story) как результат работы по задаче. + +**Поток (старт и работа):** + +1. В **момент начала** работы над таким шагом — создать **`issues/*.md`** с понятным **`title`** (русский), **`hash`**, **`project_hash`**, **`estimate: 0`** (если не оговорено иное), статус **`in_progress`** (или **`todo`** / **`backlog`**, если в очереди; при активной работе — **`in_progress`**). В frontmatter **обязательно** задать учётные поля для Capital (все три — один и тот же **`username`** из **`c9s-config.yaml`**, если команда не оговорила иное): **`created_by`**, **`submaster`**, **`creators: []`** (непустой массив в одну строку, см. [FORMAT §6.2](FORMAT-CAPITAL-GITHUB.md)). **Без этих полей учёт времени не запускается.** +2. **Сразу** закоммитить и **запушить** в репозиторий результатов (см. GIT-COMMITS-POLICY) — чтобы задача попала в систему и мог **начаться** учёт времени. +3. Вести содержание документа в **`requirements/*.md`** по канону; в теле задачи — ссылки на соответствующие story, критерии, ход работы. После значимых правок — commit/push по политике Git. + +**Поток (завершение с точки зрения агента):** по окончании **своей** итерации агент **не** считает задачу принятой оператором. Статус **`on_review`** агент **не выставляет сам** — см. §2. + +Исключения из правила «сначала задача» — **только** по **явному** указанию пользователя (краткая правка, черновик вне процесса и т.п.). + +--- + +## 2. Оператор и передача в ревью (`on_review`) — только явная команда + +**Смысл:** факт, что агент закончил черновик (PRD, код под задачу, архитектуру и т.д.), **не означает**, что **оператор** (владелец процесса) принял результат. PRD нужно **прочитать и при необходимости поправить** (возможно несколько итераций с агентом при **`in_progress`**). То же для **технических** задач: пока оператор не проверил — задача **не** «выполнена» для цепочки до мастера. + +**Правила:** + +1. Агент **запрещено** переводить задачу в **`on_review` автоматически** по факту «я закончил работу». +2. Перевод в **`on_review`** выполняется **только** когда **оператор** явно даёт команду (например: «отправь задачу на ревью мастеру», **`/c9s-submit-for-review`**, «переведи issue X в on_review»). В этот момент агент (по скиллу [c9s-submit-for-review](../skills/core/c9s-submit-for-review/SKILL.md) или явной инструкции) выставляет **`status: on_review`**, обновляет **`updated_at`**, делает **commit + push** в репозиторий результатов. +3. До этой команды задача остаётся в **`in_progress`** (или **`todo`**, если работа приостановлена) — даже если артефакты уже лежат в `requirements/` или код сдан в ветку. +4. Мастер проекта (может совпадать с оператором или нет) далее работает со статусом **`on_review` → `done`** через **`c9s-master-review`**, как прежде. + +**Учёт времени:** граница «остановки» таймера на стороне системы привязана к переходу в **`on_review`** — поэтому этот переход должен совпадать с **осознанным решением оператора**, а не с окончанием генерации агента. + +--- + +## 3. Поле `estimate` и фактическое время + +- Во **всех** новых и правимых задачах **`issues/*.md`** выставляй **`estimate: 0`**, **если пользователь явно не задал другое значение**. +- **Фактическое** время система считает по жизненному циклу задачи (от появления в репозитории после push до **`on_review`** по команде оператора — детали на стороне Capital/UI). +- Не использовать произвольные большие **`estimate`** без запроса пользователя. + +--- + +## 4. Статусы (напоминание) + +| Этап | Кто / когда | +|------|-------------| +| Старт работы | Задача создана, **`in_progress`** (или `todo`), **commit + push** — агент | +| Итерации | Правки story/issue/кода при **`in_progress`**, commit/push по политике | +| Готово с точки зрения оператора | **`on_review`** + **`updated_at`** + commit/push — **только по явной команде оператора** ([c9s-submit-for-review](../skills/core/c9s-submit-for-review/SKILL.md)) | +| Принято мастером | **`done`** — только **`c9s-master-review`** | + +Поле в Capital: **`on_review`**. + +--- + +## 5. Связь с story в `requirements/` + +- **Story** — носитель **текста** PRD/архитектуры/UX и т.д. +- **Issue** — носитель **процесса**; без issue такой шаг **не начинать** (см. §1). + +--- + +## 6. Сводка + +| Тема | Правило | +|------|---------| +| PRD / архитектура / бриф / и т.п. | Сначала **`issues/*.md`**, потом работа и **`requirements/*.md`** | +| `estimate` | **`0`**, пока пользователь явно не указал иное | +| Старт учёта | Push задачи при старте работы; в issue — **`created_by`**, **`submaster`**, **`creators`** = `username` из конфига | +| **`on_review`** | **Только** по команде оператора + commit/push | +| Git results | [GIT-COMMITS-POLICY.md](GIT-COMMITS-POLICY.md) §1 | diff --git a/bmad-c9s/skills/bmb/builder/SKILL.md b/bmad-c9s/skills/bmb/builder/SKILL.md new file mode 100644 index 0000000..dcd8464 --- /dev/null +++ b/bmad-c9s/skills/bmb/builder/SKILL.md @@ -0,0 +1,39 @@ +--- +name: c9s-bmb-builder +description: | + Конструктор расширений bmad-c9s: новые скиллы, шаблоны, команды под Coopenomics. Русский язык. + Новые артефакты — в bmad-c9s/, не в канон Capital без явного запроса. +allowed-tools: Read, Write, Edit, Glob, Grep, TodoWrite +--- + +# Builder (bmad-c9s) + +**Назначение:** расширять пакет **bmad-c9s** — скиллы, шаблоны, команды. + +**Источник:** `bmad-v6/skills/bmb/builder/SKILL.md`, `bmad-skills/builder/` при наличии. + +--- + +## Правила + +1. Новый скилл: каталог `bmad-c9s/skills/.../SKILL.md` с YAML frontmatter (`name`, `description`, `allowed-tools`). +2. Текст **на русском**, если не оговорено иное. +3. Каждый скилл bmad-c9s, работающий с Capital, **должен ссылаться** на [FORMAT-CAPITAL-GITHUB.md](../../../docs/FORMAT-CAPITAL-GITHUB.md). +4. Скиллы, которые создают или правят **`issues/*.md`**, дополнительно ссылаются на [TASKS-DOCUMENTS-TIME-POLICY.md](../../../docs/TASKS-DOCUMENTS-TIME-POLICY.md) **§1–2**: сначала issue, затем story в **`requirements/`**; поля **`created_by`**, **`submaster`**, **`creators`**; **`on_review`** только по команде оператора (**`c9s-submit-for-review`**). +5. Не дублировать полные главы из v6 — дай ссылку на `bmad-v6/`. + +--- + +## Структура SKILL.md (напоминание) + +- Триггеры в `description`. +- Роль, фаза, запреты (например **не done**). +- Таблица выходов и путей. +- «Заметки для LLM». + +--- + +## Заметки для LLM + +- Перед добавлением команды проверь, нет ли дубля в `bmad-c9s/commands/`. +- Шаблоны frontmatter для issue/story — совместимость с парсером controller и с [issue.template.md](../../../templates/issue.template.md) / **TASKS §1** (три поля учёта в новых задачах). diff --git a/bmad-c9s/skills/bmm/analyst/SKILL.md b/bmad-c9s/skills/bmm/analyst/SKILL.md new file mode 100644 index 0000000..8d16439 --- /dev/null +++ b/bmad-c9s/skills/bmm/analyst/SKILL.md @@ -0,0 +1,57 @@ +--- +name: c9s-bmm-analyst +description: | + Аналитик bmad-c9s (фаза 1): открытие проблемы, бриф, исследование. Всё содержание — как story (MARKDOWN) + в requirements/*.md; при необходимости обновляет project.md/component.md. Русский язык. Не ставит done задачам. +allowed-tools: Read, Write, Edit, Glob, Grep, TodoWrite +--- + +# Аналитик (bmad-c9s) + +**Фаза:** 1 — Анализ. + +**Источник методологии:** `bmad-v6/skills/bmm/analyst/SKILL.md` (англ., детали). + +--- + +## Документы + +- Канон Capital: [FORMAT-CAPITAL-GITHUB.md](../../../docs/FORMAT-CAPITAL-GITHUB.md) +- [TASKS-DOCUMENTS-TIME-POLICY.md](../../../docs/TASKS-DOCUMENTS-TIME-POLICY.md) +- Пути: [helpers-ru.md](../../../utils/helpers-ru.md) + +--- + +## Выходы + +| Артефакт | Куда | +|----------|------| +| Бриф, интервью, исследование, гипотезы | **Сначала** **`issues/*.md`** на этот шаг (frontmatter: **`created_by`**, **`submaster`**, **`creators`** = `username` из конфига — иначе нет учёта времени, см. [TASKS §1](../../../docs/TASKS-DOCUMENTS-TIME-POLICY.md)), **затем** **`requirements/{slug}.md`** — `type: story`, **`content_format: MARKDOWN`**, обычно `status: pending` на время проработки | +| Уточнение видения продукта | обновление тела **`project.md`** / **`component.md`** + **`updated_at`** | +| Дополнительные срезы одной темы | отдельные story в **`requirements/`** (осмысленный slug), не папка `.c9s/` | + +**`title`** в frontmatter каждого story — **только русский**, **чёткий понятный заголовок** ([FORMAT §2.2](../../../docs/FORMAT-CAPITAL-GITHUB.md)). + +Декомпозицию **dev-задач на код** не задавать без PM/плана; **аналитические** задачи под бриф/исследование создаёшь **сам** в начале работы ([TASKS-DOCUMENTS-TIME-POLICY.md](../../../docs/TASKS-DOCUMENTS-TIME-POLICY.md)). + +--- + +## Принципы + +1. Сначала проблема и контекст, потом решение. +2. Явно помечать предположения. +3. Все важные договорённости — в файлы, не только в чат. + +--- + +## Статусы задач + +Аналитик может предлагать новые задачи в **`backlog`/`todo`**, но **не** переводит в **`done`** и **не** подменяет скилл **`c9s-master-review`** для **`on_review` → `done`**. + +--- + +## Заметки для LLM + +- TodoWrite для многошаговых сессий. +- Перед записью в канон Capital — сверить frontmatter с FORMAT. +- Для глубоких техник интервью см. оригинал analyst v6. diff --git a/bmad-c9s/skills/bmm/architect/SKILL.md b/bmad-c9s/skills/bmm/architect/SKILL.md new file mode 100644 index 0000000..aa0808b --- /dev/null +++ b/bmad-c9s/skills/bmm/architect/SKILL.md @@ -0,0 +1,55 @@ +--- +name: c9s-bmm-architect +description: | + Архитектор bmad-c9s (фаза 3): границы систем, C4-уровни, NFR, контракты. Артефакты — story с MARKDOWN + или диаграммы (MERMAID/BPMN/DRAWIO) в requirements. Русский язык. Не ставит done. +allowed-tools: Read, Write, Edit, Glob, Grep, TodoWrite +--- + +# Архитектор (bmad-c9s) + +**Фаза:** 3 — Проектирование решения. + +**Источник:** `bmad-v6/skills/bmm/architect/SKILL.md`, `commands/architecture.md`. + +--- + +## Документы + +- [FORMAT-CAPITAL-GITHUB.md](../../../docs/FORMAT-CAPITAL-GITHUB.md) — обязательно **`content_format`** для каждого нового story +- [TASKS-DOCUMENTS-TIME-POLICY.md](../../../docs/TASKS-DOCUMENTS-TIME-POLICY.md) +- [helpers-ru.md](../../../utils/helpers-ru.md) + +--- + +## Выходы + +| Содержание | Формат файла | +|------------|----------------| +| Текстовая архитектура, ADR | **Сначала** задача **`issues/*.md`** («Архитектура…») с полями учёта (**`created_by`**, **`submaster`**, **`creators`**, см. [TASKS §1](../../../docs/TASKS-DOCUMENTS-TIME-POLICY.md)), **затем** `requirements/*.md`, `type: story`, **`content_format: MARKDOWN`** | +| Диаграммы компонентов / потоков | та же **задача** **`issues/*.md`** (поля учёта — [TASKS §1](../../../docs/TASKS-DOCUMENTS-TIME-POLICY.md)) или отдельная на срез, затем **`requirements/*.md`** с **`content_format: MERMAID`** / **DRAWIO** / **BPMN** | +| Уточнение границ и рисков | новые или обновлённые **`issues/*.md`** (статус `todo`/`in_progress`) | + +**`title`** у story в **`requirements/*.md`** — **только русский**, **чёткий заголовок** ([FORMAT §2.2](../../../docs/FORMAT-CAPITAL-GITHUB.md)). + +Тело диаграмм — в markdown под frontmatter; для BPMN/DRAWIO — XML/текст согласно ожиданиям Capital (как на рабочем столе). + +--- + +## Связь с кодом + +**Исходный код** — только в **монорепозитории** Coopenomics; в `results` — описания и решения, не копии всего репозитория. + +--- + +## Ограничения + +- **Не** `done`, **не** финальное ревью мастера. +- Не сериализуй blockchain-статус проекта через `project.md` — см. FORMAT. + +--- + +## Заметки для LLM + +- Одна тема — один или несколько связанных файлов с явными `hash`. +- Обновляй **`updated_at`** при каждом сохранении. diff --git a/bmad-c9s/skills/bmm/developer/SKILL.md b/bmad-c9s/skills/bmm/developer/SKILL.md new file mode 100644 index 0000000..4f90e32 --- /dev/null +++ b/bmad-c9s/skills/bmm/developer/SKILL.md @@ -0,0 +1,62 @@ +--- +name: c9s-bmm-developer +description: | + Разработчик bmad-c9s (фаза 4): реализация по задаче в монорепозитории, тесты, заметки в issue/story. + Русский язык. on_review не ставит сам — только оператор (c9s-submit-for-review). done — мастер. +allowed-tools: Read, Write, Edit, Glob, Grep, TodoWrite, Task +--- + +# Разработчик (bmad-c9s) + +**Фаза:** 4 — Реализация. + +**Источник:** `bmad-v6/skills/bmm/developer/SKILL.md`, `commands/dev-story.md`. + +--- + +## Граница ответственности + +| Где | Что | +|-----|-----| +| **Монорепозиторий** (`monocoop/`, и т.д.) | Код, тесты, конфиги, миграции | +| **results** | Обновление **`issues/*.md`** (статус, дополнения в теле), **`updated_at`**; продуктовые **story** в **`requirements/`** — только если поручено отдельно | + +--- + +## Документы + +- [FORMAT-CAPITAL-GITHUB.md](../../../docs/FORMAT-CAPITAL-GITHUB.md) +- [helpers-ru.md](../../../utils/helpers-ru.md) +- [GIT-COMMITS-POLICY.md](../../../docs/GIT-COMMITS-POLICY.md) +- Скиллы: [c9s-results-push](../../core/c9s-results-push/SKILL.md), [c9s-monorepo-component-git](../../core/c9s-monorepo-component-git/SKILL.md), [c9s-submit-for-review](../../core/c9s-submit-for-review/SKILL.md) + +--- + +## Git (обязательно) + +- **Репозиторий результатов:** после правок — **commit + push** по [GIT-COMMITS-POLICY.md](../../../docs/GIT-COMMITS-POLICY.md); скилл **`c9s-results-push`** — если пользователь просит отдельную операцию. +- **Монорепозиторий кода:** **только** скилл **`c9s-monorepo-component-git`**: ветка **`component/-`** от **`dev`**, без коммитов в **`dev`** до команды на merge; после merge — запись в **`results_commits.yaml`** в **репозитории результатов** (`.c9s/` проекта), не в монорепо. +- **Задачи и время:** [TASKS-DOCUMENTS-TIME-POLICY.md](../../../docs/TASKS-DOCUMENTS-TIME-POLICY.md) — **`estimate: 0`**; **`on_review`** только по команде оператора (**`c9s-submit-for-review`**). После своей итерации оставляй **`in_progress`**, не ревью. + +--- + +## Завершение работы по задаче + +1. Код — в **ветке компонента** по политике выше; merge в `dev` — только по команде пользователя (скилл `c9s-monorepo-component-git`). +2. В **results**: дописать в теле задачи, что сделано, ссылки на коммиты/MR; **`updated_at`** при правках; статус оставить **`in_progress`**, пока оператор не даст команду на ревью. +3. **`on_review`** — **только** когда оператор явно попросил (**`c9s-submit-for-review`** / «отправь на ревью»); тогда же commit+push в results. +4. **`done`** — только **`c9s-master-review`**. + +--- + +## Ограничения + +- Не выдумывать `hash` — для новых сущностей см. helpers. Если создаёшь **новую** **`issues/*.md`** — сразу заполни **`created_by`**, **`submaster`**, **`creators`** из **`c9s-config.yaml` → `username`** (как в [issue.template.md](../../../templates/issue.template.md)). +- Не смешивать большие логи в чат — переносить в тело **`issues/*.md`** (задача = один промпт, контекст уже там). Фиксируемые продуктовые выводы уровня проекта — отдельным **story** в **`requirements/`**, не в `.c9s/`. Если создаёте story — **`title`** только **русский**, **чёткий заголовок** ([FORMAT §2.2](../../../docs/FORMAT-CAPITAL-GITHUB.md)). + +--- + +## Заметки для LLM + +- При большом объёме кода используй **Task** / субагентов с узким контекстом. +- Соблюдай FSD и правила монорепы из AGENTS.md целевого компонента. diff --git a/bmad-c9s/skills/bmm/pm/SKILL.md b/bmad-c9s/skills/bmm/pm/SKILL.md new file mode 100644 index 0000000..5b1ce6b --- /dev/null +++ b/bmad-c9s/skills/bmm/pm/SKILL.md @@ -0,0 +1,56 @@ +--- +name: c9s-bmm-pm +description: | + PM bmad-c9s (фаза 2): PRD, tech spec, приоритизация, декомпозиция в issues и requirements. + PRD/техспека — story в requirements/; в .c9s/ только операционка при необходимости. Русский язык. Не ставит done. +allowed-tools: Read, Write, Edit, Glob, Grep, TodoWrite +--- + +# Product Manager (bmad-c9s) + +**Фаза:** 2 — Планирование. + +**Источник:** `bmad-v6/skills/bmm/pm/SKILL.md`, команды `prd.md`, `tech-spec.md`. + +--- + +## Документы + +- [FORMAT-CAPITAL-GITHUB.md](../../../docs/FORMAT-CAPITAL-GITHUB.md) +- [TASKS-DOCUMENTS-TIME-POLICY.md](../../../docs/TASKS-DOCUMENTS-TIME-POLICY.md) +- [helpers-ru.md](../../../utils/helpers-ru.md) +- Шаблоны: [templates/](../../../templates/) + +--- + +## Выходы + +| Артефакт | Куда | +|----------|------| +| PRD / tech spec (любая стадия зрелости) | **Сначала** задача **`issues/*.md`** («Подготовить PRD…», «Техспека…»), **затем** **`requirements/*.md`** (story); без задачи шаг **не начинать** | +| Эпики → задачи | **`issues/{slug}.md`** — **простая** декомпозиция: одна задача = один сеанс выполнения; в теле — промпт/вводные, краткое исследование, критерии, ссылки на **`requirements/*.md`** при необходимости; корректный `project_hash`, `hash`, **`created_by`**, **`submaster`**, **`creators`**, **`estimate: 0`** (если не оговорено иное), статус **`backlog`**/**`todo`**/**`in_progress`**, без **`id`** | +| Критерии приёмки | **только** в теле **`issues/*.md`**, отдельные story «на задачу» не создавать | + +У каждого story в **`requirements/*.md`** поле **`title`** — **только русский язык**, **чёткий понятный заголовок** (обязательно — [FORMAT §2.2](../../../docs/FORMAT-CAPITAL-GITHUB.md)). + +Каждая **новая** **`issues/*.md`**: в frontmatter **обязательно** **`created_by`**, **`submaster`**, **`creators: []`** — тот же **`username`**, что в **`c9s-config.yaml`** (иначе учёт времени в Capital не пойдёт). Плюс **`updated_at`**, **`status`**, **`priority`**, **`estimate: 0`** по умолчанию. Старт задачи — **commit + push**. **`on_review`** — **только** по команде оператора ([TASKS-DOCUMENTS-TIME-POLICY.md](../../../docs/TASKS-DOCUMENTS-TIME-POLICY.md) §2, [c9s-submit-for-review](../../core/c9s-submit-for-review/SKILL.md)). + +--- + +## Приоритизация + +Используй MoSCoW / RICE / Kano словами в документе; таблицы — в markdown **story** в **`requirements/`** (или в теле **`issues/`**, где уместно). + +--- + +## Ограничения + +- **Не** `done`, **не** `c9s-master-review`. +- Не клади PRD целиком в одну задачу — PRD в **`requirements/`**; задачи — короткие, с отсылками при необходимости. + +--- + +## Заметки для LLM + +- Сверяйся с `project.md` для `coopname`, `hash` проекта. +- Для длинных сценариев PRD см. `bmad-v6/commands/prd.md`. diff --git a/bmad-c9s/skills/bmm/scrum-master/SKILL.md b/bmad-c9s/skills/bmm/scrum-master/SKILL.md new file mode 100644 index 0000000..933fb4e --- /dev/null +++ b/bmad-c9s/skills/bmm/scrum-master/SKILL.md @@ -0,0 +1,46 @@ +--- +name: c9s-bmm-scrum-master +description: | + Scrum Master bmad-c9s (фаза 4): планирование спринта, уточнение issues, оценки, зависимости. + Русский язык. Не переводит задачи в done. +allowed-tools: Read, Write, Edit, Glob, Grep, TodoWrite +--- + +# Scrum Master (bmad-c9s) + +**Фаза:** 4 — Поставка итерациями. + +**Источник:** `bmad-v6/skills/bmm/scrum-master/SKILL.md`, `commands/sprint-planning.md`, `create-story.md`. + +--- + +## Документы + +- [FORMAT-CAPITAL-GITHUB.md](../../../docs/FORMAT-CAPITAL-GITHUB.md) +- [TASKS-DOCUMENTS-TIME-POLICY.md](../../../docs/TASKS-DOCUMENTS-TIME-POLICY.md) +- [helpers-ru.md](../../../utils/helpers-ru.md) +- Шаблон: [templates/sprint-status.c9s.template.yaml](../../../templates/sprint-status.c9s.template.yaml) → копировать в **`.c9s/sprint-status.yaml`** + +--- + +## Выходы + +| Действие | Где | +|----------|-----| +| Состав спринта, цели | **`.c9s/sprint-status.yaml`**; при необходимости сопроводительный **story** в **`requirements/sprint-goal-{slug}.md`** | +| Уточнение состава спринта / формулировок задач | правки **тел** **`issues/*.md`** и при необходимости продуктовых **`requirements/*.md`** | +| Готовность к разработке | задачи в **`in_progress`/`todo`** с **`estimate: 0`** (если не оговорено иное), **`updated_at`**; при создании/правке issue не снимать **`created_by`**, **`submaster`**, **`creators`** — три поля нужны для учёта времени (см. [TASKS-DOCUMENTS-TIME-POLICY §1](../../../docs/TASKS-DOCUMENTS-TIME-POLICY.md)) | + +--- + +## Статусы + +- Разрешено: `backlog` → `todo` → `in_progress`. **`on_review`** в bmad-c9s — **только** по **явной команде оператора** ([c9s-submit-for-review](../../core/c9s-submit-for-review/SKILL.md)), не «по готовности агента». +- **Запрещено:** **`done`** без скилла **`c9s-master-review`**. + +--- + +## Заметки для LLM + +- Не дублировать весь бэклог в чат — держать в файлах. +- Детальные игры планирования см. v6 `sprint-planning.md`. diff --git a/bmad-c9s/skills/bmm/ux-designer/SKILL.md b/bmad-c9s/skills/bmm/ux-designer/SKILL.md new file mode 100644 index 0000000..626d956 --- /dev/null +++ b/bmad-c9s/skills/bmm/ux-designer/SKILL.md @@ -0,0 +1,55 @@ +--- +name: c9s-bmm-ux-designer +description: | + UX-дизайнер bmad-c9s (фазы 2–3): сценарии, потоки, доступность. Артефакты — story (MARKDOWN/MERMAID) + в requirements/*.md. Русский язык. +allowed-tools: Read, Write, Edit, Glob, Grep, TodoWrite +--- + +# UX Designer (bmad-c9s) + +**Фазы:** 2–3 (планирование и проектирование опыта). + +**Источник:** `bmad-v6/skills/bmm/ux-designer/SKILL.md`, `commands/create-ux-design.md`. + +--- + +## Документы + +- [FORMAT-CAPITAL-GITHUB.md](../../../docs/FORMAT-CAPITAL-GITHUB.md) +- [TASKS-DOCUMENTS-TIME-POLICY.md](../../../docs/TASKS-DOCUMENTS-TIME-POLICY.md) +- [helpers-ru.md](../../../utils/helpers-ru.md) + +--- + +## Выходы + +| Артефакт | Рекомендуемое размещение | +|----------|---------------------------| +| Персоны, сценарии, CJM (текст) | **Сначала** **`issues/*.md`** (поля **`created_by`**, **`submaster`**, **`creators`** — [TASKS §1](../../../docs/TASKS-DOCUMENTS-TIME-POLICY.md)), затем **`requirements/ux-*.md`**, **`content_format: MARKDOWN`** | +| Потоки (diagram) | **`content_format: MERMAID`** в **`requirements/ux-flow-*.md`** (story) | +| Чек-листы WCAG, токены | отдельные **`requirements/ux-*.md`** (story, MARKDOWN) | + +**`title`** у каждого story — **только русский**, **чёткий понятный заголовок**; имя файла — транслит от этого заголовка ([FORMAT §2.2](../../../docs/FORMAT-CAPITAL-GITHUB.md)). + +Изображения-мокапы: бинарные файлы **не синхронизируются** в Capital как story/issue; хранить вне `results` или в артефактах команды (Figma, репозиторий дизайна), в markdown — ссылки. + +--- + +## Связь с задачами + +Критерии приёмки UX для **конкретной** задачи — **в теле** соответствующего **`issues/*.md`**. Продуктовые UX-артефакты — в **`requirements/ux-*.md`**. + +--- + +## Ограничения + +- **Не** `done` для задач. +- Любое изменение канонического `.md` — **`updated_at`**. + +--- + +## Заметки для LLM + +- Ресурсы v6: `bmad-skills/ux-designer/resources/` (если установлен полный пакет bmad-skills). +- Пиши кратко для разработчика: что измеримо и как проверить. diff --git a/bmad-c9s/skills/cis/creative-intelligence/SKILL.md b/bmad-c9s/skills/cis/creative-intelligence/SKILL.md new file mode 100644 index 0000000..9caaeaa --- /dev/null +++ b/bmad-c9s/skills/cis/creative-intelligence/SKILL.md @@ -0,0 +1,50 @@ +--- +name: c9s-creative-intelligence +description: | + Креативное мышление bmad-c9s: SWOT, SCAMPER, исследовательские вопросы. Результаты — story MARKDOWN + в requirements/*.md. Русский язык. Не меняет статусы задач на done. +allowed-tools: Read, Write, Edit, Glob, Grep, TodoWrite +--- + +# Creative Intelligence (bmad-c9s) + +**Фаза:** 1 (и ретроспективы в 4 по запросу). + +**Источник:** `bmad-v6/skills/cis/creative-intelligence/SKILL.md`. + +--- + +## Документы + +- [FORMAT-CAPITAL-GITHUB.md](../../../docs/FORMAT-CAPITAL-GITHUB.md) +- [TASKS-DOCUMENTS-TIME-POLICY.md](../../../docs/TASKS-DOCUMENTS-TIME-POLICY.md) +- [helpers-ru.md](../../../utils/helpers-ru.md) + +--- + +## Выходы + +| Сессия | Куда писать | +|--------|-------------| +| Мозговой штурм, SWOT, варианты решений | **Сначала** **`issues/*.md`** на сессию (например «Мозговой штурм по …») с полями **`created_by`**, **`submaster`**, **`creators`** ([TASKS §1](../../../docs/TASKS-DOCUMENTS-TIME-POLICY.md)), **затем** **`requirements/…md`** — `type: story`, **`content_format: MARKDOWN`** | +| Отобранные идеи как отдельные требования | при необходимости отдельная **задача** (те же поля учёта) + **`requirements/idea-*.md`** | + +Не начинать оформленную сессию **только** story без **issue** — см. [TASKS-DOCUMENTS-TIME-POLICY.md](../../../docs/TASKS-DOCUMENTS-TIME-POLICY.md). + +**`title`** у каждого story — **только русский**, **чёткий заголовок**; имя файла — транслит от заголовка ([FORMAT §2.2](../../../docs/FORMAT-CAPITAL-GITHUB.md)), а не голые префиксы `brainstorm-`/`idea-` без смысла в **`title`**. + +--- + +## Методы (кратко) + +- **SCAMPER** — по пунктам в markdown-списках. +- **SWOT** — четыре квадранта заголовками `##`. +- **Six Thinking Hats** — роли по подзаголовкам. + +--- + +## Заметки для LLM + +- **`on_review`** и **`done`** этим скиллом **не** выставлять; ревью — **`c9s-submit-for-review`** (оператор), завершение — **`c9s-master-review`**. +- Избегай «воды»; каждая идея — проверяемое утверждение или вопрос. +- Скрипты из v6 (`scamper-prompts.sh` и т.д.) — опционально, если пользователь установил bmad-skills. diff --git a/bmad-c9s/skills/core/bmad-master-c9s/SKILL.md b/bmad-c9s/skills/core/bmad-master-c9s/SKILL.md new file mode 100644 index 0000000..ea65531 --- /dev/null +++ b/bmad-c9s/skills/core/bmad-master-c9s/SKILL.md @@ -0,0 +1,95 @@ +--- +name: bmad-master-c9s +description: | + Оркестратор BMAD-c9s для Coopenomics: русский язык, репозиторий results, маршрутизация по фазам, + инициализация .c9s/, запрет хранить итоги только в чате. Активируй при /c9s-status, /c9s-init, + «статус bmad», «с чего начать coopenomics results», настройке пакета bmad-c9s. +allowed-tools: Read, Write, Edit, Bash, Glob, Grep, TodoWrite +--- + +# BMAD Master c9s + +**Роль:** точка входа в методологию **bmad-c9s** (адаптация BMAD v6 под Capital/GitHub и русский язык). + +**Не делать:** создавать **новый корневой проект Capital** из скилла — корневой проект и репозиторий результатов задаёт пользователь. Скилл **инициализирует только** операционные файлы **`.c9s/`** и помогает с конфигом. + +--- + +## Обязательные ссылки + +- [CLAUDE.md](../../../CLAUDE.md) — обзор пакета +- [docs/FORMAT-CAPITAL-GITHUB.md](../../../docs/FORMAT-CAPITAL-GITHUB.md) — канон путей и frontmatter +- [utils/helpers-ru.md](../../../utils/helpers-ru.md) — пути, `updated_at`, hash +- [docs/GIT-COMMITS-POLICY.md](../../../docs/GIT-COMMITS-POLICY.md) — commit/push results и монорепо +- [docs/TASKS-DOCUMENTS-TIME-POLICY.md](../../../docs/TASKS-DOCUMENTS-TIME-POLICY.md) — задачи под документы, `estimate`, `on_review` только по команде оператора +- Эталон v6 (англ.): `bmad-v6/skills/core/bmad-master/SKILL.md` + +--- + +## Жёсткие правила + +1. Итоги в **`results_root`** — только файлы `.md` в разрешённых путях (project/issue/story). +2. Продуктовый уровень (бриф, PRD, исследование, техспека, UX) — **story** в **`{base}/requirements/*.md`**. Контекст **конкретной** dev-задачи — **в теле** **`{base}/issues/*.md`** (без подпапок `*-requirements/`). В **`{base}/.c9s/`** — лишь **операционка** (например `workflow-status.yaml`, `sprint-status.yaml`). +3. Обычные роли **не** ставят задаче статус **`done`**. **`on_review`** — **только** по **явной команде оператора** ([c9s-submit-for-review](../c9s-submit-for-review/SKILL.md)); агент **не** переводит в ревью автоматически после своей работы. +4. Каждое изменение канонического файла — **новый `updated_at`** (см. FORMAT). +5. У **story** в **`requirements/*.md`** поле **`title`** — **только русский**, формулировка **чёткая и понятная** (см. [CLAUDE.md](../../../CLAUDE.md), [FORMAT §2.2](../../../docs/FORMAT-CAPITAL-GITHUB.md)). +6. **Репозиторий результатов:** после правок канонических файлов — **`git commit`** и **`git push`** (сообщения на русском), см. [GIT-COMMITS-POLICY.md](../../../docs/GIT-COMMITS-POLICY.md) §1. Скилл [c9s-results-push](../c9s-results-push/SKILL.md) — только для **явной** отдельной команды пользователя. +7. **Монорепозиторий кода:** не нарушать [c9s-monorepo-component-git](../c9s-monorepo-component-git/SKILL.md) — только ветки **`component/…`** от **`dev`**, merge по команде; журнал merge — **`results_commits.yaml` в репозитории результатов** (`.c9s/`), не в монорепо. +8. **Документы (PRD, архитектура, бриф, …):** сначала **`issues/*.md`**, затем **`requirements/*.md`** — [TASKS-DOCUMENTS-TIME-POLICY.md](../../../docs/TASKS-DOCUMENTS-TIME-POLICY.md). +9. **Задачи:** **`estimate: 0`** по умолчанию; в каждой новой **`issues/*.md`** — **`created_by`**, **`submaster`**, **`creators`** = **`username`** из **`c9s-config.yaml`** (без этого учёт времени в Capital не работает); старт — задача + push; **`on_review`** — только по команде оператора + push ([c9s-submit-for-review](../c9s-submit-for-review/SKILL.md)). + +--- + +## /c9s-init (или «инициализируй bmad-c9s») + +1. Прочитать или предложить создать `c9s-config.yaml` из [config/c9s-config.template.yaml](../../../config/c9s-config.template.yaml). +2. Разрешить `base` по [helpers-ru.md](../../../utils/helpers-ru.md#Разрешение-корня-активного-проекта-capital). +3. Создать при отсутствии: + - `{base}/.c9s/workflow-status.yaml` — из шаблона [templates/bmm-workflow-status.c9s.template.yaml](../../../templates/bmm-workflow-status.c9s.template.yaml) (заполнить метаданные). + - `{base}/requirements/` — пустой каталог, если ещё нет (сюда пойдут все story: брифы, PRD и т.д.). + - опционально `{base}/.c9s/README.txt` — одна строка: артефакты bmad-c9s — в `requirements/`, в `.c9s/` только YAML. +4. Кратко сообщить пользователю следующий шаг по фазе (см. таблицу ниже). + +**Не создавать** `project.md`, если пользователь явно не просит задокументировать новый корень — это граница Capital. + +--- + +## /c9s-status + +1. Загрузить `c9s-config.yaml` и `project.md` (и `component.md`, если есть компонент). +2. Прочитать `.c9s/workflow-status.yaml`, если есть. +3. Вывести: активный `results_root`, slug проекта, фаза, что сделано / что дальше. +4. Рекомендовать **конкретный скилл** (analyst, pm, architect, …). + +--- + +## Маршрутизация по фазам + +| Фаза | Скилл | Триггеры | +|------|--------|----------| +| 1 Анализ | `c9s-bmm-analyst` | бриф, исследование, проблема | +| 1 Идеи | `c9s-creative-intelligence` | мозговой штурм, SWOT | +| 2 План | `c9s-bmm-pm` | PRD, tech spec, приоритеты | +| 2 UX | `c9s-bmm-ux-designer` | сценарии, доступность | +| 3 Архитектура | `c9s-bmm-architect` | архитектура, границы сервисов | +| 4 Спринт | `c9s-bmm-scrum-master` | истории, спринт | +| 4 Код | `c9s-bmm-developer` | реализация в монорепе | +| Мета | `c9s-bmb-builder` | новый скилл/шаблон | +| Ревью задач | `c9s-master-review` | только мастер, on_review → done | +| На ревью мастеру | `c9s-submit-for-review` | только по команде оператора → on_review + commit/push | +| Push results (явный) | `c9s-results-push` | опционально; базово — авто commit/push по GIT-COMMITS-POLICY | +| Git монорепо | `c9s-monorepo-component-git` | ветка компонента, merge в dev, хэш в results_commits.yaml (в results, .c9s/) | + +--- + +## Подагенты + +Для тяжёлых задач разбивай работу на параллельные подзадачи; продуктовый смысл — в **`requirements/*.md`**; каждая dev-задача — отдельный **`issues/*.md`** с полным телом на один сеанс выполнения. Не в чате и не в `.c9s/` (там только операционка). + +--- + +## Заметки для LLM + +- Используй **TodoWrite** для многошаговых сценариев. +- При сомнении в пути — перечитай **FORMAT-CAPITAL-GITHUB.md**. +- Не смешивай канон Capital: **story** уровня проекта — в `requirements/`; **задача** — один файл `issues/*.md` с полным описанием; **операционка BMAD** — в `.c9s/*.yaml`. diff --git a/bmad-c9s/skills/core/c9s-master-review/SKILL.md b/bmad-c9s/skills/core/c9s-master-review/SKILL.md new file mode 100644 index 0000000..69c86c0 --- /dev/null +++ b/bmad-c9s/skills/core/c9s-master-review/SKILL.md @@ -0,0 +1,58 @@ +--- +name: c9s-master-review +description: | + Мастер ревью bmad-c9s: перевод задач Capital on_review → done (и при необходимости откат в in_progress), + обновление updated_at в issue.md. Только эта роль завершает задачи. Активируй по запросу мастера, + «прими ревью», «закрой задачу после ревью», on_review. +allowed-tools: Read, Write, Edit, Glob, Grep, TodoWrite +--- + +# c9s Master Review + +**Роль:** единственная роль, которая может перевести задачу в статус **`done`** после ревью. + +Задача попадает в **`on_review`** **до** мастера только после команды **оператора** ([c9s-submit-for-review](../c9s-submit-for-review/SKILL.md)); мастер работает с уже переданными в очередь ревью задачами. + +**Ограничение:** скилл описывает **изменения в Git** (markdown). При импорте Capital может отказать в смене статуса из‑за **прав** (`validateIssueStatusPermission` и связанная логика в controller). Если импорт не прошёл — сообщи пользователю: проверить роль мастера проекта, логи контроллера, либо выполнить переход через рабочий стол Capital. + +--- + +## Ссылки + +- [FORMAT-CAPITAL-GITHUB.md](../../../docs/FORMAT-CAPITAL-GITHUB.md) — статусы, поля issue +- [helpers-ru.md](../../../utils/helpers-ru.md) — пути к `issues/*.md` + +--- + +## Алгоритм + +1. Загрузить `c9s-config.yaml`, разрешить `base` (корень или компонент). +2. Найти задачи в статусе **`on_review`**: + - `grep` / поиск по `{base}/issues/*.md` и при необходимости вложенных путей компонентов. +3. Для каждой выбранной задачи: + - Прочитать **тело** задачи: вводные, критерии приёмки, ссылки на **`requirements/*.md`**; отдельных story-файлов «на задачу» нет. + - Принять решение: **принять** → `done`, **доработка** → `in_progress` (краткий комментарий — в теле **`issues/*.md`**; при необходимости аудита как артефакта — отдельный **story** `requirements/review-summary-{slug}.md`). +4. Обновить frontmatter: + - `status: done` или `status: in_progress` + - **`updated_at`** — новый ISO timestamp UTC (обязательно). +5. Не изменять **`hash`** и **`project_hash`** без явной необходимости. + +--- + +## Что не входит в скилл + +- Смена статусов **проекта** blockchain-уровня — в `project.md` они не сериализуются текущим экспортом; используй UI/API Capital. +- Ревью **кода** в монорепозитории — отдельный процесс (MR, `c9s-bmm-developer`). + +--- + +## Предупреждение в ответе пользователю + +Всегда кратко напоминай: *«Git-файл обновлён; синхронизация в БД произойдёт при следующем импорте; при ошибке прав статус в UI может не совпасть с файлом»*. + +--- + +## Заметки для LLM + +- Не ставь **`done`** в других скиллах — если пользователь просит, перенаправь на этот скилл или на человека-мастера. +- Используй **TodoWrite**, если задач несколько. diff --git a/bmad-c9s/skills/core/c9s-monorepo-component-git/SKILL.md b/bmad-c9s/skills/core/c9s-monorepo-component-git/SKILL.md new file mode 100644 index 0000000..ab26368 --- /dev/null +++ b/bmad-c9s/skills/core/c9s-monorepo-component-git/SKILL.md @@ -0,0 +1,107 @@ +--- +name: c9s-monorepo-component-git +description: | + Монорепозиторий кода: только ветки component/ от dev, коммиты только в них. + По команде — merge в dev и запись в results_commits.yaml (SHA, username, merge_title, дата) в репозитории результатов (.c9s/ проекта, см. GIT-COMMITS-POLICY §2.4), не в монорепо. + Прямые коммиты в dev и прочие ветки запрещены. Активируй при старте работы над компонентом + или при «смерджи компонент в dev», «зафиксируй merge для взноса». +allowed-tools: Read, Write, Edit, Bash, Glob, Grep, TodoWrite +--- + +# Git монорепозитория: ветки компонентов и учёт merge (c9s-monorepo-component-git) + +## Назначение + +**Единственный** скилл, который задаёт **обязательные** правила `git` для **монорепозитория кода** (например Coopenomics `monocoop`). + +### Жёсткие правила (без исключений) + +1. **Запрещены** коммиты **напрямую в `dev`** и в **любую** ветку, кроме **ветки компонента** по соглашению ниже. +2. **Разрешены** коммиты **только** в ветке вида **`component/-`**, созданной от **актуального `dev`**. +3. **`component_slug`** — имя каталога компонента под `components/` (например `desktop`, `controller`), либо значение **`active_component_git_slug`** из `c9s-config.yaml`. +4. **`work_slug`** — краткий slug от **русского или рабочего названия** задачи/результата (транслит, дефисы, нижний регистр); если одна долгая линия работы на компонент — допустимо **`component/`** без суффикса **только** если так согласовано с пользователем. +5. **Merge в `dev`** — **только** по **явной команде** пользователя в конце работы (не по собственной инициативе агента). +6. После успешного merge — записать в **`results_commits.yaml`** (путь по [GIT-COMMITS-POLICY §2.4](../../../docs/GIT-COMMITS-POLICY.md)) **полный SHA**, **`username`** и **`merge_title`** (первая строка merge-коммита), плюс остальные поля по шаблону. Новая запись — **в начало** `commits`. Затем **commit + push** в **git репозитория результатов** для этого файла. При необходимости обновить **`last_merge_to_dev_commit_hash`** в `c9s-config.yaml`. + +Остальные скиллы (developer, bmad-master-c9s и т.д.) **не отменяют** эти правила. + +--- + +## Обязательные ссылки + +- [docs/GIT-COMMITS-POLICY.md](../../../docs/GIT-COMMITS-POLICY.md) +- [templates/results_commits.template.yaml](../../../templates/results_commits.template.yaml) +- [config/c9s-config.template.yaml](../../../config/c9s-config.template.yaml) — поля `monorepo_root`, `active_component_git_slug`, `results_commits_log` + +--- + +## Сценарий A: начало работы над компонентом + +1. Определить **`monorepo_root`** (корень git монорепозитория) — из `c9s-config.yaml` или путь от пользователя. +2. **`git fetch`**. +3. **`git checkout dev`** → **`git pull`** (или эквивалент обновления `dev`). +4. Согласовать с пользователем **`component_slug`** и краткое **название работы** для **`work_slug`**. +5. **`git checkout -b component/-`** от текущего `dev`. +6. Дальнейшие коммиты **только** в этой ветке (осмысленные сообщения; по желанию команды — на русском). + +Если ветка уже существует локально — можно `checkout` и продолжить, не нарушая запрет на коммиты в `dev`. + +--- + +## Сценарий B: промежуточные коммиты + +- Выполнять **`git add` / `git commit`** **только** на **ветке компонента**. +- **Не** переключаться на `dev` для коммита правок. + +--- + +## Сценарий C: завершение — merge в `dev` и учёт хэша + +Только по команде пользователя («смерджи ветку компонента в dev», «зафиксируй merge для паевого взноса» и т.п.): + +1. Убедиться, что нет незакоммиченных изменений (или закоммитить их **в ветке компонента**). +2. **`git checkout dev`** → **`git pull`**. +3. **`git merge`** ветку компонента (предпочтительно **`--no-ff`**, чтобы на `dev` появился **отдельный merge-коммит** — его SHA проще однозначно использовать для взноса; если политика команды — только FF, зафиксировать SHA того коммита, на который указывает `dev` после merge). +4. Получить SHA и заголовок merge: **`git rev-parse HEAD`**; первая строка сообщения коммита — **`git log -1 --format=%s HEAD`** (для поля **`merge_title`** в журнале). +5. **`git push origin dev`** — если пользователь просил отправить (и это разрешено политикой). + +### Запись в `results_commits.yaml` + +1. Прочитать `c9s-config.yaml`: **`results_root`**, **`active_project_slug`**, **`username`** (для записи в журнале), опционально **`active_component_path`**, **`results_commits_log`**. Если **`username`** пуст — **уточнить у оператора**, не подставлять выдуманное значение. +2. Вычислить **`projectRoot`** = `{results_root}/{active_project_slug}`. Путь к журналу: + - если задан **`results_commits_log`**: при абсолютном пути — как есть; иначе **`{projectRoot}/{results_commits_log}`**; + - иначе **`{projectRoot}/.c9s/results_commits.yaml`**. +3. Убедиться, что каталог (например `.c9s/`) существует; если файла нет — создать из [templates/results_commits.template.yaml](../../../templates/results_commits.template.yaml). +4. Добавить **в начало** массива **`commits`** элемент: + +```yaml +- status: pending + username: "<из c9s-config.yaml username>" + merge_title: "<первая строка merge-коммита: git log -1 --format=%s; при необходимости кратко по-русски по смыслу>" + component: "" + merge_commit_hash: "<полный SHA>" + recorded_at_utc: "" + note: "" +``` + +- **`status: pending`** — пока оператор не отметит паевой взнос; затем вручную сменить на **`contributed`**. +5. Сохранить YAML (существующие записи не удалять). +6. В **корне git репозитория результатов** (`results_root` — корень клона): `git add` на путь к `results_commits.yaml` → `git commit` (кратко, по-русски: учёт merge компонента в dev) → `git push`, если удалённый репозиторий настроен. + +### Опционально: `c9s-config.yaml` + +Если есть **`last_merge_to_dev_commit_hash`** — обновить тем же SHA (дубль; канон — `results_commits.yaml`). + +--- + +## Сценарий D: репозиторий результатов + +- **Не использовать** этот скилл для `git` в **results_root** — только [c9s-results-push](../c9s-results-push/SKILL.md). + +--- + +## Заметки для LLM + +- При любой неоднозначности (имя ветки, FF vs merge commit) — **спросить пользователя**, не нарушая запрет на коммиты в `dev`. +- Не выполнять `git push --force` на общие ветки без явного указания. +- Путь к монорепо может отличаться от `results_root`; не путать каталоги. diff --git a/bmad-c9s/skills/core/c9s-results-push/SKILL.md b/bmad-c9s/skills/core/c9s-results-push/SKILL.md new file mode 100644 index 0000000..0bcaf7e --- /dev/null +++ b/bmad-c9s/skills/core/c9s-results-push/SKILL.md @@ -0,0 +1,47 @@ +--- +name: c9s-results-push +description: | + Репозиторий результатов Capital: базовый режим — агент сам commit/push после правок (GIT-COMMITS-POLICY). + Этот скилл — для явной команды пользователя с особым сообщением коммита или повторного push. + Монорепо кода не трогать — только c9s-monorepo-component-git. +allowed-tools: Read, Write, Edit, Bash, Glob, Grep, TodoWrite +--- + +# Push результатов в Git (c9s-results-push) + +## Назначение + +**По умолчанию** агент **уже** выполняет **`git commit`** и **`git push`** в репозитории результатов после значимых правок — см. [docs/GIT-COMMITS-POLICY.md](../../../docs/GIT-COMMITS-POLICY.md) §1. + +Этот скилл нужен, когда пользователь **явно** просит: + +- отдельный коммит с **заданным** текстом сообщения; +- повторный **`git push`**; +- «запушь results» / `c9s-push-results` как **отдельную** операцию. + +**Не** использовать как оправдание **не** коммитить после обычной работы — автофиксация по политике обязательна. + +--- + +## Обязательные ссылки + +- [docs/GIT-COMMITS-POLICY.md](../../../docs/GIT-COMMITS-POLICY.md) +- [docs/TASKS-DOCUMENTS-TIME-POLICY.md](../../../docs/TASKS-DOCUMENTS-TIME-POLICY.md) +- [CLAUDE.md](../../../CLAUDE.md) +- [helpers-ru.md](../../../utils/helpers-ru.md) + +--- + +## Алгоритм (явный вызов) + +1. Прочитать `c9s-config.yaml`, корень git-репозитория результатов (`results_root`). +2. `git status` — показать изменения. +3. Сообщение коммита: **русский**, по указанию пользователя или по смыслу изменений. +4. `git add` → `git commit` → при необходимости `git push`. +5. Без `force-push` на общие ветки без прямого указания пользователя. + +--- + +## Запреты + +- Не применять к **монорепозиторию кода** — только [c9s-monorepo-component-git](../c9s-monorepo-component-git/SKILL.md). diff --git a/bmad-c9s/skills/core/c9s-submit-for-review/SKILL.md b/bmad-c9s/skills/core/c9s-submit-for-review/SKILL.md new file mode 100644 index 0000000..468fcae --- /dev/null +++ b/bmad-c9s/skills/core/c9s-submit-for-review/SKILL.md @@ -0,0 +1,41 @@ +--- +name: c9s-submit-for-review +description: | + Перевод задачи Capital в on_review по ЯВНОЙ команде оператора (не автоматически после работы агента). + Обновить updated_at, commit и push в репозиторий результатов. Триггеры: /c9s-submit-for-review, + «отправь задачу на ревью», «переведи issue … в on_review». +allowed-tools: Read, Write, Edit, Bash, Glob, Grep, TodoWrite +--- + +# Передача задачи на ревью мастеру (c9s-submit-for-review) + +## Назначение + +Выполнять **только** после **явного** указания **оператора** (человека): он прочитал/проверил результат (PRD, правки, код в контексте задачи и т.д.) и **сознательно** готов передать задачу мастеру в очередь ревью. + +**Запрещено:** переводить в **`on_review`** «потому что агент закончил черновик» — см. [docs/TASKS-DOCUMENTS-TIME-POLICY.md](../../../docs/TASKS-DOCUMENTS-TIME-POLICY.md) §2. + +--- + +## Обязательные ссылки + +- [TASKS-DOCUMENTS-TIME-POLICY.md](../../../docs/TASKS-DOCUMENTS-TIME-POLICY.md) +- [FORMAT-CAPITAL-GITHUB.md](../../../docs/FORMAT-CAPITAL-GITHUB.md) +- [GIT-COMMITS-POLICY.md](../../../docs/GIT-COMMITS-POLICY.md) + +--- + +## Алгоритм + +1. Убедиться, что пользователь **явно** попросил перевести **конкретную** задачу (или все перечисленные) в ревью. +2. Найти **`{base}/issues/{slug}.md`**. Если нет **`created_by`**, **`submaster`** или пустой **`creators`** — предупредить оператора: учёт времени в Capital мог не работать; при согласии — добавить поля из **`c9s-config.yaml` → `username`** и только затем ревью. Выставить **`status: on_review`**, новый **`updated_at`** (ISO UTC). +3. При необходимости кратко дополнить **тело** задачи (что сдано на ревью), без подмены решения мастера. +4. **Commit + push** в репозиторий результатов (сообщение на русском, например: «Задача … передана на ревью»). +5. **Не** ставить **`done`** — это **`c9s-master-review`**. + +--- + +## Заметки для LLM + +- Если пользователь не формулировал команду как «на ревью», а только «закончи задачу» — **уточнить**: оставить **`in_progress`** до проверки или уже **`on_review`**. +- По умолчанию «закончи» = довести артефакт до состояния **`in_progress`**, **без** `on_review`, пока оператор не скажет иначе. diff --git a/bmad-c9s/templates/bmm-workflow-status.c9s.template.yaml b/bmad-c9s/templates/bmm-workflow-status.c9s.template.yaml new file mode 100644 index 0000000..e8c8dae --- /dev/null +++ b/bmad-c9s/templates/bmm-workflow-status.c9s.template.yaml @@ -0,0 +1,53 @@ +# BMAD-c9s — статус воркфлоу (хранить в {base}/.c9s/workflow-status.yaml) +# Сгенерировано: {{TIMESTAMP}} +# Проект: {{PROJECT_NAME}} + +project_name: "{{PROJECT_NAME}}" +project_type: "{{PROJECT_TYPE}}" +project_level: {{PROJECT_LEVEL}} +communication_language: "ru" +output_language: "ru" +last_updated: "{{TIMESTAMP}}" + +# Статусы: required | optional | recommended | conditional | skipped | путь-к-файлу + +workflow_status: + - name: product-brief + phase: 1 + status: "optional" + description: "Продуктовый бриф" + + - name: brainstorm-project + phase: 1 + status: "optional" + description: "Мозговой штурм" + + - name: research + phase: 1 + status: "optional" + description: "Исследование рынка" + + - name: prd + phase: 2 + status: "{{PRD_STATUS}}" + description: "PRD" + + - name: tech-spec + phase: 2 + status: "{{TECH_SPEC_STATUS}}" + description: "Техническое задание" + + - name: create-ux-design + phase: 2 + status: "optional" + description: "UX/UI" + + - name: architecture + phase: 3 + status: "{{ARCHITECTURE_STATUS}}" + description: "Архитектура" + + - name: solutioning-gate-check + phase: 3 + status: "optional" + description: "Проверка архитектуры" diff --git a/bmad-c9s/templates/issue.template.md b/bmad-c9s/templates/issue.template.md new file mode 100644 index 0000000..2d88c24 --- /dev/null +++ b/bmad-c9s/templates/issue.template.md @@ -0,0 +1,26 @@ +--- +type: issue +title: "{{TITLE}}" +hash: "{{ISSUE_HASH}}" +project_hash: "{{PROJECT_HASH}}" +status: backlog +priority: medium +estimate: 0 # bmad-c9s: 0, пока оператор явно не задал иначе; фактическое время до on_review (on_review — только по команде оператора) +created_by: "{{USERNAME}}" +submaster: "{{USERNAME}}" +creators: ["{{USERNAME}}"] +labels: [] +sort_order: 0 +created_at: "{{ISO_TIMESTAMP}}" +updated_at: "{{ISO_TIMESTAMP}}" +--- + +## Описание + +## Критерии приёмки + +## Связи + +- При необходимости ссылки на продуктовые **`requirements/*.md`** (пути от корня `base`). Всё для выполнения этой задачи — в разделах выше (одна dev-задача, один промпт). + +**bmad-c9s:** подставь **`{{USERNAME}}`** из **`c9s-config.yaml` → `username`** во все три поля (`created_by`, `submaster`, `creators`) — иначе учёт времени в Capital не запустится. В **начале** работы — создать задачу и **push**. **`on_review`** агент **не ставит** сам: только после **явной команды оператора** (**`/c9s-submit-for-review`**, «отправь на ревью») — тогда **`on_review`**, **`updated_at`**, commit/push. До команды — **`in_progress`** (или **`todo`**). См. [docs/TASKS-DOCUMENTS-TIME-POLICY.md](../docs/TASKS-DOCUMENTS-TIME-POLICY.md) §1–2. diff --git a/bmad-c9s/templates/results_commits.template.yaml b/bmad-c9s/templates/results_commits.template.yaml new file mode 100644 index 0000000..37f141d --- /dev/null +++ b/bmad-c9s/templates/results_commits.template.yaml @@ -0,0 +1,16 @@ +# Учёт merge-коммитов: ветка компонента → ветка dev (монорепозиторий кода). +# Файл НЕ в монорепо кода. Хранить в репозитории результатов Capital, рядом с .c9s: +# по умолчанию {projectRoot}/.c9s/results_commits.yaml или путь из results_commits_log в c9s-config.yaml. +# Имя файла обычно: results_commits.yaml +# Новые элементы добавляются в НАЧАЛО списка commits (первый = самый новый). +# +# status: +# pending — merge зафиксирован, паевой взнос ещё не отмечен +# contributed — вручную сменить после внесения взноса в кооператив +# +# merge_commit_hash — полный SHA коммита merge на dev (или эквивалент при FF — см. скилл c9s-monorepo-component-git) +# +# username — аккаунт оператора (из c9s-config.yaml username); в общем репозитории по нему видно, чья запись +# merge_title — человекочитаемое краткое название содержания merge (обычно git log -1 --format=%s после merge на dev) + +commits: [] diff --git a/bmad-c9s/templates/sprint-status.c9s.template.yaml b/bmad-c9s/templates/sprint-status.c9s.template.yaml new file mode 100644 index 0000000..2a21fa3 --- /dev/null +++ b/bmad-c9s/templates/sprint-status.c9s.template.yaml @@ -0,0 +1,14 @@ +# Спринт bmad-c9s — {base}/.c9s/sprint-status.yaml +# Не синхронизируется с Capital как issue/story. + +sprint_name: "{{SPRINT_NAME}}" +start_date: "{{START_DATE}}" +end_date: "{{END_DATE}}" +last_updated: "{{TIMESTAMP}}" + +goal: "{{SPRINT_GOAL}}" + +# issue_hash или пути к issues/*.md для человекочитаемости +committed_issues: [] + +notes: "" diff --git a/bmad-c9s/templates/story.template.md b/bmad-c9s/templates/story.template.md new file mode 100644 index 0000000..a34fef7 --- /dev/null +++ b/bmad-c9s/templates/story.template.md @@ -0,0 +1,22 @@ +--- +type: story +title: "{{TITLE}}" +hash: "{{STORY_HASH}}" +content_format: MARKDOWN +status: pending +created_by: "{{USERNAME}}" +sort_order: 0 +project_hash: "{{PROJECT_HASH}}" +created_at: "{{ISO_TIMESTAMP}}" +updated_at: "{{ISO_TIMESTAMP}}" +--- + +Файл только под **`requirements/`** (продуктовый уровень). Для задач отдельные story не создавать — контекст выполнения в теле **`issues/*.md`**. + +**`title` в frontmatter выше:** только **русский язык**, **чёткий понятный заголовок** (обязательное правило — см. `CLAUDE.md`, `docs/FORMAT-CAPITAL-GITHUB.md` §2.2). + +## Контекст + +## Критерии готовности + +## Заметки diff --git a/bmad-c9s/utils/helpers-ru.md b/bmad-c9s/utils/helpers-ru.md new file mode 100644 index 0000000..a30f630 --- /dev/null +++ b/bmad-c9s/utils/helpers-ru.md @@ -0,0 +1,140 @@ +# Утилиты bmad-c9s (справка для агента) + +Сокращённые инструкции без исполняемых скриптов: агент выполняет шаги через чтение/запись файлов. + +Полная спецификация путей и полей: [../docs/FORMAT-CAPITAL-GITHUB.md](../docs/FORMAT-CAPITAL-GITHUB.md). + +Git (results / монорепо): [../docs/GIT-COMMITS-POLICY.md](../docs/GIT-COMMITS-POLICY.md). Задачи, документы, `estimate`, `on_review`: [../docs/TASKS-DOCUMENTS-TIME-POLICY.md](../docs/TASKS-DOCUMENTS-TIME-POLICY.md). + +--- + +## Загрузка конфигурации + +1. Найти `c9s-config.yaml`: + - сначала в **корне активного репозитория результатов** (рядом с `project.md` или корневой папкой проекта); + - при отсутствии — путь из подсказки пользователя или из глобальных настроек. +2. Прочитать YAML и извлечь: + - `results_root` (обязательно) + - `active_project_slug` + - `coopname`, `username` + - `active_component_path` (опционально) + - `default_language` + - опционально для git монорепо: `monorepo_root`, `active_component_git_slug`, `results_commits_log`, `last_merge_to_dev_commit_hash` + +--- + +## Путь к `results_commits.yaml` (журнал merge → dev для взносов) + +Файл **только** в **репозитории результатов**, не в монорепозитории кода. + +1. `projectRoot = {results_root}/{active_project_slug}`. +2. Если в конфиге задан **`results_commits_log`**: абсолютный путь — использовать как есть; иначе **`{projectRoot}/{results_commits_log}`**. +3. Иначе: **`{projectRoot}/.c9s/results_commits.yaml`**. + +См. [docs/GIT-COMMITS-POLICY.md](../docs/GIT-COMMITS-POLICY.md) §2.4. + +--- + +## Разрешение корня активного проекта Capital + +``` +projectRoot = {results_root}/{active_project_slug} +``` + +Файл корневого проекта: + +``` +{projectRoot}/project.md +``` + +Если задан `active_component_path` (например `components/my-comp`): + +``` +componentRoot = {projectRoot}/{active_component_path} +``` + +Файл компонента: + +``` +{componentRoot}/component.md +``` + +**База для задач и требований** (`base`): + +- без компонента: `base = projectRoot` +- с компонентом: `base = componentRoot` + +Пути: + +- задачи: `{base}/issues/{issueSlug}.md` — в **теле** задачи весь контекст для реализации (bmad-c9s: без подпапок `*-requirements/`). В frontmatter новой задачи **обязательно**: **`created_by`**, **`submaster`**, **`creators: [""]`** — тот же **`username`**, что в **`c9s-config.yaml`**; иначе **не будет учёта времени** в Capital (см. [TASKS-DOCUMENTS-TIME-POLICY §1](../docs/TASKS-DOCUMENTS-TIME-POLICY.md)). +- требования уровня проекта: `{base}/requirements/{storySlug}.md` + +**Наименование требований:** в каждом `{base}/requirements/*.md` поле **`title`** в frontmatter — **только русский язык**, заголовок **чёткий и понятный** (см. [FORMAT §2.2](../docs/FORMAT-CAPITAL-GITHUB.md)). + +--- + +## Чтение `hash` из `project.md` / `component.md` + +1. Прочитать файл. +2. Распарсить frontmatter (строки между `---`). +3. Взять значение `hash` — использовать как `project_hash` для новых задач и для story в **`requirements/`**. + +Новые story в **`requirements/`** не привязывать к задаче через **`issue_hash`** и не класть рядом с `issues/` в отдельные каталоги — связь задачи с продуктовым контекстом только **ссылками в markdown-теле** `issues/*.md`. + +--- + +## Генерация нового hash (64 hex) + +Подойдёт любой способ **32 байта случайных → hex**. Примеры для пользователя (выполняет человек или среда, если разрешено): + +```bash +openssl rand -hex 32 +``` + +Агент **не выдумывает** предсказуемые строки; для демо в тесте можно использовать уже сгенерированную hex-строку. + +--- + +## Обновление `updated_at` + +При каждом сохранении файла, который должен импортироваться в Capital: + +1. Установить `updated_at` в текущее время UTC в формате ISO 8601 с миллисекундами и суффиксом `Z`, например: `2026-03-27T15:04:05.123Z`. +2. Не откатывать `updated_at` на более старое значение при редактировании. + +--- + +## Slug заголовка + +Правило должно совпадать с бэкендом: транслитерация кириллицы в латиницу, пробелы и спецсимволы — в дефисы, нижний регистр, схлопывание повторяющихся дефисов (как `generateSlug` в `FileFormatService`). При сомнении — ориентироваться на **уже существующие имена папок** в репозитории. + +--- + +## Операционная папка `.c9s/` + +Здесь **только** то, что не является сущностью Capital (project/issue/story): статусы воркфлоу BMAD, служебные YAML, напоминания. **Не** хранить здесь брифы, PRD, заметки аналитика — это всё оформляется как **требования (story)** в `{base}/requirements/*.md` по FORMAT. + +Создавать при инициализации (пример): + +``` +{base}/.c9s/ + workflow-status.yaml # статус фаз BMAD + sprint-status.yaml # опционально (спринт), см. scrum-master + README.txt # кратко: «.c9s — только операционка; артефакты — requirements/*.md» +``` + +При первой выдаче требований **создать** каталог `{base}/requirements/`, если его ещё нет. + +Интеллектуальная продукция **уровня проекта** (бриф, PRD, исследование, техспека, мозговой штурм, UX и т.д.) — **story** под `{base}/requirements/`. То, что относится **к конкретной задаче**, — в **теле** соответствующего **`issues/{issueSlug}.md`**, без отдельных story-файлов «на задачу». + +--- + +## Статусы воркфлоу (YAML) + +Можно использовать упрощённый файл по мотивам `bmad-v6/templates/bmm-workflow-status.template.yaml`, но хранить его в **`.c9s/workflow-status.yaml`**, а не смешивать с Capital markdown сущностями. + +--- + +## Ссылка на helpers v6 (англ.) + +Детальные паттерны BMAD v6: `bmad-v6/utils/helpers.md` — для углублённых сценариев на английском. diff --git a/install-v6.ps1 b/install-v6.ps1 index e96c3cb..4ae5639 100644 --- a/install-v6.ps1 +++ b/install-v6.ps1 @@ -1,8 +1,8 @@ ############################################################################### -# BMAD Method v6 for Claude Code - PowerShell Installation Script +# BMAD-c9s (Coopenomics) for Claude Code — PowerShell installer # -# Installs BMAD Method v6 using only Claude Code native features -# No npx, no external dependencies, pure Claude Code +# Устанавливает скиллы и команды из bmad-c9s/. Каталог bmad-v6/ в репозитории +# не изменяется; при наличии копируется helpers.md как helpers-bmad-v6-en.md. # # Supports: PowerShell 5.1+ (Windows default) and PowerShell 6+ (Core) # @@ -11,20 +11,20 @@ # .\install-v6.ps1 -Verbose # Detailed diagnostic output # .\install-v6.ps1 -WhatIf # Dry-run (show what would be installed) # .\install-v6.ps1 -Force # Force reinstall over existing -# .\install-v6.ps1 -Uninstall # Remove BMAD Method v6 +# .\install-v6.ps1 -Uninstall # Remove BMAD-c9s from ~/.claude/.../bmad ############################################################################### <# .SYNOPSIS - Installs BMAD Method v6 for Claude Code. + Installs BMAD-c9s (Coopenomics) for Claude Code. .DESCRIPTION - This script installs the BMAD Method v6 framework to the Claude Code - configuration directory (~/.claude/). It includes: - - Core orchestration skills - - BMM (BMAD Method Management) skills - - BMB (BMAD Method Baseline) skills (optional) - - CIS (Contribution Integration System) skills (optional) + Installs skills and slash commands from bmad-c9s/ into the Claude Code + directory (~/.claude/). It includes: + - Core orchestration (bmad-master-c9s, c9s-master-review) + - BMM role skills (analyst, pm, architect, scrum-master, developer, ux-designer) + - BMB builder skill + - CIS creative-intelligence skill - Configuration templates - Utility helpers @@ -41,20 +41,20 @@ Show what would be installed without actually installing (dry-run). .PARAMETER Force - Force reinstallation even if BMAD v6 is already installed. + Force reinstallation even if BMAD-c9s is already installed. .PARAMETER Uninstall - Remove BMAD Method v6 from the system. + Remove BMAD-c9s installation from ~/.claude/skills/bmad, commands/bmad, config/bmad. .EXAMPLE .\install-v6.ps1 - Installs BMAD Method v6 with standard output. + Installs BMAD-c9s with standard output. .EXAMPLE .\install-v6.ps1 -Verbose - Installs BMAD Method v6 with detailed diagnostic output. + Installs BMAD-c9s with detailed diagnostic output. .EXAMPLE .\install-v6.ps1 -WhatIf @@ -64,12 +64,12 @@ .EXAMPLE .\install-v6.ps1 -Uninstall - Removes BMAD Method v6 from the system. + Removes BMAD-c9s from ~/.claude/.../bmad. .NOTES - Version: 6.0.3 + Version: 1.0.0 (BMAD-c9s) Requires: PowerShell 5.1+ - Updated: 2025-11-14 + Updated: 2025-03-27 Changes: Fixed PowerShell function scoping issues for WSL compatibility by making all functions globally scoped. This resolves "Write-Success is not recognized" errors when running in WSL PowerShell environments. @@ -89,7 +89,7 @@ $ErrorActionPreference = "Stop" # Configuration ############################################################################### -$BmadVersion = "6.0.3" +$BmadVersion = "1.0.0" # PowerShell version detection $PSVersion = $PSVersionTable.PSVersion.Major @@ -240,13 +240,15 @@ $BmadSkillsDir = Join-PathCompat $ClaudeDir "skills" "bmad" $BmadCommandsDir = Join-PathCompat $ClaudeDir "commands" "bmad" $ScriptDir = $PSScriptRoot -# Source directories +# Source directories (primary: bmad-c9s; bmad-v6 only for optional EN helpers) +$SourceBmadC9sDir = Join-Path $ScriptDir "bmad-c9s" $SourceBmadV6Dir = Join-Path $ScriptDir "bmad-v6" -$SourceSkillsDir = Join-PathCompat $SourceBmadV6Dir "skills" -$SourceConfigDir = Join-PathCompat $SourceBmadV6Dir "config" -$SourceTemplatesDir = Join-PathCompat $SourceBmadV6Dir "templates" -$SourceUtilsDir = Join-PathCompat $SourceBmadV6Dir "utils" -$SourceCommandsDir = Join-PathCompat $SourceBmadV6Dir "commands" +$SourceSkillsDir = Join-PathCompat $SourceBmadC9sDir "skills" +$SourceConfigDir = Join-PathCompat $SourceBmadC9sDir "config" +$SourceTemplatesDir = Join-PathCompat $SourceBmadC9sDir "templates" +$SourceUtilsDir = Join-PathCompat $SourceBmadC9sDir "utils" +$SourceCommandsDir = Join-PathCompat $SourceBmadC9sDir "commands" +$SourceC9sDocsDir = Join-PathCompat $SourceBmadC9sDir "docs" ############################################################################### # Pre-Flight Validation @@ -276,12 +278,12 @@ function global:Test-Prerequisites { $errors += "Script directory not found: $ScriptDir" } - # Check if bmad-v6 source directory exists - if (-not (Test-Path $SourceBmadV6Dir)) { - $errors += "Source directory not found: $SourceBmadV6Dir" - $errors += "Make sure you're running this script from the repository root" + # Check if bmad-c9s source directory exists + if (-not (Test-Path $SourceBmadC9sDir)) { + $errors += "Source directory not found: $SourceBmadC9sDir" + $errors += "Run this script from the claude-code-bmad-skills repository root" } else { - Write-Success "Found source directory: $SourceBmadV6Dir" + Write-Success "Found source directory: $SourceBmadC9sDir" } # Check required source subdirectories @@ -315,9 +317,9 @@ function global:Test-Prerequisites { } # Check if already installed - $bmadMasterPath = Join-PathCompat $BmadSkillsDir "core" "bmad-master" "SKILL.md" + $bmadMasterPath = Join-PathCompat $BmadSkillsDir "core" "bmad-master-c9s" "SKILL.md" if ((Test-Path $bmadMasterPath) -and -not $Force) { - Write-Warning "BMAD Method v6 is already installed at: $BmadSkillsDir" + Write-Warning "BMAD-c9s is already installed at: $BmadSkillsDir" Write-Host "" Write-Host "Options:" -ForegroundColor Yellow Write-Host " 1. Run with -Force to reinstall" @@ -354,9 +356,9 @@ function global:Test-Prerequisites { ############################################################################### function global:Uninstall-BmadV6 { - Write-Header "BMAD Method v$BmadVersion Uninstaller" + Write-Header "BMAD-c9s v$BmadVersion — удаление" - Write-Info "Checking for BMAD Method v6 installation..." + Write-Info "Checking for BMAD-c9s installation..." $dirsToRemove = @( $BmadSkillsDir, @@ -373,13 +375,13 @@ function global:Uninstall-BmadV6 { } if (-not $found) { - Write-Warning "BMAD Method v6 is not installed" + Write-Warning "BMAD-c9s is not installed under ~/.claude/.../bmad" Write-Host "Nothing to uninstall." exit 0 } Write-Host "" - Write-Warning "This will remove BMAD Method v6 from your system:" + Write-Warning "This will remove BMAD-c9s from your system:" foreach ($dir in $dirsToRemove) { if (Test-Path $dir) { Write-Host " - $dir" -ForegroundColor Yellow @@ -395,7 +397,7 @@ function global:Uninstall-BmadV6 { } } - Write-Info "Uninstalling BMAD Method v6..." + Write-Info "Uninstalling BMAD-c9s..." try { foreach ($dir in $dirsToRemove) { @@ -408,7 +410,7 @@ function global:Uninstall-BmadV6 { } Write-Host "" - Write-Success "BMAD Method v6 has been uninstalled successfully!" + Write-Success "BMAD-c9s has been uninstalled successfully!" Write-Host "" exit 0 } @@ -423,7 +425,7 @@ function global:Uninstall-BmadV6 { ############################################################################### function global:New-Directories { - Write-Progress -Activity "Installing BMAD Method v6" -Status "Creating directory structure..." -PercentComplete 0 + Write-Progress -Activity "Installing BMAD-c9s" -Status "Creating directory structure..." -PercentComplete 0 Write-Info "Creating directory structure..." try { @@ -457,8 +459,8 @@ function global:New-Directories { } function global:Install-Skills { - Write-Progress -Activity "Installing BMAD Method v6" -Status "Installing BMAD skills..." -PercentComplete 20 - Write-Info "Installing BMAD skills..." + Write-Progress -Activity "Installing BMAD-c9s" -Status "Installing skills..." -PercentComplete 20 + Write-Info "Installing BMAD-c9s skills..." $skillComponents = @( @{ @@ -525,53 +527,23 @@ function global:Install-Skills { } function global:Install-Config { - Write-Progress -Activity "Installing BMAD Method v6" -Status "Installing configuration..." -PercentComplete 40 - Write-Info "Installing configuration..." + Write-Progress -Activity "Installing BMAD-c9s" -Status "Installing configuration..." -PercentComplete 40 + Write-Info "Installing BMAD-c9s configuration template..." try { - # Install config template - $ConfigTemplatePath = Join-PathCompat $SourceConfigDir "config.template.yaml" - $ConfigPath = Join-Path $BmadConfigDir "config.yaml" + $C9sConfigTemplatePath = Join-PathCompat $SourceConfigDir "c9s-config.template.yaml" + $C9sConfigDestPath = Join-Path $BmadConfigDir "c9s-config.template.yaml" - Write-Verbose "Config template: $ConfigTemplatePath" - Write-Verbose "Config destination: $ConfigPath" + Write-Verbose "Config template: $C9sConfigTemplatePath" + Write-Verbose "Config destination: $C9sConfigDestPath" - if (Test-Path $ConfigTemplatePath) { - if (-not (Test-Path $ConfigPath) -or $Force) { - if ($PSCmdlet.ShouldProcess($ConfigPath, "Create configuration")) { - # Create config from template, substituting variables - Write-Verbose "Creating config from template" - $configContent = Get-Content $ConfigTemplatePath -Raw -ErrorAction Stop - - # Get username (cross-platform) - $userName = if ($env:USERNAME) { $env:USERNAME } else { $env:USER } - $configContent = $configContent -replace '{{USER_NAME}}', $userName - - Set-Content -Path $ConfigPath -Value $configContent -Encoding UTF8 -ErrorAction Stop - Write-Success "Configuration created" - Write-Verbose " User: $userName" - } - } else { - Write-Info "Configuration already exists, preserving" - Write-Verbose " Existing config: $ConfigPath" + if (Test-Path $C9sConfigTemplatePath) { + if ($PSCmdlet.ShouldProcess($C9sConfigDestPath, "Copy c9s config template")) { + Copy-ItemSafe -SourcePath $C9sConfigTemplatePath -DestinationPath $C9sConfigDestPath -Force -ErrorContext "c9s config template" + Write-Success "c9s-config.template.yaml installed (copy to your results repo as c9s-config.yaml)" } } else { - Write-Warning "Config template not found at: $ConfigTemplatePath" - } - - # Copy project config template - $ProjectConfigTemplatePath = Join-PathCompat $SourceConfigDir "project-config.template.yaml" - $ProjectConfigDestPath = Join-Path $BmadConfigDir "project-config.template.yaml" - - Write-Verbose "Project config template: $ProjectConfigTemplatePath" - - if (Test-Path $ProjectConfigTemplatePath) { - if ($PSCmdlet.ShouldProcess($ProjectConfigDestPath, "Copy project config template")) { - Copy-ItemSafe -SourcePath $ProjectConfigTemplatePath -DestinationPath $ProjectConfigDestPath -Force -ErrorContext "project config template" - Write-Verbose " Project config template installed" - } - } else { - Write-Verbose "Project config template not found (skipping)" + Write-Warning "c9s-config.template.yaml not found at: $C9sConfigTemplatePath" } } catch { @@ -581,7 +553,7 @@ function global:Install-Config { } function global:Install-Templates { - Write-Progress -Activity "Installing BMAD Method v6" -Status "Installing templates..." -PercentComplete 60 + Write-Progress -Activity "Installing BMAD-c9s" -Status "Installing templates..." -PercentComplete 60 Write-Info "Installing templates..." try { @@ -608,35 +580,59 @@ function global:Install-Templates { } function global:Install-Utils { - Write-Progress -Activity "Installing BMAD Method v6" -Status "Installing utility helpers..." -PercentComplete 70 - Write-Info "Installing utility helpers..." + Write-Progress -Activity "Installing BMAD-c9s" -Status "Installing docs and helpers..." -PercentComplete 70 + Write-Info "Installing docs and helpers (c9s)..." try { - $HelpersPath = Join-PathCompat $SourceUtilsDir "helpers.md" - $HelpersDestPath = Join-Path $BmadConfigDir "helpers.md" - - Write-Verbose "Helpers source: $HelpersPath" - Write-Verbose "Helpers destination: $HelpersDestPath" - - if (Test-Path $HelpersPath) { - if ($PSCmdlet.ShouldProcess($HelpersDestPath, "Copy helpers")) { - Copy-ItemSafe -SourcePath $HelpersPath -DestinationPath $HelpersDestPath -Force -ErrorContext "utility helpers" - Write-Success "Utility helpers installed" - Write-Verbose " Copied to: $HelpersDestPath" + $HelpersRuPath = Join-PathCompat $SourceUtilsDir "helpers-ru.md" + $HelpersRuDest = Join-Path $BmadConfigDir "helpers-ru.md" + if (Test-Path $HelpersRuPath) { + if ($PSCmdlet.ShouldProcess($HelpersRuDest, "Copy helpers-ru.md")) { + Copy-ItemSafe -SourcePath $HelpersRuPath -DestinationPath $HelpersRuDest -Force -ErrorContext "helpers-ru" + Write-Success "helpers-ru.md installed" } } else { - Write-Warning "Helpers not found at: $HelpersPath" + Write-Warning "helpers-ru.md not found at: $HelpersRuPath" + } + + $FormatPath = Join-PathCompat $SourceC9sDocsDir "FORMAT-CAPITAL-GITHUB.md" + $FormatDest = Join-Path $BmadConfigDir "FORMAT-CAPITAL-GITHUB.md" + if (Test-Path $FormatPath) { + if ($PSCmdlet.ShouldProcess($FormatDest, "Copy FORMAT-CAPITAL-GITHUB.md")) { + Copy-ItemSafe -SourcePath $FormatPath -DestinationPath $FormatDest -Force -ErrorContext "FORMAT doc" + Write-Success "FORMAT-CAPITAL-GITHUB.md installed" + } + } + + $ClaudeSrc = Join-Path $SourceBmadC9sDir "CLAUDE.md" + $ClaudeDest = Join-Path $BmadConfigDir "CLAUDE-bmad-c9s.md" + if (Test-Path $ClaudeSrc) { + if ($PSCmdlet.ShouldProcess($ClaudeDest, "Copy CLAUDE-bmad-c9s.md")) { + Copy-ItemSafe -SourcePath $ClaudeSrc -DestinationPath $ClaudeDest -Force -ErrorContext "CLAUDE overview" + Write-Success "CLAUDE-bmad-c9s.md installed" + } + } + + $V6Helpers = Join-PathCompat $SourceBmadV6Dir "utils" "helpers.md" + $V6HelpersDest = Join-Path $BmadConfigDir "helpers-bmad-v6-en.md" + if (Test-Path $V6Helpers) { + if ($PSCmdlet.ShouldProcess($V6HelpersDest, "Copy BMAD v6 EN helpers (reference)")) { + Copy-ItemSafe -SourcePath $V6Helpers -DestinationPath $V6HelpersDest -Force -ErrorContext "v6 helpers EN" + Write-Success "helpers-bmad-v6-en.md (BMAD v6 reference) installed" + } + } else { + Write-Verbose "bmad-v6/utils/helpers.md not found — skipping EN reference" } } catch { - Write-ErrorMsg "Failed to install utility helpers" + Write-ErrorMsg "Failed to install docs/helpers" throw } } function global:Install-Commands { - Write-Progress -Activity "Installing BMAD Method v6" -Status "Installing slash commands..." -PercentComplete 80 - Write-Info "Installing slash commands..." + Write-Progress -Activity "Installing BMAD-c9s" -Status "Installing slash commands..." -PercentComplete 80 + Write-Info "Installing slash commands from bmad-c9s/commands..." try { Write-Verbose "Commands source: $SourceCommandsDir" @@ -672,26 +668,26 @@ function global:Install-Commands { } function global:Test-Installation { - Write-Progress -Activity "Installing BMAD Method v6" -Status "Verifying installation..." -PercentComplete 90 + Write-Progress -Activity "Installing BMAD-c9s" -Status "Verifying installation..." -PercentComplete 90 Write-Info "Verifying installation..." $errors = 0 $checks = @( @{ - Name = "BMad Master skill" - Path = Join-PathCompat $BmadSkillsDir "core" "bmad-master" "SKILL.md" + Name = "bmad-master-c9s skill" + Path = Join-PathCompat $BmadSkillsDir "core" "bmad-master-c9s" "SKILL.md" }, @{ - Name = "Configuration" - Path = Join-Path $BmadConfigDir "config.yaml" + Name = "c9s config template" + Path = Join-Path $BmadConfigDir "c9s-config.template.yaml" }, @{ - Name = "Helpers" - Path = Join-Path $BmadConfigDir "helpers.md" + Name = "helpers-ru" + Path = Join-Path $BmadConfigDir "helpers-ru.md" }, @{ - Name = "Slash commands" - Path = Join-Path $BmadCommandsDir "workflow-init.md" + Name = "Slash command c9s-init" + Path = Join-Path $BmadCommandsDir "c9s-init.md" } ) @@ -726,84 +722,57 @@ function global:Test-Installation { } function global:Show-NextSteps { - Write-Header "Installation Complete!" + Write-Header "BMAD-c9s — установка завершена" - Write-Host "[SUCCESS] BMAD Method v$BmadVersion installed successfully!" -ForegroundColor Green + Write-Host "[SUCCESS] BMAD-c9s v$BmadVersion (Coopenomics) установлен." -ForegroundColor Green Write-Host "" - Write-Host "Installation location:" + Write-Host "Каталоги:" Write-Host " Skills: $BmadSkillsDir" Write-Host " Commands: $BmadCommandsDir" Write-Host " Config: $BmadConfigDir" Write-Host "" - Write-Host "[OK] 9 Specialized Skills" - Write-Host " - Core orchestrator (BMad Master)" - Write-Host " - Agile agents (Analyst, PM, Architect, SM, Developer, UX)" - Write-Host " - Builder module (custom agents and workflows)" - Write-Host " - Creative Intelligence (brainstorming and research)" + Write-Host "Источник: bmad-c9s/ (bmad-v6/ в репозитории не изменяется)." Write-Host "" - Write-Host "[OK] 15 Workflow Commands" - Write-Host " - /workflow-init, /workflow-status" - Write-Host " - /product-brief, /prd, /tech-spec" - Write-Host " - /architecture, /solutioning-gate-check" - Write-Host " - /sprint-planning, /create-story, /dev-story" - Write-Host " - /brainstorm, /research" - Write-Host " - /create-agent, /create-workflow, /create-ux-design" + Write-Host "Дальше:" + Write-Host " 1. Перезапустите Claude Code" + Write-Host " 2. Скопируйте c9s-config.template.yaml в репозиторий результатов как c9s-config.yaml" + Write-Host " 3. Инициализация: /c9s-init (скилл bmad-master-c9s)" + Write-Host " 4. Статус: /c9s-status" Write-Host "" - Write-Host "[OK] Configuration system" - Write-Host "[OK] Template engine" - Write-Host "[OK] Status tracking utilities" + Write-Host "Документация после установки:" + Write-Host " $BmadConfigDir\CLAUDE-bmad-c9s.md" + Write-Host " $BmadConfigDir\FORMAT-CAPITAL-GITHUB.md" + Write-Host " $BmadConfigDir\helpers-ru.md" Write-Host "" - Write-Host "Next Steps:" - Write-Host "" - Write-Host "1. " -NoNewline - Write-Host "Restart Claude Code" -ForegroundColor Blue - Write-Host " Skills will be loaded in new sessions" - Write-Host "" - Write-Host "2. " -NoNewline - Write-Host "Open your project" -ForegroundColor Blue - Write-Host " Navigate to the project you want to use BMAD with" - Write-Host "" - Write-Host "3. " -NoNewline - Write-Host "Initialize BMAD" -ForegroundColor Blue - Write-Host " Run: /workflow-init" - Write-Host " This sets up BMAD structure in your project" - Write-Host "" - Write-Host "4. " -NoNewline - Write-Host "Check status" -ForegroundColor Blue - Write-Host " Run: /workflow-status" - Write-Host " See your project status and get recommendations" - Write-Host "" - Write-Host "Verification Commands:" + Write-Host "Проверка:" if ($IsWindows -or $env:OS -match "Windows" -or (-not (Test-Path variable:IsWindows))) { - Write-Host " dir `"$BmadSkillsDir\core\bmad-master\SKILL.md`"" + Write-Host " dir `"$BmadSkillsDir\core\bmad-master-c9s\SKILL.md`"" + Write-Host " dir `"$BmadCommandsDir\c9s-init.md`"" } else { - Write-Host " ls -la ~/.claude/skills/bmad/core/bmad-master/SKILL.md" + Write-Host " ls -la ~/.claude/skills/bmad/core/bmad-master-c9s/SKILL.md" + Write-Host " ls -la ~/.claude/commands/bmad/c9s-init.md" } Write-Host "" - Write-Host "Documentation:" - Write-Host " README: $ScriptDir\README.md" + Write-Host "Исходники пакета: $SourceBmadC9sDir" Write-Host "" - Write-Host "[OK] BMAD Method v6 is ready!" -ForegroundColor Green - Write-Host "" - Write-Host "Need help? Visit: https://github.com/aj-geddes/claude-code-bmad-skills/issues" + Write-Host "[OK] BMAD-c9s готов." -ForegroundColor Green } function global:Show-WhatIfSummary { - Write-Header "Installation Summary (Dry-Run)" + Write-Header "Installation Summary (Dry-Run) — BMAD-c9s" - Write-Host "Would install BMAD Method v$BmadVersion to:" + Write-Host "Would install BMAD-c9s v$BmadVersion from: $SourceBmadC9sDir" Write-Host " Skills: $BmadSkillsDir" Write-Host " Commands: $BmadCommandsDir" Write-Host " Config: $BmadConfigDir" Write-Host "" Write-Host "Components:" - Write-Host " [*] 9 specialized skills (Core, BMM, BMB, CIS)" - Write-Host " [*] 15 workflow slash commands" - Write-Host " [*] Configuration templates" - Write-Host " [*] Utility helpers" - Write-Host " [*] Status tracking system" + Write-Host " [*] Skills (core/bmm/bmb/cis) from bmad-c9s/skills" + Write-Host " [*] Slash commands from bmad-c9s/commands" + Write-Host " [*] c9s-config.template.yaml, templates, helpers-ru, docs" + Write-Host " [*] Optional: helpers-bmad-v6-en.md if bmad-v6/utils/helpers.md exists" Write-Host "" Write-Host "To perform actual installation, run without -WhatIf" } @@ -825,7 +794,7 @@ function global:Main { return } - Write-Header "BMAD Method v$BmadVersion Installer" + Write-Header "BMAD-c9s v$BmadVersion — installer" # Show version info if ($IsPowerShell5) { @@ -866,10 +835,10 @@ function global:Main { # Verify Write-Host "" if (Test-Installation) { - Write-Progress -Activity "Installing BMAD Method v6" -Status "Complete!" -PercentComplete 100 + Write-Progress -Activity "Installing BMAD-c9s" -Status "Complete!" -PercentComplete 100 Write-Host "" Show-NextSteps - Write-Progress -Activity "Installing BMAD Method v6" -Completed + Write-Progress -Activity "Installing BMAD-c9s" -Completed Write-Verbose "Installation completed successfully at: $(Get-Date)" exit 0 } else { @@ -878,14 +847,14 @@ function global:Main { Write-Host "Troubleshooting:" -ForegroundColor Yellow Write-Host " 1. Run with -Verbose flag for detailed diagnostics" Write-Host " 2. Check file permissions on: $ClaudeDir" - Write-Host " 3. Verify source files exist in: $SourceBmadV6Dir" + Write-Host " 3. Verify source files exist in: $SourceBmadC9sDir" Write-Host " 4. Try running with -Force to reinstall" Write-Host "" exit 1 } } catch { - Write-Progress -Activity "Installing BMAD Method v6" -Completed + Write-Progress -Activity "Installing BMAD-c9s" -Completed Write-Host "" Write-Host "===============================================" -ForegroundColor Red Write-Host " Installation Failed" -ForegroundColor Red @@ -897,8 +866,8 @@ function global:Main { Write-Host " 1. Run with -Verbose flag for detailed diagnostics:" Write-Host " .\install-v6.ps1 -Verbose" Write-Host "" - Write-Host " 2. Check if bmad-v6/ directory exists:" - Write-Host " dir bmad-v6\" + Write-Host " 2. Check if bmad-c9s/ directory exists:" + Write-Host " dir bmad-c9s\" Write-Host "" Write-Host " 3. Verify write permissions:" Write-Host " Test writing to $ClaudeDir" diff --git a/install-v6.sh b/install-v6.sh index 47d4eaa..90b585f 100755 --- a/install-v6.sh +++ b/install-v6.sh @@ -1,9 +1,10 @@ #!/usr/bin/env bash ############################################################################### -# BMAD Method v6 for Claude Code - Installation Script +# BMAD-c9s (Coopenomics) — установка скиллов и команд для Claude Code # -# Installs BMAD Method v6 using only Claude Code native features -# No npx, no external dependencies, pure Claude Code +# Источник: каталог bmad-c9s/ (русские скиллы, Capital/GitHub results). +# Каталог bmad-v6/ в репозитории не изменяется; при наличии v6 копируется +# helpers.md как опциональный англоязычный справочник (helpers-bmad-v6-en.md). # # Usage: ./install-v6.sh ############################################################################### @@ -11,12 +12,14 @@ set -euo pipefail # Configuration -BMAD_VERSION="6.0.2" +C9S_VERSION="1.0.0" CLAUDE_DIR="${HOME}/.claude" BMAD_CONFIG_DIR="${CLAUDE_DIR}/config/bmad" BMAD_SKILLS_DIR="${CLAUDE_DIR}/skills/bmad" BMAD_COMMANDS_DIR="${CLAUDE_DIR}/commands/bmad" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +BMAD_C9S_DIR="${SCRIPT_DIR}/bmad-c9s" +BMAD_V6_DIR="${SCRIPT_DIR}/bmad-v6" # Colors GREEN='\033[0;32m' @@ -47,7 +50,6 @@ log_header() { create_directories() { log_info "Creating directory structure..." - # Claude Code directories mkdir -p "${BMAD_SKILLS_DIR}"/{core,bmm,bmb,cis} mkdir -p "${BMAD_COMMANDS_DIR}" mkdir -p "${BMAD_CONFIG_DIR}"/{agents,templates} @@ -56,92 +58,103 @@ create_directories() { } install_skills() { - log_info "Installing BMAD skills..." + log_info "Installing BMAD-c9s skills from ${BMAD_C9S_DIR}/skills..." - # Install core skills - if [ -d "${SCRIPT_DIR}/bmad-v6/skills/core" ]; then - cp -r "${SCRIPT_DIR}/bmad-v6/skills/core"/* "${BMAD_SKILLS_DIR}/core/" - log_success "Core skills installed" + if [ ! -d "${BMAD_C9S_DIR}/skills" ]; then + echo "✗ Directory not found: ${BMAD_C9S_DIR}/skills" + exit 1 fi - # Install BMM skills (will add more in later phases) - if [ -d "${SCRIPT_DIR}/bmad-v6/skills/bmm" ]; then - cp -r "${SCRIPT_DIR}/bmad-v6/skills/bmm"/* "${BMAD_SKILLS_DIR}/bmm/" 2>/dev/null || true - log_success "BMM skills installed" + if [ -d "${BMAD_C9S_DIR}/skills/core" ]; then + cp -r "${BMAD_C9S_DIR}/skills/core"/* "${BMAD_SKILLS_DIR}/core/" + log_success "Core skills (c9s) installed" fi - # Install BMB skills (optional) - if [ -d "${SCRIPT_DIR}/bmad-v6/skills/bmb" ]; then - cp -r "${SCRIPT_DIR}/bmad-v6/skills/bmb"/* "${BMAD_SKILLS_DIR}/bmb/" 2>/dev/null || true + if [ -d "${BMAD_C9S_DIR}/skills/bmm" ]; then + cp -r "${BMAD_C9S_DIR}/skills/bmm"/* "${BMAD_SKILLS_DIR}/bmm/" 2>/dev/null || true + log_success "BMM skills (c9s) installed" fi - # Install CIS skills (optional) - if [ -d "${SCRIPT_DIR}/bmad-v6/skills/cis" ]; then - cp -r "${SCRIPT_DIR}/bmad-v6/skills/cis"/* "${BMAD_SKILLS_DIR}/cis/" 2>/dev/null || true + if [ -d "${BMAD_C9S_DIR}/skills/bmb" ]; then + cp -r "${BMAD_C9S_DIR}/skills/bmb"/* "${BMAD_SKILLS_DIR}/bmb/" 2>/dev/null || true + log_success "BMB skills (c9s) installed" + fi + + if [ -d "${BMAD_C9S_DIR}/skills/cis" ]; then + cp -r "${BMAD_C9S_DIR}/skills/cis"/* "${BMAD_SKILLS_DIR}/cis/" 2>/dev/null || true + log_success "CIS skills (c9s) installed" fi } install_config() { - log_info "Installing configuration..." + log_info "Installing BMAD-c9s configuration template..." - # Install config template - if [ -f "${SCRIPT_DIR}/bmad-v6/config/config.template.yaml" ]; then - if [ ! -f "${BMAD_CONFIG_DIR}/config.yaml" ]; then - # Create config from template, substituting variables - sed "s/{{USER_NAME}}/${USER}/g" \ - "${SCRIPT_DIR}/bmad-v6/config/config.template.yaml" \ - > "${BMAD_CONFIG_DIR}/config.yaml" - log_success "Configuration created" - else - log_info "Configuration already exists, skipping" - fi - fi - - # Copy project config template - if [ -f "${SCRIPT_DIR}/bmad-v6/config/project-config.template.yaml" ]; then - cp "${SCRIPT_DIR}/bmad-v6/config/project-config.template.yaml" \ - "${BMAD_CONFIG_DIR}/project-config.template.yaml" + if [ -f "${BMAD_C9S_DIR}/config/c9s-config.template.yaml" ]; then + cp "${BMAD_C9S_DIR}/config/c9s-config.template.yaml" \ + "${BMAD_CONFIG_DIR}/c9s-config.template.yaml" + log_success "c9s-config.template.yaml installed (copy to your results repo as c9s-config.yaml)" + else + echo "⚠ c9s-config.template.yaml not found" fi } install_templates() { - log_info "Installing templates..." + log_info "Installing BMAD-c9s templates..." - # Install all template files - if [ -d "${SCRIPT_DIR}/bmad-v6/templates" ]; then - cp "${SCRIPT_DIR}/bmad-v6/templates"/* \ + if [ -d "${BMAD_C9S_DIR}/templates" ]; then + cp "${BMAD_C9S_DIR}/templates"/* \ "${BMAD_CONFIG_DIR}/templates/" 2>/dev/null || true - log_success "Templates installed" + log_success "Templates (c9s) installed" fi } -install_utils() { - log_info "Installing utility helpers..." +install_docs_and_helpers() { + log_info "Installing docs and helpers (c9s)..." - # Copy helpers.md to config directory for reference - if [ -f "${SCRIPT_DIR}/bmad-v6/utils/helpers.md" ]; then - cp "${SCRIPT_DIR}/bmad-v6/utils/helpers.md" \ - "${BMAD_CONFIG_DIR}/helpers.md" - log_success "Utility helpers installed" + if [ -f "${BMAD_C9S_DIR}/utils/helpers-ru.md" ]; then + cp "${BMAD_C9S_DIR}/utils/helpers-ru.md" \ + "${BMAD_CONFIG_DIR}/helpers-ru.md" + log_success "helpers-ru.md installed → ${BMAD_CONFIG_DIR}/helpers-ru.md" + fi + + if [ -f "${BMAD_C9S_DIR}/docs/FORMAT-CAPITAL-GITHUB.md" ]; then + cp "${BMAD_C9S_DIR}/docs/FORMAT-CAPITAL-GITHUB.md" \ + "${BMAD_CONFIG_DIR}/FORMAT-CAPITAL-GITHUB.md" + log_success "FORMAT-CAPITAL-GITHUB.md installed" + fi + + if [ -f "${BMAD_C9S_DIR}/CLAUDE.md" ]; then + cp "${BMAD_C9S_DIR}/CLAUDE.md" \ + "${BMAD_CONFIG_DIR}/CLAUDE-bmad-c9s.md" + log_success "CLAUDE-bmad-c9s.md installed (обзор пакета)" + fi + + # Опционально: англ. helpers из неизменяемого bmad-v6 (справка) + if [ -f "${BMAD_V6_DIR}/utils/helpers.md" ]; then + cp "${BMAD_V6_DIR}/utils/helpers.md" \ + "${BMAD_CONFIG_DIR}/helpers-bmad-v6-en.md" + log_success "helpers-bmad-v6-en.md (справка BMAD v6, EN) установлен" + else + log_info "bmad-v6/utils/helpers.md не найден — пропуск англ. справки" fi } install_commands() { - log_info "Installing slash commands..." + log_info "Installing slash commands (c9s)..." - # Install all command files - if [ -d "${SCRIPT_DIR}/bmad-v6/commands" ]; then - local command_count=$(find "${SCRIPT_DIR}/bmad-v6/commands" -name "*.md" 2>/dev/null | wc -l) + if [ -d "${BMAD_C9S_DIR}/commands" ]; then + local command_count + command_count=$(find "${BMAD_C9S_DIR}/commands" -maxdepth 1 -name "*.md" 2>/dev/null | wc -l | tr -d ' ') - if [ "$command_count" -gt 0 ]; then - cp "${SCRIPT_DIR}/bmad-v6/commands"/*.md \ + if [ "${command_count}" -gt 0 ]; then + cp "${BMAD_C9S_DIR}/commands"/*.md \ "${BMAD_COMMANDS_DIR}/" 2>/dev/null || true - log_success "Slash commands installed ($command_count commands)" + log_success "Slash commands installed (${command_count} files)" else - echo "⚠ No command files found" + echo "⚠ No command files found in bmad-c9s/commands" fi else - echo "⚠ Commands directory not found" + echo "⚠ Commands directory not found: ${BMAD_C9S_DIR}/commands" fi } @@ -150,35 +163,31 @@ verify_installation() { local errors=0 - # Check for BMad Master skill - if [ -f "${BMAD_SKILLS_DIR}/core/bmad-master/SKILL.md" ]; then - log_success "BMad Master skill verified" + if [ -f "${BMAD_SKILLS_DIR}/core/bmad-master-c9s/SKILL.md" ]; then + log_success "bmad-master-c9s skill verified" else - echo "✗ BMad Master skill missing" + echo "✗ bmad-master-c9s skill missing" errors=$((errors + 1)) fi - # Check for config - if [ -f "${BMAD_CONFIG_DIR}/config.yaml" ]; then - log_success "Configuration verified" + if [ -f "${BMAD_CONFIG_DIR}/c9s-config.template.yaml" ]; then + log_success "c9s config template verified" else - echo "✗ Configuration missing" + echo "✗ c9s-config.template.yaml missing" errors=$((errors + 1)) fi - # Check for helpers - if [ -f "${BMAD_CONFIG_DIR}/helpers.md" ]; then - log_success "Helpers verified" + if [ -f "${BMAD_CONFIG_DIR}/helpers-ru.md" ]; then + log_success "helpers-ru.md verified" else - echo "✗ Helpers missing" + echo "✗ helpers-ru.md missing" errors=$((errors + 1)) fi - # Check for commands - if [ -f "${BMAD_COMMANDS_DIR}/workflow-init.md" ]; then - log_success "Slash commands verified" + if [ -f "${BMAD_COMMANDS_DIR}/c9s-init.md" ]; then + log_success "Slash commands (c9s-init) verified" else - echo "✗ Slash commands missing" + echo "✗ c9s-init.md missing" errors=$((errors + 1)) fi @@ -192,60 +201,48 @@ verify_installation() { } print_next_steps() { - log_header "Installation Complete!" + log_header "Установка завершена" cat << EOF -📦 BMAD Method v${BMAD_VERSION} installed successfully! +📦 BMAD-c9s v${C9S_VERSION} (Coopenomics) установлен. -Installation location: - Skills: ${BMAD_SKILLS_DIR} - Commands: ${BMAD_COMMANDS_DIR} - Config: ${BMAD_CONFIG_DIR} +Каталоги: + Скиллы: ${BMAD_SKILLS_DIR} + Команды: ${BMAD_COMMANDS_DIR} + Конфиг: ${BMAD_CONFIG_DIR} -✓ 9 Specialized Skills - - Core orchestrator (BMad Master) - - Agile agents (Analyst, PM, Architect, SM, Developer, UX) - - Builder module (custom agents and workflows) - - Creative Intelligence (brainstorming and research) +Что установлено: + • Скиллы из bmad-c9s/ (оркестратор bmad-master-c9s, роли BMM, CIS, builder, c9s-master-review) + • Команды из bmad-c9s/commands/ (/c9s-init, /c9s-status, /prd, …) + • Шаблон c9s-config.template.yaml, helpers-ru.md, FORMAT-CAPITAL-GITHUB.md, CLAUDE-bmad-c9s.md + • При наличии репозитория: helpers-bmad-v6-en.md (оригинал BMAD v6, только справка) -✓ 15 Workflow Commands - - /workflow-init, /workflow-status - - /product-brief, /prd, /tech-spec - - /architecture, /solutioning-gate-check - - /sprint-planning, /create-story, /dev-story - - /brainstorm, /research - - /create-agent, /create-workflow, /create-ux-design +Исходники v6 (bmad-v6/) в репозитории не изменяются и не копируются как основные скиллы. -✓ Configuration system -✓ Template engine -✓ Status tracking utilities +📋 Дальше: -📋 Next Steps: +1️⃣ ${BLUE}Перезапустите Claude Code${NC} -1️⃣ ${BLUE}Restart Claude Code${NC} - Skills will be loaded in new sessions +2️⃣ ${BLUE}Скопируйте${NC} ${BMAD_CONFIG_DIR}/c9s-config.template.yaml + в корень репозитория результатов как c9s-config.yaml и заполните пути. -2️⃣ ${BLUE}Open your project${NC} - Navigate to the project you want to use BMAD with +3️⃣ ${BLUE}Инициализация:${NC} /c9s-init (скилл bmad-master-c9s) -3️⃣ ${BLUE}Initialize BMAD${NC} - Run: /workflow-init - This sets up BMAD structure in your project +4️⃣ ${BLUE}Статус:${NC} /c9s-status -4️⃣ ${BLUE}Check status${NC} - Run: /workflow-status - See your project status and get recommendations +📚 Документация после установки: + ${BMAD_CONFIG_DIR}/CLAUDE-bmad-c9s.md + ${BMAD_CONFIG_DIR}/FORMAT-CAPITAL-GITHUB.md + ${BMAD_CONFIG_DIR}/helpers-ru.md -📚 Verification: - ls -la ~/.claude/skills/bmad/core/bmad-master/SKILL.md - ls -la ~/.claude/commands/bmad/workflow-init.md +📚 Исходники пакета в репозитории: + ${BMAD_C9S_DIR}/ -📚 Documentation: - README: ${SCRIPT_DIR}/README.md +Проверка: + ls -la ~/.claude/skills/bmad/core/bmad-master-c9s/SKILL.md + ls -la ~/.claude/commands/bmad/c9s-init.md -${GREEN}✓ BMAD Method v6 is ready!${NC} - -Need help? Visit: https://github.com/aj-geddes/claude-code-bmad-skills/issues +${GREEN}✓ BMAD-c9s готов.${NC} EOF } @@ -254,23 +251,26 @@ EOF ############################################################################### main() { - log_header "BMAD Method v${BMAD_VERSION} Installer" + log_header "BMAD-c9s v${C9S_VERSION} — установщик" + + if [ ! -d "${BMAD_C9S_DIR}" ]; then + echo "✗ Каталог bmad-c9s не найден: ${BMAD_C9S_DIR}" + echo " Запускайте скрипт из корня репозитория claude-code-bmad-skills." + exit 1 + fi - # Check if Claude directory exists if [ ! -d "${CLAUDE_DIR}" ]; then log_info "Creating Claude Code directory: ${CLAUDE_DIR}" mkdir -p "${CLAUDE_DIR}" fi - # Perform installation create_directories install_skills install_config install_templates - install_utils + install_docs_and_helpers install_commands - # Verify if verify_installation; then print_next_steps exit 0 @@ -280,5 +280,4 @@ main() { fi } -# Run installation main "$@"