rework for c9s & blagorost

This commit is contained in:
Alex Ant
2026-03-27 23:39:33 +05:00
parent f0898bc50e
commit a2a5b3a01d
51 changed files with 2123 additions and 290 deletions
+1
View File
@@ -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
```
+101
View File
@@ -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/`
+169
View File
@@ -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).
+11
View File
@@ -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).
+9
View File
@@ -0,0 +1,9 @@
# /architecture (c9s)
**Скилл:** `c9s-bmm-architect`
**Фаза:** 3
**Выход:** `requirements/architecture-*.md` с явным `content_format` (MARKDOWN / MERMAID / …).
**Детали:** `bmad-v6/commands/architecture.md`
+9
View File
@@ -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`
+9
View File
@@ -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`.
+7
View File
@@ -0,0 +1,7 @@
# /c9s-master-review
**Скилл:** `c9s-master-review`
**Цель:** ревью задач в `on_review`, перевод в `done` или откат в `in_progress`, обновление `updated_at` в `issues/*.md`.
**Ограничение:** импорт в Capital может отклонить смену статуса по правам — см. скилл.
@@ -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` **запрещены**.
+7
View File
@@ -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`.
+7
View File
@@ -0,0 +1,7 @@
# /c9s-status
**Скилл:** `bmad-master-c9s`
**Цель:** показать активный `results_root`, фазу по `.c9s/workflow-status.yaml`, рекомендованный следующий скилл.
**Шаги:** раздел `/c9s-status` в `skills/core/bmad-master-c9s/SKILL.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.
+7
View File
@@ -0,0 +1,7 @@
# /create-agent (c9s)
**Скилл:** `c9s-bmb-builder`
**Цель:** описать нового агента/роль как скилл в `bmad-c9s/skills/` с русским `SKILL.md`.
**Детали:** `bmad-v6/commands/create-agent.md`
+11
View File
@@ -0,0 +1,11 @@
# /create-story (c9s)
**Скилл:** `c9s-bmm-scrum-master` или `c9s-bmm-pm`
**Фаза:** 24
**Выход:** новый файл `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`
+9
View File
@@ -0,0 +1,9 @@
# /create-ux-design (c9s)
**Скилл:** `c9s-bmm-ux-designer`
**Фаза:** 23
**Выход:** `requirements/ux-*.md` (MARKDOWN/MERMAID), ссылки на мокапы вне results при необходимости.
**Детали:** `bmad-v6/commands/create-ux-design.md`
+7
View File
@@ -0,0 +1,7 @@
# /create-workflow (c9s)
**Скилл:** `c9s-bmb-builder`
**Цель:** добавить или изменить воркфлоу в пакете `bmad-c9s` (команда + скилл + ссылка на FORMAT).
**Детали:** `bmad-v6/commands/create-workflow.md`
+9
View File
@@ -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 выше.
+9
View File
@@ -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`
+9
View File
@@ -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`
+9
View File
@@ -0,0 +1,9 @@
# /research (c9s)
**Скилл:** `c9s-bmm-analyst`
**Фаза:** 1
**Выход:** **`requirements/research-{slug}.md`** (story, `content_format: MARKDOWN`)
**Детали:** `bmad-v6/commands/research.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`
+9
View File
@@ -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`
@@ -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`.
+9
View File
@@ -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`
+9
View File
@@ -0,0 +1,9 @@
# /workflow-init (c9s)
**Эквивалент:** `/c9s-init`
**Скилл:** `bmad-master-c9s`
Инициализация bmad-c9s в репозитории результатов: конфиг, `.c9s/`, статус воркфлоу.
См. `commands/c9s-init.md`.
+7
View File
@@ -0,0 +1,7 @@
# /workflow-status (c9s)
**Эквивалент:** `/c9s-status`
**Скилл:** `bmad-master-c9s`
См. `commands/c9s-status.md`.
+37
View File
@@ -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: <username>
# submaster: <username>
# creators: [<username>]
# Без этих трёх полей с корректным 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: ""
+164
View File
@@ -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:** минимум `["<username>"]` — тот же аккаунт, что `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/`
+75
View File
@@ -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/<slug>/` (например `desktop`, `controller`) или согласованный с командой идентификатор пакета; в конфиге — `active_component_git_slug` (см. шаблон `c9s-config.template.yaml`).
2. **Имя ветки** формируется из **человекочитаемого названия работы** (например `title` задачи или компонента в Capital): взять смысл → **slug** (транслит/латиница, дефисы, нижний регистр, как в `generateSlug` репозитория).
Канонический префикс: **`component/<component_slug>-<work_slug>`**
Пример: `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 **не отменяют** эту политику.
@@ -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: [<username>]`** (непустой массив в одну строку, см. [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 |
+39
View File
@@ -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) **§12**: сначала 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** (три поля учёта в новых задачах).
+57
View File
@@ -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.
+55
View File
@@ -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`** при каждом сохранении.
+62
View File
@@ -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/<slug>-<work>`** от **`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 целевого компонента.
+56
View File
@@ -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>]`** — тот же **`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`.
+46
View File
@@ -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`.
+55
View File
@@ -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).
- Пиши кратко для разработчика: что измеримо и как проверить.
@@ -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.
@@ -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`.
@@ -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**, если задач несколько.
@@ -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/<component_slug>-<work_slug>`**, созданной от **актуального `dev`**.
3. **`component_slug`** — имя каталога компонента под `components/` (например `desktop`, `controller`), либо значение **`active_component_git_slug`** из `c9s-config.yaml`.
4. **`work_slug`** — краткий slug от **русского или рабочего названия** задачи/результата (транслит, дефисы, нижний регистр); если одна долгая линия работы на компонент — допустимо **`component/<component_slug>`** без суффикса **только** если так согласовано с пользователем.
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/<component_slug>-<work_slug>`** от текущего `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: "<component_slug>"
merge_commit_hash: "<полный SHA>"
recorded_at_utc: "<ISO 8601 Z>"
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`; не путать каталоги.
@@ -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).
@@ -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`, пока оператор не скажет иначе.
@@ -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: "Проверка архитектуры"
+26
View File
@@ -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) §12.
@@ -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: []
@@ -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: ""
+22
View File
@@ -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).
## Контекст
## Критерии готовности
## Заметки
+140
View File
@@ -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>"]`** — тот же **`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` — для углублённых сценариев на английском.
+138 -169
View File
@@ -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"
+120 -121
View File
@@ -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 "$@"