вариант

Следите за запросом на вытягивание или циклом проверки до момента, когда он будет готов к слиянию. Используйте этот режим, когда вас просят сопровождать, контролировать или регулярно проверять комментарии и проверки в PR, а также результаты CI, пока все решаемые проблемы не будут устранены.

...Расширить все
16
Обновлено время 26 августа 2026 г.

О babysit

Следит за запросом на слияние (pull request) или циклом рецензирования до тех пор, пока он не станет действительно готовым к слиянию, продолжая проверять статус, а не останавливаясь после одного прохода, пока остаются необработанные комментарии или ветки рецензирования. Рабочий процесс определяет номер PR, исходную ветку (branch) и базовую ветку (base branch), подтверждает, что PR не является черновым, и проверяет возможность слияния, результаты проверок (checks), решение рецензента, комментарии и ветки рецензирования. Ожидающие проверки отслеживаются до их завершения с интервалом опроса примерно от 30 до 60 секунд, если пользователь не запросил другой интервал. Считываются новые комментарии и необработанные ветки рецензирования, при этом сводки ботов рассматриваются как полезные, но требующие проверки на соответствие коду выводы.

Реальные проблемы исправляются в сфокусированных коммитах, запускаются соответствующие тесты или сборки, изменения отправляются, и цикл возвращается к повторной проверке статуса. Устаревшие ветки рецензирования разрешаются только после подтверждения того, что код или сгенерированный артефакт теперь учитывают комментарий. Процесс останавливается только тогда, когда проверки проходят или намеренно пропускаются, решение рецензента приемлемо, не осталось действий по комментариям и не осталось необработанных веток рецензирования.

Навык предоставляет конкретные рецепты для GitHub CLI и GraphQL. Команда gh pr view со списком полей JSON дает грубый статус, включая состояние (state), статус черновика (draft status), возможность слияния (mergeability), статус возможности слияния (mergeStateStatus), решение рецензента (reviewDecision), OID верхней ссылки (headRefOid) и сводку проверок статуса (statusCheckRollup). Владелец и имя репозитория определяются с помощью gh repo view и jq перед выполнением запросов GraphQL. Необработанные ветки рецензирования извлекаются с помощью запроса GraphQL reviewThreads, который включает pageInfo для пагинации, с документированным циклом, который перебирает результаты, используя endCursor, пока hasNextPage истинно, и фильтрует необработанные ветки с помощью jq. Мутация resolveReviewThread разрешает ветку только при подтверждении исправления. Правила работы включают поддержание работы наблюдателя во время длительных проверок, подтверждение того, что проблемы, сообщенные ботом, относятся к устаревшему или текущему коду, проверку того, что исходный код и сгенерированные артефакты совпадают перед разрешением, выполнение свежей финальной проверки и отчет о конкретных доказательствах, таких как последний SHA коммита, результаты проверок, количество необработанных веток, запущенные тесты и любые измененные локальные файлы.

Часто задаваемые вопросы (FAQ)

Когда навык перестает следить за PR?

Только тогда, когда проверки проходят или намеренно пропускаются, решение рецензента приемлемо, не осталось действий по комментариям и не осталось необработанных веток рецензирования. Он не останавливается после одной успешной проверки, если ветки все еще открыты.

Как часто он опрашивает статус?

С практическим интервалом, обычно от 30 до 60 секунд, если пользователь не запросил другой интервал. Наблюдатель продолжает работать, пока все еще ожидаются длительные проверки.

Как находятся необработанные ветки рецензирования?

С помощью запроса GraphQL reviewThreads, который включает pageInfo, перебирая результаты с использованием предыдущего endCursor, пока hasNextPage истинно, затем фильтруя ветки, где isResolved ложно, с помощью jq.

Когда безопасно разрешать устаревшую ветку рецензирования?

Только после подтверждения того, что код или сгенерированный артефакт теперь учитывают комментарий, с использованием мутации resolveReviewThread. Для распределенных сгенерированных файлов необходимо сначала подтвердить, что исходный код и сгенерированный артефакт совпадают.

Что следует сообщать в конце?

Конкретные доказательства: последний SHA коммита, имена и результаты проверок, количество необработанных веток, запущенные тесты и любые измененные локальные файлы, оставленные без изменений, после выполнения одной свежей проверки статуса PR, веток, недавних комментариев и статуса git.

Посмотреть на GitHub

Stay with the PR until it is actually clean. Do not stop after one check pass if comments or review threads are still unresolved.

Workflow

  1. Identify the PR number, branch, and base branch.
  2. Confirm the PR is not draft and inspect mergeability, checks, review decision, comments, and review threads.
  3. Watch pending checks until they finish. Poll at a practical interval, usually 30-60 seconds unless the user asks for a different cadence.
  4. Read new comments and unresolved review threads. Treat bot summaries as useful, but verify actionable findings against the code.
  5. Fix real issues in focused commits, run relevant tests/builds, push, and return to step 2.
  6. Resolve stale review threads only after verifying the code or generated artifact now addresses the comment.
  7. Stop only when checks are passing or intentionally skipped, review decision is acceptable, no actionable comments remain, and no unresolved review threads remain.

GitHub CLI Checks

Use gh pr view for the coarse status:

gh pr view <number> --json \  number,state,isDraft,mergeable,mergeStateStatus,reviewDecision,headRefOid,statusCheckRollup,url

Resolve the repository owner/name before using GraphQL:

repo_json=$(gh repo view --json owner,name)owner=$(jq -r '.owner.login // .owner.name' <<<"$repo_json")repo=$(jq -r '.name' <<<"$repo_json")

Use GraphQL for unresolved review threads. Include pageInfo; omit cursor on the first page, then pass the previous endCursor with -f cursor="$cursor" while hasNextPage is true.

gh api graphql \  -f query='query($owner:String!,$repo:String!,$number:Int!,$cursor:String){repository(owner:$owner,name:$repo){pullRequest(number:$number){reviewThreads(first:100,after:$cursor){pageInfo{hasNextPage endCursor}nodes{id,isResolved,isOutdated,path,line,comments(last:1){nodes{author{login},body,createdAt,url}}}}}}}' \  -f owner="$owner" -f repo="$repo" -F number=<number>

Use this loop when a PR may have many review threads:

thread_query='query($owner:String!,$repo:String!,$number:Int!,$cursor:String){repository(owner:$owner,name:$repo){pullRequest(number:$number){reviewThreads(first:100,after:$cursor){pageInfo{hasNextPage endCursor}nodes{id,isResolved,isOutdated,path,line,comments(last:1){nodes{author{login},body,createdAt,url}}}}}}}'cursor_args=()while :; do  page=$(gh api graphql -f query="$thread_query" -f owner="$owner" -f repo="$repo" -F number=<number> "${cursor_args[@]}")  printf '%s' "$page" | jq -r '.data.repository.pullRequest.reviewThreads.nodes[]    | select(.isResolved==false)    | [.id,.path,(.line//""),(.isOutdated|tostring),(.comments.nodes[-1].author.login//""),(.comments.nodes[-1].body|gsub("";" ")|.[0:240])]    | @tsv'  jq -e '.data.repository.pullRequest.reviewThreads.pageInfo.hasNextPage' >/dev/null <<<"$page" || break  cursor=$(jq -r '.data.repository.pullRequest.reviewThreads.pageInfo.endCursor' <<<"$page")  cursor_args=(-f cursor="$cursor")done

Filter unresolved threads with jq:

jq -r '.data.repository.pullRequest.reviewThreads.nodes[]  | select(.isResolved==false)  | [.id,.path,(.line//""),(.isOutdated|tostring),(.comments.nodes[-1].author.login//""),(.comments.nodes[-1].body|gsub("";" ")|.[0:240])]  | @tsv'

Resolve a stale thread only when the fix is verified:

gh api graphql \  -f query='mutation($threadId:ID!){resolveReviewThread(input:{threadId:$threadId}){thread{id,isResolved}}}' \  -f threadId=<thread-id>

Operating Rules

  • Keep the watcher running while long checks are pending.
  • If a generated file is part of the distribution, verify the source and generated artifact agree before resolving comments.
  • If a bot reports an issue against stale code, confirm whether the thread is outdated or addressed in the latest head.
  • Before final reporting, do one fresh sweep of PR status, unresolved threads, recent comments, and local git status.
  • Report concrete evidence: latest commit SHA, check names and results, unresolved thread count, tests run, and any dirty local files left untouched.

Все файлы

0 файлов

Установить babysit

Скачайте и извлеките файлы навыков в вашу директорию .claude/skills/.

Скачать ZIP

Клонируйте репозиторий и скопируйте файлы навыка в свой проект.

git clone https://github.com/thedotmack/claude-mem/blob/main/plugin/skills/babysit/SKILL.md # Copy SKILL.md to your .claude/skills/ directory

Копировать Копировать
Быстрая настройка: Скопируйте папку с навыком в .claude/skills/ — Claude автоматически обнаружит и использует этот навык
Репозиторий thedotmack/claude-mem

Похожие навыки

code-simplify
Обновлено время 2 июля 2026 г.
requesting-code-review
Обновлено время 29 июня 2026 г.
Git Commit Helper
Обновлено время 29 июня 2026 г.
commit-standards
Обновлено время 29 июня 2026 г.
OR