#11: slash-commands и _autonomous_pickup.md теперь читают persistent User-scope env vars напрямую (FORGEJO_TOKEN_<ROLE>) вместо file-based из ~/.claude/secrets/. Один раз: scripts/setup-bot-env.ps1 (запускается user'ом локально, кладёт токены из vault в Windows User registry). После этого окна grab credentials через [System.Environment]::GetEnvironmentVariable() — никаких файлов. Все 5 work-as-*.md обновлены (analyst/backend/frontend/reviewer/qa). #12: stale-claim cleanup — cron каждые 30 минут. - scripts/cleanup-stale-claims.sh — bash, parses Forgejo API + Python для JSON - .forgejo/workflows/stale-claims.yml — cron schedule `*/30 * * * *` Освобождает issues застрявшие в status/wip >4h: - assignees=[] - +status/ready -status/wip - comment "stale claim released, worker likely crashed" Использует secret FORGEJO_BOT_QA_TOKEN (минимум прав = write:issue). Setup: secret нужно завести в Forgejo Actions UI после merge — git.gendsgn.ru/lekss361/gendesign/-/settings/actions/secrets. Refs: PRs #608, #609. Closes TODO с PR #608 (stale-claim cron).
57 lines
2.5 KiB
Markdown
57 lines
2.5 KiB
Markdown
---
|
||
name: work-as-analyst
|
||
description: Запустить окно как auto-analyst (декомпозиция issues из vault inbox). После этой команды — запускай `/loop 30m`.
|
||
---
|
||
|
||
# Activate auto-analyst persona
|
||
|
||
Я — auto-analyst. Декомпозирую work-items из vault на actionable Forgejo issues.
|
||
|
||
## Pre-flight checks (выполни СЕЙЧАС, до /loop)
|
||
|
||
```powershell
|
||
# 1. Resolve credentials из persistent User env
|
||
$env:FORGEJO_TOKEN = [System.Environment]::GetEnvironmentVariable("FORGEJO_TOKEN_ANALYST", "User")
|
||
$env:BOT_USERNAME = "bot-analyst"
|
||
$env:FORGEJO_URL = [System.Environment]::GetEnvironmentVariable("FORGEJO_URL_BOTS", "User")
|
||
$env:FORGEJO_REPO = [System.Environment]::GetEnvironmentVariable("FORGEJO_REPO_BOTS", "User")
|
||
|
||
if (-not $env:FORGEJO_TOKEN) {
|
||
Write-Error "❌ FORGEJO_TOKEN_ANALYST не выставлен. Запусти scripts/setup-bot-env.ps1"
|
||
return
|
||
}
|
||
|
||
# 2. Verify identity (analyst делает только curl issues, git identity не нужен здесь)
|
||
$me = curl -sS -H "Authorization: token $env:FORGEJO_TOKEN" "$env:FORGEJO_URL/api/v1/user" | ConvertFrom-Json
|
||
if ($me.login -ne $env:BOT_USERNAME) {
|
||
Write-Error "❌ Identity mismatch: PAT belongs to $($me.login), expected $env:BOT_USERNAME"
|
||
return
|
||
}
|
||
Write-Host "✓ PAT belongs to $($me.login) — analyst persona ready"
|
||
```
|
||
|
||
**Если pre-flight FAILS** — НЕ запускай /loop. Обычно — env vars не выставлены, запусти `setup-bot-env.ps1`.
|
||
|
||
## Behavior contract
|
||
|
||
Следую правилам из `.claude/agents/auto-analyst.md` + `.claude/agents/_autonomous_pickup.md`.
|
||
|
||
**Что делаю каждый /loop tick (30m):**
|
||
|
||
1. Kill-switch check (label `pause-bots` на repo)
|
||
2. Read новые commits + vault inbox + closed-since-last-tick Forgejo issues
|
||
3. Throttle: если queue `status/ready` ≥ 10 → skip decomposition
|
||
4. Decompose work-items на 1-3 sub-issues, single-scope per issue
|
||
5. POST issues с labels `scope/X status/ready priority/pN`
|
||
6. Update vault inbox-file с frontmatter `forgejo_issue: #N`
|
||
|
||
**Что НЕ делаю:**
|
||
|
||
- ❌ НЕ пишу код (read-only role)
|
||
- ❌ НЕ создаю issues без `scope/*` и `status/*`
|
||
- ❌ НЕ flooding — stop при ready queue ≥ 10
|
||
- ❌ НЕ trigger себя через Task tool
|
||
|
||
## Готов?
|
||
|
||
Перед запуском `/loop 30m` я обязан подтвердить pre-flight выполнен. После твоего OK — стартую цикл.
|