[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C5CZAERT31SATQZQASCPKE":3,"skill-same:01M6C5CZAERT31SATQZQASCPKE":108},{"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":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":48,"commitSha":49,"skillDirectory":50,"forksCount":51,"repositoryHtmlUrl":52,"repositoryHomepageUrl":6,"ownerHtmlUrl":53,"ownerBlogUrl":6,"ownerDescription":54,"updatedAt":55,"install":56,"resources":69},"01M6C5CZAERT31SATQZQASCPKE","wave-based-dispatch",null,"Sequential-wave dispatch for WO chains where output of one feeds the next, shared locks, or shared files prevent fan-out. Use when planning dependent multi-WO landings.","laurigates\u002Fclaude-plugins","laurigates","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F13014001?v=4","01M6C59YHWS9C7KMXKSRX1YXNP","Lauri Gates","01M6C59YP2APG9YAM4DWYQYGFJ",60,"MIT","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fagent-patterns-plugin\u002Fskills\u002Fwave-based-dispatch\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"dispatch","wave based dispatch","next","2026","when","for","opus","output","multi","false","shared","claude-code","code","wed","files","use","read","grep","feeds","planning","2026-11-10 10:12:30",false,"---\nname: wave-based-dispatch\ndescription: Sequential-wave dispatch for WO chains where output of one feeds the next, shared locks, or shared files prevent fan-out. Use when planning dependent multi-WO landings.\nuser-invocable: false\nallowed-tools: Read, Glob, Grep, TodoWrite\nmodel: opus\ncreated: 2026-04-25\nmodified: 2026-10-07\ncompatibility: claude-code\nreviewed: 2026-06-06\n---\n\n# Wave-Based Dispatch\n\nThe agent-side dispatch discipline for sequential WO chains. Same pillars as\n`parallel-agent-dispatch` — disjoint ownership, return contracts, shared-file\nexclusion — but the gates **between** waves are different from the gates\n**inside** a wave. This skill is those between-wave gates.\n\n## When to Use This Skill\n\n| Use wave-based dispatch when… | Use `parallel-agent-dispatch` alone when… | Use `exclusive-lock-dispatch` when… |\n|-------------------------------|-------------------------------------------|--------------------------------------|\n| A later WO needs a file, type, or API the earlier WO defines | All WOs operate on disjoint, lock-free scopes | One tool holds an exclusive lock and N agents need its outputs |\n| A research probe (Ghidra decomp, spec experiment, API trace) gates downstream scope | Scope is fully known up front | Lock-holder is slow enough to amortise via pre-dump |\n| Two candidate agents would both modify the same shared manifest \u002F tracker \u002F build file | Shared-file exclusion list is small and stable | Pre-computed artefacts can replace re-running the lock holder |\n| A bug surfaced during orchestrator-apply needs the same context as the dispatched agent | Issues are recoverable inside a single wave | Lock contention is the only sequencing reason |\n\nThe three skills compose: each wave is itself a `parallel-agent-dispatch`,\nlock-holding waves use `exclusive-lock-dispatch` for the pre-dump, and\nthis skill covers the boundary between waves.\n\n## Picking Wave-Based Over Parallel\n\n| Trigger | Why parallel fails | Wave-based response |\n|---------|---------------------|---------------------|\n| **Dependency chain** — WO-B imports types from WO-A | WO-B's brief is stale before WO-A lands; the agent guesses or stalls | WO-A in wave 1, WO-B in wave 2 referencing WO-A's landed paths |\n| **Shared lock** — Ghidra project, taskwarrior bulk modify, single-writer cache | Second concurrent invocation fails with a lock error; orchestrator burns a turn diagnosing | Lock holder runs alone in its wave; downstream waves read pre-dumped artefacts |\n| **Orchestrator-edit contention** — multiple agents return verbatim patches against the same `CMakeLists.txt` \u002F `justfile` \u002F manifest | Last-writer-wins silently loses the earlier edit; merge conflicts pile up at apply time | Stage edits to those files between waves so the orchestrator applies them serially |\n\nIf any trigger matches, the work belongs in waves. Inside each wave,\n`parallel-agent-dispatch` still applies as the per-agent contract.\n\n## The Research-Before-WO Gate\n\nWhen a downstream WO's scope depends on a tool run (decomp, API trace, format probe, benchmark), that probe is its own first wave. Procedure: [references\u002Ffirst-wave-gates.md](references\u002Ffirst-wave-gates.md).\n\n## The Pilot-Before-Fan-Out Gate\n\nWhen the same transformation will be applied to N items, wave 1 is one pilot that proves the recipe and its riskiest unknown; wave 2 mirrors it. Procedure: [references\u002Ffirst-wave-gates.md](references\u002Ffirst-wave-gates.md).\n\n## Six-Gate Verification Table Between Waves\n\nNo brief for wave N+1 is written until wave N's gates pass. The gate set\nis fixed — drifting the gates between waves is how regressions slip in.\n\n| # | Gate | Signal | Why it matters between waves |\n|---|------|--------|------------------------------|\n| 1 | Build | Project compile \u002F typecheck recipe succeeds | Wave N+1 will import wave N's symbols; broken build poisons the next brief |\n| 2 | Tests | Project test recipe succeeds (with the wave's flag set when applicable) | Hidden regressions compound across waves |\n| 3 | Module smoke | Module-level smoke recipes (CLI subcommand smoke, `tools-plugin:cli-smoke-recipes`) pass | Catches integration breaks the unit tests miss |\n| 4 | Taskwarrior status | Tasks for the wave drain to `done`; no orphans | Wave N's queue must be empty before wave N+1's tasks are filed |\n| 5 | Feature-tracker drain | Tracker entries touched by the wave advance from `in progress` to `done`, with evidence pointers | Sidecar status survives the session; the next wave can cite landed work |\n| 6 | Clean tree | `git status --porcelain` empty | Loose ends become invisible work after the next wave lands on top |\n\nA gate failure rolls back to **fix in place, retry the gate** — never to\n\"dispatch wave N+1 and paper over it.\" If the wave is unrecoverable,\nrevert it and re-brief.\n\n### Gating on a green PR vs a landed merge\n\nWhen a human merges each wave and wave N+1 cannot wait for the merge, see [references\u002Fstacked-wave-prs.md](references\u002Fstacked-wave-prs.md) for how Gate 6 and stacked-PR landing change.\n\n## The ~10-Line Inline-Fix Threshold\n\nWhen a wave returns and a small bug surfaces during the orchestrator's\napply step, the orchestrator has a choice: fix it inline, or file a\nfollow-up WO for the next wave. The threshold is approximate but\nload-bearing:\n\n| Situation | Decision |\n|-----------|----------|\n| ~10 lines of fix, orchestrator already has the symbolic context | Fix inline |\n| Fix spans multiple files or needs the agent's exploration log | Follow-up WO in the next wave |\n| Fix is mechanical (rename, reformat, missing import) | Fix inline |\n| Fix requires a design judgement | Follow-up WO — judgement is cheaper to revisit than re-inject |\n\nThe deciding question is: \"Will the orchestrator spend less time fixing\nin place than re-writing a brief and re-loading the agent's context?\"\nBelow ~10 lines, usually yes. A concrete signal that the threshold was\nright: a bug that was a missing branch in `--no-present` mode landed as\na one-edit orchestrator fix instead of a whole re-dispatch turn.\n\nThis is **not** an excuse to skip waves entirely — it is a release\nvalve for the small issues that always surface at apply time. Use it\nsparingly; once the inline fix exceeds ~10 lines, file the WO.\n\n## Stable Shared-File Exclusion List Across Waves\n\n`parallel-agent-dispatch` § Scope Budget (\"Orchestrator-only files\") defines the\norchestrator-only files that no agent may touch (manifest, tracker,\ntop-level plan, build manifests, justfile, task store). That list is\n**derived once in the wave-1 brief** and referenced by name in every\nsubsequent wave's brief. Do not re-derive it.\n\nRe-deriving the list per wave drifts it — wave 2 forgets the\n`Cargo.toml` entry that wave 1 had, wave 3 forgets the tracker, and on\nthe Nth wave a silent manifest clobber lands. The discipline is:\n\n- **Wave 1 brief** spells out the full exclusion list under\n  `### Orchestrator-only files`.\n- **Wave N+1 brief** says, verbatim:\n\n  > \"Orchestrator-only files: as defined in the wave-1 brief. No\n  > additions, no removals. If you believe a new file belongs on the\n  > list, return `partial` and surface it in `Orchestrator action\n  > needed` — do not edit it.\"\n\nThe same discipline applies to pre-allocated blueprint IDs, ADR\nnumbers, and any monotonic counters (`parallel-agent-dispatch`\n§ Scope Budget, \"Pre-allocated IDs\"). Allocate up front; reference by ID in\nlater waves.\n\n## Composition\n\nEach wave is a `parallel-agent-dispatch`; lock-holding waves use `exclusive-lock-dispatch`. The full layer map is in [references\u002Fplan-review.md](references\u002Fplan-review.md).\n\n## Quick Reference\n\n### Orchestrator Checklist\n\n- [ ] Trigger identified (dependency chain \u002F shared lock \u002F orchestrator-edit contention)\n- [ ] Research probe scheduled as wave 1 if any downstream scope is unknown\n- [ ] Six-gate verification table applied at every wave boundary\n- [ ] Shared-file exclusion list cited in wave 1, referenced by name in waves 2..N\n- [ ] Return Contract referenced from `parallel-agent-dispatch`, never redefined\n- [ ] Inline-fix threshold (~10 lines) honoured at wave-end\n- [ ] No brief for wave N+1 written until wave N's gates pass\n\n### Common Mistakes\n\nSee [references\u002Fplan-review.md](references\u002Fplan-review.md) when reviewing a wave plan.\n\n## Related\n\n- `agent-patterns-plugin:parallel-agent-dispatch` — intra-wave contract; the §Worktree Preflight, §Scope Budget (orchestrator-only files included), and §Return Contract sections apply unchanged inside every wave\n- `agent-patterns-plugin:exclusive-lock-dispatch` — pre-dump mechanics for lock-contending waves; this skill cites it as the right shape for the research wave's brief\n- `workflow-orchestration-plugin:workflow-wave-dispatch` — workflow-side scheduling view: enumerating waves, gate-failure rollback, scheduling heuristics\n- `git-plugin:git-pr` \u002F `git-plugin:git-conflicts` — stacked-PR merge order (retarget children before deleting the base, `--onto` squash cleanup) and pre-merge trial integration for landing a wave's PRs\n- `rust-plugin:cargo-worktree-builds` — when the waves are Rust worktrees, share one pre-warmed `CARGO_TARGET_DIR` so deps compile once across all worktrees\n- `taskwarrior-plugin:task-coordinate` — where wave candidates come from: surfaces the next N unblocked tasks while excluding lock-contenders\n- `.claude\u002Frules\u002Fparallel-safe-queries.md` — empty-result exit codes that bite inside automated gate checks\n\n> Evidence: porting the 158-line `wave-based-dispatch` project rule\n> (skullcaps-native, 2026-04-24) into a reusable skill. The rule\n> earned promotion after a six-wave dependent landing shipped in one\n> day with zero merge conflicts, one inline fix, and zero\n> exclusion-list drift across waves.\n","# Wave-Based Dispatch\n\nThe agent-side dispatch discipline for sequential WO chains. Same pillars as\n`parallel-agent-dispatch` — disjoint ownership, return contracts, shared-file\nexclusion — but the gates **between** waves are different from the gates\n**inside** a wave. This skill is those between-wave gates.\n\n## When to Use This Skill\n\n| Use wave-based dispatch when… | Use `parallel-agent-dispatch` alone when… | Use `exclusive-lock-dispatch` when… |\n|-------------------------------|-------------------------------------------|--------------------------------------|\n| A later WO needs a file, type, or API the earlier WO defines | All WOs operate on disjoint, lock-free scopes | One tool holds an exclusive lock and N agents need its outputs |\n| A research probe (Ghidra decomp, spec experiment, API trace) gates downstream scope | Scope is fully known up front | Lock-holder is slow enough to amortise via pre-dump |\n| Two candidate agents would both modify the same shared manifest \u002F tracker \u002F build file | Shared-file exclusion list is small and stable | Pre-computed artefacts can replace re-running the lock holder |\n| A bug surfaced during orchestrator-apply needs the same context as the dispatched agent | Issues are recoverable inside a single wave | Lock contention is the only sequencing reason |\n\nThe three skills compose: each wave is itself a `parallel-agent-dispatch`,\nlock-holding waves use `exclusive-lock-dispatch` for the pre-dump, and\nthis skill covers the boundary between waves.\n\n## Picking Wave-Based Over Parallel\n\n| Trigger | Why parallel fails | Wave-based response |\n|---------|---------------------|---------------------|\n| **Dependency chain** — WO-B imports types from WO-A | WO-B's brief is stale before WO-A lands; the agent guesses or stalls | WO-A in wave 1, WO-B in wave 2 referencing WO-A's landed paths |\n| **Shared lock** — Ghidra project, taskwarrior bulk modify, single-writer cache | Second concurrent invocation fails with a lock error; orchestrator burns a turn diagnosing | Lock holder runs alone in its wave; downstream waves read pre-dumped artefacts |\n| **Orchestrator-edit contention** — multiple agents return verbatim patches against the same `CMakeLists.txt` \u002F `justfile` \u002F manifest | Last-writer-wins silently loses the earlier edit; merge conflicts pile up at apply time | Stage edits to those files between waves so the orchestrator applies them serially |\n\nIf any trigger matches, the work belongs in waves. Inside each wave,\n`parallel-agent-dispatch` still applies as the per-agent contract.\n\n## The Research-Before-WO Gate\n\nWhen a downstream WO's scope depends on a tool run (decomp, API trace, format probe, benchmark), that probe is its own first wave. Procedure: [references\u002Ffirst-wave-gates.md](references\u002Ffirst-wave-gates.md).\n\n## The Pilot-Before-Fan-Out Gate\n\nWhen the same transformation will be applied to N items, wave 1 is one pilot that proves the recipe and its riskiest unknown; wave 2 mirrors it. Procedure: [references\u002Ffirst-wave-gates.md](references\u002Ffirst-wave-gates.md).\n\n## Six-Gate Verification Table Between Waves\n\nNo brief for wave N+1 is written until wave N's gates pass. The gate set\nis fixed — drifting the gates between waves is how regressions slip in.\n\n| # | Gate | Signal | Why it matters between waves |\n|---|------|--------|------------------------------|\n| 1 | Build | Project compile \u002F typecheck recipe succeeds | Wave N+1 will import wave N's symbols; broken build poisons the next brief |\n| 2 | Tests | Project test recipe succeeds (with the wave's flag set when applicable) | Hidden regressions compound across waves |\n| 3 | Module smoke | Module-level smoke recipes (CLI subcommand smoke, `tools-plugin:cli-smoke-recipes`) pass | Catches integration breaks the unit tests miss |\n| 4 | Taskwarrior status | Tasks for the wave drain to `done`; no orphans | Wave N's queue must be empty before wave N+1's tasks are filed |\n| 5 | Feature-tracker drain | Tracker entries touched by the wave advance from `in progress` to `done`, with evidence pointers | Sidecar status survives the session; the next wave can cite landed work |\n| 6 | Clean tree | `git status --porcelain` empty | Loose ends become invisible work after the next wave lands on top |\n\nA gate failure rolls back to **fix in place, retry the gate** — never to\n\"dispatch wave N+1 and paper over it.\" If the wave is unrecoverable,\nrevert it and re-brief.\n\n### Gating on a green PR vs a landed merge\n\nWhen a human merges each wave and wave N+1 cannot wait for the merge, see [references\u002Fstacked-wave-prs.md](references\u002Fstacked-wave-prs.md) for how Gate 6 and stacked-PR landing change.\n\n## The ~10-Line Inline-Fix Threshold\n\nWhen a wave returns and a small bug surfaces during the orchestrator's\napply step, the orchestrator has a choice: fix it inline, or file a\nfollow-up WO for the next wave. The threshold is approximate but\nload-bearing:\n\n| Situation | Decision |\n|-----------|----------|\n| ~10 lines of fix, orchestrator already has the symbolic context | Fix inline |\n| Fix spans multiple files or needs the agent's exploration log | Follow-up WO in the next wave |\n| Fix is mechanical (rename, reformat, missing import) | Fix inline |\n| Fix requires a design judgement | Follow-up WO — judgement is cheaper to revisit than re-inject |\n\nThe deciding question is: \"Will the orchestrator spend less time fixing\nin place than re-writing a brief and re-loading the agent's context?\"\nBelow ~10 lines, usually yes. A concrete signal that the threshold was\nright: a bug that was a missing branch in `--no-present` mode landed as\na one-edit orchestrator fix instead of a whole re-dispatch turn.\n\nThis is **not** an excuse to skip waves entirely — it is a release\nvalve for the small issues that always surface at apply time. Use it\nsparingly; once the inline fix exceeds ~10 lines, file the WO.\n\n## Stable Shared-File Exclusion List Across Waves\n\n`parallel-agent-dispatch` § Scope Budget (\"Orchestrator-only files\") defines the\norchestrator-only files that no agent may touch (manifest, tracker,\ntop-level plan, build manifests, justfile, task store). That list is\n**derived once in the wave-1 brief** and referenced by name in every\nsubsequent wave's brief. Do not re-derive it.\n\nRe-deriving the list per wave drifts it — wave 2 forgets the\n`Cargo.toml` entry that wave 1 had, wave 3 forgets the tracker, and on\nthe Nth wave a silent manifest clobber lands. The discipline is:\n\n- **Wave 1 brief** spells out the full exclusion list under\n  `### Orchestrator-only files`.\n- **Wave N+1 brief** says, verbatim:\n\n  > \"Orchestrator-only files: as defined in the wave-1 brief. No\n  > additions, no removals. If you believe a new file belongs on the\n  > list, return `partial` and surface it in `Orchestrator action\n  > needed` — do not edit it.\"\n\nThe same discipline applies to pre-allocated blueprint IDs, ADR\nnumbers, and any monotonic counters (`parallel-agent-dispatch`\n§ Scope Budget, \"Pre-allocated IDs\"). Allocate up front; reference by ID in\nlater waves.\n\n## Composition\n\nEach wave is a `parallel-agent-dispatch`; lock-holding waves use `exclusive-lock-dispatch`. The full layer map is in [references\u002Fplan-review.md](references\u002Fplan-review.md).\n\n## Quick Reference\n\n### Orchestrator Checklist\n\n- [ ] Trigger identified (dependency chain \u002F shared lock \u002F orchestrator-edit contention)\n- [ ] Research probe scheduled as wave 1 if any downstream scope is unknown\n- [ ] Six-gate verification table applied at every wave boundary\n- [ ] Shared-file exclusion list cited in wave 1, referenced by name in waves 2..N\n- [ ] Return Contract referenced from `parallel-agent-dispatch`, never redefined\n- [ ] Inline-fix threshold (~10 lines) honoured at wave-end\n- [ ] No brief for wave N+1 written until wave N's gates pass\n\n### Common Mistakes\n\nSee [references\u002Fplan-review.md](references\u002Fplan-review.md) when reviewing a wave plan.\n\n## Related\n\n- `agent-patterns-plugin:parallel-agent-dispatch` — intra-wave contract; the §Worktree Preflight, §Scope Budget (orchestrator-only files included), and §Return Contract sections apply unchanged inside every wave\n- `agent-patterns-plugin:exclusive-lock-dispatch` — pre-dump mechanics for lock-contending waves; this skill cites it as the right shape for the research wave's brief\n- `workflow-orchestration-plugin:workflow-wave-dispatch` — workflow-side scheduling view: enumerating waves, gate-failure rollback, scheduling heuristics\n- `git-plugin:git-pr` \u002F `git-plugin:git-conflicts` — stacked-PR merge order (retarget children before deleting the base, `--onto` squash cleanup) and pre-merge trial integration for landing a wave's PRs\n- `rust-plugin:cargo-worktree-builds` — when the waves are Rust worktrees, share one pre-warmed `CARGO_TARGET_DIR` so deps compile once across all worktrees\n- `taskwarrior-plugin:task-coordinate` — where wave candidates come from: surfaces the next N unblocked tasks while excluding lock-contenders\n- `.claude\u002Frules\u002Fparallel-safe-queries.md` — empty-result exit codes that bite inside automated gate checks\n\n> Evidence: porting the 158-line `wave-based-dispatch` project rule\n> (skullcaps-native, 2026-04-24) into a reusable skill. The rule\n> earned promotion after a six-wave dependent landing shipped in one\n> day with zero merge conflicts, one inline fix, and zero\n> exclusion-list drift across waves.\n",{"name":5,"model":25,"created":44,"modified":45,"reviewed":46,"description":7,"allowed-tools":47,"compatibility":30,"user-invocable":40},1777075200000,1791331200000,1780704000000,"Read, Glob, Grep, TodoWrite","main","bdd0582f1a2ba53d21061835bfd72d45f2f954f4","agent-patterns-plugin\u002Fskills\u002Fwave-based-dispatch",6,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins","https:\u002F\u002Fgithub.com\u002Flaurigates","Linux enthusiast, cloud engineer, neovim addict, electronics hobbyist.","2026-11-15 03:36:11",{"source":8,"skillName":5,"commands":57,"prompt":67,"zipAvailable":68},[58,61,64],{"tool":59,"command":60},"npx","npx skills add laurigates\u002Fclaude-plugins --skill wave-based-dispatch",{"tool":62,"command":63},"bunx","bunx skills add laurigates\u002Fclaude-plugins --skill wave-based-dispatch",{"tool":65,"command":66},"pnpm","pnpm dlx skills add laurigates\u002Fclaude-plugins --skill wave-based-dispatch","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fagent-patterns-plugin\u002Fskills\u002Fwave-based-dispatch\u002FSKILL.md",true,[70,76,80,84,88,92,96,102,105],{"path":71,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":74,"sourceHtmlUrl":75},"references\u002Farchitecture_patterns.md","REFERENCE","参考文档",1333,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-senior-architect\u002Freferences\u002Farchitecture_patterns.md",{"path":77,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":78,"sourceHtmlUrl":79},"references\u002Ffirst-wave-gates.md",3762,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fagent-patterns-plugin\u002Fskills\u002Fwave-based-dispatch\u002Freferences\u002Ffirst-wave-gates.md",{"path":81,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":82,"sourceHtmlUrl":83},"references\u002Fplan-review.md",1720,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fagent-patterns-plugin\u002Fskills\u002Fwave-based-dispatch\u002Freferences\u002Fplan-review.md",{"path":85,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":86,"sourceHtmlUrl":87},"references\u002Fstacked-wave-prs.md",1491,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fagent-patterns-plugin\u002Fskills\u002Fwave-based-dispatch\u002Freferences\u002Fstacked-wave-prs.md",{"path":89,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":90,"sourceHtmlUrl":91},"references\u002Fsystem_design_workflows.md",1093,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-senior-architect\u002Freferences\u002Fsystem_design_workflows.md",{"path":93,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":94,"sourceHtmlUrl":95},"references\u002Ftech_decision_guide.md",1014,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-senior-architect\u002Freferences\u002Ftech_decision_guide.md",{"path":97,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":100,"sourceHtmlUrl":101},"scripts\u002Farchitecture_diagram_generator.py","SCRIPT","脚本",1902,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-senior-architect\u002Fscripts\u002Farchitecture_diagram_generator.py",{"path":103,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":100,"sourceHtmlUrl":104},"scripts\u002Fdependency_analyzer.py","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-senior-architect\u002Fscripts\u002Fdependency_analyzer.py",{"path":106,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":100,"sourceHtmlUrl":107},"scripts\u002Fproject_architect.py","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-senior-architect\u002Fscripts\u002Fproject_architect.py",[109,137,157,173,195,225],{"skillNo":110,"name":111,"nameZh":6,"description":112,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":113,"categories":114,"keywords":120,"publishedAt":39},"01M70PFHMH9ADY0CRE6047Y4B2","kitty-show-image","Show the user an image with a note on what to judge, via a file send or a labelled kitty tab. Use when the user must see an image, or icat fails with no \u002Fdev\u002Ftty.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fkitty-plugin\u002Fskills\u002Fkitty-show-image\u002FSKILL.md",[115],{"categoryNo":116,"categoryName":117,"taxonomyType":118,"taxonomyTypeDesc":119},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[121,122,123,124,125,126,127,128,129,130,34,23,131,132,133,134,135,136,22,35],"show","kitty show image","image","kitty","show image","ls","get","send","open","dev","Bash","file","text","with","xdg","via",{"skillNo":138,"name":139,"nameZh":6,"description":140,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":141,"categories":142,"keywords":143,"publishedAt":39},"01M70PFEN18HKQ4RCQ1VPGMPTB","kitty-session-persistence","Snapshot and restore kitty terminal sessions on macOS. Use when surviving WindowServer hangs without losing tabs, configuring snapshots, or restoring after a force-reboot.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fkitty-plugin\u002Fskills\u002Fkitty-session-persistence\u002FSKILL.md",[],[124,144,145,146,28,147,23,131,148,149,150,22,35,151,152,153,154,155,156,34],"kitty session persistence","session","persistence","snapshots","uname","reboot","terminal","write","edit","snapshot","macos","sessions","restore",{"skillNo":158,"name":159,"nameZh":6,"description":160,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":161,"categories":162,"keywords":163,"publishedAt":39},"01M70PFC77XGXCVQ1543VGZHYR","kitty-remote-control","Safe kitty remote control from an agent — read panes with kitty @ ls\u002Fget-text, notify, and never mutate the live terminal unasked. Use when running inside kitty.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fkitty-plugin\u002Fskills\u002Fkitty-remote-control\u002FSKILL.md",[],[164,165,124,166,167,126,168,169,127,170,171,34,23,172,131,133,134,150,22,35],"kitty remote control","remote","control","remote control","running","never","panes","notify","query",{"skillNo":174,"name":175,"nameZh":6,"description":176,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":177,"categories":178,"keywords":179,"publishedAt":39},"01M70P6WVMCT5JG4SACTM69AF9","docs-reference-check","Dangling doc-reference gate: flag markdown naming repo paths or relative links that no longer exist. Use when docs cite moved\u002Fdeleted files, or wiring a doc-drift lint.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fdocumentation-plugin\u002Fskills\u002Fdocs-reference-check\u002FSKILL.md",[],[180,181,182,183,184,185,186,187,33,188,34,23,131,189,132,190,191,192,193,194],"docs reference check","check","reference check","reference","docs","links","python3","repo","auto","drift","lint","wiring","chezmoi","references","cp",{"skillNo":196,"name":197,"nameZh":6,"description":198,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":199,"categories":200,"keywords":210,"publishedAt":39},"01M6C6NDE7DAQGNWSF22J5CJ0Z","youtube-upload","Upload a video to YouTube via the Data API v3 and edit its title, description, tags or thumbnail afterwards. Use when publishing or retitling a YouTube video.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fyoutube-plugin\u002Fskills\u002Fyoutube-upload\u002FSKILL.md",[201,204,205],{"categoryNo":202,"categoryName":203,"taxonomyType":118,"taxonomyTypeDesc":119},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":116,"categoryName":117,"taxonomyType":118,"taxonomyTypeDesc":119},{"categoryNo":206,"categoryName":207,"taxonomyType":208,"taxonomyTypeDesc":209},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[211,212,213,214,186,215,35,216,152,217,218,219,34,131,132,220,221,23,222,223,224,136,22],"youtube upload","upload","youtube","Video","run","uv run","publishing","data","uv","api","v3","tags","id","title",{"skillNo":226,"name":227,"nameZh":6,"description":228,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":229,"categories":230,"keywords":234,"publishedAt":39},"01M6C6NABWW1X58KJJM4F6GQMQ","youtube-studio-share","Share a private YouTube video with a whole Google Workspace organization by scripting YouTube Studio in the browser. Use when a video must be org-only.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fyoutube-plugin\u002Fskills\u002Fyoutube-studio-share\u002FSKILL.md",[231],{"categoryNo":232,"categoryName":233,"taxonomyType":118,"taxonomyTypeDesc":119},"01JBSEEDCAT000000000000023","Skill与智能体开发",[235,236,237,238,213,214,239,240,241,242,243,35,244,245,246,247,34,248,23,134,249,22],"youtube studio share","share","youtube studio","studio","browser","javascript","scripting","google workspace","workspace","tool","google","only","MCP","chrome","organization"]