fix paths and installation

This commit is contained in:
Alex Ant
2026-03-28 15:00:39 +05:00
parent 3c3d3cc8d1
commit f281049ca6
39 changed files with 464 additions and 422 deletions
+22 -22
View File
@@ -6,47 +6,47 @@
- **репозиторий результатов Capital**, синхронизируемый с БД через GitHub (`project` / `issue` / `story` в канонических путях);
- **разделение канона Capital и операционки BMAD**: в **`{base}/.c9s/`** — только статусы воркфлоу и служебные YAML; **вся** продуктовая проза (бриф, PRD, исследования, техспека, UX) — как **требования (story)** в **`{base}/requirements/*.md`** (см. FORMAT).
Источник методологии v6 (англ.): каталог `bmad-v6/` в этом репозитории — **не править** как эталон; для c9s используйте скиллы из `bmad-c9s/skills/`.
Источник методологии v6 (англ.): каталог `bmad-v6/` в репозитории — **не править** как эталон. После `./install-v6.sh`: оригинальные скиллы v6 в `~/.claude/skills/bmad/`, скиллы c9s в `~/.claude/skills/bmad-c9s/`; полные тексты команд v6 копируются в `~/.claude/config/bmad/bmad-v6-bundle/commands/` (обёртки c9s в `~/.claude/commands/bmad/` ссылаются туда). Верхний приоритет сценария и артефактов — **c9s** ([FORMAT](~/.claude/config/bmad/FORMAT-CAPITAL-GITHUB.md), этот файл).
---
## Как подключать скиллы (Cursor / Claude Code)
Копируйте или симлинкуйте нужные `SKILL.md` в каталог скиллов редактора (см. документацию Cursor Skills). Минимальный набор:
После `./install-v6.sh` скиллы уже лежат под `~/.claude/skills/bmad/` (v6) и `~/.claude/skills/bmad-c9s/` (c9s). В Cursor можно дополнительно симлинковать из репозитория — см. документацию Skills. Минимальный набор для Coopenomics:
| Скилл | Когда включать |
|--------|----------------|
| `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-results-push` | **Опционально:** явный commit/push; **базово** — автофиксация по [GIT-COMMITS-POLICY](~/.claude/config/bmad/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 | По фазе задачи (см. таблицу ниже) |
Полные пути:
После установки (репозиторий → `~/.claude/`):
- `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`
- c9s: `~/.claude/skills/bmad-c9s/core/bmad-master-c9s/SKILL.md` и остальные роли под `bmad-c9s/…`
- v6: `~/.claude/skills/bmad/core/bmad-master/SKILL.md` (оригинальный оркестратор BMAD)
Исходники в репозитории пакета: `bmad-c9s/skills/…`, `bmad-v6/skills/…` (видны агенту **только** если в workspace открыт корень `claude-code-bmad-skills`).
**Ссылки в скиллах:** строки вида `bmad-v6/…` — не путь к `~/.claude/`. После `./install-v6.sh` полные тексты v6 для чтения агентом: **`~/.claude/skills/bmad/…/SKILL.md`**, сценарии slash-команд (EN): **`~/.claude/config/bmad/bmad-v6-bundle/commands/*.md`**.
**Канон Capital (FORMAT, TASKS, GIT):** после установки — **`~/.claude/config/bmad/*.md`** (те же файлы в исходниках пакета лежат в **`bmad-c9s/docs/`**).
---
## Жёсткое правило: хранилище — файлы, не чат
1. **Канон Capital** (проект, компонент, задача, требование) — только **`.md`** под `results_root`, пути из [docs/FORMAT-CAPITAL-GITHUB.md](docs/FORMAT-CAPITAL-GITHUB.md).
1. **Канон Capital** (проект, компонент, задача, требование) — только **`.md`** под `results_root`, пути из [FORMAT-CAPITAL-GITHUB.md](~/.claude/config/bmad/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).
7. **Документы и крупные шаги — только через задачи (`issues/*.md`), строго:** PRD, техспека, архитектурный документ, бриф, исследование, пакет UX и любой аналогичный шаг **не начинать** без создания **задачи** в момент старта работы; содержание — в **`requirements/*.md`** (story), процесс и критерии — в теле задачи. Подробно: [TASKS-DOCUMENTS-TIME-POLICY.md](~/.claude/config/bmad/TASKS-DOCUMENTS-TIME-POLICY.md).
8. **Учёт времени и `estimate`:** в задачах **`estimate: 0`**, если пользователь **явно** не указал иное. Задачу создаём и **пушим** при начале работы; в frontmatter новой задачи — **`created_by`**, **`submaster`**, **`creators`** по [TASKS-DOCUMENTS-TIME-POLICY.md](~/.claude/config/bmad/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`** — для явных отдельных операций; см. [GIT-COMMITS-POLICY.md](~/.claude/config/bmad/GIT-COMMITS-POLICY.md).
10. **Git — монорепозиторий кода:** без изменений — только скилл **`c9s-monorepo-component-git`**.
---
@@ -57,7 +57,7 @@
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).
Подробности разрешения путей и обновления `updated_at`: [helpers-ru.md](~/.claude/config/bmad/helpers-ru.md) (исходник: `bmad-c9s/utils/helpers-ru.md`).
---
@@ -65,7 +65,7 @@
| Фаза | Роли (скиллы) | Куда писать |
|------|----------------|-------------|
| 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` |
| 1 Анализ | analyst, creative-intelligence | Сначала **`issues/*.md`** на шаг, затем **`requirements/*.md`** (story); см. [TASKS-DOCUMENTS-TIME-POLICY](~/.claude/config/bmad/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 |
@@ -79,20 +79,20 @@
- **`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).
Подробности и ограничения Capital при импорте: [FORMAT-CAPITAL-GITHUB.md](~/.claude/config/bmad/FORMAT-CAPITAL-GITHUB.md).
---
## Команды-обёртки
Каталог [commands/](commands/) — короткие сценарии на русском; полная логика в соответствующих скиллах и в `bmad-v6/commands/` (англ.) при необходимости детализации.
Каталог [commands/](commands/) — короткие сценарии (c9s); в UI ставятся в `~/.claude/commands/bmad/`. Детальные шаги v6 (EN) — `~/.claude/config/bmad/bmad-v6-bundle/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
- Коммиты/push, задачи и время: [GIT-COMMITS-POLICY.md](~/.claude/config/bmad/GIT-COMMITS-POLICY.md), [TASKS-DOCUMENTS-TIME-POLICY.md](~/.claude/config/bmad/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`); **не** в монорепозитории кода — см. [GIT-COMMITS-POLICY.md](~/.claude/config/bmad/GIT-COMMITS-POLICY.md) §2.4
## Ссылки на код монорепозитория (Coopenomics)
+4 -4
View File
@@ -43,7 +43,7 @@
1. **Установите скиллы и команды** из корня репозитория `claude-code-bmad-skills`:
- macOS/Linux: `./install-v6.sh`
- Windows: `.\install-v6.ps1`
В `~/.claude/` появятся `skills/bmad/`, `commands/bmad/`, `config/bmad/` (копия из `bmad-c9s/`).
В `~/.claude/` после `./install-v6.sh`: **v6**`skills/bmad/`, **c9s**`skills/bmad-c9s/`, команды-обёртки — `commands/bmad/`, конфиг и шаблоны — `config/bmad/` (в т.ч. `bmad-v6-bundle/commands/` — полные тексты команд v6).
2. **Откройте в IDE репозиторий результатов** (тот, где лежит дерево `results/` или тестовый клон) — либо сам `claude-code-bmad-skills`, если гоняете только методологию на пустой заготовке.
@@ -51,7 +51,7 @@
`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)
- `coopname`, **`username`** — для новых **`issues/*.md`** в frontmatter: **`created_by`**, **`submaster`**, **`creators`** (см. [TASKS-DOCUMENTS-TIME-POLICY.md](~/.claude/config/bmad/TASKS-DOCUMENTS-TIME-POLICY.md) §1)
4. **Перезапустите Claude Code** (или Cursor с подключёнными скиллами), откройте проект с `c9s-config.yaml`.
@@ -124,7 +124,7 @@
### Сценарий 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).
2. Когда оператор **готов** передать задачу мастеру: явная команда (**`/c9s-submit-for-review`**, «отправь задачу … на ревью») → агент ставит **`on_review`**, **`updated_at`**, commit/push в results ([TASKS-DOCUMENTS-TIME-POLICY.md](~/.claude/config/bmad/TASKS-DOCUMENTS-TIME-POLICY.md) §2).
3. Мастер вызывает **`c9s-master-review`**: **`done`** или возврат в **`in_progress`**.
## Команды (slash)
@@ -147,7 +147,7 @@
| Файл | Содержание |
|------|------------|
| [CLAUDE.md](CLAUDE.md) | Обзор пакета, таблица фаз, правила хранения |
| [docs/FORMAT-CAPITAL-GITHUB.md](docs/FORMAT-CAPITAL-GITHUB.md) | Канон путей и frontmatter |
| [FORMAT-CAPITAL-GITHUB.md](~/.claude/config/bmad/FORMAT-CAPITAL-GITHUB.md) | Канон путей и frontmatter |
| [utils/helpers-ru.md](utils/helpers-ru.md) | Разрешение корня проекта, `updated_at`, hash |
| [commands/_README.md](commands/_README.md) | Общие шаги перед работой по командам |
+2 -2
View File
@@ -1,11 +1,11 @@
# Команды bmad-c9s (русский)
Каждый файл — краткий сценарий. Полная методология: `bmad-v6/commands/*.md` (англ.).
Каждый файл — краткий сценарий (c9s). Полные пошаговые тексты BMAD v6 (англ.): после `./install-v6.sh``~/.claude/config/bmad/bmad-v6-bundle/commands/*.md`; в репозитории — `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).
2. Прочитай [FORMAT-CAPITAL-GITHUB.md](~/.claude/config/bmad/FORMAT-CAPITAL-GITHUB.md), [GIT-COMMITS-POLICY.md](~/.claude/config/bmad/GIT-COMMITS-POLICY.md) и [helpers-ru.md](~/.claude/config/bmad/helpers-ru.md) (или `helpers.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).
+1 -1
View File
@@ -6,4 +6,4 @@
**Выход:** `requirements/architecture-*.md` с явным `content_format` (MARKDOWN / MERMAID / …).
**Детали:** `bmad-v6/commands/architecture.md`
**Детали (v6, EN):** `~/.claude/config/bmad/bmad-v6-bundle/commands/architecture.md`
+1 -1
View File
@@ -6,4 +6,4 @@
**Выход:** **`requirements/brainstorm-{slug}.md`** (story, `content_format: MARKDOWN`)
**Детали:** `bmad-v6/commands/brainstorm.md`
**Детали (v6, EN):** `~/.claude/config/bmad/bmad-v6-bundle/commands/brainstorm.md`
@@ -4,6 +4,6 @@
Полная логика: скилл `bmad-c9s/skills/core/c9s-monorepo-component-git/SKILL.md`.
Политика: `bmad-c9s/docs/GIT-COMMITS-POLICY.md`.
Политика: `~/.claude/config/bmad/GIT-COMMITS-POLICY.md`.
Прямые коммиты в `dev` **запрещены**.
+1 -1
View File
@@ -2,6 +2,6 @@
**Опционально:** отдельный `commit`/`push` в **репозитории результатов** по явной просьбе (особое сообщение, повторный push).
По умолчанию агент **уже** коммитит и пушит после правок — см. `bmad-c9s/docs/GIT-COMMITS-POLICY.md` §1.
По умолчанию агент **уже** коммитит и пушит после правок — см. `~/.claude/config/bmad/GIT-COMMITS-POLICY.md` §1.
Скилл: `bmad-c9s/skills/core/c9s-results-push/SKILL.md`.
+1 -1
View File
@@ -5,4 +5,4 @@
Не путать с «агент закончил черновик» — **`on_review`** только после **твоей** команды (прочитал PRD, проверил результат и т.д.).
Скилл: `bmad-c9s/skills/core/c9s-submit-for-review/SKILL.md`
Политика: `bmad-c9s/docs/TASKS-DOCUMENTS-TIME-POLICY.md` §2.
Политика: `~/.claude/config/bmad/TASKS-DOCUMENTS-TIME-POLICY.md` §2.
+1 -1
View File
@@ -4,4 +4,4 @@
**Цель:** описать нового агента/роль как скилл в `bmad-c9s/skills/` с русским `SKILL.md`.
**Детали:** `bmad-v6/commands/create-agent.md`
**Детали (v6, EN):** `~/.claude/config/bmad/bmad-v6-bundle/commands/create-agent.md`
+2 -2
View File
@@ -4,8 +4,8 @@
**Фаза:** 24
**Выход:** новый файл `requirements/{slug}.md` или `issues/{issue}-requirements/{slug}.md` по [FORMAT](../docs/FORMAT-CAPITAL-GITHUB.md); шаблон `templates/story.template.md`.
**Выход:** новый файл `requirements/{slug}.md` или `issues/{issue}-requirements/{slug}.md` по [FORMAT](~/.claude/config/bmad/FORMAT-CAPITAL-GITHUB.md); шаблон `templates/story.template.md`.
**Обязательно:** `content_format`, `hash`, `updated_at`.
**Детали:** `bmad-v6/commands/create-story.md`
**Детали (v6, EN):** `~/.claude/config/bmad/bmad-v6-bundle/commands/create-story.md`
+1 -1
View File
@@ -6,4 +6,4 @@
**Выход:** `requirements/ux-*.md` (MARKDOWN/MERMAID), ссылки на мокапы вне results при необходимости.
**Детали:** `bmad-v6/commands/create-ux-design.md`
**Детали (v6, EN):** `~/.claude/config/bmad/bmad-v6-bundle/commands/create-ux-design.md`
+1 -1
View File
@@ -4,4 +4,4 @@
**Цель:** добавить или изменить воркфлоу в пакете `bmad-c9s` (команда + скилл + ссылка на FORMAT).
**Детали:** `bmad-v6/commands/create-workflow.md`
**Детали (v6, EN):** `~/.claude/config/bmad/bmad-v6-bundle/commands/create-workflow.md`
+2 -2
View File
@@ -4,6 +4,6 @@
**Фаза:** 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`**.
**Цель:** реализация в **монорепозитории**; в results — обновление связанного **`issues/*.md`** (тело, **`updated_at`**, статус **`in_progress`** при активной работе). Статус **`on_review`** агент **не** выставляет — только по команде оператора (**`/c9s-submit-for-review`**, см. `commands/c9s-submit-for-review.md` и [TASKS-DOCUMENTS-TIME-POLICY.md](~/.claude/config/bmad/TASKS-DOCUMENTS-TIME-POLICY.md) §2). **`done`** — только скилл **`c9s-master-review`**.
**Детали:** `bmad-v6/commands/dev-story.md` (канон BMAD); для статусов и времени — bmad-c9s выше.
**Детали (v6, EN):** `~/.claude/config/bmad/bmad-v6-bundle/commands/dev-story.md`; для статусов и времени — правила c9s выше.
+1 -1
View File
@@ -6,4 +6,4 @@
**Выход:** PRD как **требования (story)** в **`requirements/*.md`** (`type: story`, `content_format: MARKDOWN`); при росте — несколько связанных story; затем декомпозиция в **`issues/*.md`** при необходимости. Не использовать `.c9s/` для текста PRD.
**Детали:** `bmad-v6/commands/prd.md`, шаблон логики `bmad-v6/templates/prd.md`
**Детали (v6, EN):** `~/.claude/config/bmad/bmad-v6-bundle/commands/prd.md` · шаблон: `~/.claude/config/bmad/templates/prd.md`
+1 -1
View File
@@ -6,4 +6,4 @@
**Выход:** **`requirements/product-brief-{slug}.md`** (story, `content_format: MARKDOWN`); при необходимости — ключевые тезисы дублировать/сжать в теле **`project.md`** + `updated_at`.
**Детали:** `bmad-v6/commands/product-brief.md`
**Детали (v6, EN):** `~/.claude/config/bmad/bmad-v6-bundle/commands/product-brief.md`
+1 -1
View File
@@ -6,4 +6,4 @@
**Выход:** **`requirements/research-{slug}.md`** (story, `content_format: MARKDOWN`)
**Детали:** `bmad-v6/commands/research.md`
**Детали (v6, EN):** `~/.claude/config/bmad/bmad-v6-bundle/commands/research.md`
+1 -1
View File
@@ -6,4 +6,4 @@
**Выход:** чек-лист как **story** в **`requirements/gate-check-{slug}.md`** (`content_format: MARKDOWN`) со ссылками на существующие story/issues.
**Детали:** `bmad-v6/commands/solutioning-gate-check.md`
**Детали (v6, EN):** `~/.claude/config/bmad/bmad-v6-bundle/commands/solutioning-gate-check.md`
+1 -1
View File
@@ -6,4 +6,4 @@
**Выход:** `.c9s/sprint-status.yaml` (шаблон `templates/sprint-status.c9s.template.yaml`), обновления `issues/*.md` (`estimate`, `status`, `updated_at`).
**Детали:** `bmad-v6/commands/sprint-planning.md`
**Детали (v6, EN):** `~/.claude/config/bmad/bmad-v6-bundle/commands/sprint-planning.md`
+2 -2
View File
@@ -4,6 +4,6 @@
`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)).
Новая задача **`issues/*.md`:** в frontmatter — **`created_by`**, **`submaster`**, **`creators`** = **`username`** из конфига ([§1](~/.claude/config/bmad/TASKS-DOCUMENTS-TIME-POLICY.md)).
Полный текст: `bmad-c9s/docs/TASKS-DOCUMENTS-TIME-POLICY.md`.
Полный текст: `~/.claude/config/bmad/TASKS-DOCUMENTS-TIME-POLICY.md`.
+1 -1
View File
@@ -6,4 +6,4 @@
**Выход:** **`requirements/tech-spec-*.md`** (story, `content_format: MARKDOWN`); уточнения и версии — правки того же или новых story, не `.c9s/`.
**Детали:** `bmad-v6/commands/tech-spec.md`
**Детали (v6, EN):** `~/.claude/config/bmad/bmad-v6-bundle/commands/tech-spec.md`
+1 -1
View File
@@ -139,7 +139,7 @@
## Связь с bmad-c9s
Итог сессии удобно оформить **задачей** `issues/*.md` и **story** в `requirements/*.md` с подзаголовками по шляпам; методика CIS — [skills/cis/creative-intelligence/SKILL.md](skills/cis/creative-intelligence/SKILL.md). Поля issue и статусы — [docs/TASKS-DOCUMENTS-TIME-POLICY.md](docs/TASKS-DOCUMENTS-TIME-POLICY.md).
Итог сессии удобно оформить **задачей** `issues/*.md` и **story** в `requirements/*.md` с подзаголовками по шляпам; методика CIS — [skills/cis/creative-intelligence/SKILL.md](skills/cis/creative-intelligence/SKILL.md). Поля issue и статусы — [TASKS-DOCUMENTS-TIME-POLICY.md](~/.claude/config/bmad/TASKS-DOCUMENTS-TIME-POLICY.md).
---
+4 -4
View File
@@ -10,7 +10,7 @@ allowed-tools: Read, Write, Edit, Glob, Grep, TodoWrite
**Назначение:** расширять пакет **bmad-c9s** — скиллы, шаблоны, команды.
**Источник:** `bmad-v6/skills/bmb/builder/SKILL.md`, `bmad-skills/builder/` при наличии.
**Источник методологии (v6, EN):** `~/.claude/skills/bmad/bmb/builder/SKILL.md` · опционально репозиторий `bmad-skills/builder/` при открытом пакете.
---
@@ -18,9 +18,9 @@ allowed-tools: Read, Write, Edit, Glob, Grep, TodoWrite
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/`.
3. Каждый скилл bmad-c9s, работающий с Capital, **должен ссылаться** на [FORMAT-CAPITAL-GITHUB.md](~/.claude/config/bmad/FORMAT-CAPITAL-GITHUB.md).
4. Скиллы, которые создают или правят **`issues/*.md`**, дополнительно ссылаются на [TASKS-DOCUMENTS-TIME-POLICY.md](~/.claude/config/bmad/TASKS-DOCUMENTS-TIME-POLICY.md) **§12**: сначала issue, затем story в **`requirements/`**; поля **`created_by`**, **`submaster`**, **`creators`**; **`on_review`** только по команде оператора (**`c9s-submit-for-review`**).
5. Не дублировать полные главы из v6 — укажи `~/.claude/skills/bmad/…/SKILL.md` или `bmad-v6/…` **только** если workspace — корень `claude-code-bmad-skills`.
---
+6 -6
View File
@@ -10,14 +10,14 @@ allowed-tools: Read, Write, Edit, Glob, Grep, TodoWrite
**Фаза:** 1 — Анализ.
**Источник методологии:** `bmad-v6/skills/bmm/analyst/SKILL.md` (англ., детали).
**Источник методологии (v6, EN):** `~/.claude/skills/bmad/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)
- Канон Capital: [FORMAT-CAPITAL-GITHUB.md](~/.claude/config/bmad/FORMAT-CAPITAL-GITHUB.md)
- [TASKS-DOCUMENTS-TIME-POLICY.md](~/.claude/config/bmad/TASKS-DOCUMENTS-TIME-POLICY.md)
- Пути: [helpers-ru.md](../../../utils/helpers-ru.md)
---
@@ -26,13 +26,13 @@ allowed-tools: Read, Write, Edit, Glob, Grep, TodoWrite
| Артефакт | Куда |
|----------|------|
| Бриф, интервью, исследование, гипотезы | **Сначала** **`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` на время проработки |
| Бриф, интервью, исследование, гипотезы | **Сначала** **`issues/*.md`** на этот шаг (frontmatter: **`created_by`**, **`submaster`**, **`creators`** = `username` из конфига — иначе нет учёта времени, см. [TASKS §1](~/.claude/config/bmad/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)).
**`title`** в frontmatter каждого story — **только русский**, **чёткий понятный заголовок** ([FORMAT §2.2](~/.claude/config/bmad/FORMAT-CAPITAL-GITHUB.md)).
Декомпозицию **dev-задач на код** не задавать без PM/плана; **аналитические** задачи под бриф/исследование создаёшь **сам** в начале работы ([TASKS-DOCUMENTS-TIME-POLICY.md](../../../docs/TASKS-DOCUMENTS-TIME-POLICY.md)).
Декомпозицию **dev-задач на код** не задавать без PM/плана; **аналитические** задачи под бриф/исследование создаёшь **сам** в начале работы ([TASKS-DOCUMENTS-TIME-POLICY.md](~/.claude/config/bmad/TASKS-DOCUMENTS-TIME-POLICY.md)).
---
+6 -6
View File
@@ -10,14 +10,14 @@ allowed-tools: Read, Write, Edit, Glob, Grep, TodoWrite
**Фаза:** 3 — Проектирование решения.
**Источник:** `bmad-v6/skills/bmm/architect/SKILL.md`, `commands/architecture.md`.
**Источник методологии (v6, EN):** `~/.claude/skills/bmad/bmm/architect/SKILL.md` · сценарий команды: `~/.claude/config/bmad/bmad-v6-bundle/commands/architecture.md`. (Путь `bmad-v6/skills/…` в репозитории пакета — не работает из чужого проекта.)
---
## Документы
- [FORMAT-CAPITAL-GITHUB.md](../../../docs/FORMAT-CAPITAL-GITHUB.md) — обязательно **`content_format`** для каждого нового story
- [TASKS-DOCUMENTS-TIME-POLICY.md](../../../docs/TASKS-DOCUMENTS-TIME-POLICY.md)
- [FORMAT-CAPITAL-GITHUB.md](~/.claude/config/bmad/FORMAT-CAPITAL-GITHUB.md) — обязательно **`content_format`** для каждого нового story
- [TASKS-DOCUMENTS-TIME-POLICY.md](~/.claude/config/bmad/TASKS-DOCUMENTS-TIME-POLICY.md)
- [helpers-ru.md](../../../utils/helpers-ru.md)
---
@@ -26,11 +26,11 @@ allowed-tools: Read, Write, Edit, Glob, Grep, TodoWrite
| Содержание | Формат файла |
|------------|----------------|
| Текстовая архитектура, 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** |
| Текстовая архитектура, ADR | **Сначала** задача **`issues/*.md`** («Архитектура…») с полями учёта (**`created_by`**, **`submaster`**, **`creators`**, см. [TASKS §1](~/.claude/config/bmad/TASKS-DOCUMENTS-TIME-POLICY.md)), **затем** `requirements/*.md`, `type: story`, **`content_format: MARKDOWN`** |
| Диаграммы компонентов / потоков | та же **задача** **`issues/*.md`** (поля учёта — [TASKS §1](~/.claude/config/bmad/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)).
**`title`** у story в **`requirements/*.md`** — **только русский**, **чёткий заголовок** ([FORMAT §2.2](~/.claude/config/bmad/FORMAT-CAPITAL-GITHUB.md)).
Тело диаграмм — в markdown под frontmatter; для BPMN/DRAWIO — XML/текст согласно ожиданиям Capital (как на рабочем столе).
+6 -6
View File
@@ -10,7 +10,7 @@ allowed-tools: Read, Write, Edit, Glob, Grep, TodoWrite, Task
**Фаза:** 4 — Реализация.
**Источник:** `bmad-v6/skills/bmm/developer/SKILL.md`, `commands/dev-story.md`.
**Источник методологии (v6, EN):** `~/.claude/skills/bmad/bmm/developer/SKILL.md` · сценарий: `~/.claude/config/bmad/bmad-v6-bundle/commands/dev-story.md`.
---
@@ -25,18 +25,18 @@ allowed-tools: Read, Write, Edit, Glob, Grep, TodoWrite, Task
## Документы
- [FORMAT-CAPITAL-GITHUB.md](../../../docs/FORMAT-CAPITAL-GITHUB.md)
- [FORMAT-CAPITAL-GITHUB.md](~/.claude/config/bmad/FORMAT-CAPITAL-GITHUB.md)
- [helpers-ru.md](../../../utils/helpers-ru.md)
- [GIT-COMMITS-POLICY.md](../../../docs/GIT-COMMITS-POLICY.md)
- [GIT-COMMITS-POLICY.md](~/.claude/config/bmad/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`** — если пользователь просит отдельную операцию.
- **Репозиторий результатов:** после правок — **commit + push** по [GIT-COMMITS-POLICY.md](~/.claude/config/bmad/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`**, не ревью.
- **Задачи и время:** [TASKS-DOCUMENTS-TIME-POLICY.md](~/.claude/config/bmad/TASKS-DOCUMENTS-TIME-POLICY.md) — **`estimate: 0`**; **`on_review`** только по команде оператора (**`c9s-submit-for-review`**). После своей итерации оставляй **`in_progress`**, не ревью.
---
@@ -52,7 +52,7 @@ allowed-tools: Read, Write, Edit, Glob, Grep, TodoWrite, Task
## Ограничения
- Не выдумывать `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)).
- Не смешивать большие логи в чат — переносить в тело **`issues/*.md`** (задача = один промпт, контекст уже там). Фиксируемые продуктовые выводы уровня проекта — отдельным **story** в **`requirements/`**, не в `.c9s/`. Если создаёте story — **`title`** только **русский**, **чёткий заголовок** ([FORMAT §2.2](~/.claude/config/bmad/FORMAT-CAPITAL-GITHUB.md)).
---
+6 -6
View File
@@ -10,14 +10,14 @@ allowed-tools: Read, Write, Edit, Glob, Grep, TodoWrite
**Фаза:** 2 — Планирование.
**Источник:** `bmad-v6/skills/bmm/pm/SKILL.md`, команды `prd.md`, `tech-spec.md`.
**Источник методологии (v6, EN):** `~/.claude/skills/bmad/bmm/pm/SKILL.md` · сценарии: `~/.claude/config/bmad/bmad-v6-bundle/commands/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)
- [FORMAT-CAPITAL-GITHUB.md](~/.claude/config/bmad/FORMAT-CAPITAL-GITHUB.md)
- [TASKS-DOCUMENTS-TIME-POLICY.md](~/.claude/config/bmad/TASKS-DOCUMENTS-TIME-POLICY.md)
- [helpers-ru.md](../../../utils/helpers-ru.md)
- Шаблоны: [templates/](../../../templates/)
@@ -31,9 +31,9 @@ allowed-tools: Read, Write, Edit, Glob, Grep, TodoWrite
| Эпики → задачи | **`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)).
У каждого story в **`requirements/*.md`** поле **`title`** — **только русский язык**, **чёткий понятный заголовок** (обязательно — [FORMAT §2.2](~/.claude/config/bmad/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)).
Каждая **новая** **`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](~/.claude/config/bmad/TASKS-DOCUMENTS-TIME-POLICY.md) §2, [c9s-submit-for-review](../../core/c9s-submit-for-review/SKILL.md)).
---
@@ -53,4 +53,4 @@ allowed-tools: Read, Write, Edit, Glob, Grep, TodoWrite
## Заметки для LLM
- Сверяйся с `project.md` для `coopname`, `hash` проекта.
- Для длинных сценариев PRD см. `bmad-v6/commands/prd.md`.
- Для длинных сценариев PRD см. `~/.claude/config/bmad/bmad-v6-bundle/commands/prd.md`.
+4 -4
View File
@@ -10,14 +10,14 @@ allowed-tools: Read, Write, Edit, Glob, Grep, TodoWrite
**Фаза:** 4 — Поставка итерациями.
**Источник:** `bmad-v6/skills/bmm/scrum-master/SKILL.md`, `commands/sprint-planning.md`, `create-story.md`.
**Источник методологии (v6, EN):** `~/.claude/skills/bmad/bmm/scrum-master/SKILL.md` · сценарии: `~/.claude/config/bmad/bmad-v6-bundle/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)
- [FORMAT-CAPITAL-GITHUB.md](~/.claude/config/bmad/FORMAT-CAPITAL-GITHUB.md)
- [TASKS-DOCUMENTS-TIME-POLICY.md](~/.claude/config/bmad/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`**
@@ -29,7 +29,7 @@ allowed-tools: Read, Write, Edit, Glob, Grep, TodoWrite
|----------|-----|
| Состав спринта, цели | **`.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)) |
| Готовность к разработке | задачи в **`in_progress`/`todo`** с **`estimate: 0`** (если не оговорено иное), **`updated_at`**; при создании/правке issue не снимать **`created_by`**, **`submaster`**, **`creators`** — три поля нужны для учёта времени (см. [TASKS-DOCUMENTS-TIME-POLICY §1](~/.claude/config/bmad/TASKS-DOCUMENTS-TIME-POLICY.md)) |
---
+5 -5
View File
@@ -10,14 +10,14 @@ allowed-tools: Read, Write, Edit, Glob, Grep, TodoWrite
**Фазы:** 2–3 (планирование и проектирование опыта).
**Источник:** `bmad-v6/skills/bmm/ux-designer/SKILL.md`, `commands/create-ux-design.md`.
**Источник методологии (v6, EN):** `~/.claude/skills/bmad/bmm/ux-designer/SKILL.md` · сценарий: `~/.claude/config/bmad/bmad-v6-bundle/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)
- [FORMAT-CAPITAL-GITHUB.md](~/.claude/config/bmad/FORMAT-CAPITAL-GITHUB.md)
- [TASKS-DOCUMENTS-TIME-POLICY.md](~/.claude/config/bmad/TASKS-DOCUMENTS-TIME-POLICY.md)
- [helpers-ru.md](../../../utils/helpers-ru.md)
---
@@ -26,11 +26,11 @@ allowed-tools: Read, Write, Edit, Glob, Grep, TodoWrite
| Артефакт | Рекомендуемое размещение |
|----------|---------------------------|
| Персоны, сценарии, CJM (текст) | **Сначала** **`issues/*.md`** (поля **`created_by`**, **`submaster`**, **`creators`** — [TASKS §1](../../../docs/TASKS-DOCUMENTS-TIME-POLICY.md)), затем **`requirements/ux-*.md`**, **`content_format: MARKDOWN`** |
| Персоны, сценарии, CJM (текст) | **Сначала** **`issues/*.md`** (поля **`created_by`**, **`submaster`**, **`creators`** — [TASKS §1](~/.claude/config/bmad/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)).
**`title`** у каждого story — **только русский**, **чёткий понятный заголовок**; имя файла — транслит от этого заголовка ([FORMAT §2.2](~/.claude/config/bmad/FORMAT-CAPITAL-GITHUB.md)).
Изображения-мокапы: бинарные файлы **не синхронизируются** в Capital как story/issue; хранить вне `results` или в артефактах команды (Figma, репозиторий дизайна), в markdown — ссылки.
@@ -10,14 +10,14 @@ allowed-tools: Read, Write, Edit, Glob, Grep, TodoWrite
**Фаза:** 1 (и ретроспективы в 4 по запросу).
**Источник:** `bmad-v6/skills/cis/creative-intelligence/SKILL.md`.
**Источник методологии (v6, EN):** `~/.claude/skills/bmad/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)
- [FORMAT-CAPITAL-GITHUB.md](~/.claude/config/bmad/FORMAT-CAPITAL-GITHUB.md)
- [TASKS-DOCUMENTS-TIME-POLICY.md](~/.claude/config/bmad/TASKS-DOCUMENTS-TIME-POLICY.md)
- [helpers-ru.md](../../../utils/helpers-ru.md)
---
@@ -26,12 +26,12 @@ allowed-tools: Read, Write, Edit, Glob, Grep, TodoWrite
| Сессия | Куда писать |
|--------|-------------|
| Мозговой штурм, SWOT, варианты решений | **Сначала** **`issues/*.md`** на сессию (например «Мозговой штурм по …») с полями **`created_by`**, **`submaster`**, **`creators`** ([TASKS §1](../../../docs/TASKS-DOCUMENTS-TIME-POLICY.md)), **затем** **`requirements/…md`** — `type: story`, **`content_format: MARKDOWN`** |
| Мозговой штурм, SWOT, варианты решений | **Сначала** **`issues/*.md`** на сессию (например «Мозговой штурм по …») с полями **`created_by`**, **`submaster`**, **`creators`** ([TASKS §1](~/.claude/config/bmad/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).
Не начинать оформленную сессию **только** story без **issue** — см. [TASKS-DOCUMENTS-TIME-POLICY.md](~/.claude/config/bmad/TASKS-DOCUMENTS-TIME-POLICY.md).
**`title`** у каждого story — **только русский**, **чёткий заголовок**; имя файла — транслит от заголовка ([FORMAT §2.2](../../../docs/FORMAT-CAPITAL-GITHUB.md)), а не голые префиксы `brainstorm-`/`idea-` без смысла в **`title`**.
**`title`** у каждого story — **только русский**, **чёткий заголовок**; имя файла — транслит от заголовка ([FORMAT §2.2](~/.claude/config/bmad/FORMAT-CAPITAL-GITHUB.md)), а не голые префиксы `brainstorm-`/`idea-` без смысла в **`title`**.
---
@@ -18,11 +18,11 @@ allowed-tools: Read, Write, Edit, Bash, Glob, Grep, TodoWrite
## Обязательные ссылки
- [CLAUDE.md](../../../CLAUDE.md) — обзор пакета
- [docs/FORMAT-CAPITAL-GITHUB.md](../../../docs/FORMAT-CAPITAL-GITHUB.md) — канон путей и frontmatter
- [FORMAT-CAPITAL-GITHUB.md](~/.claude/config/bmad/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`
- [GIT-COMMITS-POLICY.md](~/.claude/config/bmad/GIT-COMMITS-POLICY.md) — commit/push results и монорепо
- [TASKS-DOCUMENTS-TIME-POLICY.md](~/.claude/config/bmad/TASKS-DOCUMENTS-TIME-POLICY.md) — задачи под документы, `estimate`, `on_review` только по команде оператора
- Эталон v6 (англ., после install): `~/.claude/skills/bmad/core/bmad-master/SKILL.md` (в репозитории пакета: `bmad-v6/skills/core/bmad-master/SKILL.md`)
---
@@ -32,10 +32,10 @@ allowed-tools: Read, Write, Edit, Bash, Glob, Grep, TodoWrite
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) — только для **явной** отдельной команды пользователя.
5. У **story** в **`requirements/*.md`** поле **`title`** — **только русский**, формулировка **чёткая и понятная** (см. [CLAUDE.md](../../../CLAUDE.md), [FORMAT §2.2](~/.claude/config/bmad/FORMAT-CAPITAL-GITHUB.md)).
6. **Репозиторий результатов:** после правок канонических файлов — **`git commit`** и **`git push`** (сообщения на русском), см. [GIT-COMMITS-POLICY.md](~/.claude/config/bmad/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).
8. **Документы (PRD, архитектура, бриф, …):** сначала **`issues/*.md`**, затем **`requirements/*.md`** — [TASKS-DOCUMENTS-TIME-POLICY.md](~/.claude/config/bmad/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)).
---
@@ -19,7 +19,7 @@ allowed-tools: Read, Write, Edit, Glob, Grep, TodoWrite
## Ссылки
- [FORMAT-CAPITAL-GITHUB.md](../../../docs/FORMAT-CAPITAL-GITHUB.md) — статусы, поля issue
- [FORMAT-CAPITAL-GITHUB.md](~/.claude/config/bmad/FORMAT-CAPITAL-GITHUB.md) — статусы, поля issue
- [helpers-ru.md](../../../utils/helpers-ru.md) — пути к `issues/*.md`
---
@@ -21,7 +21,7 @@ allowed-tools: Read, Write, Edit, Bash, Glob, Grep, TodoWrite
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`.
6. После успешного merge — записать в **`results_commits.yaml`** (путь по [GIT-COMMITS-POLICY §2.4](~/.claude/config/bmad/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 и т.д.) **не отменяют** эти правила.
@@ -29,7 +29,7 @@ allowed-tools: Read, Write, Edit, Bash, Glob, Grep, TodoWrite
## Обязательные ссылки
- [docs/GIT-COMMITS-POLICY.md](../../../docs/GIT-COMMITS-POLICY.md)
- [GIT-COMMITS-POLICY.md](~/.claude/config/bmad/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`
@@ -11,7 +11,7 @@ allowed-tools: Read, Write, Edit, Bash, Glob, Grep, TodoWrite
## Назначение
**По умолчанию** агент **уже** выполняет **`git commit`** и **`git push`** в репозитории результатов после значимых правок — см. [docs/GIT-COMMITS-POLICY.md](../../../docs/GIT-COMMITS-POLICY.md) §1.
**По умолчанию** агент **уже** выполняет **`git commit`** и **`git push`** в репозитории результатов после значимых правок — см. [GIT-COMMITS-POLICY.md](~/.claude/config/bmad/GIT-COMMITS-POLICY.md) §1.
Этот скилл нужен, когда пользователь **явно** просит:
@@ -25,8 +25,8 @@ allowed-tools: Read, Write, Edit, Bash, Glob, Grep, TodoWrite
## Обязательные ссылки
- [docs/GIT-COMMITS-POLICY.md](../../../docs/GIT-COMMITS-POLICY.md)
- [docs/TASKS-DOCUMENTS-TIME-POLICY.md](../../../docs/TASKS-DOCUMENTS-TIME-POLICY.md)
- [GIT-COMMITS-POLICY.md](~/.claude/config/bmad/GIT-COMMITS-POLICY.md)
- [TASKS-DOCUMENTS-TIME-POLICY.md](~/.claude/config/bmad/TASKS-DOCUMENTS-TIME-POLICY.md)
- [CLAUDE.md](../../../CLAUDE.md)
- [helpers-ru.md](../../../utils/helpers-ru.md)
@@ -13,15 +13,15 @@ allowed-tools: Read, Write, Edit, Bash, Glob, Grep, TodoWrite
Выполнять **только** после **явного** указания **оператора** (человека): он прочитал/проверил результат (PRD, правки, код в контексте задачи и т.д.) и **сознательно** готов передать задачу мастеру в очередь ревью.
**Запрещено:** переводить в **`on_review`** «потому что агент закончил черновик» — см. [docs/TASKS-DOCUMENTS-TIME-POLICY.md](../../../docs/TASKS-DOCUMENTS-TIME-POLICY.md) §2.
**Запрещено:** переводить в **`on_review`** «потому что агент закончил черновик» — см. [TASKS-DOCUMENTS-TIME-POLICY.md](~/.claude/config/bmad/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)
- [TASKS-DOCUMENTS-TIME-POLICY.md](~/.claude/config/bmad/TASKS-DOCUMENTS-TIME-POLICY.md)
- [FORMAT-CAPITAL-GITHUB.md](~/.claude/config/bmad/FORMAT-CAPITAL-GITHUB.md)
- [GIT-COMMITS-POLICY.md](~/.claude/config/bmad/GIT-COMMITS-POLICY.md)
---
+1 -1
View File
@@ -23,4 +23,4 @@ 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.
**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`**). См. [TASKS-DOCUMENTS-TIME-POLICY.md](~/.claude/config/bmad/TASKS-DOCUMENTS-TIME-POLICY.md) §12.
+1 -1
View File
@@ -13,7 +13,7 @@ updated_at: "{{ISO_TIMESTAMP}}"
Файл только под **`requirements/`** (продуктовый уровень). Для задач отдельные story не создавать — контекст выполнения в теле **`issues/*.md`**.
**`title` в frontmatter выше:** только **русский язык**, **чёткий понятный заголовок** (обязательное правило — см. `CLAUDE.md`, `docs/FORMAT-CAPITAL-GITHUB.md` §2.2).
**`title` в frontmatter выше:** только **русский язык**, **чёткий понятный заголовок** (обязательное правило — см. `CLAUDE.md`, `~/.claude/config/bmad/FORMAT-CAPITAL-GITHUB.md` §2.2).
## Контекст
+5 -5
View File
@@ -2,9 +2,9 @@
Сокращённые инструкции без исполняемых скриптов: агент выполняет шаги через чтение/запись файлов.
Полная спецификация путей и полей: [../docs/FORMAT-CAPITAL-GITHUB.md](../docs/FORMAT-CAPITAL-GITHUB.md).
Полная спецификация путей и полей: [FORMAT-CAPITAL-GITHUB.md](~/.claude/config/bmad/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).
Git (results / монорепо): [GIT-COMMITS-POLICY.md](~/.claude/config/bmad/GIT-COMMITS-POLICY.md). Задачи, документы, `estimate`, `on_review`: [TASKS-DOCUMENTS-TIME-POLICY.md](~/.claude/config/bmad/TASKS-DOCUMENTS-TIME-POLICY.md).
---
@@ -31,7 +31,7 @@ Git (results / монорепо): [../docs/GIT-COMMITS-POLICY.md](../docs/GIT-CO
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.
См. [GIT-COMMITS-POLICY.md](~/.claude/config/bmad/GIT-COMMITS-POLICY.md) §2.4.
---
@@ -66,10 +66,10 @@ componentRoot = {projectRoot}/{active_component_path}
Пути:
- задачи: `{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}/issues/{issueSlug}.md` — в **теле** задачи весь контекст для реализации (bmad-c9s: без подпапок `*-requirements/`). В frontmatter новой задачи **обязательно**: **`created_by`**, **`submaster`**, **`creators: ["<username>"]`** — тот же **`username`**, что в **`c9s-config.yaml`**; иначе **не будет учёта времени** в Capital (см. [TASKS-DOCUMENTS-TIME-POLICY §1](~/.claude/config/bmad/TASKS-DOCUMENTS-TIME-POLICY.md)).
- требования уровня проекта: `{base}/requirements/{storySlug}.md`
**Наименование требований:** в каждом `{base}/requirements/*.md` поле **`title`** в frontmatter — **только русский язык**, заголовок **чёткий и понятный** (см. [FORMAT §2.2](../docs/FORMAT-CAPITAL-GITHUB.md)).
**Наименование требований:** в каждом `{base}/requirements/*.md` поле **`title`** в frontmatter — **только русский язык**, заголовок **чёткий и понятный** (см. [FORMAT §2.2](~/.claude/config/bmad/FORMAT-CAPITAL-GITHUB.md)).
---
+188 -133
View File
@@ -1,8 +1,8 @@
###############################################################################
# BMAD-c9s (Coopenomics) for Claude Code — PowerShell installer
# BMAD v6 + BMAD-c9s (Coopenomics) — PowerShell installer
#
# Устанавливает скиллы и команды из bmad-c9s/. Каталог bmad-v6/ в репозитории
# не изменяется; при наличии копируется helpers.md как helpers-bmad-v6-en.md.
# Соответствует install-v6.sh: v6 → skills/bmad, c9s → skills/bmad-c9s,
# bmad-v6-bundle в config/bmad, команды c9s → commands/bmad.
#
# Supports: PowerShell 5.1+ (Windows default) and PowerShell 6+ (Core)
#
@@ -89,7 +89,7 @@ $ErrorActionPreference = "Stop"
# Configuration
###############################################################################
$BmadVersion = "1.0.0"
$BmadVersion = "1.1.0"
# PowerShell version detection
$PSVersion = $PSVersionTable.PSVersion.Major
@@ -236,13 +236,16 @@ if ($IsWindows -or $env:OS -match "Windows" -or (-not (Test-Path variable:IsWind
$ClaudeDir = Join-Path $HomeDir ".claude"
$BmadConfigDir = Join-PathCompat $ClaudeDir "config" "bmad"
$BmadV6BundleDir = Join-PathCompat $BmadConfigDir "bmad-v6-bundle"
$BmadSkillsDir = Join-PathCompat $ClaudeDir "skills" "bmad"
$BmadC9sSkillsDir = Join-PathCompat $ClaudeDir "skills" "bmad-c9s"
$BmadCommandsDir = Join-PathCompat $ClaudeDir "commands" "bmad"
$ScriptDir = $PSScriptRoot
# Source directories (primary: bmad-c9s; bmad-v6 only for optional EN helpers)
# Source directories
$SourceBmadC9sDir = Join-Path $ScriptDir "bmad-c9s"
$SourceBmadV6Dir = Join-Path $ScriptDir "bmad-v6"
$SourceV6SkillsDir = Join-PathCompat $SourceBmadV6Dir "skills"
$SourceSkillsDir = Join-PathCompat $SourceBmadC9sDir "skills"
$SourceConfigDir = Join-PathCompat $SourceBmadC9sDir "config"
$SourceTemplatesDir = Join-PathCompat $SourceBmadC9sDir "templates"
@@ -286,6 +289,10 @@ function global:Test-Prerequisites {
Write-Success "Found source directory: $SourceBmadC9sDir"
}
if (-not (Test-Path $SourceV6SkillsDir)) {
$errors += "BMAD v6 skills not found: $SourceV6SkillsDir (required for combined install)"
}
# Check required source subdirectories
$requiredDirs = @{
"skills" = $SourceSkillsDir
@@ -317,9 +324,9 @@ function global:Test-Prerequisites {
}
# Check if already installed
$bmadMasterPath = Join-PathCompat $BmadSkillsDir "core" "bmad-master-c9s" "SKILL.md"
$bmadMasterPath = Join-PathCompat $BmadC9sSkillsDir "core" "bmad-master-c9s" "SKILL.md"
if ((Test-Path $bmadMasterPath) -and -not $Force) {
Write-Warning "BMAD-c9s is already installed at: $BmadSkillsDir"
Write-Warning "BMAD-c9s is already installed at: $BmadC9sSkillsDir"
Write-Host ""
Write-Host "Options:" -ForegroundColor Yellow
Write-Host " 1. Run with -Force to reinstall"
@@ -356,12 +363,13 @@ function global:Test-Prerequisites {
###############################################################################
function global:Uninstall-BmadV6 {
Write-Header "BMAD-c9s v$BmadVersion — удаление"
Write-Header "BMAD v6 + c9s v$BmadVersion — удаление"
Write-Info "Checking for BMAD-c9s installation..."
Write-Info "Checking for BMAD installation..."
$dirsToRemove = @(
$BmadSkillsDir,
$BmadC9sSkillsDir,
$BmadCommandsDir,
$BmadConfigDir
)
@@ -375,7 +383,7 @@ function global:Uninstall-BmadV6 {
}
if (-not $found) {
Write-Warning "BMAD-c9s is not installed under ~/.claude/.../bmad"
Write-Warning "BMAD installation not found under ~/.claude (skills/bmad, skills/bmad-c9s, config/bmad)"
Write-Host "Nothing to uninstall."
exit 0
}
@@ -425,30 +433,38 @@ function global:Uninstall-BmadV6 {
###############################################################################
function global:New-Directories {
Write-Progress -Activity "Installing BMAD-c9s" -Status "Creating directory structure..." -PercentComplete 0
Write-Progress -Activity "Installing BMAD v6 + c9s" -Status "Creating directory structure..." -PercentComplete 0
Write-Info "Creating directory structure..."
try {
# Claude Code directories - Skills
@("core", "bmm", "bmb", "cis") | ForEach-Object {
$skillDir = Join-Path $BmadSkillsDir $_
if ($PSCmdlet.ShouldProcess($skillDir, "Create directory")) {
Write-Verbose "Creating skill directory: $skillDir"
if ($PSCmdlet.ShouldProcess($skillDir, "Create v6 skill directory")) {
New-Item -ItemType Directory -Force -Path $skillDir -ErrorAction Stop | Out-Null
}
$c9sDir = Join-Path $BmadC9sSkillsDir $_
if ($PSCmdlet.ShouldProcess($c9sDir, "Create c9s skill directory")) {
New-Item -ItemType Directory -Force -Path $c9sDir -ErrorAction Stop | Out-Null
}
}
# Claude Code directories - Config
@("agents", "templates") | ForEach-Object {
$configDir = Join-Path $BmadConfigDir $_
if ($PSCmdlet.ShouldProcess($configDir, "Create directory")) {
Write-Verbose "Creating config directory: $configDir"
if ($PSCmdlet.ShouldProcess($configDir, "Create config directory")) {
New-Item -ItemType Directory -Force -Path $configDir -ErrorAction Stop | Out-Null
}
}
@("commands", "templates", "utils") | ForEach-Object {
$bundleSub = Join-Path $BmadV6BundleDir $_
if ($PSCmdlet.ShouldProcess($bundleSub, "Create bmad-v6-bundle subdirectory")) {
New-Item -ItemType Directory -Force -Path $bundleSub -ErrorAction Stop | Out-Null
}
}
Write-Success "Directory structure created"
Write-Verbose " Skills: $BmadSkillsDir"
Write-Verbose " Skills v6: $BmadSkillsDir"
Write-Verbose " Skills c9s: $BmadC9sSkillsDir"
Write-Verbose " Config: $BmadConfigDir"
}
catch {
@@ -459,88 +475,101 @@ function global:New-Directories {
}
function global:Install-Skills {
Write-Progress -Activity "Installing BMAD-c9s" -Status "Installing skills..." -PercentComplete 20
Write-Info "Installing BMAD-c9s skills..."
Write-Progress -Activity "Installing BMAD v6 + c9s" -Status "Installing skills..." -PercentComplete 20
Write-Info "Installing BMAD v6 skills → $BmadSkillsDir ..."
$skillComponents = @(
@{
Name = "Core Skills"
SourcePath = Join-PathCompat $SourceSkillsDir "core"
DestPath = Join-Path $BmadSkillsDir "core"
Required = $true
},
@{
Name = "BMM Skills"
SourcePath = Join-PathCompat $SourceSkillsDir "bmm"
DestPath = Join-Path $BmadSkillsDir "bmm"
Required = $true
},
@{
Name = "BMB Skills"
SourcePath = Join-PathCompat $SourceSkillsDir "bmb"
DestPath = Join-Path $BmadSkillsDir "bmb"
Required = $false
},
@{
Name = "CIS Skills"
SourcePath = Join-PathCompat $SourceSkillsDir "cis"
DestPath = Join-Path $BmadSkillsDir "cis"
Required = $false
}
$v6Components = @(
@{ Name = "v6 Core"; Sub = "core"; Required = $true }
@{ Name = "v6 BMM"; Sub = "bmm"; Required = $true }
@{ Name = "v6 BMB"; Sub = "bmb"; Required = $false }
@{ Name = "v6 CIS"; Sub = "cis"; Required = $false }
)
foreach ($component in $skillComponents) {
$sourcePath = $component.SourcePath
$destPath = $component.DestPath
$componentName = $component.Name
$required = $component.Required
Write-Verbose "Installing $componentName from: $sourcePath"
foreach ($c in $v6Components) {
$sourcePath = Join-PathCompat $SourceV6SkillsDir $c.Sub
$destPath = Join-Path $BmadSkillsDir $c.Sub
if (Test-Path $sourcePath) {
try {
$sourcePattern = Join-Path $sourcePath "*"
if ($PSCmdlet.ShouldProcess($destPath, "Copy $componentName")) {
Copy-ItemSafe -SourcePath $sourcePattern -DestinationPath $destPath -Recurse -Force -ErrorContext "$componentName installation"
Write-Success "$componentName installed"
Write-Verbose " Copied to: $destPath"
}
$sourcePattern = Join-Path $sourcePath "*"
if ($PSCmdlet.ShouldProcess($destPath, "Copy $($c.Name)")) {
Copy-ItemSafe -SourcePath $sourcePattern -DestinationPath $destPath -Recurse -Force -ErrorContext "$($c.Name) installation"
Write-Success "$($c.Name) installed"
}
catch {
if ($required) {
throw
} else {
Write-Warning "Optional $componentName could not be installed"
Write-Verbose " Error: $($_.Exception.Message)"
}
}
} else {
if ($required) {
Write-ErrorMsg "$componentName not found at: $sourcePath"
Write-ErrorMsg "Installation cannot continue"
throw "Required component missing: $componentName"
} else {
Write-Verbose "$componentName not found (optional): $sourcePath"
} elseif ($c.Required) {
throw "Required v6 skills missing: $sourcePath"
}
}
Write-Info "Installing BMAD-c9s skills → $BmadC9sSkillsDir ..."
$c9sComponents = @(
@{ Name = "c9s Core"; Sub = "core"; Required = $true }
@{ Name = "c9s BMM"; Sub = "bmm"; Required = $true }
@{ Name = "c9s BMB"; Sub = "bmb"; Required = $false }
@{ Name = "c9s CIS"; Sub = "cis"; Required = $false }
)
foreach ($c in $c9sComponents) {
$sourcePath = Join-PathCompat $SourceSkillsDir $c.Sub
$destPath = Join-Path $BmadC9sSkillsDir $c.Sub
if (Test-Path $sourcePath) {
$sourcePattern = Join-Path $sourcePath "*"
if ($PSCmdlet.ShouldProcess($destPath, "Copy $($c.Name)")) {
Copy-ItemSafe -SourcePath $sourcePattern -DestinationPath $destPath -Recurse -Force -ErrorContext "$($c.Name) installation"
Write-Success "$($c.Name) installed"
}
} elseif ($c.Required) {
throw "Required c9s skills missing: $sourcePath"
}
}
}
function global:Install-V6Bundle {
Write-Progress -Activity "Installing BMAD v6 + c9s" -Status "bmad-v6-bundle..." -PercentComplete 32
Write-Info "Copying BMAD v6 commands/templates/utils → bmad-v6-bundle..."
$v6Cmd = Join-Path $SourceBmadV6Dir "commands"
if (Test-Path $v6Cmd) {
$pattern = Join-Path $v6Cmd "*.md"
Copy-ItemSafe -SourcePath $pattern -DestinationPath (Join-Path $BmadV6BundleDir "commands") -Force -ErrorContext "v6 bundle commands"
}
$v6Tpl = Join-Path $SourceBmadV6Dir "templates"
if (Test-Path $v6Tpl) {
$pattern = Join-Path $v6Tpl "*"
Copy-ItemSafe -SourcePath $pattern -DestinationPath (Join-Path $BmadV6BundleDir "templates") -Force -ErrorContext "v6 bundle templates"
}
$v6Helpers = Join-PathCompat $SourceBmadV6Dir "utils" "helpers.md"
if (Test-Path $v6Helpers) {
Copy-ItemSafe -SourcePath $v6Helpers -DestinationPath (Join-Path $BmadV6BundleDir "utils" "helpers.md") -Force -ErrorContext "v6 bundle helpers"
}
Write-Success "bmad-v6-bundle updated"
}
function global:Install-Config {
Write-Progress -Activity "Installing BMAD-c9s" -Status "Installing configuration..." -PercentComplete 40
Write-Info "Installing BMAD-c9s configuration template..."
Write-Progress -Activity "Installing BMAD v6 + c9s" -Status "Installing configuration..." -PercentComplete 40
Write-Info "Installing configuration (v6 + c9s)..."
try {
$V6ConfigTemplate = Join-PathCompat $SourceBmadV6Dir "config" "config.template.yaml"
$V6ConfigDest = Join-Path $BmadConfigDir "config.yaml"
if ((Test-Path $V6ConfigTemplate) -and -not (Test-Path $V6ConfigDest)) {
$raw = Get-Content -Path $V6ConfigTemplate -Raw -ErrorAction Stop
$userName = if ($env:USERNAME) { $env:USERNAME } else { $env:USER }
$raw = $raw -replace '\{\{USER_NAME\}\}', $userName
if ($PSCmdlet.ShouldProcess($V6ConfigDest, "Write BMAD v6 config.yaml")) {
Set-Content -Path $V6ConfigDest -Value $raw -Encoding UTF8 -ErrorAction Stop
Write-Success "config.yaml created (BMAD v6)"
}
} elseif (Test-Path $V6ConfigDest) {
Write-Verbose "config.yaml exists — not overwriting"
}
$V6ProjectTpl = Join-PathCompat $SourceBmadV6Dir "config" "project-config.template.yaml"
if (Test-Path $V6ProjectTpl) {
Copy-ItemSafe -SourcePath $V6ProjectTpl -DestinationPath (Join-Path $BmadConfigDir "project-config.template.yaml") -Force -ErrorContext "v6 project-config template"
}
$C9sConfigTemplatePath = Join-PathCompat $SourceConfigDir "c9s-config.template.yaml"
$C9sConfigDestPath = Join-Path $BmadConfigDir "c9s-config.template.yaml"
Write-Verbose "Config template: $C9sConfigTemplatePath"
Write-Verbose "Config destination: $C9sConfigDestPath"
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)"
Write-Success "c9s-config.template.yaml installed"
}
} else {
Write-Warning "c9s-config.template.yaml not found at: $C9sConfigTemplatePath"
@@ -553,24 +582,25 @@ function global:Install-Config {
}
function global:Install-Templates {
Write-Progress -Activity "Installing BMAD-c9s" -Status "Installing templates..." -PercentComplete 60
Write-Info "Installing templates..."
Write-Progress -Activity "Installing BMAD v6 + c9s" -Status "Installing templates..." -PercentComplete 60
Write-Info "templates/: v6 base, then c9s overwrites same filenames..."
try {
$TemplatesDestPath = Join-Path $BmadConfigDir "templates"
Write-Verbose "Templates source: $SourceTemplatesDir"
Write-Verbose "Templates destination: $TemplatesDestPath"
$V6Templates = Join-Path $SourceBmadV6Dir "templates"
if (Test-Path $V6Templates) {
$templatePattern = Join-Path $V6Templates "*"
if ($PSCmdlet.ShouldProcess($TemplatesDestPath, "Copy v6 templates")) {
Copy-ItemSafe -SourcePath $templatePattern -DestinationPath $TemplatesDestPath -Force -ErrorContext "v6 templates"
Write-Success "v6 templates copied (base)"
}
}
if (Test-Path $SourceTemplatesDir) {
$templatePattern = Join-Path $SourceTemplatesDir "*"
if ($PSCmdlet.ShouldProcess($TemplatesDestPath, "Copy templates")) {
Copy-ItemSafe -SourcePath $templatePattern -DestinationPath $TemplatesDestPath -Force -ErrorContext "templates"
Write-Success "Templates installed"
Write-Verbose " Copied to: $TemplatesDestPath"
if ($PSCmdlet.ShouldProcess($TemplatesDestPath, "Copy c9s templates (overwrite)")) {
Copy-ItemSafe -SourcePath $templatePattern -DestinationPath $TemplatesDestPath -Force -ErrorContext "c9s templates"
Write-Success "c9s templates applied (overwrite matching names)"
}
} else {
Write-Warning "Templates not found at: $SourceTemplatesDir"
}
}
catch {
@@ -580,17 +610,31 @@ function global:Install-Templates {
}
function global:Install-Utils {
Write-Progress -Activity "Installing BMAD-c9s" -Status "Installing docs and helpers..." -PercentComplete 70
Write-Info "Installing docs and helpers (c9s)..."
Write-Progress -Activity "Installing BMAD v6 + c9s" -Status "Installing docs and helpers..." -PercentComplete 70
Write-Info "Installing helpers and c9s docs..."
try {
$V6Helpers = Join-PathCompat $SourceBmadV6Dir "utils" "helpers.md"
$V6HelpersRef = Join-Path $BmadConfigDir "helpers-bmad-v6-en.md"
if (Test-Path $V6Helpers) {
if ($PSCmdlet.ShouldProcess($V6HelpersRef, "Copy BMAD v6 helpers (reference EN)")) {
Copy-ItemSafe -SourcePath $V6Helpers -DestinationPath $V6HelpersRef -Force -ErrorContext "v6 helpers EN ref"
Write-Success "helpers-bmad-v6-en.md (methodology reference)"
}
}
$HelpersRuPath = Join-PathCompat $SourceUtilsDir "helpers-ru.md"
$HelpersRuDest = Join-Path $BmadConfigDir "helpers-ru.md"
$HelpersPrimary = Join-Path $BmadConfigDir "helpers.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"
}
if ($PSCmdlet.ShouldProcess($HelpersPrimary, "Copy helpers.md from c9s helpers-ru")) {
Copy-ItemSafe -SourcePath $HelpersRuPath -DestinationPath $HelpersPrimary -Force -ErrorContext "helpers primary"
Write-Success "helpers.md = c9s rules (copy of helpers-ru)"
}
} else {
Write-Warning "helpers-ru.md not found at: $HelpersRuPath"
}
@@ -604,6 +648,17 @@ function global:Install-Utils {
}
}
foreach ($docName in @("TASKS-DOCUMENTS-TIME-POLICY.md", "GIT-COMMITS-POLICY.md")) {
$srcDoc = Join-PathCompat $SourceC9sDocsDir $docName
$dstDoc = Join-Path $BmadConfigDir $docName
if (Test-Path $srcDoc) {
if ($PSCmdlet.ShouldProcess($dstDoc, "Copy $docName")) {
Copy-ItemSafe -SourcePath $srcDoc -DestinationPath $dstDoc -Force -ErrorContext "c9s doc $docName"
Write-Success "$docName installed"
}
}
}
$ClaudeSrc = Join-Path $SourceBmadC9sDir "CLAUDE.md"
$ClaudeDest = Join-Path $BmadConfigDir "CLAUDE-bmad-c9s.md"
if (Test-Path $ClaudeSrc) {
@@ -612,17 +667,6 @@ function global:Install-Utils {
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 docs/helpers"
@@ -631,7 +675,7 @@ function global:Install-Utils {
}
function global:Install-Commands {
Write-Progress -Activity "Installing BMAD-c9s" -Status "Installing slash commands..." -PercentComplete 80
Write-Progress -Activity "Installing BMAD v6 + c9s" -Status "Installing slash commands..." -PercentComplete 80
Write-Info "Installing slash commands from bmad-c9s/commands..."
try {
@@ -668,14 +712,22 @@ function global:Install-Commands {
}
function global:Test-Installation {
Write-Progress -Activity "Installing BMAD-c9s" -Status "Verifying installation..." -PercentComplete 90
Write-Progress -Activity "Installing BMAD v6 + c9s" -Status "Verifying installation..." -PercentComplete 90
Write-Info "Verifying installation..."
$errors = 0
$checks = @(
@{
Name = "bmad-master (v6) 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"
Path = Join-PathCompat $BmadC9sSkillsDir "core" "bmad-master-c9s" "SKILL.md"
},
@{
Name = "bmad-v6-bundle create-story"
Path = Join-PathCompat $BmadV6BundleDir "commands" "create-story.md"
},
@{
Name = "c9s config template"
@@ -722,16 +774,15 @@ function global:Test-Installation {
}
function global:Show-NextSteps {
Write-Header "BMAD-c9s — установка завершена"
Write-Header "BMAD v6 + BMAD-c9s — установка завершена"
Write-Host "[SUCCESS] BMAD-c9s v$BmadVersion (Coopenomics) установлен." -ForegroundColor Green
Write-Host "[SUCCESS] BMAD v6 + BMAD-c9s v$BmadVersion установлены." -ForegroundColor Green
Write-Host ""
Write-Host "Каталоги:"
Write-Host " Skills: $BmadSkillsDir"
Write-Host " Commands: $BmadCommandsDir"
Write-Host " Config: $BmadConfigDir"
Write-Host ""
Write-Host "Источник: bmad-c9s/ (bmad-v6/ в репозитории не изменяется)."
Write-Host "Скиллы:"
Write-Host " v6: $BmadSkillsDir"
Write-Host " c9s: $BmadC9sSkillsDir"
Write-Host "Команды (обёртки c9s): $BmadCommandsDir"
Write-Host "Конфиг: $BmadConfigDir (в т.ч. bmad-v6-bundle/commands для полных текстов v6)"
Write-Host ""
Write-Host "Дальше:"
Write-Host " 1. Перезапустите Claude Code"
@@ -747,32 +798,35 @@ function global:Show-NextSteps {
Write-Host "Проверка:"
if ($IsWindows -or $env:OS -match "Windows" -or (-not (Test-Path variable:IsWindows))) {
Write-Host " dir `"$BmadSkillsDir\core\bmad-master-c9s\SKILL.md`""
Write-Host " dir `"$BmadSkillsDir\core\bmad-master\SKILL.md`""
Write-Host " dir `"$BmadC9sSkillsDir\core\bmad-master-c9s\SKILL.md`""
Write-Host " dir `"$BmadCommandsDir\c9s-init.md`""
} else {
Write-Host " ls -la ~/.claude/skills/bmad/core/bmad-master-c9s/SKILL.md"
Write-Host " ls -la ~/.claude/skills/bmad/core/bmad-master/SKILL.md"
Write-Host " ls -la ~/.claude/skills/bmad-c9s/core/bmad-master-c9s/SKILL.md"
Write-Host " ls -la ~/.claude/commands/bmad/c9s-init.md"
}
Write-Host ""
Write-Host "Исходники пакета: $SourceBmadC9sDir"
Write-Host ""
Write-Host "[OK] BMAD-c9s готов." -ForegroundColor Green
Write-Host "[OK] BMAD v6 + c9s готовы." -ForegroundColor Green
}
function global:Show-WhatIfSummary {
Write-Header "Installation Summary (Dry-Run) — BMAD-c9s"
Write-Host "Would install BMAD-c9s v$BmadVersion from: $SourceBmadC9sDir"
Write-Host " Skills: $BmadSkillsDir"
Write-Host "Would install BMAD v6 + BMAD-c9s v$BmadVersion"
Write-Host " Skills v6: $BmadSkillsDir"
Write-Host " Skills c9s: $BmadC9sSkillsDir"
Write-Host " Commands: $BmadCommandsDir"
Write-Host " Config: $BmadConfigDir"
Write-Host " Config: $BmadConfigDir + bmad-v6-bundle"
Write-Host ""
Write-Host "Components:"
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 " [*] Skills from bmad-v6/skills and bmad-c9s/skills"
Write-Host " [*] bmad-v6-bundle (commands, templates, utils)"
Write-Host " [*] config.yaml (v6), c9s-config.template.yaml, merged templates"
Write-Host " [*] helpers.md (v6), helpers-ru, slash commands from bmad-c9s/commands"
Write-Host ""
Write-Host "To perform actual installation, run without -WhatIf"
}
@@ -794,7 +848,7 @@ function global:Main {
return
}
Write-Header "BMAD-c9s v$BmadVersion — installer"
Write-Header "BMAD v6 + BMAD-c9s v$BmadVersion — installer"
# Show version info
if ($IsPowerShell5) {
@@ -827,6 +881,7 @@ function global:Main {
New-Directories
Install-Skills
Install-V6Bundle
Install-Config
Install-Templates
Install-Utils
@@ -835,10 +890,10 @@ function global:Main {
# Verify
Write-Host ""
if (Test-Installation) {
Write-Progress -Activity "Installing BMAD-c9s" -Status "Complete!" -PercentComplete 100
Write-Progress -Activity "Installing BMAD v6 + c9s" -Status "Complete!" -PercentComplete 100
Write-Host ""
Show-NextSteps
Write-Progress -Activity "Installing BMAD-c9s" -Completed
Write-Progress -Activity "Installing BMAD v6 + c9s" -Completed
Write-Verbose "Installation completed successfully at: $(Get-Date)"
exit 0
} else {
@@ -854,7 +909,7 @@ function global:Main {
}
}
catch {
Write-Progress -Activity "Installing BMAD-c9s" -Completed
Write-Progress -Activity "Installing BMAD v6 + c9s" -Completed
Write-Host ""
Write-Host "===============================================" -ForegroundColor Red
Write-Host " Installation Failed" -ForegroundColor Red
+160 -173
View File
@@ -1,40 +1,36 @@
#!/usr/bin/env bash
###############################################################################
# BMAD-c9s (Coopenomics) — установка скиллов и команд для Claude Code
# BMAD v6 + BMAD-c9s (Coopenomics) — установка для Claude Code
#
# Источник: каталог bmad-c9s/ (русские скиллы, Capital/GitHub results).
# Каталог bmad-v6/ в репозитории не изменяется; при наличии v6 копируется
# helpers.md как опциональный англоязычный справочник (helpers-bmad-v6-en.md).
# • BMAD v6 (оригинал): скиллы → ~/.claude/skills/bmad/, config.yaml, шаблоны v6,
# зеркало команд/шаблонов → ~/.claude/config/bmad/bmad-v6-bundle/
# • BMAD-c9s: скиллы → ~/.claude/skills/bmad-c9s/; slash-команды → ~/.claude/commands/bmad/;
# ~/.claude/config/bmad/templates/: сначала v6, затем файлы c9s с перезаписью (одно имя = правила c9s).
# Хелперы: основной helpers.md = helpers-ru (c9s); v6 EN только helpers-bmad-v6-en.md (справка по методологии).
#
# Usage: ./install-v6.sh
###############################################################################
set -euo pipefail
# Configuration
C9S_VERSION="1.0.0"
C9S_VERSION="1.1.0"
CLAUDE_DIR="${HOME}/.claude"
BMAD_CONFIG_DIR="${CLAUDE_DIR}/config/bmad"
BMAD_SKILLS_DIR="${CLAUDE_DIR}/skills/bmad"
BMAD_V6_BUNDLE_DIR="${BMAD_CONFIG_DIR}/bmad-v6-bundle"
BMAD_SKILLS_V6_DIR="${CLAUDE_DIR}/skills/bmad"
BMAD_SKILLS_C9S_DIR="${CLAUDE_DIR}/skills/bmad-c9s"
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'
BLUE='\033[0;34m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
log_info() {
echo -e "${BLUE}${NC} $1"
}
log_success() {
echo -e "${GREEN}${NC} $1"
}
NC='\033[0m'
log_info() { echo -e "${BLUE}${NC} $1"; }
log_success() { echo -e "${GREEN}${NC} $1"; }
log_header() {
echo ""
echo -e "${BLUE}═══════════════════════════════════════════════${NC}"
@@ -43,241 +39,232 @@ log_header() {
echo ""
}
###############################################################################
# Installation Functions
###############################################################################
create_directories() {
log_info "Creating directory structure..."
mkdir -p "${BMAD_SKILLS_DIR}"/{core,bmm,bmb,cis}
log_info "Создание каталогов..."
mkdir -p "${BMAD_SKILLS_V6_DIR}"/{core,bmm,bmb,cis}
mkdir -p "${BMAD_SKILLS_C9S_DIR}"/{core,bmm,bmb,cis}
mkdir -p "${BMAD_COMMANDS_DIR}"
mkdir -p "${BMAD_CONFIG_DIR}"/{agents,templates}
log_success "Directories created"
mkdir -p "${BMAD_V6_BUNDLE_DIR}"/{commands,templates,utils}
log_success "Каталоги созданы"
}
install_skills() {
log_info "Installing BMAD-c9s skills from ${BMAD_C9S_DIR}/skills..."
if [ ! -d "${BMAD_C9S_DIR}/skills" ]; then
echo "✗ Directory not found: ${BMAD_C9S_DIR}/skills"
install_v6_skills() {
log_info "Скиллы BMAD v6 → ${BMAD_SKILLS_V6_DIR}..."
if [ ! -d "${BMAD_V6_DIR}/skills" ]; then
echo "✗ Нет каталога ${BMAD_V6_DIR}/skills"
exit 1
fi
for sub in core bmm bmb cis; do
if [ -d "${BMAD_V6_DIR}/skills/${sub}" ]; then
cp -r "${BMAD_V6_DIR}/skills/${sub}"/* "${BMAD_SKILLS_V6_DIR}/${sub}/" 2>/dev/null || true
fi
done
log_success "Скиллы v6 установлены (bmad-master, BMM, …)"
}
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"
install_c9s_skills() {
log_info "Скиллы BMAD-c9s → ${BMAD_SKILLS_C9S_DIR}..."
if [ ! -d "${BMAD_C9S_DIR}/skills" ]; then
echo "✗ Нет ${BMAD_C9S_DIR}/skills"
exit 1
fi
for sub in core bmm bmb cis; do
if [ -d "${BMAD_C9S_DIR}/skills/${sub}" ]; then
cp -r "${BMAD_C9S_DIR}/skills/${sub}"/* "${BMAD_SKILLS_C9S_DIR}/${sub}/" 2>/dev/null || true
fi
done
log_success "Скиллы c9s установлены (bmad-master-c9s, …)"
}
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"
install_v6_bundle() {
log_info "Зеркало v6 (команды, шаблоны, utils) → ${BMAD_V6_BUNDLE_DIR}..."
if [ -d "${BMAD_V6_DIR}/commands" ]; then
cp "${BMAD_V6_DIR}/commands"/*.md "${BMAD_V6_BUNDLE_DIR}/commands/" 2>/dev/null || true
fi
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"
if [ -d "${BMAD_V6_DIR}/templates" ]; then
cp "${BMAD_V6_DIR}/templates"/* "${BMAD_V6_BUNDLE_DIR}/templates/" 2>/dev/null || true
fi
if [ -f "${BMAD_V6_DIR}/utils/helpers.md" ]; then
cp "${BMAD_V6_DIR}/utils/helpers.md" "${BMAD_V6_BUNDLE_DIR}/utils/helpers.md"
fi
log_success "bmad-v6-bundle обновлён"
}
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"
install_v6_config() {
log_info "Глобальный config BMAD v6 (config.yaml)..."
if [ -f "${BMAD_V6_DIR}/config/config.template.yaml" ]; then
if [ ! -f "${BMAD_CONFIG_DIR}/config.yaml" ]; then
sed "s/{{USER_NAME}}/${USER}/g" \
"${BMAD_V6_DIR}/config/config.template.yaml" \
> "${BMAD_CONFIG_DIR}/config.yaml"
log_success "config.yaml создан"
else
log_info "config.yaml уже есть — не перезаписываем"
fi
fi
if [ -f "${BMAD_V6_DIR}/config/project-config.template.yaml" ]; then
cp "${BMAD_V6_DIR}/config/project-config.template.yaml" \
"${BMAD_CONFIG_DIR}/project-config.template.yaml"
fi
}
install_config() {
log_info "Installing BMAD-c9s configuration template..."
install_c9s_config_template() {
log_info "Шаблон c9s-config..."
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"
log_success "c9s-config.template.yaml"
fi
}
install_templates() {
log_info "Installing BMAD-c9s templates..."
log_info "Шаблоны в config/bmad/templates/: база v6, затем c9s перезаписывает одноимённые файлы..."
if [ -d "${BMAD_V6_DIR}/templates" ]; then
cp "${BMAD_V6_DIR}/templates"/* "${BMAD_CONFIG_DIR}/templates/" 2>/dev/null || true
fi
if [ -d "${BMAD_C9S_DIR}/templates" ]; then
cp "${BMAD_C9S_DIR}/templates"/* \
"${BMAD_CONFIG_DIR}/templates/" 2>/dev/null || true
log_success "Templates (c9s) installed"
cp -f "${BMAD_C9S_DIR}/templates"/* "${BMAD_CONFIG_DIR}/templates/" 2>/dev/null || true
fi
log_success "templates/ — приоритет у c9s при совпадении имён; чисто v6 остаётся только в bmad-v6-bundle/templates/"
}
install_docs_and_helpers() {
log_info "Installing docs and helpers (c9s)..."
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 (справка)
install_helpers_and_docs() {
log_info "helpers: основной текст — c9s; v6 EN — отдельный файл для методологии..."
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 не найден — пропуск англ. справки"
cp "${BMAD_V6_DIR}/utils/helpers.md" "${BMAD_CONFIG_DIR}/helpers-bmad-v6-en.md"
log_success "helpers-bmad-v6-en.md (справка BMAD v6, не рабочие правила)"
fi
if [ -f "${BMAD_C9S_DIR}/utils/helpers-ru.md" ]; then
cp "${BMAD_C9S_DIR}/utils/helpers-ru.md" "${BMAD_CONFIG_DIR}/helpers-ru.md"
cp -f "${BMAD_C9S_DIR}/utils/helpers-ru.md" "${BMAD_CONFIG_DIR}/helpers.md"
log_success "helpers.md и helpers-ru.md — правила c9s"
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"
fi
for _c9s_doc in TASKS-DOCUMENTS-TIME-POLICY.md GIT-COMMITS-POLICY.md; do
if [ -f "${BMAD_C9S_DIR}/docs/${_c9s_doc}" ]; then
cp "${BMAD_C9S_DIR}/docs/${_c9s_doc}" "${BMAD_CONFIG_DIR}/${_c9s_doc}"
fi
done
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"
fi
}
install_commands() {
log_info "Installing slash commands (c9s)..."
install_commands_c9s() {
log_info "Slash-команды (обёртки c9s) → ${BMAD_COMMANDS_DIR}..."
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 "${BMAD_C9S_DIR}/commands"/*.md \
"${BMAD_COMMANDS_DIR}/" 2>/dev/null || true
log_success "Slash commands installed (${command_count} files)"
else
echo "⚠ No command files found in bmad-c9s/commands"
local n
n=$(find "${BMAD_C9S_DIR}/commands" -maxdepth 1 -name "*.md" 2>/dev/null | wc -l | tr -d ' ')
if [ "${n}" -gt 0 ]; then
cp "${BMAD_C9S_DIR}/commands"/*.md "${BMAD_COMMANDS_DIR}/" 2>/dev/null || true
log_success "Команд: ${n}"
fi
else
echo "⚠ Commands directory not found: ${BMAD_C9S_DIR}/commands"
fi
}
verify_installation() {
log_info "Verifying installation..."
log_info "Проверка..."
local errors=0
if [ -f "${BMAD_SKILLS_DIR}/core/bmad-master-c9s/SKILL.md" ]; then
log_success "bmad-master-c9s skill verified"
if [ ! -f "${BMAD_SKILLS_V6_DIR}/core/bmad-master/SKILL.md" ]; then
echo "✗ v6: bmad-master отсутствует"
errors=$((errors + 1))
else
echo " bmad-master-c9s skill missing"
log_success "v6 bmad-master"
fi
if [ ! -f "${BMAD_SKILLS_C9S_DIR}/core/bmad-master-c9s/SKILL.md" ]; then
echo "✗ c9s: bmad-master-c9s отсутствует"
errors=$((errors + 1))
else
log_success "c9s bmad-master-c9s"
fi
if [ ! -f "${BMAD_V6_BUNDLE_DIR}/commands/create-story.md" ]; then
echo "✗ bmad-v6-bundle/commands/create-story.md"
errors=$((errors + 1))
else
log_success "bmad-v6-bundle (команды)"
fi
if [ ! -f "${BMAD_CONFIG_DIR}/c9s-config.template.yaml" ]; then
echo "✗ c9s-config.template.yaml"
errors=$((errors + 1))
fi
if [ -f "${BMAD_CONFIG_DIR}/c9s-config.template.yaml" ]; then
log_success "c9s config template verified"
else
echo "✗ c9s-config.template.yaml missing"
if [ ! -f "${BMAD_COMMANDS_DIR}/c9s-init.md" ]; then
echo "✗ c9s-init.md"
errors=$((errors + 1))
fi
if [ -f "${BMAD_CONFIG_DIR}/helpers-ru.md" ]; then
log_success "helpers-ru.md verified"
else
echo "✗ helpers-ru.md missing"
errors=$((errors + 1))
fi
if [ -f "${BMAD_COMMANDS_DIR}/c9s-init.md" ]; then
log_success "Slash commands (c9s-init) verified"
else
echo "✗ c9s-init.md missing"
errors=$((errors + 1))
fi
if [ $errors -eq 0 ]; then
log_success "Installation verified successfully"
log_success "Проверка пройдена"
return 0
else
echo "✗ Installation verification failed: $errors error(s)"
return 1
fi
echo "✗ Ошибок: ${errors}"
return 1
}
print_next_steps() {
log_header "Установка завершена"
cat << EOF
📦 BMAD-c9s v${C9S_VERSION} (Coopenomics) установлен.
📦 BMAD v6 + BMAD-c9s v${C9S_VERSION}
Каталоги:
Скиллы: ${BMAD_SKILLS_DIR}
Команды: ${BMAD_COMMANDS_DIR}
Конфиг: ${BMAD_CONFIG_DIR}
Скиллы (два пространства имён):
v6 (оригинал): ${BMAD_SKILLS_V6_DIR}
c9s (Coopenomics): ${BMAD_SKILLS_C9S_DIR}
Что установлено:
• Скиллы из 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, только справка)
Команды в UI: обёртки c9s → ${BMAD_COMMANDS_DIR}
Канон v6 для «Детали» в обёртках → ${BMAD_V6_BUNDLE_DIR}/commands/
Конфиг: ${BMAD_CONFIG_DIR}/config.yaml (v6) + c9s-config.template.yaml + templates/ (одно имя файла — версия c9s) + helpers.md (= правила c9s, см. helpers-ru)
Исходники v6 (bmad-v6/) в репозитории не изменяются и не копируются как основные скиллы.
Приоритет: артефакты и хелперы — c9s; методология (пошаговые команды v6, EN-хелпер) — bmad-v6-bundle/ и helpers-bmad-v6-en.md; обзор c9s — [CLAUDE-bmad-c9s.md](${BMAD_CONFIG_DIR}/CLAUDE-bmad-c9s.md).
📋 Дальше:
1️⃣ ${BLUE}Перезапустите Claude Code${NC}
2️⃣ ${BLUE}Скопируйте${NC} ${BMAD_CONFIG_DIR}/c9s-config.template.yaml
в корень репозитория результатов как c9s-config.yaml и заполните пути.
3️⃣ ${BLUE}Инициализация:${NC} /c9s-init (скилл bmad-master-c9s)
4️⃣ ${BLUE}Статус:${NC} /c9s-status
📚 Документация после установки:
${BMAD_CONFIG_DIR}/CLAUDE-bmad-c9s.md
${BMAD_CONFIG_DIR}/FORMAT-CAPITAL-GITHUB.md
${BMAD_CONFIG_DIR}/helpers-ru.md
📚 Исходники пакета в репозитории:
${BMAD_C9S_DIR}/
Дальше:
1. Перезапустите Claude Code
2. Для Capital: скопируйте c9s-config.template.yaml в репозиторий результатов как c9s-config.yaml
3. /c9s-init — инициализация c9s (скилл из bmad-c9s)
4. Оригинальный оркестратор v6: скилл bmad-master в skills/bmad
Проверка:
ls -la ~/.claude/skills/bmad/core/bmad-master-c9s/SKILL.md
ls -la ~/.claude/commands/bmad/c9s-init.md
ls ${BMAD_SKILLS_V6_DIR}/core/bmad-master/SKILL.md
ls ${BMAD_SKILLS_C9S_DIR}/core/bmad-master-c9s/SKILL.md
ls ${BMAD_V6_BUNDLE_DIR}/commands/prd.md
${GREEN}✓ BMAD-c9s готов.${NC}
${GREEN}✓ Готово.${NC}
EOF
}
###############################################################################
# Main Installation
###############################################################################
main() {
log_header "BMAD-c9s v${C9S_VERSION} — установщик"
log_header "BMAD v6 + BMAD-c9s — установщик"
if [ ! -d "${BMAD_C9S_DIR}" ]; then
echo "Каталог bmad-c9s не найден: ${BMAD_C9S_DIR}"
echo " Запускайте скрипт из корня репозитория claude-code-bmad-skills."
echo "Нет ${BMAD_C9S_DIR}"
exit 1
fi
if [ ! -d "${BMAD_V6_DIR}/skills" ]; then
echo "✗ Нет ${BMAD_V6_DIR}/skills (нужен полный репозиторий claude-code-bmad-skills)"
exit 1
fi
if [ ! -d "${CLAUDE_DIR}" ]; then
log_info "Creating Claude Code directory: ${CLAUDE_DIR}"
mkdir -p "${CLAUDE_DIR}"
fi
create_directories
install_skills
install_config
install_v6_skills
install_c9s_skills
install_v6_bundle
install_v6_config
install_c9s_config_template
install_templates
install_docs_and_helpers
install_commands
install_helpers_and_docs
install_commands_c9s
if verify_installation; then
print_next_steps
exit 0
else
echo "Installation failed"
exit 1
fi
exit 1
}
main "$@"