[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6GXSBKE9A2HQWF8QRAZ4WJ5":3,"skill-same:01M6GXSBKE9A2HQWF8QRAZ4WJ5":85},{"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":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":53,"commitSha":54,"skillDirectory":55,"forksCount":56,"repositoryHtmlUrl":57,"repositoryHomepageUrl":58,"ownerHtmlUrl":59,"ownerBlogUrl":58,"ownerDescription":60,"updatedAt":61,"install":62,"resources":74},"01M6GXSBKE9A2HQWF8QRAZ4WJ5","workspace",null,"Multi-repo campaign coordinator. Same lifecycle as fleet -- scope claims, discovery relay, wave-based execution -- but the unit of work is a repo, not a file. Coordinates campaigns across repositories with shared context.","SethGammon\u002FCitadel","SethGammon","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F5523585?v=4","01M6GXJ90FD2CE9QF5GQERWN06","Seth Gammon","01M6GXJ94VXYGK5KAW14EYE901",930,"MIT","https:\u002F\u002Fgithub.com\u002FSethGammon\u002FCitadel\u002Fblob\u002Fmain\u002Fskills\u002Fworkspace\u002FSKILL.md",[],[5,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"campaigns","claims","fleet","coordinator","unit","add","scope","false","as","shared","repos","across","but","coordinate","campaign","context","work","multi-repo","snowflake","2026-11-10 10:12:30",false,"---\nname: workspace\nlicense: MIT\ndescription: >-\n  Multi-repo campaign coordinator. Same lifecycle as fleet -- scope claims,\n  discovery relay, wave-based execution -- but the unit of work is a repo,\n  not a file. Coordinates campaigns across repositories with shared context.\nuser-invocable: true\nauto-trigger: false\ntrigger_keywords:\n  - workspace\n  - multi-repo\n  - cross-repo\n  - across repos\n  - multiple repos\n  - coordinate repos\n  - add redis and snowflake\n  - split into repos\nlast-updated: 2026-03-29\neffort: high\n---\n\n# \u002Fworkspace -- Multi-Repo Campaign Coordinator\n\n## When to Use\n\n- Adding infrastructure that spans repos (new database, shared service, API contract)\n- Coordinating changes across a frontend repo, backend repo, and infra repo\n- Breaking a monolith into services (each service becomes a repo-scoped campaign)\n- Any task where changes in repo A depend on or inform changes in repo B\n\n**Do not use when:**\n- All work is in one repo (use `\u002Ffleet` or `\u002Farchon`)\n- The repos are truly independent with no shared contracts (just run separate campaigns)\n\n## Protocol\n\n### Step 1: ORIENT\n\n1. Check for existing workspace session: `.planning\u002Fworkspace\u002Fsession-{slug}.md` — resume if `status: active` or `needs-continue`\n2. If starting fresh: identify repos, verify each path is a git repo, read each repo's `CLAUDE.md`, check `.planning\u002Fcampaigns\u002F` for active campaigns (avoid collisions)\n3. **Load prior session context and start watcher**:\n   ```bash\n   node .citadel\u002Fscripts\u002Fmomentum-watch-start.cjs\n   node .citadel\u002Fscripts\u002Fmomentum-read.cjs\n   ```\n   Skip momentum injection if output is empty.\n\n### Step 2: DECOMPOSE\n\nBreak the direction into repo-scoped work items (one campaign per repo per wave). Table format: `# | Repo | Campaign Direction | Scope | Deps | Wave`.\n\n**Rules:** items with no deps → Wave 1; dependents → Wave 2+. Max 3 repo-campaigns per wave. Scope format: `{repo}:{path}`.\n\nFor each inter-wave dependency, specify the cross-repo contract: what the producer will produce, what the consumer expects, and where the contract lives (shared types package, OpenAPI spec, env var).\n\n### Step 3: WORKSPACE SESSION FILE\n\nCreate `.planning\u002Fworkspace\u002Fsession-{slug}.md` with frontmatter: `version`, `id`, `status: active`, `started`, `completed_at: null`, `direction`, `repos` (path + name + branch per repo), `wave_count`, `current_wave: 1`, `campaigns_total`, `campaigns_complete: 0`.\n\nBody sections: Direction, Repos table (name\u002Fpath\u002Fbranch\u002Fstatus), Work Queue (table from Step 2), Cross-Repo Contracts (producer\u002Fconsumer\u002Fcontract\u002Flocation), Wave Execution Log (per wave: status, campaigns, started, completed), Shared Context (discovery relay accumulation).\n\n### Step 4: WAVE EXECUTION\n\nFor each wave:\n\n#### 4a. Pre-flight\n- Verify all dependency campaigns from prior waves completed successfully\n- Check cross-repo contracts: did producer repos create the expected outputs?\n- If a dependency failed: park the dependent campaign, flag for user decision\n\n#### 4b. Spawn campaigns\nFor each repo-campaign in this wave:\n\n1. Create branch: `git checkout -b workspace\u002F{slug}\u002F{repo-name}`\n2. Spawn agent with direction: `\u002Farchon` for complex (3+ phases), `\u002Ffleet` if parallelizable, `\u002Fmarshal` or direct skill for simple (1-2 steps)\n3. Inject context: discovery briefs from prior waves, prior session context (re-read `momentum.json` via `node .citadel\u002Fscripts\u002Fmomentum-read.cjs`, inject as `=== PRIOR SESSION CONTEXT ===`, skip if empty), cross-repo contracts, relevant `CLAUDE.md` sections from other repos\n\n#### 4c. Collect results\nExtract HANDOFF blocks, compress into cross-repo discovery brief, write persistent discovery records:\n  ```bash\n  node .citadel\u002Fscripts\u002Fdiscovery-write.cjs \\\n    --session {session-slug} --agent {repo-name}-{campaign-type} \\\n    --wave {wave-number} --status {success|partial|failed} \\\n    --scope \"{repo-name}:{scope-path}\" --handoff \"{json-array}\" \\\n    --decisions \"{json-array}\" --files \"{json-array}\" --failures \"{json-array}\"\n  ```\n\n#### 4d. Discovery relay\nWrite `workspace\u002Fbriefs\u002Fwave{N}-{repo-name}.md` for each completed campaign.\nAlso write `workspace\u002Fbriefs\u002Fwave{N}-cross-repo.md` summarizing:\n- New API endpoints or types created\n- Config changes that affect other repos\n- Contract fulfillment status (did the producer deliver what was promised?)\n\n#### 4e. Contract verification\nFor each cross-repo contract: verify the producer created the expected output (file + export for types, route existence for endpoints). If verification fails, flag and do not proceed with consumers.\n\n#### 4f. Update session\nMark completed campaigns, update wave status, write discovery relay, advance `current_wave`.\n\n### Step 5: COMPLETION\n\n1. Run typecheck\u002Fbuild for each repo in isolation (build shared types package first if present)\n2. Set session `status: completed`, `completed_at: {ISO timestamp}`\n3. Run `node .citadel\u002Fscripts\u002Fmomentum-synthesize.cjs`\n4. List all branches created across repos with suggested merge order based on dependency graph\n5. Output HANDOFF\n\n## Fringe Cases\n\n- **Repo not a git repo:** Skip it. Report which repos were skipped and why.\n- **Repo has uncommitted changes:** Stash before branching. Record stash ref in session file.\n  Pop on completion or failure.\n- **Active campaign in target repo:** Do not start a second campaign. Report the conflict\n  and ask the user whether to wait, park the existing campaign, or merge scopes.\n- **`.planning\u002Fworkspace\u002F` does not exist:** Create it (and `workspace\u002Fbriefs\u002F`).\n- **Cross-repo contract broken:** Park all downstream campaigns. Report which contract\n  failed, which producer was responsible, and what the consumer expected. Do not\n  attempt to fix the producer -- surface the issue for the user or re-run the producer campaign.\n- **One repo fails, others succeed:** Mark the failed repo-campaign. Do not roll back\n  successful repos. The user decides whether to fix-and-continue or abandon.\n- **Repos on different machines or remotes:** Not supported. All repos must be locally\n  accessible. If a repo is remote-only, the user must clone it first.\n- **Monorepo with multiple packages:** Treat each package as a \"repo\" for scoping purposes.\n  Use `{monorepo}:{package-path}` as the scope identifier.\n\n## Contextual Gates\n\n**Disclosure:** \"Running multi-repo campaign across [repos]. Changes committed to each repo independently.\"\n**Reversibility:** red — coordinates changes across multiple repositories; cross-repo commits are hard to revert in bulk.\n**Trust gates:**\n- Familiar (5+ sessions): coordinates multi-repo campaigns autonomously; novices should use \u002Fmarshal per repo.\n\n## Quality Gates\n\n- [ ] All repos verified as accessible git repositories before starting\n- [ ] Work queue has no scope overlaps within the same repo\n- [ ] Cross-repo contracts specified for every inter-wave dependency\n- [ ] Discovery relay written after each wave\n- [ ] Contract verification run before spawning consumer campaigns\n- [ ] Each repo's typecheck\u002Fbuild passes independently after completion\n- [ ] Session file updated after every wave (not just at the end)\n- [ ] No campaigns left in `active` state on completion\n\n## Exit Protocol\n\n```\n---HANDOFF---\n- Workspace: {slug} -- {direction summary}\n- Repos: {N} repos, {M} campaigns across {W} waves\n- Results: {completed}\u002F{total} campaigns succeeded\n- Branches: {list branches ready for review}\n- Merge order: {suggested order based on dependency graph}\n- Unresolved: {any failed campaigns or broken contracts}\n---\n```\n","# \u002Fworkspace -- Multi-Repo Campaign Coordinator\n\n## When to Use\n\n- Adding infrastructure that spans repos (new database, shared service, API contract)\n- Coordinating changes across a frontend repo, backend repo, and infra repo\n- Breaking a monolith into services (each service becomes a repo-scoped campaign)\n- Any task where changes in repo A depend on or inform changes in repo B\n\n**Do not use when:**\n- All work is in one repo (use `\u002Ffleet` or `\u002Farchon`)\n- The repos are truly independent with no shared contracts (just run separate campaigns)\n\n## Protocol\n\n### Step 1: ORIENT\n\n1. Check for existing workspace session: `.planning\u002Fworkspace\u002Fsession-{slug}.md` — resume if `status: active` or `needs-continue`\n2. If starting fresh: identify repos, verify each path is a git repo, read each repo's `CLAUDE.md`, check `.planning\u002Fcampaigns\u002F` for active campaigns (avoid collisions)\n3. **Load prior session context and start watcher**:\n   ```bash\n   node .citadel\u002Fscripts\u002Fmomentum-watch-start.cjs\n   node .citadel\u002Fscripts\u002Fmomentum-read.cjs\n   ```\n   Skip momentum injection if output is empty.\n\n### Step 2: DECOMPOSE\n\nBreak the direction into repo-scoped work items (one campaign per repo per wave). Table format: `# | Repo | Campaign Direction | Scope | Deps | Wave`.\n\n**Rules:** items with no deps → Wave 1; dependents → Wave 2+. Max 3 repo-campaigns per wave. Scope format: `{repo}:{path}`.\n\nFor each inter-wave dependency, specify the cross-repo contract: what the producer will produce, what the consumer expects, and where the contract lives (shared types package, OpenAPI spec, env var).\n\n### Step 3: WORKSPACE SESSION FILE\n\nCreate `.planning\u002Fworkspace\u002Fsession-{slug}.md` with frontmatter: `version`, `id`, `status: active`, `started`, `completed_at: null`, `direction`, `repos` (path + name + branch per repo), `wave_count`, `current_wave: 1`, `campaigns_total`, `campaigns_complete: 0`.\n\nBody sections: Direction, Repos table (name\u002Fpath\u002Fbranch\u002Fstatus), Work Queue (table from Step 2), Cross-Repo Contracts (producer\u002Fconsumer\u002Fcontract\u002Flocation), Wave Execution Log (per wave: status, campaigns, started, completed), Shared Context (discovery relay accumulation).\n\n### Step 4: WAVE EXECUTION\n\nFor each wave:\n\n#### 4a. Pre-flight\n- Verify all dependency campaigns from prior waves completed successfully\n- Check cross-repo contracts: did producer repos create the expected outputs?\n- If a dependency failed: park the dependent campaign, flag for user decision\n\n#### 4b. Spawn campaigns\nFor each repo-campaign in this wave:\n\n1. Create branch: `git checkout -b workspace\u002F{slug}\u002F{repo-name}`\n2. Spawn agent with direction: `\u002Farchon` for complex (3+ phases), `\u002Ffleet` if parallelizable, `\u002Fmarshal` or direct skill for simple (1-2 steps)\n3. Inject context: discovery briefs from prior waves, prior session context (re-read `momentum.json` via `node .citadel\u002Fscripts\u002Fmomentum-read.cjs`, inject as `=== PRIOR SESSION CONTEXT ===`, skip if empty), cross-repo contracts, relevant `CLAUDE.md` sections from other repos\n\n#### 4c. Collect results\nExtract HANDOFF blocks, compress into cross-repo discovery brief, write persistent discovery records:\n  ```bash\n  node .citadel\u002Fscripts\u002Fdiscovery-write.cjs \\\n    --session {session-slug} --agent {repo-name}-{campaign-type} \\\n    --wave {wave-number} --status {success|partial|failed} \\\n    --scope \"{repo-name}:{scope-path}\" --handoff \"{json-array}\" \\\n    --decisions \"{json-array}\" --files \"{json-array}\" --failures \"{json-array}\"\n  ```\n\n#### 4d. Discovery relay\nWrite `workspace\u002Fbriefs\u002Fwave{N}-{repo-name}.md` for each completed campaign.\nAlso write `workspace\u002Fbriefs\u002Fwave{N}-cross-repo.md` summarizing:\n- New API endpoints or types created\n- Config changes that affect other repos\n- Contract fulfillment status (did the producer deliver what was promised?)\n\n#### 4e. Contract verification\nFor each cross-repo contract: verify the producer created the expected output (file + export for types, route existence for endpoints). If verification fails, flag and do not proceed with consumers.\n\n#### 4f. Update session\nMark completed campaigns, update wave status, write discovery relay, advance `current_wave`.\n\n### Step 5: COMPLETION\n\n1. Run typecheck\u002Fbuild for each repo in isolation (build shared types package first if present)\n2. Set session `status: completed`, `completed_at: {ISO timestamp}`\n3. Run `node .citadel\u002Fscripts\u002Fmomentum-synthesize.cjs`\n4. List all branches created across repos with suggested merge order based on dependency graph\n5. Output HANDOFF\n\n## Fringe Cases\n\n- **Repo not a git repo:** Skip it. Report which repos were skipped and why.\n- **Repo has uncommitted changes:** Stash before branching. Record stash ref in session file.\n  Pop on completion or failure.\n- **Active campaign in target repo:** Do not start a second campaign. Report the conflict\n  and ask the user whether to wait, park the existing campaign, or merge scopes.\n- **`.planning\u002Fworkspace\u002F` does not exist:** Create it (and `workspace\u002Fbriefs\u002F`).\n- **Cross-repo contract broken:** Park all downstream campaigns. Report which contract\n  failed, which producer was responsible, and what the consumer expected. Do not\n  attempt to fix the producer -- surface the issue for the user or re-run the producer campaign.\n- **One repo fails, others succeed:** Mark the failed repo-campaign. Do not roll back\n  successful repos. The user decides whether to fix-and-continue or abandon.\n- **Repos on different machines or remotes:** Not supported. All repos must be locally\n  accessible. If a repo is remote-only, the user must clone it first.\n- **Monorepo with multiple packages:** Treat each package as a \"repo\" for scoping purposes.\n  Use `{monorepo}:{package-path}` as the scope identifier.\n\n## Contextual Gates\n\n**Disclosure:** \"Running multi-repo campaign across [repos]. Changes committed to each repo independently.\"\n**Reversibility:** red — coordinates changes across multiple repositories; cross-repo commits are hard to revert in bulk.\n**Trust gates:**\n- Familiar (5+ sessions): coordinates multi-repo campaigns autonomously; novices should use \u002Fmarshal per repo.\n\n## Quality Gates\n\n- [ ] All repos verified as accessible git repositories before starting\n- [ ] Work queue has no scope overlaps within the same repo\n- [ ] Cross-repo contracts specified for every inter-wave dependency\n- [ ] Discovery relay written after each wave\n- [ ] Contract verification run before spawning consumer campaigns\n- [ ] Each repo's typecheck\u002Fbuild passes independently after completion\n- [ ] Session file updated after every wave (not just at the end)\n- [ ] No campaigns left in `active` state on completion\n\n## Exit Protocol\n\n```\n---HANDOFF---\n- Workspace: {slug} -- {direction summary}\n- Repos: {N} repos, {M} campaigns across {W} waves\n- Results: {completed}\u002F{total} campaigns succeeded\n- Branches: {list branches ready for review}\n- Merge order: {suggested order based on dependency graph}\n- Unresolved: {any failed campaigns or broken contracts}\n---\n```\n",{"name":5,"effort":43,"license":15,"description":7,"auto-trigger":39,"last-updated":44,"user-invocable":45,"trigger_keywords":46},"high",1774742400000,true,[5,36,47,48,49,50,51,52],"cross-repo","across repos","multiple repos","coordinate repos","add redis and snowflake","split into repos","main","e1a3d45697a0f323aaedcbea0ab6a0387b5fe722","skills\u002Fworkspace",84,"https:\u002F\u002Fgithub.com\u002FSethGammon\u002FCitadel","https:\u002F\u002Fsethgammon.github.io\u002FCitadel\u002F","https:\u002F\u002Fgithub.com\u002FSethGammon","Building Citadel, the repo-local operating layer for Claude Code and Codex. Persistent work, routing, verification, and coordinated agent fleets.","2026-11-13 02:05:13",{"source":8,"skillName":5,"commands":63,"prompt":73,"zipAvailable":45},[64,67,70],{"tool":65,"command":66},"npx","npx skills add SethGammon\u002FCitadel --skill workspace",{"tool":68,"command":69},"bunx","bunx skills add SethGammon\u002FCitadel --skill workspace",{"tool":71,"command":72},"pnpm","pnpm dlx skills add SethGammon\u002FCitadel --skill workspace","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FSethGammon\u002FCitadel\u002Fblob\u002Fmain\u002Fskills\u002Fworkspace\u002FSKILL.md",[75,81],{"path":76,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":79,"sourceHtmlUrl":80},"__benchmarks__\u002Fmulti-repo-direction.md","REFERENCE","参考文档",1102,"https:\u002F\u002Fgithub.com\u002FSethGammon\u002FCitadel\u002Fblob\u002Fmain\u002Fskills\u002Fworkspace\u002F__benchmarks__\u002Fmulti-repo-direction.md",{"path":82,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":83,"sourceHtmlUrl":84},"__benchmarks__\u002Fno-repos-configured.md",739,"https:\u002F\u002Fgithub.com\u002FSethGammon\u002FCitadel\u002Fblob\u002Fmain\u002Fskills\u002Fworkspace\u002F__benchmarks__\u002Fno-repos-configured.md",[86,115,139,166,185,216],{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":97,"publishedAt":38},"01M6GXS873AD1Y6RTM6GV47F3E","wiki","Markdown-first knowledge base where the LLM acts as librarian. Ingests raw sources, compiles and interlinks topic files, self-maintains an index. No vector DB or embeddings required -- uses LLM-native navigation over structured markdown up to ~400K words.","https:\u002F\u002Fgithub.com\u002FSethGammon\u002FCitadel\u002Fblob\u002Fmain\u002Fskills\u002Fwiki\u002FSKILL.md",[92],{"categoryNo":93,"categoryName":94,"taxonomyType":95,"taxonomyTypeDesc":96},"01JBSEEDCAT000000000000021","资料检索与研究","SCENARIO","使用场景",[88,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,27,26,113,114],"vector","embeddings","librarian","markdown","knowledge","karpathy","knowledge management","karpathy wiki","up","files","maintain","self","knowledge base","project","db","sources","native",{"skillNo":116,"name":117,"nameZh":6,"description":118,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":119,"categories":120,"keywords":121,"publishedAt":38},"01M6GXS2840SJ61285SZ43EJC3","watch","File sentinel that monitors the working directory for changes and marker comments, then auto-triggers appropriate skills. Poll-based via git diff against the last scan commit. Writes intake items for batch processing and routes marker actions through \u002Fdo. Use for automatic reactions to file changes; do NOT use for one-off inspection or tasks needing human judgment per file.","https:\u002F\u002Fgithub.com\u002FSethGammon\u002FCitadel\u002Fblob\u002Fmain\u002Fskills\u002Fwatch\u002FSKILL.md",[],[117,122,123,124,125,126,127,128,129,130,131,132,107,133,134,135,136,137,26,138],"directory","commit","tasks","git","batch","actions","start","sentinel","diff","auto","stop","do","scan","human","judgment","reactions","processing",{"skillNo":140,"name":141,"nameZh":6,"description":142,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":143,"categories":144,"keywords":148,"publishedAt":38},"01M6GXRXHYJ5RD9RZP81S2VFSW","verify","Self-test the Citadel hook pipeline from within a live session. Exercises real tool calls (Write, Edit, Bash, Read) and checks that hooks fired, telemetry accumulated, and no errors occurred. Reports HOOK HEALTH: PASS or HOOK HEALTH: FAIL with a per-hook breakdown.","https:\u002F\u002Fgithub.com\u002FSethGammon\u002FCitadel\u002Fblob\u002Fmain\u002Fskills\u002Fverify\u002FSKILL.md",[145],{"categoryNo":146,"categoryName":147,"taxonomyType":95,"taxonomyTypeDesc":96},"01JBSEEDCAT000000000000008","测试与质量",[141,149,150,151,152,153,154,155,156,157,158,159,160,109,161,26,162,163,164,165],"citadel","telemetry","harness","pipeline","Bash","tool","read","write","edit","session","hooks","reports","live","hook","errors","calls","true",{"skillNo":167,"name":168,"nameZh":6,"description":169,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":170,"categories":171,"keywords":172,"publishedAt":38},"01M6GXRS9MCJFMQZ917H2XH3AC","unharness","Safely leave Citadel using the active adoption receipt. Produces a no-write, reviewable plan, preserves a portable archive, removes only exact owned material, and reports modified or externally registered surfaces as retained or unknown. Legacy installs must be imported before exact leave is claimed.","https:\u002F\u002Fgithub.com\u002FSethGammon\u002FCitadel\u002Fblob\u002Fmain\u002Fskills\u002Funharness\u002FSKILL.md",[],[168,173,149,151,174,175,176,177,178,106,160,179,180,181,182,183,27,26,184,165],"uninstall","adoption","plan","archive","remove","only","Legacy","surfaces","clean","imported","active","material",{"skillNo":186,"name":187,"nameZh":6,"description":188,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":189,"categories":190,"keywords":199,"publishedAt":38},"01M6GXRMEJ2VHD43R9FNPD4910","triage","GitHub issue and PR investigator. Pulls open issues\u002FPRs, classifies them, searches the codebase for root cause or reviews contributed code, proposes fixes with file:line references, and optionally implements fixes. Use for investigating GitHub issues and reviewing PRs; do NOT use for general code review unrelated to GitHub issues.","https:\u002F\u002Fgithub.com\u002FSethGammon\u002FCitadel\u002Fblob\u002Fmain\u002Fskills\u002Ftriage\u002FSKILL.md",[191,194],{"categoryNo":192,"categoryName":193,"taxonomyType":95,"taxonomyTypeDesc":96},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":195,"categoryName":196,"taxonomyType":197,"taxonomyTypeDesc":198},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[187,200,201,202,203,204,205,206,207,208,209,210,211,212,133,26,213,214,215,165],"code review","review","review pr","pr","code","github issues","issues","open","use","unrelated","issue","general","references","line","investigator","reviews",{"skillNo":217,"name":218,"nameZh":6,"description":219,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":220,"categories":221,"keywords":223,"publishedAt":38},"01M6GXRG4QPGKHVCJPRCEWBW2S","test-gen","Generate and verify tests — happy path, edge cases, error paths — using the project's own framework and patterns","https:\u002F\u002Fgithub.com\u002FSethGammon\u002FCitadel\u002Fblob\u002Fmain\u002Fskills\u002Ftest-gen\u002FSKILL.md",[222],{"categoryNo":146,"categoryName":147,"taxonomyType":95,"taxonomyTypeDesc":96},[224,225,226,227,228,229,141,156,230,231,111,232,233,24,234,165,235],"test","test gen","write tests","generate","framework","edge","generate tests","patterns","tests","paths","error","path"]