fix: правила для сабагентов, точные формулировки dev.md
Сабагенты не получают вывод /role, поэтому глобальный CLAUDE.md задаёт для них правило и полный путь ~/.claude/roles/dev.md, а роль dev велит передавать этот файл контроллеру SDD и ревьюеру ветки (I-1). Уточнены формулировки про [claude-harness] (M-2) и allow-правило push --delete (M-3). Refs #2 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MzkPQWjfA7RpqYWkjnqJwt
This commit is contained in:
parent
6744d40fb8
commit
d2889483bc
@ -30,4 +30,6 @@
|
||||
| Маркировка → таблица в финальном отчёте, deferred в PR и follow-up | `roles/dev.md` → Маркировка |
|
||||
| Стиль → не сжимать, caveman по команде | `global/CLAUDE.md` → Стиль |
|
||||
|
||||
Правка финального ревью (I-1): в разделе «Роль» формулировка «Процесс и чеклисты роли — в её файле» сокращена до «Процесс роли — в `~/.claude/roles/<r>.md`» (ради лимита 3 КБ), добавлено правило для сабагентов; ссылка «Подробности — в роли dev» стала полным путём.
|
||||
|
||||
Новое, чего не было: раздел «Роль» (спека 4), раздел «Память» (спека 7.1), запрет обхода хуков (ретро, `feedback-no-harness-bypass`), `cd` при фоновом контроллере (RT-2), абсолютные пути worktree, trailer коммита (RT-9), предусловия окружения (RT-8).
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
- Сессия работает в одной из ролей: `dev`, `admin`, `analyst`, `qa`. Правила роли загружает `/role <r>`; новая роль заменяет предыдущую целиком.
|
||||
- Подсказка `[claude-harness] Роль сессии: <r>` от хука при старте — вызвать `/role <r>` до первого ответа.
|
||||
- Без подсказки: если роль очевидна из первого сообщения (Jira, Гант, спринт → admin; стенд, прогон, скриншот, макет → qa; ТЗ, OQ, спека, методика → analyst; срез, issue, PR, тест, миграция → dev) — объявить одной строкой «Роль: admin; если не так, скажи» и вызвать `/role`. Иначе — один вопрос с четырьмя вариантами.
|
||||
- Процесс и чеклисты роли — в её файле, не здесь.
|
||||
- Процесс роли — в `~/.claude/roles/<r>.md`, не здесь. Сабагент роль не выбирает и `/role` не вызывает; процесс dev — `~/.claude/roles/dev.md`, если промпт велит.
|
||||
|
||||
## Хуки и ветки
|
||||
- guard-main блокирует запись на main/master и detached HEAD: работа только в worktree на ветке. require-plan: правки в коде только при плане для ветки или файле `.bounded`.
|
||||
@ -18,7 +18,7 @@
|
||||
- В локальную auto-memory — только ловушки этой машины и обвязки и индекс со ссылками на `notes/` направлений.
|
||||
|
||||
## Маркировка
|
||||
- Каждая находка и каждое решение несёт маркер источника (`T<n>.<k>`, `C-n`/`I-n`/`M-n`, `R-n`, `O-n`, `H-n`, `RT-n`) и статус `fixed <commit>` / `deferred` / `rejected <причина>`. Маркер присваивается один раз. Подробности — в роли dev.
|
||||
- Каждая находка и каждое решение несёт маркер источника (`T<n>.<k>`, `C-n`/`I-n`/`M-n`, `R-n`, `O-n`, `H-n`, `RT-n`) и статус `fixed <commit>` / `deferred` / `rejected <причина>`. Маркер присваивается один раз. Подробности — в `~/.claude/roles/dev.md`.
|
||||
|
||||
## Стиль
|
||||
- Отвечать по-русски. Отчёты сабагентов, рулинги и ledger не сжимать; caveman — только по явной команде.
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
- Карта кода — codegraph (MCP). Сервер отвечает по индексу корня основного checkout, код ветки в worktree он не видит: после создания worktree выполнить в нём `codegraph init`, во всех вызовах `codegraph_explore` передавать `projectPath` = абсолютный путь worktree. Implementer перед изменением вызывает `codegraph_explore` по своей области вместо grep/Read. Пустой ответ — один раз отметить в ledger и дальше использовать Read. codegraph обязателен на период замера (решение владельца 11.10.2026); число вызовов считает `/harness-retro`.
|
||||
|
||||
### Маршрутизация
|
||||
- Сообщение `[claude-harness]` в начале сессии — обвязка не подключена: действовать по его инструкции до всего остального. Скрипт `~/.claude/harness/adopt-project.sh` — единственная разрешённая запись на main.
|
||||
- Сообщение `[claude-harness] В проекте … не подключена обвязка` в начале сессии: действовать по его инструкции до всего остального. Скрипт `~/.claude/harness/adopt-project.sh` — единственная разрешённая запись на main.
|
||||
- Bounded-задача (флаг, фикс, мелкая правка): без OpenSpec change и без плана. Дизайн в чате, затем файл `.bounded` в корне worktree (разрешает правки в коде без плана; в `.gitignore`), TDD, коммит, PR. Если меняется поведение API или схемы — спека в `openspec/specs/` обновляется в том же PR. Перед PR — verification-before-completion.
|
||||
- Architectural-задача: brainstorming пишет спеку не в `docs/superpowers/specs/`, а в `openspec/changes/<id>/`. В поле **Spec** плана указывается этот путь. Перед architectural brainstorming прочитать релевантные файлы в `openspec/specs/` и ARCHITECTURE.md, если есть.
|
||||
|
||||
@ -29,7 +29,7 @@
|
||||
1. `openspec archive <id>` — всегда отдельным PR (ветка `chore/archive-<id>` из main, `tea pulls create`, merge по команде человека). Прямых коммитов в main нет, исключений нет (решение владельца 11.10.2026).
|
||||
2. Issue закрывается (`tea issues close <id>`, комментарий со ссылкой на PR) только если все её пункты выполнены. Если PR закрывает часть пунктов — issue остаётся открытой, в неё пишется комментарий: какие маркеры закрыты, каким PR и коммитом.
|
||||
3. Удалить SDD workspace (`.superpowers/sdd/<plan>/`).
|
||||
4. Удалить ветку фичи на сервере и локально: `git push origin --delete <ветка>` выполняется из worktree на ветке фичи (не из main-checkout), разрешён allow-правилом проекта (`Bash(git push origin --delete:*)` в `.claude/settings.json`, строку даёт `adopt-project.sh`); затем `git branch -D`, `git worktree remove`. Остальные worktree не трогать. Обходы через API Gitea запрещены.
|
||||
4. Удалить ветку фичи на сервере и локально: `git push origin --delete <ветка>` выполняется из worktree на ветке фичи (не из main-checkout), разрешён allow-правилом проекта (`Bash(git push origin --delete:*)` в `.claude/settings.json`; строку печатает `adopt-project.sh --workspace`, для обычного репозитория добавить вручную); затем `git branch -D`, `git worktree remove`. Остальные worktree не трогать. Обходы через API Gitea запрещены.
|
||||
5. Обновить основной checkout: дерево чистое — `git pull --ff-only`; есть незакоммиченные изменения — не трогать, перечислить их в итоговом сообщении.
|
||||
6. Все находки со статусом `deferred` собрать в одну issue `Follow-ups from #<issue-id>`: маркер, одна строка, откуда взялось. Нет отложенного — issue не создавать.
|
||||
7. Файл auto-memory задачи, если был, свернуть в строку `registry-closed.md` (issue, PR, follow-up, дата); уроки из него перенести в `notes/` направления.
|
||||
@ -68,4 +68,5 @@
|
||||
|
||||
## Делегировать
|
||||
- SDD-контроллер (superpowers, фоновый сабагент на sonnet) → исполнение плана; implementer-ы haiku/sonnet, финальное ревью opus.
|
||||
- В промпт SDD-контроллера и ревьюера ветки включать указание: «прочитай `~/.claude/roles/dev.md` (Исполнение, Завершение, Маркировка) и передавай его своим сабагентам» — сабагенты получают `~/.claude/CLAUDE.md`, но не вывод `/role`.
|
||||
- `briefing` → выжимка строк `brief:` при `/role dev`.
|
||||
|
||||
@ -9,5 +9,7 @@ assert_grep "политика памяти: auto-memory" 'auto-memory' "$G"
|
||||
assert_grep "маркировка R-n" 'R-n' "$G"
|
||||
assert_grep "codegraph projectPath" 'projectPath' "$G"
|
||||
assert_grep "хук [claude-harness]" '\[claude-harness\]' "$G"
|
||||
assert_grep "сабагент не вызывает /role" 'Сабагент роль не выбирает и `/role` не вызывает' "$G"
|
||||
assert_grep "полный путь роли dev" '~/\.claude/roles/dev\.md' "$G"
|
||||
assert_grep "worktree" 'worktree' "$G"
|
||||
assert_file "таблица адресов" "$ROOT/docs/retro/2026-10-11-claude-md-addresses.md"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user