fix paths and installation
This commit is contained in:
+22
-22
@@ -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
@@ -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) | Общие шаги перед работой по командам |
|
||||
|
||||
|
||||
@@ -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).
|
||||
|
||||
@@ -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`
|
||||
|
||||
@@ -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` **запрещены**.
|
||||
|
||||
@@ -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`.
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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`
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
|
||||
**Фаза:** 2–4
|
||||
|
||||
**Выход:** новый файл `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`
|
||||
|
||||
@@ -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`
|
||||
|
||||
@@ -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`
|
||||
|
||||
@@ -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 выше.
|
||||
|
||||
@@ -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`
|
||||
|
||||
@@ -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`
|
||||
|
||||
@@ -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`
|
||||
|
||||
@@ -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`
|
||||
|
||||
@@ -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`
|
||||
|
||||
@@ -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`.
|
||||
|
||||
@@ -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`
|
||||
|
||||
@@ -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).
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -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) **§1–2**: сначала 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) **§1–2**: сначала 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`.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -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)).
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -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 (как на рабочем столе).
|
||||
|
||||
|
||||
@@ -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)).
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -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`.
|
||||
|
||||
@@ -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)) |
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -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) §1–2.
|
||||
**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) §1–2.
|
||||
|
||||
@@ -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).
|
||||
|
||||
## Контекст
|
||||
|
||||
|
||||
@@ -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)).
|
||||
|
||||
---
|
||||
|
||||
|
||||
+185
-130
@@ -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"
|
||||
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 v6 skills missing: $sourcePath"
|
||||
}
|
||||
}
|
||||
catch {
|
||||
if ($required) {
|
||||
throw
|
||||
} else {
|
||||
Write-Warning "Optional $componentName could not be installed"
|
||||
Write-Verbose " Error: $($_.Exception.Message)"
|
||||
|
||||
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"
|
||||
}
|
||||
}
|
||||
} 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 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
|
||||
|
||||
+161
-174
@@ -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
|
||||
|
||||
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"
|
||||
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/bmm" ]; then
|
||||
cp -r "${BMAD_C9S_DIR}/skills/bmm"/* "${BMAD_SKILLS_DIR}/bmm/" 2>/dev/null || true
|
||||
log_success "BMM 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
|
||||
|
||||
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"
|
||||
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/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_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_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 обновлён"
|
||||
}
|
||||
|
||||
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 "$@"
|
||||
|
||||
Reference in New Issue
Block a user