[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DF6M1P5KAJ13YQJ28T7XDE":3,"skill-same:01M6DF6M1P5KAJ13YQJ28T7XDE":58},{"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":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":27,"linkOnly":28,"markdownContent":29,"markdownBody":30,"frontMatter":31,"refName":32,"commitSha":33,"skillDirectory":34,"forksCount":14,"repositoryHtmlUrl":35,"repositoryHomepageUrl":6,"ownerHtmlUrl":36,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":37,"install":38,"resources":51},"01M6DF6M1P5KAJ13YQJ28T7XDE","pr-shepherd",null,"Monitor a PR through to merge — handle CI failures, review comments, and thread resolution automatically until all checks pass","Prekzursil\u002Fagent-skills-toolchain","Prekzursil","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F54636077?v=4","01M6DACZ1PCQHD99SCR1YXG28B","Andrei Mihai Visalon","01M6DACZ670WZF535V3WYYSS4Z",0,"MIT","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fpr-shepherd\u002FSKILL.md",[],[19,20,21,22,23,24,25,26],"pr","pr shepherd","shepherd","review","merge","monitor","ci","resolution","2026-11-10 10:12:30",false,"---\nname: pr-shepherd\ndescription: Monitor a PR through to merge — handle CI failures, review comments, and thread resolution automatically until all checks pass\n---\n\n# pr-shepherd\n\nUse when a PR has been created and needs to be monitored through to merge - handles CI failures, review comments, and thread resolution automatically until all checks pass and all threads are resolved.\n\n**IMPORTANT**: This skill is designed for the **agent working in a worktree**, NOT the orchestrator. The agent handles its own PR monitoring so the orchestrator remains free for other work.\n\n## Coordination Mode Note\n\nThis skill supports both coordination modes:\n\n- **Task Mode** (default): Runs as a single long-running `Task()` with `run_in_background: true`. Orchestrator checks via `TaskOutput(block: false)`.\n- **Team Mode**: Runs as a persistent `shepherd` teammate in the `issue-{number}` team. Sends async status updates via `SendMessage` (CI failure, review comments, all-green, PR merged). Orchestrator can respond with instructions (e.g., \"defer that comment, create an issue instead\"). Responds to `shutdown_request` for graceful exit.\n\nAll monitoring, fixing, and review handling logic is identical in both modes. See `.\u002Fguides\u002Fagent-coordination.md` for mode detection.\n\n---\n\n## When to Activate\n\nActivate this skill when ANY of these conditions are true:\n\n- Agent just created a PR with `gh pr create`\n- User asks to \"shepherd\", \"monitor\", or \"see through\" a PR\n- User invokes `\u002Fpr-shepherd \u003Cpr-number>`\n- User asks to \"watch this PR\" or \"handle this PR until it's merged\"\n- Orchestrator spawned you with instructions to shepherd a PR\n- **Automatic**: `bin\u002Fcreate-pr-with-shepherd.sh` was used (outputs shepherd instructions)\n\n### Automatic Activation via Wrapper Script\n\nWhen `bin\u002Fcreate-pr-with-shepherd.sh` creates a PR, it outputs shepherd instructions:\n\n```text\n==========================================\n  PR Shepherd Active for PR #123\n==========================================\n\nThe pr-shepherd skill will:\n  - Monitor CI\u002FCD status\n  - Auto-fix lint, type, and test issues\n  - Handle review comments\n  - Resolve threads after addressing feedback\n  - Report when PR is ready to merge\n\nTo manually invoke shepherd later:\n  \u002Fpr-shepherd 123\n```\n\nWhen you see this output, **immediately invoke the pr-shepherd skill** with the PR number shown.\n\n## Announce at Start\n\n\"I'm using the pr-shepherd skill to monitor this PR through to merge. I'll watch CI\u002FCD, handle review comments, and fix issues as they arise.\"\n\n## For Orchestrators: Spawning Agents with PR Shepherding\n\nWhen spawning an agent to work in a worktree, include PR shepherding in the task prompt:\n\n```text\nWork in worktree at \u002Fpath\u002Fto\u002Fworktree on branch feature\u002Fxyz.\n\nTask: [describe the implementation task]\n\nAfter creating the PR:\n1. Use the pr-shepherd skill to monitor it through to merge\n2. Handle CI failures and review comments autonomously\n3. Only escalate to orchestrator for complex issues requiring user input\n4. Report back when PR is ready to merge or if blocked\n\nRun in background so I can continue other work.\n```\n\n**Key principle**: The agent owns its PR lifecycle. The orchestrator spawns and forgets, checking back via `AgentOutputTool` when needed.\n\n## State Machine\n\nThe agent operates in one of these states:\n\n```text\nMONITORING → FIXING → MONITORING → WAITING_FOR_USER → FIXING → MONITORING → DONE\n```\n\n| State              | What Happens                                | Exit When                                      |\n| ------------------ | ------------------------------------------- | ---------------------------------------------- |\n| `MONITORING`       | Poll CI and reviews every 60s in background | CI fails, new comments, all done, or need help |\n| `FIXING`           | Fix issues using TDD, run local validation  | Local validation passes OR need user guidance  |\n| `HANDLING_REVIEWS` | Invoke `handling-pr-comments` skill         | Comments handled OR need user input            |\n| `WAITING_FOR_USER` | Present options, wait for user decision     | User responds                                  |\n| `DONE`             | All CI green + all threads resolved         | Exit successfully                              |\n\n## Phase 1: Initialize\n\n```bash\n# Get PR info\nPR_NUMBER=$(gh pr view --json number -q .number 2>\u002Fdev\u002Fnull)\nOWNER=$(gh repo view --json owner -q .owner.login)\nREPO=$(gh repo view --json name -q .name)\n\n# If no PR on current branch, check if number was provided\nif [ -z \"$PR_NUMBER\" ]; then\n  echo \"No PR found for current branch. Provide PR number.\"\n  exit 1\nfi\n\necho \"Shepherding PR #$PR_NUMBER\"\n```\n\n## Phase 2: Monitoring Loop (Background)\n\nRun GTG every 60 seconds as the **single source of truth** for PR readiness:\n\n### Primary Check: GTG (Good-To-Go)\n\nGTG consolidates CI status, comment classification, and thread resolution into one call. Use it instead of separate API queries.\n\n```bash\n# Primary readiness check — structured JSON output\nGTG_RESULT=$(gtg $PR_NUMBER --repo \"$OWNER\u002F$REPO\" --format json \\\n  --exclude-checks \"Merge Ready (gtg)\" \\\n  --exclude-checks \"CodeRabbit\" \\\n  --exclude-checks \"Cursor Bugbot\" \\\n  --exclude-checks \"claude\" 2>&1)\n\nSTATUS=$(echo \"$GTG_RESULT\" | jq -r '.status')\nACTION_ITEMS=$(echo \"$GTG_RESULT\" | jq -r '.action_items[]?' 2>\u002Fdev\u002Fnull)\nCI_STATE=$(echo \"$GTG_RESULT\" | jq -r '.ci_status.state')\n```\n\n**GTG statuses:**\n\n| Status               | Meaning                            | Agent Action                              |\n| -------------------- | ---------------------------------- | ----------------------------------------- |\n| `READY`              | All CI green, all threads resolved | → DONE                                    |\n| `ACTION_REQUIRED`    | Actionable comments need fixes     | → HANDLING_REVIEWS (use `action_items`)   |\n| `UNRESOLVED_THREADS` | Review threads still open          | → HANDLING_REVIEWS                        |\n| `CI_FAILING`         | One or more CI checks failing      | → FIXING                                  |\n| `ERROR`              | Couldn't fetch PR data             | Retry after 60s, escalate after 3 retries |\n\n**GTG reports, agents act**: GTG does not resolve threads or fix code — it only tells you what's blocking. After addressing feedback, you must resolve threads yourself using the GraphQL mutation in `handle-pr-comments.md` (Section 3). GTG will report `READY` on the next poll once threads are resolved.\n\n### Evaluate State Transitions\n\n```text\nif STATUS == \"READY\":\n  → DONE\n\nif STATUS == \"CI_FAILING\":\n  → Parse action_items for specific failures\n  → if is_simple_failure(failure): FIXING\n  → else: WAITING_FOR_USER\n\nif STATUS == \"ACTION_REQUIRED\" or STATUS == \"UNRESOLVED_THREADS\":\n  → HANDLING_REVIEWS (action_items tells you exactly what to fix)\n\nif STATUS == \"ERROR\":\n  → Retry, then escalate\n```\n\n### Fallback: Manual Checks\n\nIf GTG is unavailable (e.g., not installed in environment), fall back to manual queries:\n\n```bash\n# CI status\nFAILED_CHECKS=$(gh pr checks $PR_NUMBER --json name,conclusion --jq '[.[] | select(.conclusion == \"FAILURE\")] | length')\n\n# Unresolved threads\nUNRESOLVED=$(gh api graphql -f query='\n  query($owner: String!, $repo: String!, $pr: Int!) {\n    repository(owner: $owner, name: $repo) {\n      pullRequest(number: $pr) {\n        reviewThreads(first: 100) {\n          nodes { isResolved }\n        }\n      }\n    }\n  }\n' -f owner=\"$OWNER\" -f repo=\"$REPO\" -F pr=\"$PR_NUMBER\" \\\n  --jq '[.data.repository.pullRequest.reviewThreads.nodes[] | select(.isResolved == false)] | length')\n```\n\n### Re-triggering GTG CI Check\n\nWhen threads are resolved but the `Merge Ready (gtg)` GitHub Actions check is stale:\n\n```bash\ngh workflow run gtg.yml -f pr_number=$PR_NUMBER\n```\n\n## Phase 3: Fixing Issues\n\n### Simple Issues (Auto-fix)\n\nThese can be fixed without user approval:\n\n- Lint failures → run linter\n- Prettier failures → run formatter\n- Type errors → fix the types\n- Test failures in code YOU wrote → fix using TDD\n\n### Complex Issues (Need Approval)\n\nThese require user input BEFORE fixing:\n\n- Test failures in code you didn't write\n- Infrastructure\u002Fconfig failures\n- Ambiguous errors\n- Anything you're uncertain about\n\n### FIXING State Rules\n\n1. **Use TDD** - Invoke `superpowers:test-driven-development` for code changes\n2. **Kill stale test runners** - Run `pkill -f vitest 2>\u002Fdev\u002Fnull || true` before test runs\n3. **Stay until green** - Don't leave FIXING until `pnpm lint && pnpm typecheck && pnpm test --run && pnpm test:coverage` all pass\n4. **Only push when verified** - Never push code that fails local validation or coverage thresholds\n5. **Return to MONITORING after push** - Let CI run, continue monitoring\n\n```bash\n# Kill stale vitest processes before running tests\npkill -f vitest 2>\u002Fdev\u002Fnull || true\n\n# After fixing, always validate locally (including coverage)\npnpm lint && pnpm typecheck && pnpm test --run && pnpm test:coverage\n\n# Only push if all pass (including coverage thresholds)\ngit add -A && git commit -m \"fix: \u003Cdescription>\" && git push\n```\n\n## Phase 4: Handling Reviews\n\nWhen new review comments are detected:\n\n1. Invoke the `handling-pr-comments` skill\n2. That skill handles categorization, fixes, responses, and thread resolution\n3. **CRITICAL: The handling-pr-comments skill includes an iteration loop**\n4. **ALL threads must be resolved** before returning to MONITORING\n5. If a thread cannot be resolved (needs clarification from reviewer), query the comment author asking for follow-up\n6. Return to MONITORING only when:\n   - All threads are resolved, AND\n   - Post-push verification confirms NO new comments appeared\n\n### Iteration Enforcement\n\n**THE #1 FAILURE MODE**: Returning to MONITORING after one pass without checking for new comments.\n\nThe `handling-pr-comments` skill's Phase 7 (Post-Push Iteration Check) MUST complete successfully before exiting HANDLING_REVIEWS state. The skill will iterate automatically:\n\n```text\nHANDLING_REVIEWS:\n  → handling-pr-comments skill (Phases 1-7)\n  → IF Phase 7 finds new comments: skill re-runs Phases 1-7\n  → IF Phase 7 confirms no new comments: exit to MONITORING\n```\n\n**DO NOT** manually override or skip Phase 7. If you find yourself tempted to skip iteration, you're about to make the #1 mistake.\n\n### Out-of-Scope Comments\n\nReviewers may leave comments on code outside the PR diff. The `handling-pr-comments` skill handles these, but key points:\n\n- **Treat out-of-scope as IN SCOPE by default** - respect reviewer feedback\n- Use **ultrathink** to evaluate if fixes are quick (\u003C 30 min, \u003C 3 files)\n- If simple: fix immediately and note it was outside original scope\n- If complex: create a GitHub issue and link it in the thread response\n- **Always respond and resolve** - never leave out-of-scope threads hanging\n\n## Phase 5: Waiting for User\n\nWhen user input is needed, ALWAYS:\n\n1. **Present the situation clearly**\n2. **Offer 2-4 options with pros\u002Fcons**\n3. **State your recommendation**\n4. **Allow user to choose OR provide their own approach**\n\n### Template\n\n```text\n[Describe what happened]\n\n**Options:**\n\n1. **[Option name]** (Recommended)\n   - [What it involves]\n   - Pros: [benefits]\n   - Cons: [drawbacks]\n\n2. **[Option name]**\n   - [What it involves]\n   - Pros: [benefits]\n   - Cons: [drawbacks]\n\n3. **[Option name]**\n   - [What it involves]\n   - Pros: [benefits]\n   - Cons: [drawbacks]\n\nWhich approach would you like? (Or describe a different approach)\n```\n\n### After User Responds\n\n- If user picks a numbered option → proceed with that approach → FIXING\n- If user describes alternative → proceed with their approach → FIXING\n\n## Phase 6: Soft Timeout (4 Hours)\n\nAt 4 hours elapsed, pause and checkpoint:\n\n```text\n**PR Shepherd Checkpoint** (4 hours elapsed)\n\nCurrent status:\n- CI: [status]\n- Threads: [X] resolved, [Y] unresolved\n- Commits: [N] fix commits pushed\n\n**Options:**\n\n1. **Keep monitoring** (Recommended)\n   - Continue for another 4 hours\n   - Pros: PR may get reviewed soon\n   - Cons: Ties up agent resources\n\n2. **Exit with handoff**\n   - Save status report, exit cleanly\n   - Pros: Frees resources\n   - Cons: Must manually re-invoke later\n\n3. **Set shorter check-in**\n   - Check back in 1 hour instead of 4\n   - Pros: More frequent checkpoints\n   - Cons: More interruptions\n\nWhat would you like to do? (Or describe a different approach)\n```\n\n## Exit Conditions\n\n### Success (DONE)\n\nExit successfully when ALL are true:\n\n- All CI checks passing\n- **Every single** code review comment has been addressed (fix or explanation -- NONE ignored)\n- All review threads resolved (zero unresolved)\n- No pending questions\n- PR squash-merged to main (not just \"ready to merge\" -- actually merged)\n\nReport:\n\n```text\n**PR #[number] Ready to Merge**\n\n- CI: All checks passing\n- Reviews: All threads resolved\n- Commits: [N] total ([M] fix commits)\n\nThe PR is ready for final approval and merge.\n```\n\n### Post-Completion RAM Cleanup\n\nAfter the PR is merged and knowledge extraction tasks are created, invoke automatic RAM cleanup to free resources:\n\n```text\n\u002Fauto-ram-cleanup\n```\n\n**Why**: Development processes (test runners, build watchers, language servers) accumulate during PR work. Cleaning up after merge frees memory for the next task.\n\n**What stays running**:\n\n- Docker containers (needed for database\u002Fservices)\n- Essential IDE processes\n\n**What gets cleaned**:\n\n- Orphaned test runners (vitest, jest)\n- Build watchers no longer needed\n- Duplicate language server instances\n- Other development tool cruft\n\n## Phase 7: Post-Merge Verification & Fallback Knowledge Extraction\n\n**Primary path**: Self-reflect should have already run pre-PR (see orchestrated-execution section 8.5), with knowledge base changes committed as part of the PR. This phase verifies that happened and handles the fallback case.\n\n**Fallback**: If self-reflect was NOT run pre-PR (e.g., PR was created outside the orchestrated workflow), create a blocking task for knowledge extraction after merge.\n\n### When PR is Merged\n\nAfter detecting that the PR has been merged (or after user merges it):\n\n```bash\n# Check if PR was merged\nMERGED=$(gh pr view $PR_NUMBER --json merged -q .merged)\n\nif [ \"$MERGED\" = \"true\" ]; then\n  # Create a task for knowledge curation\n  # Use your project's task tracking system\n  echo \"Create task: Curate learnings from PR #$PR_NUMBER\"\n\n  # If there's an associated epic, add this task as a blocker\n  # (The epic can't close until learnings are extracted)\nfi\n```\n\n**Note**: Self-reflect (`\u002Fself-reflect`) should have already run BEFORE the PR was created (see orchestrated-execution skill, section 8.5). If it was skipped, run it now as a fallback — but the preferred time is pre-PR while implementation context is freshest.\n\n### Report to User\n\nWhen creating the curation task:\n\n````text\n**PR #[number] Merged Successfully**\n\nCreated blocking task: [CURATION_TASK_ID]\n- Title: \"Curate learnings from PR #[number]\"\n- Status: pending\n- Blocker for: [epic if applicable]\n\nTo extract learnings, invoke:\n```\n\u002Fcurate-pr-learnings [number]\n```\n\nThe command will:\n1. Fetch PR comments (deterministic script)\n2. AI analyzes and extracts learnings (your job)\n3. Store validated learnings (deterministic script)\n\nThen close the task.\n````\n\n### Why This Matters\n\n1. **Security**: Webhook-triggered code execution is an attack surface. CLI\u002Fagent invocation is safer.\n2. **Blocking Task**: The epic can't close until learnings are extracted, ensuring knowledge capture.\n3. **Agent Autonomy**: An agent can pick up the curation task and process it.\n4. **Human Oversight**: Human can also run curation manually via the CLI script.\n\n### For Epic Completions: Extract Conversation Learnings\n\nWhen this PR completes an **epic** (closes the last blocking task), you MUST also extract learnings from conversation history. Feature work often contains the richest architectural discussions.\n\n**Detect epic completion:**\n\n> **Note**: This pattern assumes single-epic workflows. If multiple epics are in-progress,\n> `.[0]` selects the first one, which may not be the epic related to this PR.\n> For multi-epic projects, correlate the PR's task to its blocking epic manually.\n\n```bash\n# Check if this PR closes an epic (assumes single in-progress epic)\n# Use your project's task tracking system to check epic status\n```\n\n**If epic is completing:**\n\n1. Create a task for conversation extraction\n2. Report the task to user:\n\n   ```text\n   **Epic Completion Detected**\n\n   This PR completes the epic. Created conversation extraction task.\n\n   Before closing the epic, extract learnings from conversations.\n   ```\n\n**Why extract from conversations?**\n\n- **Strategic insights**: Architectural decisions, trade-offs discussed\n- **Debugging discoveries**: Root causes found after hours of investigation\n- **Non-obvious behaviors**: \"It turns out that...\" moments\n- **Integration quirks**: API behaviors that caused issues\n\nThese learnings are often NOT in code review comments - they're in the back-and-forth conversation.\n\n### Timeout with Handoff\n\nIf user chooses to exit at checkpoint:\n\n```text\n**PR #[number] Shepherd Handoff**\n\nStatus at exit:\n- CI: [status]\n- Threads: [X] resolved, [Y] unresolved\n- Last activity: [timestamp]\n\nTo resume: `\u002Fpr-shepherd [number]`\n```\n\n## Skills Invoked\n\n| Situation           | Skill                                 |\n| ------------------- | ------------------------------------- |\n| New review comments | `handling-pr-comments`                |\n| Code changes needed | `superpowers:test-driven-development` |\n| Complex debugging   | `superpowers:systematic-debugging`    |\n\n## Mandatory Pre-Completion Check\n\n**BLOCKING: You MUST run this script and show its output before declaring ANY PR ready:**\n\n```bash\nbin\u002Fpr-comments-check.sh \u003CPR_NUMBER>\n```\n\nThis script:\n\n- Returns exit code 0 if all comments addressed\n- Returns exit code 1 if ANY unaddressed comments exist\n- Shows status for each comment\n\n**If the script shows ANY unaddressed comments, you are NOT done.** Address each unaddressed comment:\n\nFor EACH top-level comment (where `in_reply_to_id` is null) without a reply:\n\n1. If actionable → Fix it and reply confirming the fix\n2. If out-of-scope → Reply explaining deferral (create issue if needed)\n3. If disagree → Reply with reasoning\n4. **NEVER ignore silently**\n\nA PR is NOT ready until every top-level comment has been addressed with a reply.\n\n## Verification Checklist\n\nBefore exiting DONE state:\n\n- [ ] All CI checks are green\n- [ ] All review threads are resolved\n- [ ] No pending user questions\n- [ ] Final status reported to user\n\nAfter PR is merged (Phase 7):\n\n- [ ] Created task for knowledge curation\n- [ ] Added task as blocker to epic (if applicable)\n- [ ] Reported curation task ID to user\n- [ ] Verified `\u002Fself-reflect` ran pre-PR (if not, run it now as fallback)\n\nAfter all post-merge tasks complete:\n\n- [ ] Ran `\u002Fauto-ram-cleanup` to free development resources\n- [ ] Confirmed Docker containers still running (if needed)\n\n## Common Mistakes\n\n### #1 MISTAKE: Returning to MONITORING without checking for NEW comments\n\n- After pushing a fix and responding to threads, you MUST run Phase 7\n- Automated reviewers (CodeRabbit, Cursor) analyze every commit\n- NEW comments often appear within 1-2 minutes of your push\n- If you skip Phase 7, you'll miss the new comments and declare complete prematurely\n\n**Pushing without local validation**\n\n- NEVER push code that hasn't passed `pnpm lint && pnpm typecheck && pnpm test --run && pnpm test:coverage`\n\n**Auto-fixing complex issues**\n\n- If uncertain, ASK. Always go through WAITING_FOR_USER for complex issues.\n\n**Forgetting to invoke handling-pr-comments**\n\n- When new comments arrive, delegate to that skill. Don't handle comments inline.\n\n**Not presenting options to user**\n\n- Always give 2-4 options with pros\u002Fcons. Never just ask \"what should I do?\"\n\n**Leaving FIXING state early**\n\n- Stay in FIXING until local validation passes. Don't assume a fix worked.\n\n**Skipping the handling-pr-comments iteration loop**\n\n- The skill has Phases 1-7 with an explicit iteration loop\n- Phase 7 checks for new comments after your fix push\n- If Phase 7 finds new comments, the skill loops back to Phase 1\n- DO NOT exit early - let the skill complete its full iteration\n","# pr-shepherd\n\nUse when a PR has been created and needs to be monitored through to merge - handles CI failures, review comments, and thread resolution automatically until all checks pass and all threads are resolved.\n\n**IMPORTANT**: This skill is designed for the **agent working in a worktree**, NOT the orchestrator. The agent handles its own PR monitoring so the orchestrator remains free for other work.\n\n## Coordination Mode Note\n\nThis skill supports both coordination modes:\n\n- **Task Mode** (default): Runs as a single long-running `Task()` with `run_in_background: true`. Orchestrator checks via `TaskOutput(block: false)`.\n- **Team Mode**: Runs as a persistent `shepherd` teammate in the `issue-{number}` team. Sends async status updates via `SendMessage` (CI failure, review comments, all-green, PR merged). Orchestrator can respond with instructions (e.g., \"defer that comment, create an issue instead\"). Responds to `shutdown_request` for graceful exit.\n\nAll monitoring, fixing, and review handling logic is identical in both modes. See `.\u002Fguides\u002Fagent-coordination.md` for mode detection.\n\n---\n\n## When to Activate\n\nActivate this skill when ANY of these conditions are true:\n\n- Agent just created a PR with `gh pr create`\n- User asks to \"shepherd\", \"monitor\", or \"see through\" a PR\n- User invokes `\u002Fpr-shepherd \u003Cpr-number>`\n- User asks to \"watch this PR\" or \"handle this PR until it's merged\"\n- Orchestrator spawned you with instructions to shepherd a PR\n- **Automatic**: `bin\u002Fcreate-pr-with-shepherd.sh` was used (outputs shepherd instructions)\n\n### Automatic Activation via Wrapper Script\n\nWhen `bin\u002Fcreate-pr-with-shepherd.sh` creates a PR, it outputs shepherd instructions:\n\n```text\n==========================================\n  PR Shepherd Active for PR #123\n==========================================\n\nThe pr-shepherd skill will:\n  - Monitor CI\u002FCD status\n  - Auto-fix lint, type, and test issues\n  - Handle review comments\n  - Resolve threads after addressing feedback\n  - Report when PR is ready to merge\n\nTo manually invoke shepherd later:\n  \u002Fpr-shepherd 123\n```\n\nWhen you see this output, **immediately invoke the pr-shepherd skill** with the PR number shown.\n\n## Announce at Start\n\n\"I'm using the pr-shepherd skill to monitor this PR through to merge. I'll watch CI\u002FCD, handle review comments, and fix issues as they arise.\"\n\n## For Orchestrators: Spawning Agents with PR Shepherding\n\nWhen spawning an agent to work in a worktree, include PR shepherding in the task prompt:\n\n```text\nWork in worktree at \u002Fpath\u002Fto\u002Fworktree on branch feature\u002Fxyz.\n\nTask: [describe the implementation task]\n\nAfter creating the PR:\n1. Use the pr-shepherd skill to monitor it through to merge\n2. Handle CI failures and review comments autonomously\n3. Only escalate to orchestrator for complex issues requiring user input\n4. Report back when PR is ready to merge or if blocked\n\nRun in background so I can continue other work.\n```\n\n**Key principle**: The agent owns its PR lifecycle. The orchestrator spawns and forgets, checking back via `AgentOutputTool` when needed.\n\n## State Machine\n\nThe agent operates in one of these states:\n\n```text\nMONITORING → FIXING → MONITORING → WAITING_FOR_USER → FIXING → MONITORING → DONE\n```\n\n| State              | What Happens                                | Exit When                                      |\n| ------------------ | ------------------------------------------- | ---------------------------------------------- |\n| `MONITORING`       | Poll CI and reviews every 60s in background | CI fails, new comments, all done, or need help |\n| `FIXING`           | Fix issues using TDD, run local validation  | Local validation passes OR need user guidance  |\n| `HANDLING_REVIEWS` | Invoke `handling-pr-comments` skill         | Comments handled OR need user input            |\n| `WAITING_FOR_USER` | Present options, wait for user decision     | User responds                                  |\n| `DONE`             | All CI green + all threads resolved         | Exit successfully                              |\n\n## Phase 1: Initialize\n\n```bash\n# Get PR info\nPR_NUMBER=$(gh pr view --json number -q .number 2>\u002Fdev\u002Fnull)\nOWNER=$(gh repo view --json owner -q .owner.login)\nREPO=$(gh repo view --json name -q .name)\n\n# If no PR on current branch, check if number was provided\nif [ -z \"$PR_NUMBER\" ]; then\n  echo \"No PR found for current branch. Provide PR number.\"\n  exit 1\nfi\n\necho \"Shepherding PR #$PR_NUMBER\"\n```\n\n## Phase 2: Monitoring Loop (Background)\n\nRun GTG every 60 seconds as the **single source of truth** for PR readiness:\n\n### Primary Check: GTG (Good-To-Go)\n\nGTG consolidates CI status, comment classification, and thread resolution into one call. Use it instead of separate API queries.\n\n```bash\n# Primary readiness check — structured JSON output\nGTG_RESULT=$(gtg $PR_NUMBER --repo \"$OWNER\u002F$REPO\" --format json \\\n  --exclude-checks \"Merge Ready (gtg)\" \\\n  --exclude-checks \"CodeRabbit\" \\\n  --exclude-checks \"Cursor Bugbot\" \\\n  --exclude-checks \"claude\" 2>&1)\n\nSTATUS=$(echo \"$GTG_RESULT\" | jq -r '.status')\nACTION_ITEMS=$(echo \"$GTG_RESULT\" | jq -r '.action_items[]?' 2>\u002Fdev\u002Fnull)\nCI_STATE=$(echo \"$GTG_RESULT\" | jq -r '.ci_status.state')\n```\n\n**GTG statuses:**\n\n| Status               | Meaning                            | Agent Action                              |\n| -------------------- | ---------------------------------- | ----------------------------------------- |\n| `READY`              | All CI green, all threads resolved | → DONE                                    |\n| `ACTION_REQUIRED`    | Actionable comments need fixes     | → HANDLING_REVIEWS (use `action_items`)   |\n| `UNRESOLVED_THREADS` | Review threads still open          | → HANDLING_REVIEWS                        |\n| `CI_FAILING`         | One or more CI checks failing      | → FIXING                                  |\n| `ERROR`              | Couldn't fetch PR data             | Retry after 60s, escalate after 3 retries |\n\n**GTG reports, agents act**: GTG does not resolve threads or fix code — it only tells you what's blocking. After addressing feedback, you must resolve threads yourself using the GraphQL mutation in `handle-pr-comments.md` (Section 3). GTG will report `READY` on the next poll once threads are resolved.\n\n### Evaluate State Transitions\n\n```text\nif STATUS == \"READY\":\n  → DONE\n\nif STATUS == \"CI_FAILING\":\n  → Parse action_items for specific failures\n  → if is_simple_failure(failure): FIXING\n  → else: WAITING_FOR_USER\n\nif STATUS == \"ACTION_REQUIRED\" or STATUS == \"UNRESOLVED_THREADS\":\n  → HANDLING_REVIEWS (action_items tells you exactly what to fix)\n\nif STATUS == \"ERROR\":\n  → Retry, then escalate\n```\n\n### Fallback: Manual Checks\n\nIf GTG is unavailable (e.g., not installed in environment), fall back to manual queries:\n\n```bash\n# CI status\nFAILED_CHECKS=$(gh pr checks $PR_NUMBER --json name,conclusion --jq '[.[] | select(.conclusion == \"FAILURE\")] | length')\n\n# Unresolved threads\nUNRESOLVED=$(gh api graphql -f query='\n  query($owner: String!, $repo: String!, $pr: Int!) {\n    repository(owner: $owner, name: $repo) {\n      pullRequest(number: $pr) {\n        reviewThreads(first: 100) {\n          nodes { isResolved }\n        }\n      }\n    }\n  }\n' -f owner=\"$OWNER\" -f repo=\"$REPO\" -F pr=\"$PR_NUMBER\" \\\n  --jq '[.data.repository.pullRequest.reviewThreads.nodes[] | select(.isResolved == false)] | length')\n```\n\n### Re-triggering GTG CI Check\n\nWhen threads are resolved but the `Merge Ready (gtg)` GitHub Actions check is stale:\n\n```bash\ngh workflow run gtg.yml -f pr_number=$PR_NUMBER\n```\n\n## Phase 3: Fixing Issues\n\n### Simple Issues (Auto-fix)\n\nThese can be fixed without user approval:\n\n- Lint failures → run linter\n- Prettier failures → run formatter\n- Type errors → fix the types\n- Test failures in code YOU wrote → fix using TDD\n\n### Complex Issues (Need Approval)\n\nThese require user input BEFORE fixing:\n\n- Test failures in code you didn't write\n- Infrastructure\u002Fconfig failures\n- Ambiguous errors\n- Anything you're uncertain about\n\n### FIXING State Rules\n\n1. **Use TDD** - Invoke `superpowers:test-driven-development` for code changes\n2. **Kill stale test runners** - Run `pkill -f vitest 2>\u002Fdev\u002Fnull || true` before test runs\n3. **Stay until green** - Don't leave FIXING until `pnpm lint && pnpm typecheck && pnpm test --run && pnpm test:coverage` all pass\n4. **Only push when verified** - Never push code that fails local validation or coverage thresholds\n5. **Return to MONITORING after push** - Let CI run, continue monitoring\n\n```bash\n# Kill stale vitest processes before running tests\npkill -f vitest 2>\u002Fdev\u002Fnull || true\n\n# After fixing, always validate locally (including coverage)\npnpm lint && pnpm typecheck && pnpm test --run && pnpm test:coverage\n\n# Only push if all pass (including coverage thresholds)\ngit add -A && git commit -m \"fix: \u003Cdescription>\" && git push\n```\n\n## Phase 4: Handling Reviews\n\nWhen new review comments are detected:\n\n1. Invoke the `handling-pr-comments` skill\n2. That skill handles categorization, fixes, responses, and thread resolution\n3. **CRITICAL: The handling-pr-comments skill includes an iteration loop**\n4. **ALL threads must be resolved** before returning to MONITORING\n5. If a thread cannot be resolved (needs clarification from reviewer), query the comment author asking for follow-up\n6. Return to MONITORING only when:\n   - All threads are resolved, AND\n   - Post-push verification confirms NO new comments appeared\n\n### Iteration Enforcement\n\n**THE #1 FAILURE MODE**: Returning to MONITORING after one pass without checking for new comments.\n\nThe `handling-pr-comments` skill's Phase 7 (Post-Push Iteration Check) MUST complete successfully before exiting HANDLING_REVIEWS state. The skill will iterate automatically:\n\n```text\nHANDLING_REVIEWS:\n  → handling-pr-comments skill (Phases 1-7)\n  → IF Phase 7 finds new comments: skill re-runs Phases 1-7\n  → IF Phase 7 confirms no new comments: exit to MONITORING\n```\n\n**DO NOT** manually override or skip Phase 7. If you find yourself tempted to skip iteration, you're about to make the #1 mistake.\n\n### Out-of-Scope Comments\n\nReviewers may leave comments on code outside the PR diff. The `handling-pr-comments` skill handles these, but key points:\n\n- **Treat out-of-scope as IN SCOPE by default** - respect reviewer feedback\n- Use **ultrathink** to evaluate if fixes are quick (\u003C 30 min, \u003C 3 files)\n- If simple: fix immediately and note it was outside original scope\n- If complex: create a GitHub issue and link it in the thread response\n- **Always respond and resolve** - never leave out-of-scope threads hanging\n\n## Phase 5: Waiting for User\n\nWhen user input is needed, ALWAYS:\n\n1. **Present the situation clearly**\n2. **Offer 2-4 options with pros\u002Fcons**\n3. **State your recommendation**\n4. **Allow user to choose OR provide their own approach**\n\n### Template\n\n```text\n[Describe what happened]\n\n**Options:**\n\n1. **[Option name]** (Recommended)\n   - [What it involves]\n   - Pros: [benefits]\n   - Cons: [drawbacks]\n\n2. **[Option name]**\n   - [What it involves]\n   - Pros: [benefits]\n   - Cons: [drawbacks]\n\n3. **[Option name]**\n   - [What it involves]\n   - Pros: [benefits]\n   - Cons: [drawbacks]\n\nWhich approach would you like? (Or describe a different approach)\n```\n\n### After User Responds\n\n- If user picks a numbered option → proceed with that approach → FIXING\n- If user describes alternative → proceed with their approach → FIXING\n\n## Phase 6: Soft Timeout (4 Hours)\n\nAt 4 hours elapsed, pause and checkpoint:\n\n```text\n**PR Shepherd Checkpoint** (4 hours elapsed)\n\nCurrent status:\n- CI: [status]\n- Threads: [X] resolved, [Y] unresolved\n- Commits: [N] fix commits pushed\n\n**Options:**\n\n1. **Keep monitoring** (Recommended)\n   - Continue for another 4 hours\n   - Pros: PR may get reviewed soon\n   - Cons: Ties up agent resources\n\n2. **Exit with handoff**\n   - Save status report, exit cleanly\n   - Pros: Frees resources\n   - Cons: Must manually re-invoke later\n\n3. **Set shorter check-in**\n   - Check back in 1 hour instead of 4\n   - Pros: More frequent checkpoints\n   - Cons: More interruptions\n\nWhat would you like to do? (Or describe a different approach)\n```\n\n## Exit Conditions\n\n### Success (DONE)\n\nExit successfully when ALL are true:\n\n- All CI checks passing\n- **Every single** code review comment has been addressed (fix or explanation -- NONE ignored)\n- All review threads resolved (zero unresolved)\n- No pending questions\n- PR squash-merged to main (not just \"ready to merge\" -- actually merged)\n\nReport:\n\n```text\n**PR #[number] Ready to Merge**\n\n- CI: All checks passing\n- Reviews: All threads resolved\n- Commits: [N] total ([M] fix commits)\n\nThe PR is ready for final approval and merge.\n```\n\n### Post-Completion RAM Cleanup\n\nAfter the PR is merged and knowledge extraction tasks are created, invoke automatic RAM cleanup to free resources:\n\n```text\n\u002Fauto-ram-cleanup\n```\n\n**Why**: Development processes (test runners, build watchers, language servers) accumulate during PR work. Cleaning up after merge frees memory for the next task.\n\n**What stays running**:\n\n- Docker containers (needed for database\u002Fservices)\n- Essential IDE processes\n\n**What gets cleaned**:\n\n- Orphaned test runners (vitest, jest)\n- Build watchers no longer needed\n- Duplicate language server instances\n- Other development tool cruft\n\n## Phase 7: Post-Merge Verification & Fallback Knowledge Extraction\n\n**Primary path**: Self-reflect should have already run pre-PR (see orchestrated-execution section 8.5), with knowledge base changes committed as part of the PR. This phase verifies that happened and handles the fallback case.\n\n**Fallback**: If self-reflect was NOT run pre-PR (e.g., PR was created outside the orchestrated workflow), create a blocking task for knowledge extraction after merge.\n\n### When PR is Merged\n\nAfter detecting that the PR has been merged (or after user merges it):\n\n```bash\n# Check if PR was merged\nMERGED=$(gh pr view $PR_NUMBER --json merged -q .merged)\n\nif [ \"$MERGED\" = \"true\" ]; then\n  # Create a task for knowledge curation\n  # Use your project's task tracking system\n  echo \"Create task: Curate learnings from PR #$PR_NUMBER\"\n\n  # If there's an associated epic, add this task as a blocker\n  # (The epic can't close until learnings are extracted)\nfi\n```\n\n**Note**: Self-reflect (`\u002Fself-reflect`) should have already run BEFORE the PR was created (see orchestrated-execution skill, section 8.5). If it was skipped, run it now as a fallback — but the preferred time is pre-PR while implementation context is freshest.\n\n### Report to User\n\nWhen creating the curation task:\n\n````text\n**PR #[number] Merged Successfully**\n\nCreated blocking task: [CURATION_TASK_ID]\n- Title: \"Curate learnings from PR #[number]\"\n- Status: pending\n- Blocker for: [epic if applicable]\n\nTo extract learnings, invoke:\n```\n\u002Fcurate-pr-learnings [number]\n```\n\nThe command will:\n1. Fetch PR comments (deterministic script)\n2. AI analyzes and extracts learnings (your job)\n3. Store validated learnings (deterministic script)\n\nThen close the task.\n````\n\n### Why This Matters\n\n1. **Security**: Webhook-triggered code execution is an attack surface. CLI\u002Fagent invocation is safer.\n2. **Blocking Task**: The epic can't close until learnings are extracted, ensuring knowledge capture.\n3. **Agent Autonomy**: An agent can pick up the curation task and process it.\n4. **Human Oversight**: Human can also run curation manually via the CLI script.\n\n### For Epic Completions: Extract Conversation Learnings\n\nWhen this PR completes an **epic** (closes the last blocking task), you MUST also extract learnings from conversation history. Feature work often contains the richest architectural discussions.\n\n**Detect epic completion:**\n\n> **Note**: This pattern assumes single-epic workflows. If multiple epics are in-progress,\n> `.[0]` selects the first one, which may not be the epic related to this PR.\n> For multi-epic projects, correlate the PR's task to its blocking epic manually.\n\n```bash\n# Check if this PR closes an epic (assumes single in-progress epic)\n# Use your project's task tracking system to check epic status\n```\n\n**If epic is completing:**\n\n1. Create a task for conversation extraction\n2. Report the task to user:\n\n   ```text\n   **Epic Completion Detected**\n\n   This PR completes the epic. Created conversation extraction task.\n\n   Before closing the epic, extract learnings from conversations.\n   ```\n\n**Why extract from conversations?**\n\n- **Strategic insights**: Architectural decisions, trade-offs discussed\n- **Debugging discoveries**: Root causes found after hours of investigation\n- **Non-obvious behaviors**: \"It turns out that...\" moments\n- **Integration quirks**: API behaviors that caused issues\n\nThese learnings are often NOT in code review comments - they're in the back-and-forth conversation.\n\n### Timeout with Handoff\n\nIf user chooses to exit at checkpoint:\n\n```text\n**PR #[number] Shepherd Handoff**\n\nStatus at exit:\n- CI: [status]\n- Threads: [X] resolved, [Y] unresolved\n- Last activity: [timestamp]\n\nTo resume: `\u002Fpr-shepherd [number]`\n```\n\n## Skills Invoked\n\n| Situation           | Skill                                 |\n| ------------------- | ------------------------------------- |\n| New review comments | `handling-pr-comments`                |\n| Code changes needed | `superpowers:test-driven-development` |\n| Complex debugging   | `superpowers:systematic-debugging`    |\n\n## Mandatory Pre-Completion Check\n\n**BLOCKING: You MUST run this script and show its output before declaring ANY PR ready:**\n\n```bash\nbin\u002Fpr-comments-check.sh \u003CPR_NUMBER>\n```\n\nThis script:\n\n- Returns exit code 0 if all comments addressed\n- Returns exit code 1 if ANY unaddressed comments exist\n- Shows status for each comment\n\n**If the script shows ANY unaddressed comments, you are NOT done.** Address each unaddressed comment:\n\nFor EACH top-level comment (where `in_reply_to_id` is null) without a reply:\n\n1. If actionable → Fix it and reply confirming the fix\n2. If out-of-scope → Reply explaining deferral (create issue if needed)\n3. If disagree → Reply with reasoning\n4. **NEVER ignore silently**\n\nA PR is NOT ready until every top-level comment has been addressed with a reply.\n\n## Verification Checklist\n\nBefore exiting DONE state:\n\n- [ ] All CI checks are green\n- [ ] All review threads are resolved\n- [ ] No pending user questions\n- [ ] Final status reported to user\n\nAfter PR is merged (Phase 7):\n\n- [ ] Created task for knowledge curation\n- [ ] Added task as blocker to epic (if applicable)\n- [ ] Reported curation task ID to user\n- [ ] Verified `\u002Fself-reflect` ran pre-PR (if not, run it now as fallback)\n\nAfter all post-merge tasks complete:\n\n- [ ] Ran `\u002Fauto-ram-cleanup` to free development resources\n- [ ] Confirmed Docker containers still running (if needed)\n\n## Common Mistakes\n\n### #1 MISTAKE: Returning to MONITORING without checking for NEW comments\n\n- After pushing a fix and responding to threads, you MUST run Phase 7\n- Automated reviewers (CodeRabbit, Cursor) analyze every commit\n- NEW comments often appear within 1-2 minutes of your push\n- If you skip Phase 7, you'll miss the new comments and declare complete prematurely\n\n**Pushing without local validation**\n\n- NEVER push code that hasn't passed `pnpm lint && pnpm typecheck && pnpm test --run && pnpm test:coverage`\n\n**Auto-fixing complex issues**\n\n- If uncertain, ASK. Always go through WAITING_FOR_USER for complex issues.\n\n**Forgetting to invoke handling-pr-comments**\n\n- When new comments arrive, delegate to that skill. Don't handle comments inline.\n\n**Not presenting options to user**\n\n- Always give 2-4 options with pros\u002Fcons. Never just ask \"what should I do?\"\n\n**Leaving FIXING state early**\n\n- Stay in FIXING until local validation passes. Don't assume a fix worked.\n\n**Skipping the handling-pr-comments iteration loop**\n\n- The skill has Phases 1-7 with an explicit iteration loop\n- Phase 7 checks for new comments after your fix push\n- If Phase 7 finds new comments, the skill loops back to Phase 1\n- DO NOT exit early - let the skill complete its full iteration\n",{"name":5,"description":7},"main","a298c929b6cbd662e1fce54302ce520d5ceea1a5","tools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fpr-shepherd","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain","https:\u002F\u002Fgithub.com\u002FPrekzursil","2026-11-02 14:30:57",{"source":8,"skillName":5,"commands":39,"prompt":49,"zipAvailable":50},[40,43,46],{"tool":41,"command":42},"npx","npx skills add Prekzursil\u002Fagent-skills-toolchain --skill pr-shepherd",{"tool":44,"command":45},"bunx","bunx skills add Prekzursil\u002Fagent-skills-toolchain --skill pr-shepherd",{"tool":47,"command":48},"pnpm","pnpm dlx skills add Prekzursil\u002Fagent-skills-toolchain --skill pr-shepherd","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fpr-shepherd\u002FSKILL.md",true,[52],{"path":53,"resourceType":54,"resourceTypeDesc":55,"sizeBytes":56,"sourceHtmlUrl":57},"guides\u002Fagent-coordination.md","REFERENCE","参考文档",13952,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fpr-shepherd\u002Fguides\u002Fagent-coordination.md",[59,81,112,138,152,168],{"skillNo":60,"name":61,"nameZh":6,"description":62,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":63,"categories":64,"keywords":65,"publishedAt":27},"01M6DF7D7478R55P46REYH4QAC","clarify-requirements","Resolve genuine pre-execution ambiguity by scanning repo context, generating 1-6 grounded options, and asking 1-3 focused questions via AskUserQuestion. NOT for mid-task use (injection risk); NOT when the goal is already unambiguous; use to disambiguate vague prompts before any file edits.","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Fworkspace-hooks\u002Fskills\u002Fclarify-requirements\u002FSKILL.md",[],[66,67,68,69,70,71,72,73,74,75,76,77,78,79,80],"clarify requirements","clarify","requirements","risk","options","task","prompts","goal","scanning","use","context","repo","injection","execution","file",{"skillNo":82,"name":83,"nameZh":6,"description":84,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":92,"publishedAt":27},"01M6DF79CA4BHJS66J8EZDBPWJ","openmm-md","Run FREE, open-source, Windows-native GPU molecular dynamics via the openmm-md MCP (OpenMM + CUDA on the local NVIDIA GPU). Use for protein \u002F protein-ligand MD when you want a free stack or are on Windows without a Schrodinger license. Covers the full workflow (prepare, solvate, minimize, equilibrate, production, analyze, mmgbsa) AND an honest decision guide vs Schrodinger Desmond, including how to run Desmond legitimately on Linux or a cloud GPU with a real license. This is a deliberately LESSER free alternative and does NOT replace the schrodinger MCP tools. Do NOT use it to pick a free tool when a validated FEP+, WaterMap, IFD-MD, or Prime MM-GBSA result is actually required.","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Fmcp\u002Fopenmm-md-mcp\u002Fskill\u002Fopenmm-md\u002FSKILL.md",[87],{"categoryNo":88,"categoryName":89,"taxonomyType":90,"taxonomyTypeDesc":91},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[93,94,95,96,97,98,99,100,101,102,103,104,105,106,75,107,108,109,110,111],"openmm md","how","decision","pick","linux","analyze","tool","stack","open","NVIDIA","gpu","license","workflow","windows","free","molecular dynamics","local","do","MCP",{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":124,"publishedAt":27},"01M6DF76C1MG85VEWP8VZCBNMN","visual-review","Take screenshots of web pages and UI using Playwright for visual review and iteration","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fvisual-review\u002FSKILL.md",[118,121],{"categoryNo":119,"categoryName":120,"taxonomyType":90,"taxonomyTypeDesc":91},"01JBSEEDCAT000000000000003","演示文稿",{"categoryNo":122,"categoryName":123,"taxonomyType":90,"taxonomyTypeDesc":91},"01JBSEEDCAT000000000000008","测试与质量",[22,125,126,127,128,129,130,131,132,133,94,134,135,136,137],"visual","visual review","pages","web","false","iteration","take","check","slides","ui","screenshot","playwright","screenshots",{"skillNo":139,"name":140,"nameZh":6,"description":141,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":142,"categories":143,"keywords":144,"publishedAt":27},"01M6DF73AQVCBZKEN0YXEX9FXP","status","Diagnostic status report — shows metaswarm installation state, project setup, and potential issues","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fstatus\u002FSKILL.md",[],[140,145,146,147,148,149,150,151],"setup","report","project","installation","project setup","issues","state",{"skillNo":153,"name":154,"nameZh":6,"description":155,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":156,"categories":157,"keywords":159,"publishedAt":27},"01M6DF6X6C2XB0P6GX76P7TTYV","start","Use when starting work on any task, when the user mentions metaswarm, or when the user wants to begin tracked development work","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fstart\u002FSKILL.md",[158],{"categoryNo":88,"categoryName":89,"taxonomyType":90,"taxonomyTypeDesc":91},[154,160,71,161,162,163,75,164,165,166,167],"start issue","issue","ready","work on issue","user","work","work on","development",{"skillNo":169,"name":145,"nameZh":6,"description":170,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":171,"categories":172,"keywords":173,"publishedAt":27},"01M6DF6QMJ9AJKFKHHKRT005PQ","Interactive project setup — detects your project, configures metaswarm, writes project-local files","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002FSKILL.md",[],[145,147,109,174,149,175],"files","interactive"]