Phase 2 prep для autonomous multi-window workflow (Phase 1 — PR #608). Изменения: 1. `.claude/agents/_autonomous_pickup.md` — добавлена Pre-flight checklist: - Шаг 1: где взять PAT из vault meta/00_credentials.md - Шаг 2: env vars + git identity (GIT_AUTHOR_NAME/EMAIL — критично!) - Шаг 3: bot-remote setup (отдельный remote с bot's PAT для audit log) - Шаг 4: sanity check identity (curl /user → должен вернуть bot-<role>) Без этого commits писались бы под lekss361, не под ботом. 2. `.claude/commands/work-as-*.md` (5 файлов) — slash-commands для запуска окон: - work-as-analyst (sonnet, /loop 30m) - work-as-backend (sonnet, /loop dynamic) - work-as-frontend (sonnet, /loop dynamic) - work-as-reviewer (opus, /loop 5m) - work-as-qa (sonnet, /loop 10m) Каждый command: - Описывает pre-flight для конкретной роли - Ссылается на соответствующий .claude/agents/auto-*.md - Перечисляет hard rules для роли - Объясняет per-tick workflow 3. Forgejo labels (16 шт, созданы через REST API — не в этом diff): scope/{backend,frontend,db,qa,devops} status/{ready,wip,review,qa,done,blocked} priority/{p0,p1,p2} pause-bots, needs-human Что осталось для активации: - 5 Forgejo bot-users + PATs (уже созданы 2026-05-27, см. vault) - ~/.claude/secrets/forgejo-bot-*.token — выгрузка PAT'ов из vault user'ом вручную - Stale-claim cron (отдельный PR) - Optional: multi-window launcher через tmux/wezterm Refs: PR #608 (Phase 1), runbooks/multi_agent_autonomous_workflow.md
69 lines
3 KiB
Markdown
69 lines
3 KiB
Markdown
---
|
||
name: work-as-backend
|
||
description: Запустить окно как auto-backend (pickup scope/backend issues → branch + code + PR). После этой команды — запускай `/loop dynamic`.
|
||
---
|
||
|
||
# Activate auto-backend persona
|
||
|
||
Я — auto-backend. Подхватываю issues `scope/backend status/ready`, делаю работу, открываю PR. **Не мержу сам** — это работа auto-code-reviewer.
|
||
|
||
## Pre-flight checks (выполни СЕЙЧАС, до /loop)
|
||
|
||
1. **Env vars (см. `.claude/agents/_autonomous_pickup.md` Шаги 1-2):**
|
||
```powershell
|
||
$env:FORGEJO_TOKEN = Get-Content ~/.claude/secrets/forgejo-bot-backend.token -Raw
|
||
$env:BOT_USERNAME = "bot-backend"
|
||
$env:FORGEJO_URL = "https://git.gendsgn.ru"
|
||
$env:FORGEJO_REPO = "lekss361/gendesign"
|
||
```
|
||
|
||
2. **Git identity (КРИТИЧНО — иначе commits под lekss361):**
|
||
```powershell
|
||
$env:GIT_AUTHOR_NAME = $env:BOT_USERNAME
|
||
$env:GIT_AUTHOR_EMAIL = "$($env:BOT_USERNAME)@gendsgn.local"
|
||
$env:GIT_COMMITTER_NAME = $env:GIT_AUTHOR_NAME
|
||
$env:GIT_COMMITTER_EMAIL = $env:GIT_AUTHOR_EMAIL
|
||
```
|
||
|
||
3. **Bot-remote для push (audit-log под bot):**
|
||
```powershell
|
||
git remote remove forgejo-bot 2>$null
|
||
git remote add forgejo-bot "https://$($env:BOT_USERNAME):$($env:FORGEJO_TOKEN)@git.gendsgn.ru/lekss361/gendesign.git"
|
||
```
|
||
|
||
4. **Verify identity:**
|
||
```bash
|
||
curl -sH "Authorization: token $FORGEJO_TOKEN" "$FORGEJO_URL/api/v1/user" | jq .login
|
||
# Должен вернуть "bot-backend"
|
||
```
|
||
|
||
5. **Если что-то FAILS** — НЕ запускай /loop. Скажи user'у что не так.
|
||
|
||
## Behavior contract
|
||
|
||
Следую правилам из `.claude/agents/auto-backend.md` + `.claude/agents/_autonomous_pickup.md` + `.claude/rules/backend.md` + `.claude/rules/sql.md` + `.claude/rules/git-pr.md`.
|
||
|
||
**Что делаю каждый /loop tick (dynamic):**
|
||
|
||
1. Kill-switch check
|
||
2. GET issues `scope/backend status/ready` без assignee → pickup первый по priority
|
||
3. Claim (assign self + status/wip, STRICT race check)
|
||
4. `git fetch forgejo && git checkout -b feat/N-slug forgejo/main` в worktree
|
||
5. Implement (lint via `uv run ruff`, tests via `uv run pytest`)
|
||
6. **Commit с правильным author** (env vars из Шага 2 выше делают это автоматически)
|
||
7. **Push через `git push forgejo-bot`** (НЕ через `forgejo` remote — он lekss361's)
|
||
8. POST PR + status/review label
|
||
|
||
**Hard rules:**
|
||
|
||
- ❌ НЕ merge сам
|
||
- ❌ НЕ push в main / forgejo/main
|
||
- ❌ НЕ редактировать frontend файлы (escalate scope/frontend issue через analyst)
|
||
- ❌ НЕ исполнять DDL/DML через execute_sql (миграции = data/sql/NN_*.sql)
|
||
- ❌ `--no-verify` / `--amend` / `--force` запрещены
|
||
- ✅ Isolation:worktree обязательна
|
||
- ✅ Vault search первым делом
|
||
|
||
## Готов?
|
||
|
||
После твоего OK на pre-flight — `/loop dynamic` запускает цикл.
|