[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7DF478F1SWVDP9Z2JEP9B48":3,"skill-same:01M7DF478F1SWVDP9Z2JEP9B48":45},{"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":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":25,"commitSha":26,"skillDirectory":27,"forksCount":14,"repositoryHtmlUrl":28,"repositoryHomepageUrl":6,"ownerHtmlUrl":29,"ownerBlogUrl":6,"ownerDescription":30,"updatedAt":31,"install":32,"resources":44},"01M7DF478F1SWVDP9Z2JEP9B48","parallel-orchestrate",null,"Experimental. Work through an Epic's tickets from \u002Fparallel-to-tickets, running tickets that don't contend in parallel sub-agents, and merging each PR once its checks pass and a duplication check clears it.","xKirtle\u002Fbandmate","xKirtle","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F30240961?v=4","01M7DF0WQ1178G9040V2M2HRDY","Rodrigo Martins","01M7DF0WQQTHX2HQ1QAD92B0WE",0,"AGPL-3.0","https:\u002F\u002Fgithub.com\u002FxKirtle\u002Fbandmate\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fparallel-orchestrate\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: parallel-orchestrate\ndescription: Experimental. Work through an Epic's tickets from \u002Fparallel-to-tickets, running tickets that don't contend in parallel sub-agents, and merging each PR once its checks pass and a duplication check clears it.\ndisable-model-invocation: true\n---\n\nIf a `gh` command fails with `HTTP 403: GitHub GraphQL is not available`, use its `gh api` (REST) equivalent from `docs\u002Fagents\u002Fissue-tracker.md` instead.\n\nThe argument is one Epic: a parent issue labelled `epic`, with an impact map, as `\u002Fparallel-to-tickets` writes it. Other instructions may follow it. Up to **2** tickets run at once, unless the user sets another limit. Run one Epic at a time, because an Epic's map only knows about its own tickets.\n\nYou are the orchestrator: you schedule, relay and merge, and the sub-agents implement. The impact map is your only source for scheduling, and you never plan beyond it.\n\nKeep the user's dev stack on `main` at http:\u002F\u002Flocalhost:5173 as the `orchestrate` skill's \"Dev servers\" section says (`.claude\u002Fskills\u002Forchestrate\u002FSKILL.md`): start it before the first sub-agent, and refresh it after every merge.\n\n## Reading the map\n\n- A ticket is **done** once its issue is closed. Rows for closed tickets stay in the map as history.\n- Two open tickets **contend** when their Changes share a module and neither blocks the other, directly or through others.\n- An open sub-issue of the Epic with no row in the map contends with every ticket, so it runs alone.\n- Read the map again every time you schedule, because the user may add tickets mid-run with `\u002Fparallel-to-tickets`.\n\n## Schedule\n\nA ticket is **ready** when it's open, all its blockers are done, and none of its contenders is running. Whenever a slot is free, start ready tickets in map order until the limit is reached.\n\nA running ticket holds a **lease** on the modules in its Changes until its PR merges.\n\nIf nothing is running and nothing is ready but open tickets remain, the map is inconsistent: there's a cycle, or a blocker that will never close. Stop and tell the user.\n\n## Per ticket\n\n1. Spawn a background sub-agent with `isolation: \"worktree\"` and the brief below. Fill in its lease note from the leases held right now.\n2. Handle a hand-back that asks a question:\n   - **An ambiguity:** relay it to the user. The ticket keeps its slot and leases while it waits, and the other agents carry on.\n   - **A lease conflict:** the agent needs a module leased to another running agent. The ticket goes back to waiting and gives up its slot. Once that lease is released, resume the same agent with SendMessage: tell it to rebase onto `origin\u002Fmain` and carry on. If two agents each wait on the other, stop and ask the user.\n3. When it hands back with a PR, pass the gate in order:\n   1. **Current:** if `main` has moved since the branch was cut, send the agent back to rebase onto `origin\u002Fmain` and force-push with lease. It resolves any conflicts itself, using the `resolving-merge-conflicts` skill. If its intent clashes with a merged sibling's, it stops and you ask the user.\n   2. **Green:** watch the checks with `gh pr checks \u003CPR> --watch` in the background. If they go red, send the failure to the same agent.\n   3. **No duplication:** spawn a fresh read-only agent to compare the PR's diff with every PR merged since its branch was cut. It looks for a piece that reimplements something now on `main`, or two new pieces that do one job. Keep only its verdict. If it finds anything, send the findings to the implementing agent to consolidate onto the existing piece, then run the gate again from step 1.\n   4. **Merge** with the repo's merge method, or a merge commit if nothing says otherwise. If the branch requires an approving review, add `--admin`: every agent's `gh` is the PR's author, and GitHub never counts an author's own approval. The gate above already stands in for review. Close the ticket's issue with `gh issue close \u003CN> --comment \"Fixed by #\u003CPR>.\"`, because GitHub doesn't close it from a PR merged this way. Release the ticket's leases, remove its worktree and local branch, and refresh the dev stack. If the agent reported modules or shared pieces its row didn't list, add them to the row. Tell the user in one line: the PR link, what it did, and that the stack is refreshed.\n4. A slot and some leases are now free, so schedule again.\n\nOnce every ticket in the map is done, close the Epic with `gh issue close \u003CE>`, then give the user a summary: each ticket, its PR, and anything that needed their input.\n\n## Sub-agent brief\n\nFill in `\u003CN>`, the Epic, the repo, the lease note and the ports. Add any environment gotchas from your memory that the agent can't find in the repo, such as how pushing works here. Give each running agent its own dev-server ports, other than the stack's :8080 and :5173, because agents sharing ports collide.\n\n```\nYou are implementing GitHub issue #\u003CN> in \u003Cowner\u002Frepo>, part of Epic #\u003CE>. You are in your own git worktree; other agents are working on other tickets of the Epic at the same time in theirs. Before starting, read AGENTS.md \u002F CLAUDE.md and the docs they point to. If a `gh` command fails with `HTTP 403: GitHub GraphQL is not available`, use its `gh api` equivalent from `docs\u002Fagents\u002Fissue-tracker.md`.\n\nLeases: these modules are being changed by other agents right now: \u003Cmodule (#ticket), ...>. If your work needs to change one of them, stop and hand back, naming the module and why.\n\nDev servers: if you run any, use ports \u003Cports>.\n\n1. Read the issue and its comments (`gh issue view \u003CN> --comments`), then Epic #\u003CE>'s Notes and your ticket's row in its impact map. The row says what you're expected to change, create and use. Pieces listed under \"Uses\" already exist on main, so build on them.\n2. Branch from the latest origin\u002Fmain: `git fetch origin && git switch -c \u003Cprefix>\u002F\u003CN>-\u003Cslug> origin\u002Fmain`, using the repo's branch naming. Install dependencies if the worktree has none.\n3. Read `.claude\u002Fskills\u002Fimplement\u002FSKILL.md` and follow it fully for issue #\u003CN>, including its code review. Fix what the review finds. Invoke the skills it names (such as `tdd` and `code-review`) with the Skill tool. Where your change alters what the docs site describes (the wiki, from `docs\u002Fweb\u002F`), update it there and build it as CONTRIBUTING says.\n4. If the issue's wording is ambiguous, or conflicts with the domain docs or the existing code, stop and hand back. Give the exact ambiguity, the options, your recommendation, and what is committed or pushed so far. Everything the issue states clearly, carry on with.\n5. Push the branch. Open a PR against main with `gh pr create`, write its body with the `pr` skill, and have it close the issue.\n6. Tick the acceptance criteria your PR fulfils. Edit the issue body with `gh issue edit \u003CN> --body-file`, keeping the temp file outside the repo. Change only those `- [ ]` to `- [x]`.\n7. Leave the PR unmerged. The orchestrator merges it.\n\nFinal report: the branch, the PR URL, a summary of the changes, the check results (paste the actual output), which acceptance criteria you ticked and which you left unticked (with reasons), any review findings you didn't fix and why, what you changed on the docs site (or why nothing needed it), and any module you changed or shared piece you created that your row didn't list.\n```\n","If a `gh` command fails with `HTTP 403: GitHub GraphQL is not available`, use its `gh api` (REST) equivalent from `docs\u002Fagents\u002Fissue-tracker.md` instead.\n\nThe argument is one Epic: a parent issue labelled `epic`, with an impact map, as `\u002Fparallel-to-tickets` writes it. Other instructions may follow it. Up to **2** tickets run at once, unless the user sets another limit. Run one Epic at a time, because an Epic's map only knows about its own tickets.\n\nYou are the orchestrator: you schedule, relay and merge, and the sub-agents implement. The impact map is your only source for scheduling, and you never plan beyond it.\n\nKeep the user's dev stack on `main` at http:\u002F\u002Flocalhost:5173 as the `orchestrate` skill's \"Dev servers\" section says (`.claude\u002Fskills\u002Forchestrate\u002FSKILL.md`): start it before the first sub-agent, and refresh it after every merge.\n\n## Reading the map\n\n- A ticket is **done** once its issue is closed. Rows for closed tickets stay in the map as history.\n- Two open tickets **contend** when their Changes share a module and neither blocks the other, directly or through others.\n- An open sub-issue of the Epic with no row in the map contends with every ticket, so it runs alone.\n- Read the map again every time you schedule, because the user may add tickets mid-run with `\u002Fparallel-to-tickets`.\n\n## Schedule\n\nA ticket is **ready** when it's open, all its blockers are done, and none of its contenders is running. Whenever a slot is free, start ready tickets in map order until the limit is reached.\n\nA running ticket holds a **lease** on the modules in its Changes until its PR merges.\n\nIf nothing is running and nothing is ready but open tickets remain, the map is inconsistent: there's a cycle, or a blocker that will never close. Stop and tell the user.\n\n## Per ticket\n\n1. Spawn a background sub-agent with `isolation: \"worktree\"` and the brief below. Fill in its lease note from the leases held right now.\n2. Handle a hand-back that asks a question:\n   - **An ambiguity:** relay it to the user. The ticket keeps its slot and leases while it waits, and the other agents carry on.\n   - **A lease conflict:** the agent needs a module leased to another running agent. The ticket goes back to waiting and gives up its slot. Once that lease is released, resume the same agent with SendMessage: tell it to rebase onto `origin\u002Fmain` and carry on. If two agents each wait on the other, stop and ask the user.\n3. When it hands back with a PR, pass the gate in order:\n   1. **Current:** if `main` has moved since the branch was cut, send the agent back to rebase onto `origin\u002Fmain` and force-push with lease. It resolves any conflicts itself, using the `resolving-merge-conflicts` skill. If its intent clashes with a merged sibling's, it stops and you ask the user.\n   2. **Green:** watch the checks with `gh pr checks \u003CPR> --watch` in the background. If they go red, send the failure to the same agent.\n   3. **No duplication:** spawn a fresh read-only agent to compare the PR's diff with every PR merged since its branch was cut. It looks for a piece that reimplements something now on `main`, or two new pieces that do one job. Keep only its verdict. If it finds anything, send the findings to the implementing agent to consolidate onto the existing piece, then run the gate again from step 1.\n   4. **Merge** with the repo's merge method, or a merge commit if nothing says otherwise. If the branch requires an approving review, add `--admin`: every agent's `gh` is the PR's author, and GitHub never counts an author's own approval. The gate above already stands in for review. Close the ticket's issue with `gh issue close \u003CN> --comment \"Fixed by #\u003CPR>.\"`, because GitHub doesn't close it from a PR merged this way. Release the ticket's leases, remove its worktree and local branch, and refresh the dev stack. If the agent reported modules or shared pieces its row didn't list, add them to the row. Tell the user in one line: the PR link, what it did, and that the stack is refreshed.\n4. A slot and some leases are now free, so schedule again.\n\nOnce every ticket in the map is done, close the Epic with `gh issue close \u003CE>`, then give the user a summary: each ticket, its PR, and anything that needed their input.\n\n## Sub-agent brief\n\nFill in `\u003CN>`, the Epic, the repo, the lease note and the ports. Add any environment gotchas from your memory that the agent can't find in the repo, such as how pushing works here. Give each running agent its own dev-server ports, other than the stack's :8080 and :5173, because agents sharing ports collide.\n\n```\nYou are implementing GitHub issue #\u003CN> in \u003Cowner\u002Frepo>, part of Epic #\u003CE>. You are in your own git worktree; other agents are working on other tickets of the Epic at the same time in theirs. Before starting, read AGENTS.md \u002F CLAUDE.md and the docs they point to. If a `gh` command fails with `HTTP 403: GitHub GraphQL is not available`, use its `gh api` equivalent from `docs\u002Fagents\u002Fissue-tracker.md`.\n\nLeases: these modules are being changed by other agents right now: \u003Cmodule (#ticket), ...>. If your work needs to change one of them, stop and hand back, naming the module and why.\n\nDev servers: if you run any, use ports \u003Cports>.\n\n1. Read the issue and its comments (`gh issue view \u003CN> --comments`), then Epic #\u003CE>'s Notes and your ticket's row in its impact map. The row says what you're expected to change, create and use. Pieces listed under \"Uses\" already exist on main, so build on them.\n2. Branch from the latest origin\u002Fmain: `git fetch origin && git switch -c \u003Cprefix>\u002F\u003CN>-\u003Cslug> origin\u002Fmain`, using the repo's branch naming. Install dependencies if the worktree has none.\n3. Read `.claude\u002Fskills\u002Fimplement\u002FSKILL.md` and follow it fully for issue #\u003CN>, including its code review. Fix what the review finds. Invoke the skills it names (such as `tdd` and `code-review`) with the Skill tool. Where your change alters what the docs site describes (the wiki, from `docs\u002Fweb\u002F`), update it there and build it as CONTRIBUTING says.\n4. If the issue's wording is ambiguous, or conflicts with the domain docs or the existing code, stop and hand back. Give the exact ambiguity, the options, your recommendation, and what is committed or pushed so far. Everything the issue states clearly, carry on with.\n5. Push the branch. Open a PR against main with `gh pr create`, write its body with the `pr` skill, and have it close the issue.\n6. Tick the acceptance criteria your PR fulfils. Edit the issue body with `gh issue edit \u003CN> --body-file`, keeping the temp file outside the repo. Change only those `- [ ]` to `- [x]`.\n7. Leave the PR unmerged. The orchestrator merges it.\n\nFinal report: the branch, the PR URL, a summary of the changes, the check results (paste the actual output), which acceptance criteria you ticked and which you left unticked (with reasons), any review findings you didn't fix and why, what you changed on the docs site (or why nothing needed it), and any module you changed or shared piece you created that your row didn't list.\n```\n",{"name":5,"description":7,"disable-model-invocation":24},true,"main","f841afe54ebb58f938f3a70a9b5392ed3a9ed23c",".claude\u002Fskills\u002Fparallel-orchestrate","https:\u002F\u002Fgithub.com\u002FxKirtle\u002Fbandmate","https:\u002F\u002Fgithub.com\u002FxKirtle","On a mission to replace 'works on my machine' with 'works everywhere'","2026-11-03 00:07:18",{"source":8,"skillName":5,"commands":33,"prompt":43,"zipAvailable":24},[34,37,40],{"tool":35,"command":36},"npx","npx skills add xKirtle\u002Fbandmate --skill parallel-orchestrate",{"tool":38,"command":39},"bunx","bunx skills add xKirtle\u002Fbandmate --skill parallel-orchestrate",{"tool":41,"command":42},"pnpm","pnpm dlx skills add xKirtle\u002Fbandmate --skill parallel-orchestrate","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FxKirtle\u002Fbandmate\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fparallel-orchestrate\u002FSKILL.md",[],[46,53,60,67,74,81],{"skillNo":47,"name":48,"nameZh":6,"description":49,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":50,"categories":51,"keywords":52,"publishedAt":19},"01M7DF44CBHQ2R4R3NMRWNWHTZ","orchestrate","Work through a queue of GitHub issues one at a time, delegating each to a sub-agent that runs \u002Fimplement and opens a PR, then waiting for the user's review or, in auto-merge mode, for CI to pass.","https:\u002F\u002Fgithub.com\u002FxKirtle\u002Fbandmate\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Forchestrate\u002FSKILL.md",[],[],{"skillNo":54,"name":55,"nameZh":6,"description":56,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":57,"categories":58,"keywords":59,"publishedAt":19},"01M7DF426KY171B3EKKTPP3W4Y","writing-for-agents","Writing documents for agents. Use when creating or editing skills, or modifying AGENTS.md or CLAUDE.md.","https:\u002F\u002Fgithub.com\u002FxKirtle\u002Fbandmate\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwriting-for-agents\u002FSKILL.md",[],[],{"skillNo":61,"name":62,"nameZh":6,"description":63,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":64,"categories":65,"keywords":66,"publishedAt":19},"01M7DF3Y69HPX8NN01S1G2YX37","wizard","Generate an interactive bash wizard that walks a human through steps only they can perform. Use when provisioning infrastructure, setting up credentials or CI secrets, walking an unfamiliar third-party dashboard, or running a one-off migration or cutover. Don't invoke this for steps the agent can perform itself.","https:\u002F\u002Fgithub.com\u002FxKirtle\u002Fbandmate\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwizard\u002FSKILL.md",[],[],{"skillNo":68,"name":69,"nameZh":6,"description":70,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":71,"categories":72,"keywords":73,"publishedAt":19},"01M7DF3VJ0DN95GKEYDYB34DS5","wishlist","Add ideas to the roadmap's wishlist in docs\u002Froadmap.md, in its open wishlist PR. Use when the user hands over feature ideas to remember, or to grill later.","https:\u002F\u002Fgithub.com\u002FxKirtle\u002Fbandmate\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwishlist\u002FSKILL.md",[],[],{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":80,"publishedAt":19},"01M7DF3RQV6EK51P2W0A77N9KV","wayfinder","Plan a huge chunk of work (more than one agent session can hold) as a shared map of decision tickets on your issue tracker, and resolve them one at a time until the way to the destination is clear.","https:\u002F\u002Fgithub.com\u002FxKirtle\u002Fbandmate\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwayfinder\u002FSKILL.md",[],[],{"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":87,"publishedAt":19},"01M7DF3PX7V545GCEE1GNJHAFF","wait-what","Stop. That last message did not land: re-pitch it.","https:\u002F\u002Fgithub.com\u002FxKirtle\u002Fbandmate\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwait-what\u002FSKILL.md",[],[]]