skills/full-cycle-skill/SKILL.md
Full cycle mode: code → test → review → fix → push. Главная сессия молча оркестрирует всё: developer-субагент, 4 ревью-роли параллельно, fix-субагент. Пользователь видит только итоговый PR.
npx skillsauth add aaaaqwq/agi-super-skills Full Cycle DeveloperInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Triggered when user says:
All role prompts live in /opt/projects/llm-review-prompts/prompts/.
Select the right language variant based on project stack from AGENTS.md.
prompts/
├── developer/ dotnet | rust | python | go
├── architect/ dotnet | rust | python | go
├── tester/ manual | e2e | autotests
├── reviewer/ general
└── security/ general
Пользователь видит только один итоговый Output. Главная сессия молча выполняет все шаги — без промежуточных сообщений.
ГЛАВНАЯ СЕССИЯ (молча)
│
├── Шаг 1-3: sessions_spawn(developer-субагент) → ждёт → [diff, tests green]
│
├── Шаг 4: sessions_spawn × 4 (параллельно):
│ ├── Developer review → sessionKey_dev
│ ├── Architect review → sessionKey_arch
│ ├── Tester review → sessionKey_test
│ └── Security review → sessionKey_sec
│ └── Ждёт все 4 через subagents(action="list")
│ └── Забирает результаты через sessions_history
│
├── Шаг 4e: Final review — inline в главной сессии
│ (читает промпт reviewer/general.md + PREVIOUS_REVIEWS из 4 ролей)
│
├── Шаг 5: sessions_spawn(fix-субагент)
│ (передаёт агрегированные BLOCKING/MUST HAVE явно в task)
│ → ждёт → [tests green, commit]
│
└── Шаг 6: создаёт PR → Output пользователю
1-3. DEVELOP — developer-субагент: INIT + код + тесты → green
4. REVIEW — 4 ревью-субагента параллельно → главная сессия агрегирует → Final inline
5. FIX — fix-субагент получает BLOCKING список явно → фиксит → тесты green
6. PUSH — главная сессия открывает PR → Output
Главная сессия спавнит субагент с task:
## DEVELOPER SUBAGENT — <project> <task>
INIT:
- git fetch origin && git pull origin main && git checkout -b <branch>
- Прочитать: AGENTS.md, docs/, ROADMAP.md
- memory_search("<project> architecture decisions")
- memory_search("<task topic> patterns")
- Загрузить TASK_CONTEXT из issue или описания
DEVELOP:
- Читать prompts/developer/<stack>.md
- Написать реализацию следуя Critical Rules из AGENTS.md
TEST:
- Читать prompts/tester/autotests.md
- Написать тесты — каждый тест должен падать при сломанной реализации
- Запустить тесты → должны быть green
- Не заканчивать пока тесты красные
LINT (обязательно для Python):
- python3 -m ruff check src/ tests/ 2>&1 | head -30
- Исправить все ошибки ruff перед коммитом
- Не коммитить с красным ruff
ЕСЛИ ROADMAP есть — прочитать, найти текущий пункт, запомнить для architect.
DOCS (ОБЯЗАТЕЛЬНО перед финальным коммитом):
- Обновить AGENTS.md: статус задачи, новые решения, pitfalls (раздел Status + Pitfalls)
- Если изменился публичный API или CLI — обновить README (EN + RU секция)
- Если архитектурное решение — добавить запись в docs/ или соответствующий .md
- Если ROADMAP.md / BACKLOG.md — отметить пункт выполненным (✅)
- Не коммитить реализацию без обновлённых доков
Output: один блок в конце:
BRANCH: <branch-name>
STACK: <python|rust|dotnet|go>
TESTS: <N passed>
LINT: ruff clean / <N errors>
DOCS: AGENTS.md updated / README updated / skipped (reason)
DIFF_SUMMARY: <3-5 строк что изменилось>
Таймаут: runTimeoutSeconds=900
После завершения — забрать BRANCH, STACK, TESTS, DIFF_SUMMARY из sessions_history.
Получить diff:
cd <project_root> && git diff origin/main...<branch> 2>&1 | head -400
Прочитать промпты заранее (главная сессия):
cat /opt/projects/llm-review-prompts/prompts/developer/<stack>.md
cat /opt/projects/llm-review-prompts/prompts/architect/<stack>.md
cat /opt/projects/llm-review-prompts/prompts/tester/manual.md
cat /opt/projects/llm-review-prompts/prompts/security/general.md
Спавнить все 4 одновременно, каждый с task содержащим:
⚠️ Ограничение scope для ВСЕХ ролей (особенно Security):
Проверять ТОЛЬКО изменения в DIFF. Pre-existing issues которые существовали до этого MR → не BLOCKING, оформить в MINOR-секции с пометкой [pre-existing]. Security не должен блокировать MR из-за проблем которые не введены текущим изменением.
## <ROLE> REVIEW
<полный текст промпта роли>
---
PROJECT_CONTEXT:
<содержимое AGENTS.md>
TASK_CONTEXT:
<описание задачи + acceptance criteria>
DIFF:
<git diff>
---
Верни findings одним блоком в конце:
[BLOCKING/MINOR/CRITICAL/HIGH/MEDIUM/MUST HAVE/SHOULD HAVE]: описание, файл:строка, fix
Итого: X blocking, Y minor.
Таймаут каждого: runTimeoutSeconds=1200
# Собрать sessionKeys всех 4 субагентов
role_keys = {
"developer": key_dev,
"architect": key_arch,
"tester": key_test,
"security": key_sec,
}
# Ждать в цикле через subagents(action="list")
while True:
active = subagents(action="list")["active"]
active_keys = {s["sessionKey"] for s in active}
if not any(v in active_keys for v in role_keys.values()):
break
exec("sleep 15")
# Забрать результаты
reviews = {}
for role, key in role_keys.items():
hist = sessions_history(sessionKey=key, limit=2)
reviews[role] = hist["messages"][-1]["content"] # последнее сообщение
В task для architect добавить:
Дополнительно: обнови ROADMAP.md
- Если ROADMAP.md есть → найди текущую задачу и отметь [x], добавь новые пункты если выявлены
- Если нет → создай ROADMAP.md (текущее состояние + ближайшие задачи + дальние планы)
Сохрани изменения: exec("cd <project_root> && git add ROADMAP.md && git commit -m 'docs: update ROADMAP'")
Главная сессия сама агрегирует и выносит вердикт:
Собрать PREVIOUS_REVIEWS:
## Developer Review
<reviews["developer"]>
## Architect Review
<reviews["architect"]>
## Tester Review
<reviews["tester"]>
## Security Review
<reviews["security"]>
Прочитать prompts/reviewer/general.md, применить к PREVIOUS_REVIEWS + DIFF.
Вынести вердикт: APPROVE / REQUEST_CHANGES.
Агрегировать все BLOCKING по таблице:
| Роль | Фиксить до MR | В issue | |------|--------------|---------| | Developer | BLOCKING | MINOR, SUGGESTION | | Architect | BLOCKING | MINOR | | Tester | MUST HAVE | SHOULD HAVE → issue | | Security | CRITICAL, HIGH | MEDIUM → issue, LOW → ignore |
review_round = 1
MAX_ROUNDS = 3
while blocking_count > 0:
if review_round > MAX_ROUNDS:
→ прервать, сообщить пользователю: "Не удалось устранить все BLOCKING за 3 итерации"
fix_subagent(blocking_list)
review_round += 1
повторить шаг 4 (все 4 роли + 4e) → получить новый blocking_count
После каждого fix-субагента — ОБЯЗАТЕЛЬНО повторить полное ревью шаг 4 (все 4 роли параллельно + 4e Final). Не считать ветку чистой только на основании "fix применён" — новые изменения могут внести новые BLOCKING.
Переходить к Step 6 только когда blocking_count == 0 по результатам ревью.
Главная сессия НЕ должна отправлять промежуточные результаты ревью пользователю.
Цикл develop → review → fix → review → ... выполняется полностью автономно.
Пользователь НЕ должен пинговать агента чтобы продолжить — это провал оркестрации.
Единственные случаи когда можно писать пользователю до PR:
MAX_ROUNDS исчерпан — объяснить что не получилось и передать управлениеВо всех остальных случаях — молча запустить следующий шаг.
Проблема: главная сессия может "замереть" после запуска субагентов — completion event не всегда поднимает сессию. Без внешнего триггера цикл остановится.
Правило: запустил группу субагентов → сразу поставил два cron. Без исключений.
Тайминг cron-ов:
| Тип субагентов | Таймаут | Cron 1 | Cron 2 | |---|---|---|---| | 4 ревью-роли | 1200s (20 мин) | T + 20 мин | T + 23 мин | | Fix-субагент | 600s (10 мин) | T + 12 мин | T + 15 мин |
Логика: cron должен срабатывать после ожидаемого завершения, не во время.
Шаблон cron-текста:
Full-cycle самопинг: раунд {N} ревью <project>/<branch>.
Проверь subagents list (labels содержат '<role>').
Если ВСЕ done → агрегируй sessions_history, подсчитай blocking.
blocking > 0 → запусти fix-субагент (не пиши пользователю).
blocking = 0 → создай PR → напиши пользователю итог.
Если ЕСТЬ active → удали этот cron, поставь новый на T+5 мин с тем же текстом.
НЕ пиши пользователю пока нет финального результата (PR или фатальная ошибка).
Самопереносящаяся логика (если субагенты ещё active):
# В тексте systemEvent cron должен содержать инструкцию:
# "если active → удали себя (cron remove), поставь новый cron на now+5min"
# Это обеспечивает polling без busy-loop
deleteAfterRun: true — каждый cron однократныйПеред тем как запускать fix-субагент, проверить реальный код (не доверять слепо выводу ревьюеров):
Это экономит раунды и не вносит лишних изменений в код.
Если BLOCKING = 0 с первого раза → fix-субагент не нужен, сразу Step 6.
Если BLOCKING > 0 → спавнить fix-субагент с task:
## FIX SUBAGENT — <project> <branch>
cd <project_root> && git checkout <branch>
Исправить следующие BLOCKING findings:
<нумерованный список с файл:строка и конкретным fix для каждого>
После каждого fix — запустить тесты:
<команда запуска тестов>
Не коммитить пока тесты красные.
Запустить линтер (Python):
python3 -m ruff check src/ tests/ 2>&1 | head -30
Исправить все ошибки ruff. Не коммитить с красным ruff.
Обновить документацию (ОБЯЗАТЕЛЬНО):
- AGENTS.md: добавить найденные pitfalls, обновить статус
- README / docs: если fix затронул поведение — обновить соответствующую секцию
После всех fix:
git add -A
git commit -m "fix: <краткое описание>"
git push https://KoshelevDV:$(gh auth token)@github.com/KoshelevDV/<repo>.git <branch>
Создать сводный issue для MINOR/MEDIUM:
gh issue create --repo KoshelevDV/<repo> \
--title "Minor: <feature>" \
--body "<список>"
Output в конце:
TESTS: <N passed>
LINT: ruff clean / <N errors>
FIXES: <N blocking fixed>
ISSUE: <url или none>
Таймаут: runTimeoutSeconds=600
После того как blocking_count == 0 и тесты зелёные — обновить документацию проекта:
cd <project_root>
# 1. AGENTS.md — обновить статус, стек, питфолы, новые решения
# Добавить в секцию Status: что реализовано, что изменилось
# Добавить в Pitfalls: нетривиальные находки из ревью
# 2. README.md — если добавлены новые возможности (config options, API endpoints, etc.)
# Обновить секцию конфигурации, добавить пример использования новой фичи
# 3. Коммит документации
git add AGENTS.md README.md
git commit -m "docs: update AGENTS.md and README for <feature>"
git push ...
Что обновлять в AGENTS.md:
## Status — отметить фичу как реализованную## Pitfalls — добавить нетривиальные ограничения, найденные в ходе ревьюЧто обновлять в README.md:
Если ничего принципиально не изменилось (только внутренние фиксы) — достаточно AGENTS.md.
Главная сессия создаёт PR:
gh pr create \
--title "<type>: <description>" \
--body "..." \
--base main --head <branch>
Затем отправляет единственное сообщение пользователю:
✅ Full cycle завершён — <project> / <branch>
Tests: <N passed / Y total>
Commits: <N>
Self-review:
Developer — <N blocking fixed, M minor → issue>
Architect — <N blocking fixed>
QA/Manual — <N ACs covered, M missing → issue>
Security — CLEAR / <N critical fixed>
Final — APPROVE ✅ / REQUEST_CHANGES ⚠️
PR: <url>
Issues: <url или none>
| Роль | = BLOCKING | → issue | |------|-----------|---------| | Developer | BLOCKING | MINOR, SUGGESTION | | Architect | BLOCKING | MINOR | | Tester | MUST HAVE | SHOULD HAVE, NICE TO HAVE | | Security | CRITICAL, HIGH | MEDIUM, LOW |
MUST HAVE от tester = BLOCKING — недостающий тест для AC = незавершённая фича.
testing
AI驱动的智能浏览器自动化工具。使用LLM理解页面并自动执行任务,比传统Playwright更智能、更省token。适用于复杂交互、动态页面、需要智能决策的浏览器操作。Chrome浏览器优先。
tools
网页登录态管理。使用 fast-browser-use (fbu) 管理各平台登录状态,定期检查可用性,新平台授权时自动保存 profile。
development
Monitor and report on API provider quotas, balances, and usage. Query official providers (Moonshot, DeepSeek, xAI, Google AI Studio) and relay/proxy providers (Xingjiabiapi, Aixn, WoW) via their billing APIs. Also checks subscription services (Brave Search, OpenRouter). Generates quota reports. Triggers on "查额度", "API余额", "quota check", "billing report", "api balance", "供应商额度", "中转站余额", "费用报告", "check balance", "how much credit".
development
# A股基金监控 Skill A股基金净值监控,支持实时估值和盘后净值,自动判断交易日/节假日。 ## 用法 ### 快速监控(命令行) ```bash # 默认配置,输出到控制台 bash ~/clawd/skills/a-fund-monitor/scripts/monitor.sh # 推送到群(使用--push参数) bash ~/clawd/skills/a-fund-monitor/scripts/monitor.sh --push # 监控指定基金 bash ~/clawd/skills/a-fund-monitor/scripts/monitor.sh --codes "000979 002943" ``` ### Agent调用 ``` 执行A股基金监控任务。 1. 读取配置文件: ~/clawd/skills/a-fund-monitor/config.json 2. 获取实时净值数据 3. 非交易日自动切换为简短报告 配置文件格式: { "funds": [ {"code": "000979", "name": "景顺长城沪港深精选股票