Навык fix-develop
Автоматизирует диагностику и исправление сбоев в CI-воркфлоу в ветке по умолчанию репозитория путем создания worktree и pull request.
- Звёзды на GitHub
- 32
- Файлы
- 1
- Последний коммит
- 10 нояб. 2026 г.
- Лицензия
- Apache-2.0
- Разрешённые инструменты
- —
Что делает навык fix-develop?
fix-develop — это Agent Skill. Автоматизирует диагностику и исправление сбоев в CI-воркфлоу в ветке по умолчанию репозитория путем создания worktree и pull request.
Сводка сгенерирована из SKILL.md навыка.
О skill fix-develop
Основная функция этого SKILL — автоматизация восстановления сломанных конвейеров непрерывной интеграции (CI) в ветке по умолчанию репозитория. Инструмент предназначен для разработчиков и DevOps-инженеров, которым необходимо поддерживать стабильное состояние веток main или develop без ручного вмешательства при каждой ошибке сборки. Инструмент находит упавшие запуски воркфлоу с помощью GitHub CLI, анализирует логи для классификации ошибок (ошибки тестов, проблемы линтинга или зависимости) и затем внедряет точечные исправления.
Когда агент загружает этот SKILL, он создает отдельный git worktree, чтобы основной репозиторий оставался нетронутым в процессе исправления. По итогу создается pull request в ветку по умолчанию, который включает описание первопричины ошибки и подтверждение внесенных исправлений. Процесс следует строгому протоколу минимальных изменений: рефакторинг запрещен, чтобы сосредоточиться только на устранении зарегистрированной ошибки. Агент продолжает итерации с исправлениями и отработкой комментариев к ревью до тех пор, пока статус CI не станет успешным или пока не будет достигнут лимит в десять попыток.
Что агент может делать с ним
- 1Исправление сбоев в CI-воркфлоуАгенту можно поручить автоматическую диагностику и исправление сломанных сборок в ветке main.
- 2Выявление проблем с нестабильными (flaky) тестамиИнструмент может отличать реальные ошибки в коде от временных сбоев инфраструктуры, чтобы предотвратить создание ненужных pull request.
Написано на основе skill SKILL.md. Каждый сценарий использования проверен по цитате из него.
Как установить навык fix-develop
Каждая команда копирует папку навыка в каталог навыков клиента. Перезапустите клиент или начните новую сессию, чтобы загрузить его.Установка навыка fix-develop в Плагин
/plugin marketplace add bjcoombs/ai-native-toolkit /plugin install ai-native-toolkit@ai-native-toolkit
Установка навыка fix-develop в Claude Code
~/.claude/skills/fix-develop/SKILL.md
$ npx degit bjcoombs/ai-native-toolkit/skills/fix-develop ~/.claude/skills/fix-developУстановка навыка fix-develop в Claude Code (project)
.claude/skills/fix-develop/SKILL.md
$ npx degit bjcoombs/ai-native-toolkit/skills/fix-develop .claude/skills/fix-developУстановка навыка fix-develop в Codex
~/.agents/skills/fix-develop/SKILL.md
$ npx degit bjcoombs/ai-native-toolkit/skills/fix-develop ~/.agents/skills/fix-developУстановка навыка fix-develop в Gemini CLI
~/.gemini/skills/fix-develop/SKILL.md
$ npx degit bjcoombs/ai-native-toolkit/skills/fix-develop ~/.gemini/skills/fix-developУстановка навыка fix-develop в Claude.ai
npx degit bjcoombs/ai-native-toolkit/skills/fix-develop fix-develop && zip -r fix-develop.zip fix-develop # claude.ai → Customize → Skills → + → Create skill → Upload a skill → fix-develop.zip
SKILL.md
Открыть на GitHubFix Default Branch
Assess failing CI on the repo's default branch (main / develop / etc., or nightly build), create a worktree with a fix, push a PR, and loop until CI passes and review comments are addressed.
Usage: /fix-develop [repo-path] - defaults to current repo context. (Command name is historical; works on whichever branch the repo treats as default.)
Step 1: Assess Default Branch Health
set -euo pipefail
# Identify the repo
REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null || echo "")
REPO_NAME=$(basename "$REPO_ROOT")
ORG=$(gh repo view --json owner --jq '.owner.login')
REPO=$(gh repo view --json name --jq '.name')
DEFAULT_BRANCH=$(gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name')
# Fail fast if any of the above came back empty (wrong pane, no gh auth, not a repo)
: "${REPO_ROOT:?Not inside a git repo — re-run from the target repo}"
: "${ORG:?gh repo view returned no owner — check gh auth and current directory}"
: "${REPO:?gh repo view returned no name — check gh auth and current directory}"
: "${DEFAULT_BRANCH:?gh repo view returned no defaultBranchRef — check gh auth}"
# Get latest CI status on the default branch
gh api repos/$ORG/$REPO/commits/$DEFAULT_BRANCH/status --jq '{state: .state, total: .total_count}'
# Get failing workflow runs on the default branch
gh run list --branch $DEFAULT_BRANCH --status failure --limit 5 --json databaseId,name,conclusion,createdAt \
| jq '.[] | {id: .databaseId, name, conclusion, created: .createdAt}'
If the default branch is green, report "$DEFAULT_BRANCH is healthy, nothing to fix" and STOP.
Step 2: Diagnose Failures
# For each failing run, get the failed jobs and logs
RUN_ID=<from step 1>
gh run view $RUN_ID --json jobs | jq '.jobs[] | select(.conclusion == "FAILURE") | {name, conclusion}'
gh run view $RUN_ID --log-failed 2>&1 | tail -100
Categorize failures:
- Test failures - read the failing test + source code to understand root cause
- Lint/build errors - read the offending file at the reported line
- Flaky/infrastructure - check if the same test passed on a recent re-run. If so, report as flaky (not actionable) and STOP
- Dependency issues - check if a dependency update broke something
Report diagnosis to user before proceeding:
## Default Branch Diagnosis
Branch: <DEFAULT_BRANCH>
Failing runs: <list>
Root cause: <assessment>
Proposed fix: <plan>
Proceeding to create fix PR...
Step 3: Create Worktree and Fix
set -euo pipefail
: "${ORG:?ORG unset — re-run Step 1 to derive repo identity}"
: "${REPO:?REPO unset — re-run Step 1 to derive repo identity}"
: "${DEFAULT_BRANCH:?DEFAULT_BRANCH unset — re-run Step 1 to derive repo identity}"
# From repo-main (sacred, always on default branch)
cd ~/dev/github.com/$ORG/$REPO/$REPO-main
git checkout $DEFAULT_BRANCH && git pull origin $DEFAULT_BRANCH
# Create fix branch and worktree (slug the default branch in case it contains '/')
DEFAULT_BRANCH_SLUG="${DEFAULT_BRANCH//\//-}"
BRANCH_NAME="fix-${DEFAULT_BRANCH_SLUG}-$(date +%Y%m%d)-$(echo '<brief-description>' | tr ' ' '-')"
git branch $BRANCH_NAME
git worktree add ../worktree/$BRANCH_NAME $BRANCH_NAME
cd ../worktree/$BRANCH_NAME
Implement the fix. Keep changes minimal - fix the failing tests/build only. Do not refactor, do not improve, do not clean up.
# Commit and push
git add <specific-files>
git commit -m "fix: <description of what was failing and why>"
git push -u origin $BRANCH_NAME
# Create PR targeting the default branch
gh pr create --base $DEFAULT_BRANCH --title "fix: Resolve failing CI on $DEFAULT_BRANCH" --body "$(cat <<'EOF'
## Summary
- <What was failing>
- <Root cause>
- <What this PR fixes>
## Evidence
- Failing run: <link>
- Error: <brief>
EOF
)"
Step 4: Loop Until Green
Use the pr-review-merge skill to drive the fix PR to merge-ready, passing $PR and
$DEFAULT_BRANCH and the project's bot rules. It owns the CI/threads/conversation checks
and the positive-jq-filter pitfalls.
Protocol
-
Autonomous Loop - no permission needed between iterations:
- Check CI + comments, fix, push
- Report: "Iteration N: Fixed X issues" or "Iteration N: Waiting for CI"
-
Stop when green:
PR #X: CI passing, all comments addressed. Ready for merge. This fixes the following $DEFAULT_BRANCH failures: - <list of what was broken> --- ## Current Work PR: #X - Fix failing CI on $DEFAULT_BRANCH https://github.com/org/repo/pull/X Latest: All green after N iterations -
Only ask for help if:
- Root cause is unclear after reading logs + source
- Fix requires architectural decision
- After 5+ iterations with no progress
- Failure is in code you don't have context on
-
After merge (if user merges):
cd ~/dev/github.com/$ORG/$REPO cd $REPO-main && git worktree remove --force ../worktree/$BRANCH_NAME git branch -d $BRANCH_NAME
Important
- Minimal fixes only - fix what's broken, nothing else
- Use positive jq filters -
select(.state == "FAILURE")notselect(.state != "SUCCESS") - Never work in repo-main - always create a worktree
- Max iterations: 10 (ask for help after that)
- If flaky/infrastructure: Report and STOP - don't create a PR for transient failures
Файлы в этом навыке
1Вопросы о навыке fix-develop
Как установить навык fix-develop в Claude Code?
Выполните npx degit bjcoombs/ai-native-toolkit/skills/fix-develop ~/.claude/skills/fix-develop. Claude Code загружает навыки из ~/.claude/skills (все проекты) или .claude/skills (один проект) и использует навык, когда его описание соответствует задаче.
Какие клиенты могут использовать навык fix-develop?
Любой клиент, который читает формат Agent Skills: Claude Code, Codex, Gemini CLI и claude.ai (загрузить как ZIP). Скрипты в навыке выполняются только там, где клиент разрешает выполнение кода.
Какой объем рефакторинга допустим при реализации исправления?
Агент должен вносить минимальные изменения, фокусируясь исключительно на исправлении упавших тестов или сборки, не прибегая к рефакторингу или очистке кода.