[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M75419P9JSGHCAFDGAZSBN9H":3,"skill-same:01M75419P9JSGHCAFDGAZSBN9H":70},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":16,"sourceHtmlUrl":17,"categories":18,"keywords":19,"publishedAt":20,"linkOnly":21,"markdownContent":22,"markdownBody":23,"frontMatter":24,"refName":32,"commitSha":33,"skillDirectory":34,"forksCount":14,"repositoryHtmlUrl":35,"repositoryHomepageUrl":36,"ownerHtmlUrl":37,"ownerBlogUrl":38,"ownerDescription":39,"updatedAt":40,"install":41,"resources":54},"01M75419P9JSGHCAFDGAZSBN9H","babysit-pr",null,"Use when the user asks to monitor, watch, or babysit a PR","micr-dev\u002Fai","micr-dev","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F268040971?v=4","01M7540K6VRWYBNZ2HCGAAFPHM","micr.dev","01M7540K7NV9DE89BM5PF06PX3",0,"MIT","https:\u002F\u002Fgithub.com\u002Fmicr-dev\u002Fai\u002Fblob\u002Fmain\u002Fskills\u002Fbabysit-pr\u002FLICENSE.md","https:\u002F\u002Fgithub.com\u002Fmicr-dev\u002Fai\u002Fblob\u002Fmain\u002Fskills\u002Fbabysit-pr\u002FSKILL.md",[],[],"2026-11-12 13:55:43",false,"---\nname: babysit-pr\ndescription: Use when the user asks to monitor, watch, or babysit a PR\nmetadata:\n  harness: [claude, codex]\n  platform: [darwin, linux]\n---\n\n# Babysit PR\n\nAll the repos we work in have AI review bots (CodeRabbit, Codex review). They're helpful, even if they are not always right.\n\nThe watcher `scripts\u002Fpr_watch.py` (next to this file) owns all PR polling: CI on the head commit, bot reviews of the exact head SHA, bot triggers, CodeRabbit rate-limit waits, review threads, unanswered human comments, and conflicts. Use it for every wait and every \"is it done?\" question. It needs only `gh` and `python3`.\n\n## Loop\n\n1. **Watch.** Run the watcher in the background and keep working or idle until it exits:\n\n   ```bash\n   python3 \u003Cskill-dir>\u002Fscripts\u002Fpr_watch.py watch \u003CPR number or URL> [-R owner\u002Frepo] --as \"\u003CMODEL NAME>\"\n   ```\n\n   - omp: `bash` with `async: true` and `timeout: 3600`; the result arrives on its own.\n   - Claude Code: `Bash` with `run_in_background: true`; you are notified on exit.\n   - Codex: `exec_command` with the largest `yield_time_ms` allowed; while it runs, `write_stdin` with empty input and the largest yield.\n   - Other harnesses: run it in the foreground with `--timeout` under the tool's limit.\n\n   It prints one JSON report on exit. Exit codes: `0` ready, `10` action needed, `20` merged or closed, `30` timed out while still waiting (run the same command again), `3` another watcher already owns this PR (wait for that one), `2` gh\u002FAPI error (read `detail`).\n\n2. **Act** on every item in `actions`, then go back to step 1. A push changes the head; the watcher then requests fresh bot reviews by itself.\n\n   | `kind` | Do |\n   |---|---|\n   | `check_failed` | Read the logs (`gh run view \u003Cid> --log-failed`). Fix repository failures. Rerun infrastructure flakes (`gh run rerun \u003Cid> --failed`). For a non-required check you judge unrelated, rerun the watcher with `--ignore-check \"\u003Cname>\"` and say why in your report. |\n   | `unresolved_thread` | Verify the finding against the source. Fix it and push, then `reply \u003Cthread_id> --body \"\u003Cwhat changed>\" --resolve`. If you reject it, reply with the reason and `--resolve`. Outdated threads count too. |\n   | `body_findings` | Findings in the review body that GitHub could not attach inline. Fix them, then answer all of them in one `comment`. |\n   | `human_comment` | Instructions from the user or a reviewer. Follow them; answer with `comment`. A hold or stop instruction ends the loop: report and wait for the user. |\n   | `merge_conflict`, `behind_base` | Rebase on the base branch and push. |\n\n   Helpers, all posting with the disclosure header:\n\n   ```bash\n   python3 \u003Cskill-dir>\u002Fscripts\u002Fpr_watch.py reply \u003Cthread_id> --body \"...\" [--resolve] --as \"\u003CMODEL NAME>\"\n   python3 \u003Cskill-dir>\u002Fscripts\u002Fpr_watch.py comment \u003CPR> --body \"...\" --as \"\u003CMODEL NAME>\"\n   python3 \u003Cskill-dir>\u002Fscripts\u002Fpr_watch.py resolve \u003Cthread_id>...\n   python3 \u003Cskill-dir>\u002Fscripts\u002Fpr_watch.py status \u003CPR>   # one read-only evaluation\n   ```\n\n3. **Done** when the watcher exits `0`: CI finished and passing, at least one working bot has completed a clean review of the current head, without waiting for the other bot, no unresolved threads, nothing unanswered, no conflicts. Report the PR as ready with the head SHA from the report. Merge only when the user explicitly asked for it, and only on the head the watcher approved. Exit `20` means someone else merged or closed it; report that.\n\n   A bot that cannot review (Codex has no environment for the repo, CodeRabbit hits its file limit, a bot never answers or errors after 3 requests) appears in `blocked_bots`. The watcher stops requiring it and keeps watching CI and the other bots, so keep the loop going. Name each blocked bot and its `detail` in the final report, so the user can fix the setup; a PR reviewed by fewer bots than usual is still ready.\n\nInspect any findings already posted by either bot. A clean review does not override required GitHub checks, branch protection, human reviews, or unresolved threads. Verify effective GitHub merge gates separately before declaring the PR mergeable.\n\nOnly the watcher's exit `0` makes a PR ready. CI passing alone, a bot review of an earlier commit, or a quiet PR is still `waiting`.\n\n## Judging findings\n\nAct only on checks and comments for the latest push; the watcher already filters by head SHA. Verify every bot finding against the source before changing code. Weigh each finding against the PR's original goal: fix real shortcomings, push back on scope creep, and reply with a written reason when dismissing a false positive.\n\nThe watcher reports an `unresolved_thread` until the thread is resolved in GitHub; a reply alone leaves it open. Use `reply --resolve`.\n\nIf an overlapping PR makes this one obsolete, stop watching, report it to the user, and ask before closing the PR unless closure was explicitly authorized.\n\n### chatgpt-codex-connector reviews\n\nThe Codex review bot is notoriously bad at judging severity: a comment it labels P1 could really be a P3, or not a real issue at all. Use your own judgement on whether a finding is real and worth fixing.\n\n## Comments on Microck's behalf\n\nEvery comment you post carries a one-line GitHub `NOTE` alert with the disclosure, the reply unquoted below it. The helpers add it from `--as` (or `BABYSIT_MODEL`); write it by hand only when you post some other way:\n\n```md\n> [!NOTE]\n> 🤖 [MODEL NAME] responding on behalf of Microck\n\n[actual reply]\n```\n\nThe watcher relies on this marker to tell your replies from Microck's own instructions, so keep the exact wording.\n\nPost only when you have something to say: a fix, a reason, or an answer. Screenshots and videos help; use the `file-upload` skill to host them.\n\n## Repos you don't own\n\nOn third-party repos the watcher requires only the bots already active on the PR and never posts review requests. If a review request is needed there, ask the user first, then pass `--third-party-triggers`.\n","# Babysit PR\n\nAll the repos we work in have AI review bots (CodeRabbit, Codex review). They're helpful, even if they are not always right.\n\nThe watcher `scripts\u002Fpr_watch.py` (next to this file) owns all PR polling: CI on the head commit, bot reviews of the exact head SHA, bot triggers, CodeRabbit rate-limit waits, review threads, unanswered human comments, and conflicts. Use it for every wait and every \"is it done?\" question. It needs only `gh` and `python3`.\n\n## Loop\n\n1. **Watch.** Run the watcher in the background and keep working or idle until it exits:\n\n   ```bash\n   python3 \u003Cskill-dir>\u002Fscripts\u002Fpr_watch.py watch \u003CPR number or URL> [-R owner\u002Frepo] --as \"\u003CMODEL NAME>\"\n   ```\n\n   - omp: `bash` with `async: true` and `timeout: 3600`; the result arrives on its own.\n   - Claude Code: `Bash` with `run_in_background: true`; you are notified on exit.\n   - Codex: `exec_command` with the largest `yield_time_ms` allowed; while it runs, `write_stdin` with empty input and the largest yield.\n   - Other harnesses: run it in the foreground with `--timeout` under the tool's limit.\n\n   It prints one JSON report on exit. Exit codes: `0` ready, `10` action needed, `20` merged or closed, `30` timed out while still waiting (run the same command again), `3` another watcher already owns this PR (wait for that one), `2` gh\u002FAPI error (read `detail`).\n\n2. **Act** on every item in `actions`, then go back to step 1. A push changes the head; the watcher then requests fresh bot reviews by itself.\n\n   | `kind` | Do |\n   |---|---|\n   | `check_failed` | Read the logs (`gh run view \u003Cid> --log-failed`). Fix repository failures. Rerun infrastructure flakes (`gh run rerun \u003Cid> --failed`). For a non-required check you judge unrelated, rerun the watcher with `--ignore-check \"\u003Cname>\"` and say why in your report. |\n   | `unresolved_thread` | Verify the finding against the source. Fix it and push, then `reply \u003Cthread_id> --body \"\u003Cwhat changed>\" --resolve`. If you reject it, reply with the reason and `--resolve`. Outdated threads count too. |\n   | `body_findings` | Findings in the review body that GitHub could not attach inline. Fix them, then answer all of them in one `comment`. |\n   | `human_comment` | Instructions from the user or a reviewer. Follow them; answer with `comment`. A hold or stop instruction ends the loop: report and wait for the user. |\n   | `merge_conflict`, `behind_base` | Rebase on the base branch and push. |\n\n   Helpers, all posting with the disclosure header:\n\n   ```bash\n   python3 \u003Cskill-dir>\u002Fscripts\u002Fpr_watch.py reply \u003Cthread_id> --body \"...\" [--resolve] --as \"\u003CMODEL NAME>\"\n   python3 \u003Cskill-dir>\u002Fscripts\u002Fpr_watch.py comment \u003CPR> --body \"...\" --as \"\u003CMODEL NAME>\"\n   python3 \u003Cskill-dir>\u002Fscripts\u002Fpr_watch.py resolve \u003Cthread_id>...\n   python3 \u003Cskill-dir>\u002Fscripts\u002Fpr_watch.py status \u003CPR>   # one read-only evaluation\n   ```\n\n3. **Done** when the watcher exits `0`: CI finished and passing, at least one working bot has completed a clean review of the current head, without waiting for the other bot, no unresolved threads, nothing unanswered, no conflicts. Report the PR as ready with the head SHA from the report. Merge only when the user explicitly asked for it, and only on the head the watcher approved. Exit `20` means someone else merged or closed it; report that.\n\n   A bot that cannot review (Codex has no environment for the repo, CodeRabbit hits its file limit, a bot never answers or errors after 3 requests) appears in `blocked_bots`. The watcher stops requiring it and keeps watching CI and the other bots, so keep the loop going. Name each blocked bot and its `detail` in the final report, so the user can fix the setup; a PR reviewed by fewer bots than usual is still ready.\n\nInspect any findings already posted by either bot. A clean review does not override required GitHub checks, branch protection, human reviews, or unresolved threads. Verify effective GitHub merge gates separately before declaring the PR mergeable.\n\nOnly the watcher's exit `0` makes a PR ready. CI passing alone, a bot review of an earlier commit, or a quiet PR is still `waiting`.\n\n## Judging findings\n\nAct only on checks and comments for the latest push; the watcher already filters by head SHA. Verify every bot finding against the source before changing code. Weigh each finding against the PR's original goal: fix real shortcomings, push back on scope creep, and reply with a written reason when dismissing a false positive.\n\nThe watcher reports an `unresolved_thread` until the thread is resolved in GitHub; a reply alone leaves it open. Use `reply --resolve`.\n\nIf an overlapping PR makes this one obsolete, stop watching, report it to the user, and ask before closing the PR unless closure was explicitly authorized.\n\n### chatgpt-codex-connector reviews\n\nThe Codex review bot is notoriously bad at judging severity: a comment it labels P1 could really be a P3, or not a real issue at all. Use your own judgement on whether a finding is real and worth fixing.\n\n## Comments on Microck's behalf\n\nEvery comment you post carries a one-line GitHub `NOTE` alert with the disclosure, the reply unquoted below it. The helpers add it from `--as` (or `BABYSIT_MODEL`); write it by hand only when you post some other way:\n\n```md\n> [!NOTE]\n> 🤖 [MODEL NAME] responding on behalf of Microck\n\n[actual reply]\n```\n\nThe watcher relies on this marker to tell your replies from Microck's own instructions, so keep the exact wording.\n\nPost only when you have something to say: a fix, a reason, or an answer. Screenshots and videos help; use the `file-upload` skill to host them.\n\n## Repos you don't own\n\nOn third-party repos the watcher requires only the bots already active on the PR and never posts review requests. If a review request is needed there, ask the user first, then pass `--third-party-triggers`.\n",{"name":5,"metadata":25,"description":7},{"harness":26,"platform":29},[27,28],"claude","codex",[30,31],"darwin","linux","main","b2fc93ccd1850c6cccbdaba18da8f04876420b21","skills\u002Fbabysit-pr","https:\u002F\u002Fgithub.com\u002Fmicr-dev\u002Fai","https:\u002F\u002Fai.micr.dev","https:\u002F\u002Fgithub.com\u002Fmicr-dev","https:\u002F\u002Fmicr.dev","@microck","2026-11-14 16:32:52",{"source":8,"skillName":5,"commands":42,"prompt":52,"zipAvailable":53},[43,46,49],{"tool":44,"command":45},"npx","npx skills add micr-dev\u002Fai --skill babysit-pr",{"tool":47,"command":48},"bunx","bunx skills add micr-dev\u002Fai --skill babysit-pr",{"tool":50,"command":51},"pnpm","pnpm dlx skills add micr-dev\u002Fai --skill babysit-pr","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicr-dev\u002Fai\u002Fblob\u002Fmain\u002Fskills\u002Fbabysit-pr\u002FSKILL.md",true,[55,60,66],{"path":56,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":59,"sourceHtmlUrl":16},"LICENSE.md","LICENSE","许可证",1070,{"path":61,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":64,"sourceHtmlUrl":65},"scripts\u002Fpr_watch.py","SCRIPT","脚本",32638,"https:\u002F\u002Fgithub.com\u002Fmicr-dev\u002Fai\u002Fblob\u002Fmain\u002Fskills\u002Fbabysit-pr\u002Fscripts\u002Fpr_watch.py",{"path":67,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":68,"sourceHtmlUrl":69},"scripts\u002Ftest_pr_watch.py",4325,"https:\u002F\u002Fgithub.com\u002Fmicr-dev\u002Fai\u002Fblob\u002Fmain\u002Fskills\u002Fbabysit-pr\u002Fscripts\u002Ftest_pr_watch.py",[71],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":77,"publishedAt":20},"01M75436PQEWWQKD3PMDFY2RC4","effect","Opinionated guide for building production TypeScript applications with Effect v4. Use when implementing Effect workflows, services, layers, schemas, configuration, schedules, caches, streams, HTTP clients, or tests.","https:\u002F\u002Fgithub.com\u002Fmicr-dev\u002Fai\u002Fblob\u002Fmain\u002Fskills\u002Feffect\u002FSKILL.md",[],[]]