[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6GXQ7YWA7DMCNQ5QSCASPCH":3,"skill-same:01M6GXQ7YWA7DMCNQ5QSCASPCH":89},{"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":23,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":57,"commitSha":58,"skillDirectory":59,"forksCount":60,"repositoryHtmlUrl":61,"repositoryHomepageUrl":62,"ownerHtmlUrl":63,"ownerBlogUrl":62,"ownerDescription":64,"updatedAt":65,"install":66,"resources":78},"01M6GXQ7YWA7DMCNQ5QSCASPCH","refactor",null,"Safe multi-file refactoring with automatic rollback. Establishes a type\u002Ftest baseline, plans all changes, executes file-by-file, and verifies zero regressions. Reverts if verification fails after two fix attempts. Handles renames, extracts, moves, splits, merges, and inlines.","SethGammon\u002FCitadel","SethGammon","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F5523585?v=4","01M6GXJ90FD2CE9QF5GQERWN06","Seth Gammon","01M6GXJ94VXYGK5KAW14EYE901",929,"MIT","https:\u002F\u002Fgithub.com\u002FSethGammon\u002FCitadel\u002Fblob\u002Fmain\u002Fskills\u002Frefactor\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000007","代码审查","SCENARIO","使用场景",[5,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"fix","true","split","with","move","multi","false","type","plans","files","safe","rollback","refactoring","baseline","ZeRO","file","verification","merge","test","2026-11-10 10:12:30",false,"---\nname: refactor\nlicense: MIT\ndescription: >-\n  Safe multi-file refactoring with automatic rollback. Establishes a type\u002Ftest\n  baseline, plans all changes, executes file-by-file, and verifies zero\n  regressions. Reverts if verification fails after two fix attempts.\n  Handles renames, extracts, moves, splits, merges, and inlines.\nuser-invocable: true\nauto-trigger: false\ntrigger_keywords:\n  - refactor\n  - rename\n  - extract\n  - inline\n  - move file\n  - split file\n  - merge files\nlast-updated: 2026-03-20\n---\n\n# \u002Frefactor — Safe Multi-File Refactoring\n\n## Orientation\n\nUse `\u002Frefactor` when you need to:\n- Rename a symbol, file, or module across the codebase\n- Extract a function, component, hook, class, or module from existing code\n- Inline a function or module back into its callers\n- Move a file or set of files to a new location\n- Split a large file into smaller pieces\n- Merge related files into one\n- Change a function signature and update all call sites\n\n**Don't use when:** debugging a specific bug (use \u002Fsystematic-debugging); adding new features (use \u002Fmarshal or \u002Fscaffold); deleting dead code (use \u002Fmarshal for a targeted cleanup).\n\n**Boundary with \u002Forganize:** \u002Frefactor changes code structure within files (extract, inline, split, merge, rename) and moves files as part of those operations. Repository-wide file\u002Fdirectory placement, naming sweeps, and where-does-this-belong decisions are \u002Forganize.\n\n**Behavior does not change.** Tests pass before and after, no new type errors — the refactoring is correct.\n\n## Commands\n\n| Command | Behavior |\n|---|---|\n| `\u002Frefactor rename [old] to [new]` | Rename symbol, file, or module |\n| `\u002Frefactor extract [target] from [source]` | Extract function\u002Fcomponent\u002Fmodule |\n| `\u002Frefactor inline [target]` | Inline a function\u002Fmodule into callers |\n| `\u002Frefactor move [source] to [dest]` | Move file(s) with import updates |\n| `\u002Frefactor split [file]` | Split a file into logical pieces |\n| `\u002Frefactor merge [files...]` | Merge related files into one |\n| `\u002Frefactor [freeform description]` | Auto-detect refactoring type from description |\n| `\u002Frefactor --dry-run [any above]` | Plan only, show what would change |\n\n## Protocol\n\n### Phase 1: BASELINE\n\nRun typecheck (via `node scripts\u002Frun-with-timeout.js 300 npm run typecheck`) and tests. Record error\u002Ffailure counts — pre-existing issues are not your responsibility, but you must not add to them. Warn if there are uncommitted changes in files you plan to modify.\n\n```\nBaseline established:\n  Typecheck: {pass | N errors (pre-existing)}\n  Tests: {pass | N failures (pre-existing) | no test suite found}\n  Git: {clean | M files with uncommitted changes}\n```\n\n### Phase 2: PLAN\n\nAnalyze the refactoring target and produce a concrete plan.\n\n1. **Identify scope**: Search the codebase for every reference to the target.\n   Use grep\u002Fsearch for:\n   - Import statements referencing the target\n   - Usage sites (function calls, type references, component usage)\n   - Re-exports from index files\n   - Test files that reference the target\n   - Documentation or comments mentioning the target\n   - Config files (e.g., route definitions, dependency injection)\n\n2. **Classify the refactoring type** and apply type-specific analysis:\n\n   **Rename (symbol):** all imports + usage sites + string references + dynamic access patterns (`obj[key]`)\n\n   **Rename (file\u002Fmodule):** all import paths + path aliases + dynamic imports + index re-exports\n\n   **Extract (function\u002Fcomponent\u002Fmodule):** code to extract, enclosing-scope dependencies, return values back to caller, destination file, interface design\n\n   **Move (file):** every import of old path → compute new relative paths, check alias boundary changes, barrel updates\n\n   **Split (file):** logical groupings, internal cross-references, which group keeps the original path, new files per group, index if needed\n\n   **Merge (files):** duplicates\u002Fconflicts, import consolidation, merged file organization\n\n3. **Produce the plan** — list every file that will change and what changes:\n\n```\nRefactoring Plan: {type} — {description}\n\nFiles to modify:\n  1. {file}: {what changes and why}\n  2. {file}: {what changes and why}\n  ...\n\nFiles to create:\n  - {file}: {extracted from where, contains what}\n\nFiles to delete:\n  - {file}: {contents moved to where}\n\nRisk assessment:\n  - {any concerns: dynamic references, string-based lookups, config files}\n```\n\n4. If `--dry-run` was specified, output the plan and stop.\n\n### Phase 3: EXECUTE\n\nApply changes in this order to minimize intermediate breakage:\n1. Create new files first (exports only, not yet imported)\n2. Update importers to point to new locations\u002Fnames\n3. Update the source file (remove extracted code, rename, etc.)\n4. Delete old files last (only after all importers are updated)\n5. Update index\u002Fbarrel files\n\nRead each file before editing. Make the minimal change needed — do not reformat unrelated code.\n\n### Phase 4: VERIFY\n\nRun typecheck and tests from Phase 1. Compare against baseline — any NEW errors or failures? Search for import paths referencing old\u002Fdeleted files.\n\n```\nVerification: PASS\n  Typecheck: {pass | same N pre-existing errors}\n  Tests: {pass | same N pre-existing failures}\n  No new broken imports detected.\n```\n\n### Phase 5: FIX (if verification fails)\n\nTwo attempts: read errors, identify root cause (missed import update, missing re-export, type mismatch), fix, re-run verification. After 2 failed attempts: REVERT.\n\n### Phase 6: REVERT (if fixes fail)\n\n1. Use `git checkout -- [files]` to restore every modified file\n2. Remove any newly created files\n3. Verify the revert: typecheck should match baseline exactly\n4. Report what went wrong\n\n```\nREVERTED — Refactoring could not be completed cleanly.\n\nRoot cause: {why the refactoring failed}\nErrors encountered:\n  - {error 1}\n  - {error 2}\n\nSuggestion: {what the user might do differently}\n```\n\n## Fringe Cases\n\n- **No test baseline**: no test suite found in Phase 1 — output: \"No tests found. Refactor proceeds without a safety net — abort or continue? Recommend running \u002Ftest-gen first.\" Wait for user confirmation before continuing.\n- **Baseline typecheck fails**: typecheck errors exist before any refactor changes — output: \"Baseline typecheck failed. Fix existing type errors before refactoring to establish a clean baseline.\" Do not proceed.\n- **Build fails after refactor commit**: Phase 4 build regression detected — revert the commit with `git revert HEAD --no-edit`, then report which verification step introduced the regression and what the failing error is.\n- **Circular dependency detected**: import cycle surfaces during scope analysis — treat as a blocker; output: \"Circular dependency detected in [file]. Resolve the cycle before proceeding.\" Do not modify that file without explicit user decision.\n- **Target file exceeds 500 lines**: output: \"Warning: [file] is [N] lines. Refactoring may split this file into multiple pieces. Confirm scope before proceeding.\" Show the proposed split in the plan and wait for user approval.\n\n## Quality Gates\n\n- **Zero new type errors** — zero NEW ones, not just fewer.\n- **Zero new test failures** — baseline failures accepted, new failures are not.\n- **All imports resolve** — no dangling references to old paths or removed exports.\n- **Behavior unchanged** — adding logic or changing return values is scope creep; stop and do it separately.\n- **Minimal diff** — no reformatting, unrelated cleanups, or whitespace changes in untouched files.\n- **Plan matches execution** — every planned file modified, no unplanned files touched.\n\n## Exit Protocol\n\nReport the result:\n\n```\n=== Refactor Report ===\n\nType: {rename | extract | inline | move | split | merge}\nTarget: {what was refactored}\n\nChanges:\n  Modified: {N} files\n  Created: {N} files\n  Deleted: {N} files\n\nVerification:\n  Typecheck: {pass | same baseline errors}\n  Tests: {pass | same baseline failures | no test suite}\n\nKey decisions:\n- {any non-obvious choices made during execution}\n```\n\n```\n---HANDOFF---\n- Refactored {target}: {what changed}\n- {N} files modified, {N} created, {N} deleted\n- Typecheck and tests pass (no regressions)\n- {any follow-up suggestions}\n- Reversibility: green -- single atomic commit, revert with git revert HEAD\n---\n```\n","# \u002Frefactor — Safe Multi-File Refactoring\n\n## Orientation\n\nUse `\u002Frefactor` when you need to:\n- Rename a symbol, file, or module across the codebase\n- Extract a function, component, hook, class, or module from existing code\n- Inline a function or module back into its callers\n- Move a file or set of files to a new location\n- Split a large file into smaller pieces\n- Merge related files into one\n- Change a function signature and update all call sites\n\n**Don't use when:** debugging a specific bug (use \u002Fsystematic-debugging); adding new features (use \u002Fmarshal or \u002Fscaffold); deleting dead code (use \u002Fmarshal for a targeted cleanup).\n\n**Boundary with \u002Forganize:** \u002Frefactor changes code structure within files (extract, inline, split, merge, rename) and moves files as part of those operations. Repository-wide file\u002Fdirectory placement, naming sweeps, and where-does-this-belong decisions are \u002Forganize.\n\n**Behavior does not change.** Tests pass before and after, no new type errors — the refactoring is correct.\n\n## Commands\n\n| Command | Behavior |\n|---|---|\n| `\u002Frefactor rename [old] to [new]` | Rename symbol, file, or module |\n| `\u002Frefactor extract [target] from [source]` | Extract function\u002Fcomponent\u002Fmodule |\n| `\u002Frefactor inline [target]` | Inline a function\u002Fmodule into callers |\n| `\u002Frefactor move [source] to [dest]` | Move file(s) with import updates |\n| `\u002Frefactor split [file]` | Split a file into logical pieces |\n| `\u002Frefactor merge [files...]` | Merge related files into one |\n| `\u002Frefactor [freeform description]` | Auto-detect refactoring type from description |\n| `\u002Frefactor --dry-run [any above]` | Plan only, show what would change |\n\n## Protocol\n\n### Phase 1: BASELINE\n\nRun typecheck (via `node scripts\u002Frun-with-timeout.js 300 npm run typecheck`) and tests. Record error\u002Ffailure counts — pre-existing issues are not your responsibility, but you must not add to them. Warn if there are uncommitted changes in files you plan to modify.\n\n```\nBaseline established:\n  Typecheck: {pass | N errors (pre-existing)}\n  Tests: {pass | N failures (pre-existing) | no test suite found}\n  Git: {clean | M files with uncommitted changes}\n```\n\n### Phase 2: PLAN\n\nAnalyze the refactoring target and produce a concrete plan.\n\n1. **Identify scope**: Search the codebase for every reference to the target.\n   Use grep\u002Fsearch for:\n   - Import statements referencing the target\n   - Usage sites (function calls, type references, component usage)\n   - Re-exports from index files\n   - Test files that reference the target\n   - Documentation or comments mentioning the target\n   - Config files (e.g., route definitions, dependency injection)\n\n2. **Classify the refactoring type** and apply type-specific analysis:\n\n   **Rename (symbol):** all imports + usage sites + string references + dynamic access patterns (`obj[key]`)\n\n   **Rename (file\u002Fmodule):** all import paths + path aliases + dynamic imports + index re-exports\n\n   **Extract (function\u002Fcomponent\u002Fmodule):** code to extract, enclosing-scope dependencies, return values back to caller, destination file, interface design\n\n   **Move (file):** every import of old path → compute new relative paths, check alias boundary changes, barrel updates\n\n   **Split (file):** logical groupings, internal cross-references, which group keeps the original path, new files per group, index if needed\n\n   **Merge (files):** duplicates\u002Fconflicts, import consolidation, merged file organization\n\n3. **Produce the plan** — list every file that will change and what changes:\n\n```\nRefactoring Plan: {type} — {description}\n\nFiles to modify:\n  1. {file}: {what changes and why}\n  2. {file}: {what changes and why}\n  ...\n\nFiles to create:\n  - {file}: {extracted from where, contains what}\n\nFiles to delete:\n  - {file}: {contents moved to where}\n\nRisk assessment:\n  - {any concerns: dynamic references, string-based lookups, config files}\n```\n\n4. If `--dry-run` was specified, output the plan and stop.\n\n### Phase 3: EXECUTE\n\nApply changes in this order to minimize intermediate breakage:\n1. Create new files first (exports only, not yet imported)\n2. Update importers to point to new locations\u002Fnames\n3. Update the source file (remove extracted code, rename, etc.)\n4. Delete old files last (only after all importers are updated)\n5. Update index\u002Fbarrel files\n\nRead each file before editing. Make the minimal change needed — do not reformat unrelated code.\n\n### Phase 4: VERIFY\n\nRun typecheck and tests from Phase 1. Compare against baseline — any NEW errors or failures? Search for import paths referencing old\u002Fdeleted files.\n\n```\nVerification: PASS\n  Typecheck: {pass | same N pre-existing errors}\n  Tests: {pass | same N pre-existing failures}\n  No new broken imports detected.\n```\n\n### Phase 5: FIX (if verification fails)\n\nTwo attempts: read errors, identify root cause (missed import update, missing re-export, type mismatch), fix, re-run verification. After 2 failed attempts: REVERT.\n\n### Phase 6: REVERT (if fixes fail)\n\n1. Use `git checkout -- [files]` to restore every modified file\n2. Remove any newly created files\n3. Verify the revert: typecheck should match baseline exactly\n4. Report what went wrong\n\n```\nREVERTED — Refactoring could not be completed cleanly.\n\nRoot cause: {why the refactoring failed}\nErrors encountered:\n  - {error 1}\n  - {error 2}\n\nSuggestion: {what the user might do differently}\n```\n\n## Fringe Cases\n\n- **No test baseline**: no test suite found in Phase 1 — output: \"No tests found. Refactor proceeds without a safety net — abort or continue? Recommend running \u002Ftest-gen first.\" Wait for user confirmation before continuing.\n- **Baseline typecheck fails**: typecheck errors exist before any refactor changes — output: \"Baseline typecheck failed. Fix existing type errors before refactoring to establish a clean baseline.\" Do not proceed.\n- **Build fails after refactor commit**: Phase 4 build regression detected — revert the commit with `git revert HEAD --no-edit`, then report which verification step introduced the regression and what the failing error is.\n- **Circular dependency detected**: import cycle surfaces during scope analysis — treat as a blocker; output: \"Circular dependency detected in [file]. Resolve the cycle before proceeding.\" Do not modify that file without explicit user decision.\n- **Target file exceeds 500 lines**: output: \"Warning: [file] is [N] lines. Refactoring may split this file into multiple pieces. Confirm scope before proceeding.\" Show the proposed split in the plan and wait for user approval.\n\n## Quality Gates\n\n- **Zero new type errors** — zero NEW ones, not just fewer.\n- **Zero new test failures** — baseline failures accepted, new failures are not.\n- **All imports resolve** — no dangling references to old paths or removed exports.\n- **Behavior unchanged** — adding logic or changing return values is scope creep; stop and do it separately.\n- **Minimal diff** — no reformatting, unrelated cleanups, or whitespace changes in untouched files.\n- **Plan matches execution** — every planned file modified, no unplanned files touched.\n\n## Exit Protocol\n\nReport the result:\n\n```\n=== Refactor Report ===\n\nType: {rename | extract | inline | move | split | merge}\nTarget: {what was refactored}\n\nChanges:\n  Modified: {N} files\n  Created: {N} files\n  Deleted: {N} files\n\nVerification:\n  Typecheck: {pass | same baseline errors}\n  Tests: {pass | same baseline failures | no test suite}\n\nKey decisions:\n- {any non-obvious choices made during execution}\n```\n\n```\n---HANDOFF---\n- Refactored {target}: {what changed}\n- {N} files modified, {N} created, {N} deleted\n- Typecheck and tests pass (no regressions)\n- {any follow-up suggestions}\n- Reversibility: green -- single atomic commit, revert with git revert HEAD\n---\n```\n",{"name":5,"license":15,"description":7,"auto-trigger":44,"last-updated":48,"user-invocable":49,"trigger_keywords":50},1773964800000,true,[5,51,52,53,54,55,56],"rename","extract","inline","move file","split file","merge files","main","e1a3d45697a0f323aaedcbea0ab6a0387b5fe722","skills\u002Frefactor",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-06 02:04:44",{"source":8,"skillName":5,"commands":67,"prompt":77,"zipAvailable":49},[68,71,74],{"tool":69,"command":70},"npx","npx skills add SethGammon\u002FCitadel --skill refactor",{"tool":72,"command":73},"bunx","bunx skills add SethGammon\u002FCitadel --skill refactor",{"tool":75,"command":76},"pnpm","pnpm dlx skills add SethGammon\u002FCitadel --skill refactor","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FSethGammon\u002FCitadel\u002Fblob\u002Fmain\u002Fskills\u002Frefactor\u002FSKILL.md",[79,85],{"path":80,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":83,"sourceHtmlUrl":84},"__benchmarks__\u002Fno-target.md","REFERENCE","参考文档",714,"https:\u002F\u002Fgithub.com\u002FSethGammon\u002FCitadel\u002Fblob\u002Fmain\u002Fskills\u002Frefactor\u002F__benchmarks__\u002Fno-target.md",{"path":86,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":87,"sourceHtmlUrl":88},"__benchmarks__\u002Fspecific-refactor.md",774,"https:\u002F\u002Fgithub.com\u002FSethGammon\u002FCitadel\u002Fblob\u002Fmain\u002Fskills\u002Frefactor\u002F__benchmarks__\u002Fspecific-refactor.md",[90,115,141,165,191,210],{"skillNo":91,"name":92,"nameZh":6,"description":93,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":94,"categories":95,"keywords":96,"publishedAt":43},"01M6GXSBKE9A2HQWF8QRAZ4WJ5","workspace","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.","https:\u002F\u002Fgithub.com\u002FSethGammon\u002FCitadel\u002Fblob\u002Fmain\u002Fskills\u002Fworkspace\u002FSKILL.md",[],[92,97,98,99,100,101,102,103,104,105,106,107,108,30,109,110,111,112,113,114],"repos","snowflake","multi-repo","work","context","campaign","coordinate","but","across","campaigns","shared","as","scope","add","unit","coordinator","fleet","claims",{"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":124,"publishedAt":43},"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",[121],{"categoryNo":122,"categoryName":123,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",[117,125,126,127,128,129,130,131,132,133,33,134,135,136,137,138,108,30,139,140],"vector","embeddings","librarian","markdown","knowledge","karpathy","knowledge management","karpathy wiki","up","maintain","self","knowledge base","project","db","sources","native",{"skillNo":142,"name":143,"nameZh":6,"description":144,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":145,"categories":146,"keywords":147,"publishedAt":43},"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",[],[143,148,149,150,151,152,153,154,155,156,157,158,33,159,160,161,162,163,30,164],"directory","commit","tasks","git","batch","actions","start","sentinel","diff","auto","stop","do","scan","human","judgment","reactions","processing",{"skillNo":166,"name":167,"nameZh":6,"description":168,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":169,"categories":170,"keywords":174,"publishedAt":43},"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",[171],{"categoryNo":172,"categoryName":173,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",[167,175,176,177,178,179,180,181,182,183,184,185,186,135,187,30,188,189,190,25],"citadel","telemetry","harness","pipeline","Bash","tool","read","write","edit","session","hooks","reports","live","hook","errors","calls",{"skillNo":192,"name":193,"nameZh":6,"description":194,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":195,"categories":196,"keywords":197,"publishedAt":43},"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",[],[193,198,175,177,199,200,201,202,203,133,186,204,205,206,207,208,108,30,209,25],"uninstall","adoption","plan","archive","remove","only","Legacy","surfaces","clean","imported","active","material",{"skillNo":211,"name":212,"nameZh":6,"description":213,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":214,"categories":215,"keywords":222,"publishedAt":43},"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",[216,217],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":218,"categoryName":219,"taxonomyType":220,"taxonomyTypeDesc":221},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[212,223,224,225,226,227,228,229,230,231,232,233,234,235,159,30,236,237,238,25],"code review","review","review pr","pr","code","github issues","issues","open","use","unrelated","issue","general","references","line","investigator","reviews"]