[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6GXR2TFDS3DP266FJVE2VA0":3,"skill-same:01M6GXR2TFDS3DP266FJVE2VA0":91},{"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":28,"publishedAt":48,"linkOnly":49,"markdownContent":50,"markdownBody":51,"frontMatter":52,"refName":59,"commitSha":60,"skillDirectory":61,"forksCount":62,"repositoryHtmlUrl":63,"repositoryHomepageUrl":64,"ownerHtmlUrl":65,"ownerBlogUrl":64,"ownerDescription":66,"updatedAt":67,"install":68,"resources":80},"01M6GXR2TFDS3DP266FJVE2VA0","setup",null,"First-run experience for the harness. Three modes: Recommended (guided, ~3 min), Full Tour (guided + skill walkthrough, ~8 min), and Express (zero questions, ~30 sec). Installs hooks first, detects stack, configures harness.json, runs a live demo on real code, and prints a reference card.","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\u002Fsetup\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[5,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47],"true","citadel","card","false","live","express","full","three","hooks","install","getting started","stack","configure","walkthrough","ZeRO","demo","harness","code","run","2026-11-10 10:12:30",false,"---\nname: setup\nlicense: MIT\ndescription: >-\n  First-run experience for the harness. Three modes: Recommended (guided,\n  ~3 min), Full Tour (guided + skill walkthrough, ~8 min), and Express\n  (zero questions, ~30 sec). Installs hooks first, detects stack, configures\n  harness.json, runs a live demo on real code, and prints a reference card.\nuser-invocable: true\nauto-trigger: false\ntrigger_keywords:\n  - setup\n  - first run\n  - configure harness\n  - install citadel\n  - getting started\nlast-updated: 2026-04-06\n---\n\n# \u002Fdo setup — First-Run Experience\n\nConfigures the harness for a specific project: installs hooks, detects stack, writes harness.json, and optionally demos the system on real code. Flag: `\u002Fdo setup --express` skips mode selection and runs Express directly. Reference tables and layouts: docs\u002FSETUP_REFERENCE.md.\n\n## Orientation\n\n**Use when:** first-run configuration of Citadel on a new project -- installs hooks, generates harness.json, scaffolds .planning\u002F.\n**Don't use when:** harness is already configured and you want to verify it (use \u002Fverify); adding a single skill to an existing project (copy SKILL.md manually).\n\n## Protocol\n\n### Step -1: ARCHIVE DETECTION (all modes, before anything else)\n\nRun `ls docs\u002Fcitadel\u002F 2>\u002Fdev\u002Fnull`. If `docs\u002Fcitadel\u002F` exists and contains `.md` files with `citadel-archive: true` in frontmatter, extract the `exported-at` date and prompt once:\n\n```\nFound a Citadel archive from {exported-at date}.\n  Campaigns: {N}  Postmortems: {N}  Backlog items: {N}  Research: {N}\n\nRestore history into .planning\u002F during setup? [Y\u002Fn]\n```\n\nY or Enter → set `restoreArchive = true`, restore after Step 1 (below). n → skip silently. No archive found → skip entirely, no output.\n\n**ARCHIVE RESTORE** (runs after Step 1 if `restoreArchive = true`). Splitting: each `## Section Title` becomes one restored file; strip frontmatter before writing.\n\n| File | Restore to |\n|---|---|\n| `campaigns.md` | Split sections → `.planning\u002Fcampaigns\u002Fcompleted\u002F{name}.md` |\n| `postmortems.md` | Split sections → `.planning\u002Fpostmortems\u002F{name}.md` |\n| `research.md` | Split sections → `.planning\u002Fresearch\u002F{name}.md` |\n| `backlog.md` | Split sections → `.planning\u002Fintake\u002F{name}.md` |\n| `discoveries.md` | Split sections → `.planning\u002Fdiscoveries\u002F{name}.md` |\n| `project.md` | Strip frontmatter → `.citadel\u002Fproject.md` |\n| `harness.json.md` | Strip frontmatter → `.claude\u002Fharness.json` (Citadel's shared config path for all runtimes, including Codex) |\n\nAfter restore: `  ✓ Archive restored — {N} campaigns, {N} postmortems, {N} backlog items`\n\n### Step 0: MODE SELECTION\n\n```\nWelcome to Citadel.\n\nHow would you like to get started?\n\n  [1] Recommended  — auto-detect your stack, install hooks, live demo  (~3 min)\n  [2] Full Tour    — everything in Recommended + guided skill walkthrough (~8 min)\n  [3] Express      — zero questions, auto-detect, hooks installed, done  (~30 sec)\n\nPress Enter for Recommended, or type 1, 2, or 3.\n```\n\nIf harness.json already exists with full config, add: `  [4] Update — reconfigure existing setup (current: {language}, {skillCount} skills)`. Default: Recommended. If `--express` flag passed: skip mode selection, run Express.\n\n### Step 1: INSTALL HOOKS (all modes, always first)\n\nHooks must be live before anything else. Run `node {citadel-root}\u002Fscripts\u002Finstall-hooks.js`. Find `{citadel-root}`: read `.citadel\u002Fplugin-root.txt`; fallback: directory containing this SKILL.md. The installer resolves the current config (or the bootstrap Standard + Core + Persistence default), writes `.citadel\u002Feffective-config\u002F\u003Cruntime-id>.json`, installs only hooks owned by effective bundles, preserves non-Citadel settings, and is idempotent.\n\n**On success:** `  ✓ {N} hooks installed (protect-files, external-gate, circuit-breaker, quality-gate + more)`\n**On failure:** output the error, explain manual install path (`node \u002Fpath\u002Fto\u002FCitadel\u002Fscripts\u002Finstall-hooks.js`), continue — setup must not abort.\n\n### Step 2: STACK DETECTION (all modes)\n\nAuto-detect by scanning the project root. Never ask what can be read. (Readable tables: docs\u002FSETUP_REFERENCE.md#stack-detection-tables.)\n\n- **Language** (check in order): `tsconfig.json` → TypeScript; `package.json` without tsconfig → JavaScript; `requirements.txt` or `pyproject.toml` → Python; `go.mod` → Go; `Cargo.toml` → Rust; `pom.xml` or `build.gradle` → Java\n- **Framework** (package.json dependencies): `next` → Next.js; `react` (no next) → React; `vue` → Vue; `svelte` → Svelte; `@angular\u002Fcore` → Angular; `express` → Express; `fastify` → Fastify\n- **Package manager**: `pnpm-lock.yaml` → pnpm; `yarn.lock` → yarn; `bun.lockb` → bun; `package-lock.json` → npm; `requirements.txt` → pip; `Pipfile` → pipenv\n- **Test framework**: package.json devDependencies for `jest`, `vitest`, `mocha`, `jasmine`; Python: `pytest` in requirements.txt or pyproject.toml\n- **Typecheck by language**: TypeScript `npx tsc --noEmit` (per-file: no, project-scope incremental); Python `mypy {file}` or `pyright {file}` (per-file: yes); Go `go vet .\u002F...`, Rust `cargo check`, JavaScript none (per-file: no)\n\n**Confirmation (Recommended + Full Tour only):** output `Detected: {language}{+ framework if any} · {packageManager} · {testFramework if any}`, then `Correct? [y\u002Fn\u002Fedit]`. y\u002FEnter → proceed; n\u002Fedit → ask for corrections inline. Express: skip confirmation, use detected values.\n\n### Step 3: GENERATE CONFIG (all modes)\n\nCreate `.planning\u002Ftmp\u002Fcitadel-stack.json` with only the detected compatibility\nfields below. This input is not authoritative and must not contain profile,\nbundle, consent, trust, or policy fields:\n\n```json\n{\n  \"language\": \"typescript\",\n  \"framework\": \"react\",\n  \"packageManager\": \"npm\",\n  \"typecheck\": { \"command\": \"npx tsc --noEmit\", \"perFile\": false, \"timeoutMs\": 25000 },\n  \"test\": { \"command\": \"npm test\", \"framework\": \"vitest\" },\n  \"qualityRules\": { \"builtIn\": [\"no-confirm-alert\", \"no-transition-all\"], \"custom\": [] },\n  \"protectedFiles\": [\".claude\u002Fharness.json\", \".claude\u002Fsettings.json\"],\n  \"features\": { \"intakeScanner\": true, \"telemetry\": true },\n  \"registeredSkills\": [\"do\", \"review\"],\n  \"registeredSkillCount\": 2,\n  \"agentTimeouts\": { \"skill\": 600000, \"research\": 900000, \"build\": 1800000 }\n}\n```\n\nSubstitute the detected values and complete skill list; use JSON `null` when no\nframework or test framework is detected.\n\nPreview the deterministic version-2 config migration without writing:\n\n```bash\nnode {citadelRoot}\u002Fscripts\u002Fcitadel-config.js initialize \\\n  --input .planning\u002Ftmp\u002Fcitadel-stack.json --runtime {claude-code|codex|opencode} --json\n```\n\nShow profile, bundles, source\u002Fcandidate digests, and changed fields. Apply only\nafter the selected setup mode authorizes this exact plan:\n\n```bash\nnode {citadelRoot}\u002Fscripts\u002Fcitadel-config.js initialize \\\n  --input .planning\u002Ftmp\u002Fcitadel-stack.json --runtime {claude-code|codex|opencode} --apply --json\n```\n\nRecommended and Express use `standard@1.0.0` with Core + Persistence. Full Tour\nmay preview Parallel and Operations, but each bundle needs an explicit enable\nplan. If the runtime is partial, show the named adapter and require\n`--allow-degraded-runtime`; never silently describe degraded support as full.\nDelivery remains off until the user explicitly enables it.\n\nThe apply creates a sibling backup when replacing an existing config, validates\nthe observed digest, rolls back a failed write, and reconciles\n`.citadel\u002Feffective-config\u002F\u003Cruntime-id>.json`. Re-run `install-hooks.js` after the final\nbundle choice so disabled hook families are removed from the generated runtime\nprojection.\n\nNote: `perFile` applies to Python checkers only; TypeScript always runs a project-scope incremental check and ignores `perFile` with an advisory.\n\n**Skill registry rebuild:** populate `registeredSkills` from every directory under `{citadelRoot}\u002Fskills\u002F` plus `.claude\u002Fskills\u002F`. Set `registeredSkillCount` to match.\n\n**Routing table regeneration:** run `node {citadelRoot}\u002Fscripts\u002Fgenerate-routing.js`, then verify with `node {citadelRoot}\u002Fscripts\u002Fgenerate-routing.js --check` — exit 0 means all routing surfaces are in sync (what it regenerates: docs\u002FSETUP_REFERENCE.md#routing-surfaces). If the script is missing (older Citadel install), skip this step silently.\n\n**Dependency pattern suggestions (Recommended + Full Tour only):** read package.json for `@tanstack\u002Freact-query`, `zustand`, `date-fns`, `zod`. For each match ask: `\"I see {package} installed. Warn agents when they use {anti-pattern}? [y\u002Fn]\"` and add accepted patterns to `dependencyPatterns` in harness.json (anti-pattern and message table: docs\u002FSETUP_REFERENCE.md#dependency-pattern-suggestions).\n\n### Step 4: CLAUDE.md + AGENTS.md (all modes)\n\nRun `node {citadelRoot}\u002Fscripts\u002Fbootstrap-project-guidance.js --project-root {projectRoot}` — creates `.citadel\u002Fproject.md` and compatible `CLAUDE.md` plus `AGENTS.md` guidance. Safe to run — it preserves user-authored files.\n\nClaude Code v2.1.277 or later can use only `AGENTS.md`, but the version alone does not prove the built-in support is available in the current environment. When the operator has confirmed the **Project instructions** setting or an `AGENTS.md loaded` startup notice, run `node {citadelRoot}\u002Fscripts\u002Fbootstrap-project-guidance.js --project-root {projectRoot} --claude-agents-md-supported`. The script detects the installed Claude Code version, migrates only byte-for-byte unchanged Citadel guidance, and retains `CLAUDE.md` when the version or capability is unknown or project guidance would take precedence.\n\n**Project description (Recommended + Full Tour only):** ask `\"What's this project? One line is fine — or press Enter to use the package name.\"` Skip if CLAUDE.md already exists with content.\n\n**CLAUDE.md merge rules:**\n- Does not exist → generate the starter from docs\u002FSETUP_REFERENCE.md#claudemd-starter-template: project name, description, Stack section (detected values), placeholder Conventions and Architecture sections, and a `## Citadel Harness` section noting the harness and `.claude\u002Fharness.json`\n- Exists, no `## Citadel Harness` section → append that section at bottom only\n- Exists with `## Citadel Harness` → skip, don't duplicate\n- NEVER overwrite or delete existing content\n\n### Step 5: OPTIONAL INTEGRATIONS (Recommended + Full Tour only)\n\nPresent as one prompt:\n\n```\nOptional integrations — choose any, or press Enter to skip all:\n  [g] GitHub    — scaffold Claude triage workflow for issues + PRs\n  [m] MCP       — create .mcp.json with common servers pre-configured\n  [b] Both\n  [s] Skip\n```\n\n**GitHub:** create `.github\u002Fworkflows\u002F` if missing; copy `.planning\u002F_templates\u002Fclaude-triage.yml` → `.github\u002Fworkflows\u002Fclaude-triage.yml` and `.planning\u002F_templates\u002FREVIEW.md` → `REVIEW.md` (skip any that already exist). Output: `\"Add ANTHROPIC_API_KEY to Settings > Secrets > Actions to activate.\"`\n**MCP:** copy `.planning\u002F_templates\u002F.mcp.json` → `.mcp.json` (skip if exists). Output: `\"Edit .mcp.json to uncomment the servers you want.\"`\n\n### Step 5b: CROSS-CLONE MEMORY (Recommended + Full Tour only)\n\nRun `node {citadelRoot}\u002Fscripts\u002Frepository-memory.js status --project-root {projectRoot} --json`.\n\n- Already `enabled`: report the stored file\u002Fversion counts and do not prompt.\n- `unavailable`: skip the prompt; this optional capability requires Node.js 22.13+.\n- Otherwise ask: `\"Preserve completed Citadel lessons across disposable clones in a local user-level SQLite database? [y\u002FN]\"`\n\nOn yes, run:\n\n```bash\nnode {citadelRoot}\u002Fscripts\u002Frepository-memory.js enable --project-root {projectRoot}\n```\n\nState exactly what is stored: completed campaigns, postmortems, research,\ndiscoveries, backlog Markdown, and `.citadel\u002Fproject.md`. State what is excluded:\nactive work, telemetry, worktrees, consent, runtime config, and credentials. Raw\nremote URLs and clone paths are excluded as identity metadata, but allowlisted\ndocuments are stored verbatim and may mention either. Express mode never opts in\nautomatically, but an already-enabled repository continues to restore and sync\nthrough lifecycle hooks.\n\n### Step 6: LIVE DEMO (Recommended + Full Tour only)\n\n**Find target file:** `git diff --name-only HEAD~1 HEAD 2>\u002Fdev\u002Fnull | head -5`, filter for source files, use the most recently changed. If no git history, use `find` for recently modified files.\n\n**Pain point question:**\n\n```\nWhat's your biggest frustration with AI coding tools right now?\n\n  [a] Repetitive context — I keep re-explaining my codebase\n  [b] Quality — the agent breaks things or misses issues\n  [c] Context loss — every new session starts from zero\n  [d] Scale — fine for small tasks, falls apart on big ones\n  [e] Something else \u002F skip demo\n```\n\n**Demo by pain point** — execute on real code, show output:\n- **(a)** run `\u002Freview` on target file — \"This review uses the harness.json config you just set up — it already knows your stack, conventions, and quality rules.\"\n- **(b)** run `\u002Freview` on target file — \"The quality-gate hook just ran on every edit made during setup. Here's what that looks like on your code:\"\n- **(c)** show `.planning\u002F` structure, explain campaigns — \"Sessions now persist. Start a campaign today, close your laptop, resume tomorrow.\"\n- **(d)** run `\u002Freview` on largest source file — \"For bigger work: `\u002Fmarshal` for multi-step sessions, `\u002Farchon` for multi-day campaigns, `\u002Ffleet` for parallel agents.\"\n- **(e)** skip demo, continue to reference card\n\n### Step 7: FULL TOUR WALKTHROUGH (Full Tour only)\n\nPresent the five skill families in order, using the per-skill one-liners and timings from docs\u002FSETUP_REFERENCE.md#full-tour-walkthrough:\n\n1. **Code Quality** (2 min): `\u002Freview`, `\u002Ftest-gen`, `\u002Fsystematic-debugging` — show by running `\u002Freview` on the Step 6 file if not already done\n2. **Building** (2 min): `\u002Fscaffold`, `\u002Frefactor`, `\u002Fcreate-skill`\n3. **Research** (1 min): `\u002Fresearch` (add `--parallel` for multi-scout), `\u002Finfra-audit`\n4. **Orchestration** (1 min): `\u002Fmarshal`, `\u002Farchon`, `\u002Ffleet`\n5. **Observability** (1 min): `\u002Fdo next`, `\u002Fdashboard`, `\u002Fcost`, `\u002Flearn`\n\nAfter walkthrough: `That's the system. Everything routes through \u002Fdo — you never have to choose the right tool.`\n\n### Step 8: REFERENCE CARD (all modes)\n\nPrint the reference card using the canonical boxed layout at docs\u002FSETUP_REFERENCE.md#reference-card, filled with actual counts from the detected config. It must contain, in order:\n\n- Header: `CITADEL READY` — {N} skills · {N} hooks live · {language}{+ framework}\n- THE ONE COMMAND: `\u002Fdo [anything]` — describe what you want in plain English, the router handles the rest\n- COMMON STARTING POINTS: `\u002Fdo review [file]`, `\u002Fdo fix [description]`, `\u002Fdo why is [thing] broken`, `\u002Fdo build [feature]`, `\u002Fdo test [file]`, `\u002Fdo next`, `\u002Fdo status`, `\u002Fdo continue`\n- WHEN TASKS GET BIGGER: `\u002Fmarshal` (multi-step, one session), `\u002Farchon` (multi-session campaign), `\u002Ffleet` (parallel agents)\n- WHAT'S NOW PROTECTING YOUR SESSION: protect-files, external-gate, circuit-breaker, quality-gate, telemetry\n- NEXT STEPS: add conventions to CLAUDE.md, `\u002Fdo --list`, `\u002Fcreate-skill`, `\u002Fimprove [target]`\n- Footer: `docs\u002FSKILLS.md · INSTALL.md · \u002Fdo --list`\n\n**Express mode**: print abbreviated card (THE ONE COMMAND + WHAT'S NOW PROTECTING only).\n\n### Step 9: CLOSING LINE (all modes)\n\n```\nExpress:      Done. {N} hooks live, {N} skills registered.\n              Type \u002Fdo [anything] to start.\n\nRecommended:  Setup complete. Citadel is configured for {language}{+ framework}.\n              {N} hooks are protecting this session. {N} skills are registered.\n              Type \u002Fdo [anything] to get started — or \u002Fdo --list to browse all skills.\n\nFull Tour:    Tour complete. You've seen the full system.\n              {N} hooks live · {N} skills registered · trust level: {level}\n              The best next thing: \u002Fdo \"review the most important file in this codebase\"\n\nUpdate:       Configuration updated. {N} hooks reinstalled, {N} skills re-registered.\n              Changes: {list what changed vs previous config}\n```\n\n## Fringe Cases\n\n**Plugin not found (`.citadel\u002Fplugin-root.txt` missing):** Prompt for Citadel install path. Write answer to `.citadel\u002Fplugin-root.txt`.\n\n**Project has no source files:** Skip demo. Output: `\"Once you have code, try \u002Freview [file] to see the harness in action.\"`\n\n**harness.json is protected and Write tool is blocked:** Do not bypass the hook.\nUse the plan-first `citadel-config.js initialize` flow above.\n\n**Existing CLAUDE.md with no blank line at end:** Append newline before `## Citadel Harness` section.\n\n**Stack detection fails entirely:** Fall back to: `\"What's your primary language? (typescript \u002F javascript \u002F python \u002F go \u002F rust \u002F other)\"`\n\n**Re-running setup on configured project (Update mode):** Show diff of what would change. Don't silently overwrite. Confirm each change.\n\n**`bootstrap-project-guidance.js` not found:** Skip silently — fall back to manual CLAUDE.md template.\n\n## Contextual Gates\n\n**Disclosure:** \"Configuring Citadel for this project. Will preview a versioned config, reconcile the effective receipt, and install hooks owned by the selected bundles.\"\n**Reversibility:** amber. Writes receipted config\u002Fhook state and creates `.planning\u002F`; undo through `node scripts\u002Fadopt.js leave plan --target . --out ..\u002Fcitadel-leave.plan.json`, then apply that reviewed plan with its exact token\n**Trust gates:**\n- Any: first-run configuration; expected to modify settings and install hooks\n\n## Quality Gates\n\n- Hooks must be installed before any other step completes\n- harness.json must validate as schema v2 and contain `registeredSkillCount` matching actual skill count\n- `.citadel\u002Feffective-config\u002F\u003Cruntime-id>.json` must be current for the harness source digest\n- installed hooks must belong only to effective bundles\n- CLAUDE.md must not lose existing content\n- Demo must run on real user code, not a canned example\n- Reference card must show accurate skill and hook counts\n- Closing line must confirm hooks are live\n\n## Exit Protocol\n\nDo not output a HANDOFF block. Setup is the beginning.\nAfter the closing line, wait for the user's next command.\n","# \u002Fdo setup — First-Run Experience\n\nConfigures the harness for a specific project: installs hooks, detects stack, writes harness.json, and optionally demos the system on real code. Flag: `\u002Fdo setup --express` skips mode selection and runs Express directly. Reference tables and layouts: docs\u002FSETUP_REFERENCE.md.\n\n## Orientation\n\n**Use when:** first-run configuration of Citadel on a new project -- installs hooks, generates harness.json, scaffolds .planning\u002F.\n**Don't use when:** harness is already configured and you want to verify it (use \u002Fverify); adding a single skill to an existing project (copy SKILL.md manually).\n\n## Protocol\n\n### Step -1: ARCHIVE DETECTION (all modes, before anything else)\n\nRun `ls docs\u002Fcitadel\u002F 2>\u002Fdev\u002Fnull`. If `docs\u002Fcitadel\u002F` exists and contains `.md` files with `citadel-archive: true` in frontmatter, extract the `exported-at` date and prompt once:\n\n```\nFound a Citadel archive from {exported-at date}.\n  Campaigns: {N}  Postmortems: {N}  Backlog items: {N}  Research: {N}\n\nRestore history into .planning\u002F during setup? [Y\u002Fn]\n```\n\nY or Enter → set `restoreArchive = true`, restore after Step 1 (below). n → skip silently. No archive found → skip entirely, no output.\n\n**ARCHIVE RESTORE** (runs after Step 1 if `restoreArchive = true`). Splitting: each `## Section Title` becomes one restored file; strip frontmatter before writing.\n\n| File | Restore to |\n|---|---|\n| `campaigns.md` | Split sections → `.planning\u002Fcampaigns\u002Fcompleted\u002F{name}.md` |\n| `postmortems.md` | Split sections → `.planning\u002Fpostmortems\u002F{name}.md` |\n| `research.md` | Split sections → `.planning\u002Fresearch\u002F{name}.md` |\n| `backlog.md` | Split sections → `.planning\u002Fintake\u002F{name}.md` |\n| `discoveries.md` | Split sections → `.planning\u002Fdiscoveries\u002F{name}.md` |\n| `project.md` | Strip frontmatter → `.citadel\u002Fproject.md` |\n| `harness.json.md` | Strip frontmatter → `.claude\u002Fharness.json` (Citadel's shared config path for all runtimes, including Codex) |\n\nAfter restore: `  ✓ Archive restored — {N} campaigns, {N} postmortems, {N} backlog items`\n\n### Step 0: MODE SELECTION\n\n```\nWelcome to Citadel.\n\nHow would you like to get started?\n\n  [1] Recommended  — auto-detect your stack, install hooks, live demo  (~3 min)\n  [2] Full Tour    — everything in Recommended + guided skill walkthrough (~8 min)\n  [3] Express      — zero questions, auto-detect, hooks installed, done  (~30 sec)\n\nPress Enter for Recommended, or type 1, 2, or 3.\n```\n\nIf harness.json already exists with full config, add: `  [4] Update — reconfigure existing setup (current: {language}, {skillCount} skills)`. Default: Recommended. If `--express` flag passed: skip mode selection, run Express.\n\n### Step 1: INSTALL HOOKS (all modes, always first)\n\nHooks must be live before anything else. Run `node {citadel-root}\u002Fscripts\u002Finstall-hooks.js`. Find `{citadel-root}`: read `.citadel\u002Fplugin-root.txt`; fallback: directory containing this SKILL.md. The installer resolves the current config (or the bootstrap Standard + Core + Persistence default), writes `.citadel\u002Feffective-config\u002F\u003Cruntime-id>.json`, installs only hooks owned by effective bundles, preserves non-Citadel settings, and is idempotent.\n\n**On success:** `  ✓ {N} hooks installed (protect-files, external-gate, circuit-breaker, quality-gate + more)`\n**On failure:** output the error, explain manual install path (`node \u002Fpath\u002Fto\u002FCitadel\u002Fscripts\u002Finstall-hooks.js`), continue — setup must not abort.\n\n### Step 2: STACK DETECTION (all modes)\n\nAuto-detect by scanning the project root. Never ask what can be read. (Readable tables: docs\u002FSETUP_REFERENCE.md#stack-detection-tables.)\n\n- **Language** (check in order): `tsconfig.json` → TypeScript; `package.json` without tsconfig → JavaScript; `requirements.txt` or `pyproject.toml` → Python; `go.mod` → Go; `Cargo.toml` → Rust; `pom.xml` or `build.gradle` → Java\n- **Framework** (package.json dependencies): `next` → Next.js; `react` (no next) → React; `vue` → Vue; `svelte` → Svelte; `@angular\u002Fcore` → Angular; `express` → Express; `fastify` → Fastify\n- **Package manager**: `pnpm-lock.yaml` → pnpm; `yarn.lock` → yarn; `bun.lockb` → bun; `package-lock.json` → npm; `requirements.txt` → pip; `Pipfile` → pipenv\n- **Test framework**: package.json devDependencies for `jest`, `vitest`, `mocha`, `jasmine`; Python: `pytest` in requirements.txt or pyproject.toml\n- **Typecheck by language**: TypeScript `npx tsc --noEmit` (per-file: no, project-scope incremental); Python `mypy {file}` or `pyright {file}` (per-file: yes); Go `go vet .\u002F...`, Rust `cargo check`, JavaScript none (per-file: no)\n\n**Confirmation (Recommended + Full Tour only):** output `Detected: {language}{+ framework if any} · {packageManager} · {testFramework if any}`, then `Correct? [y\u002Fn\u002Fedit]`. y\u002FEnter → proceed; n\u002Fedit → ask for corrections inline. Express: skip confirmation, use detected values.\n\n### Step 3: GENERATE CONFIG (all modes)\n\nCreate `.planning\u002Ftmp\u002Fcitadel-stack.json` with only the detected compatibility\nfields below. This input is not authoritative and must not contain profile,\nbundle, consent, trust, or policy fields:\n\n```json\n{\n  \"language\": \"typescript\",\n  \"framework\": \"react\",\n  \"packageManager\": \"npm\",\n  \"typecheck\": { \"command\": \"npx tsc --noEmit\", \"perFile\": false, \"timeoutMs\": 25000 },\n  \"test\": { \"command\": \"npm test\", \"framework\": \"vitest\" },\n  \"qualityRules\": { \"builtIn\": [\"no-confirm-alert\", \"no-transition-all\"], \"custom\": [] },\n  \"protectedFiles\": [\".claude\u002Fharness.json\", \".claude\u002Fsettings.json\"],\n  \"features\": { \"intakeScanner\": true, \"telemetry\": true },\n  \"registeredSkills\": [\"do\", \"review\"],\n  \"registeredSkillCount\": 2,\n  \"agentTimeouts\": { \"skill\": 600000, \"research\": 900000, \"build\": 1800000 }\n}\n```\n\nSubstitute the detected values and complete skill list; use JSON `null` when no\nframework or test framework is detected.\n\nPreview the deterministic version-2 config migration without writing:\n\n```bash\nnode {citadelRoot}\u002Fscripts\u002Fcitadel-config.js initialize \\\n  --input .planning\u002Ftmp\u002Fcitadel-stack.json --runtime {claude-code|codex|opencode} --json\n```\n\nShow profile, bundles, source\u002Fcandidate digests, and changed fields. Apply only\nafter the selected setup mode authorizes this exact plan:\n\n```bash\nnode {citadelRoot}\u002Fscripts\u002Fcitadel-config.js initialize \\\n  --input .planning\u002Ftmp\u002Fcitadel-stack.json --runtime {claude-code|codex|opencode} --apply --json\n```\n\nRecommended and Express use `standard@1.0.0` with Core + Persistence. Full Tour\nmay preview Parallel and Operations, but each bundle needs an explicit enable\nplan. If the runtime is partial, show the named adapter and require\n`--allow-degraded-runtime`; never silently describe degraded support as full.\nDelivery remains off until the user explicitly enables it.\n\nThe apply creates a sibling backup when replacing an existing config, validates\nthe observed digest, rolls back a failed write, and reconciles\n`.citadel\u002Feffective-config\u002F\u003Cruntime-id>.json`. Re-run `install-hooks.js` after the final\nbundle choice so disabled hook families are removed from the generated runtime\nprojection.\n\nNote: `perFile` applies to Python checkers only; TypeScript always runs a project-scope incremental check and ignores `perFile` with an advisory.\n\n**Skill registry rebuild:** populate `registeredSkills` from every directory under `{citadelRoot}\u002Fskills\u002F` plus `.claude\u002Fskills\u002F`. Set `registeredSkillCount` to match.\n\n**Routing table regeneration:** run `node {citadelRoot}\u002Fscripts\u002Fgenerate-routing.js`, then verify with `node {citadelRoot}\u002Fscripts\u002Fgenerate-routing.js --check` — exit 0 means all routing surfaces are in sync (what it regenerates: docs\u002FSETUP_REFERENCE.md#routing-surfaces). If the script is missing (older Citadel install), skip this step silently.\n\n**Dependency pattern suggestions (Recommended + Full Tour only):** read package.json for `@tanstack\u002Freact-query`, `zustand`, `date-fns`, `zod`. For each match ask: `\"I see {package} installed. Warn agents when they use {anti-pattern}? [y\u002Fn]\"` and add accepted patterns to `dependencyPatterns` in harness.json (anti-pattern and message table: docs\u002FSETUP_REFERENCE.md#dependency-pattern-suggestions).\n\n### Step 4: CLAUDE.md + AGENTS.md (all modes)\n\nRun `node {citadelRoot}\u002Fscripts\u002Fbootstrap-project-guidance.js --project-root {projectRoot}` — creates `.citadel\u002Fproject.md` and compatible `CLAUDE.md` plus `AGENTS.md` guidance. Safe to run — it preserves user-authored files.\n\nClaude Code v2.1.277 or later can use only `AGENTS.md`, but the version alone does not prove the built-in support is available in the current environment. When the operator has confirmed the **Project instructions** setting or an `AGENTS.md loaded` startup notice, run `node {citadelRoot}\u002Fscripts\u002Fbootstrap-project-guidance.js --project-root {projectRoot} --claude-agents-md-supported`. The script detects the installed Claude Code version, migrates only byte-for-byte unchanged Citadel guidance, and retains `CLAUDE.md` when the version or capability is unknown or project guidance would take precedence.\n\n**Project description (Recommended + Full Tour only):** ask `\"What's this project? One line is fine — or press Enter to use the package name.\"` Skip if CLAUDE.md already exists with content.\n\n**CLAUDE.md merge rules:**\n- Does not exist → generate the starter from docs\u002FSETUP_REFERENCE.md#claudemd-starter-template: project name, description, Stack section (detected values), placeholder Conventions and Architecture sections, and a `## Citadel Harness` section noting the harness and `.claude\u002Fharness.json`\n- Exists, no `## Citadel Harness` section → append that section at bottom only\n- Exists with `## Citadel Harness` → skip, don't duplicate\n- NEVER overwrite or delete existing content\n\n### Step 5: OPTIONAL INTEGRATIONS (Recommended + Full Tour only)\n\nPresent as one prompt:\n\n```\nOptional integrations — choose any, or press Enter to skip all:\n  [g] GitHub    — scaffold Claude triage workflow for issues + PRs\n  [m] MCP       — create .mcp.json with common servers pre-configured\n  [b] Both\n  [s] Skip\n```\n\n**GitHub:** create `.github\u002Fworkflows\u002F` if missing; copy `.planning\u002F_templates\u002Fclaude-triage.yml` → `.github\u002Fworkflows\u002Fclaude-triage.yml` and `.planning\u002F_templates\u002FREVIEW.md` → `REVIEW.md` (skip any that already exist). Output: `\"Add ANTHROPIC_API_KEY to Settings > Secrets > Actions to activate.\"`\n**MCP:** copy `.planning\u002F_templates\u002F.mcp.json` → `.mcp.json` (skip if exists). Output: `\"Edit .mcp.json to uncomment the servers you want.\"`\n\n### Step 5b: CROSS-CLONE MEMORY (Recommended + Full Tour only)\n\nRun `node {citadelRoot}\u002Fscripts\u002Frepository-memory.js status --project-root {projectRoot} --json`.\n\n- Already `enabled`: report the stored file\u002Fversion counts and do not prompt.\n- `unavailable`: skip the prompt; this optional capability requires Node.js 22.13+.\n- Otherwise ask: `\"Preserve completed Citadel lessons across disposable clones in a local user-level SQLite database? [y\u002FN]\"`\n\nOn yes, run:\n\n```bash\nnode {citadelRoot}\u002Fscripts\u002Frepository-memory.js enable --project-root {projectRoot}\n```\n\nState exactly what is stored: completed campaigns, postmortems, research,\ndiscoveries, backlog Markdown, and `.citadel\u002Fproject.md`. State what is excluded:\nactive work, telemetry, worktrees, consent, runtime config, and credentials. Raw\nremote URLs and clone paths are excluded as identity metadata, but allowlisted\ndocuments are stored verbatim and may mention either. Express mode never opts in\nautomatically, but an already-enabled repository continues to restore and sync\nthrough lifecycle hooks.\n\n### Step 6: LIVE DEMO (Recommended + Full Tour only)\n\n**Find target file:** `git diff --name-only HEAD~1 HEAD 2>\u002Fdev\u002Fnull | head -5`, filter for source files, use the most recently changed. If no git history, use `find` for recently modified files.\n\n**Pain point question:**\n\n```\nWhat's your biggest frustration with AI coding tools right now?\n\n  [a] Repetitive context — I keep re-explaining my codebase\n  [b] Quality — the agent breaks things or misses issues\n  [c] Context loss — every new session starts from zero\n  [d] Scale — fine for small tasks, falls apart on big ones\n  [e] Something else \u002F skip demo\n```\n\n**Demo by pain point** — execute on real code, show output:\n- **(a)** run `\u002Freview` on target file — \"This review uses the harness.json config you just set up — it already knows your stack, conventions, and quality rules.\"\n- **(b)** run `\u002Freview` on target file — \"The quality-gate hook just ran on every edit made during setup. Here's what that looks like on your code:\"\n- **(c)** show `.planning\u002F` structure, explain campaigns — \"Sessions now persist. Start a campaign today, close your laptop, resume tomorrow.\"\n- **(d)** run `\u002Freview` on largest source file — \"For bigger work: `\u002Fmarshal` for multi-step sessions, `\u002Farchon` for multi-day campaigns, `\u002Ffleet` for parallel agents.\"\n- **(e)** skip demo, continue to reference card\n\n### Step 7: FULL TOUR WALKTHROUGH (Full Tour only)\n\nPresent the five skill families in order, using the per-skill one-liners and timings from docs\u002FSETUP_REFERENCE.md#full-tour-walkthrough:\n\n1. **Code Quality** (2 min): `\u002Freview`, `\u002Ftest-gen`, `\u002Fsystematic-debugging` — show by running `\u002Freview` on the Step 6 file if not already done\n2. **Building** (2 min): `\u002Fscaffold`, `\u002Frefactor`, `\u002Fcreate-skill`\n3. **Research** (1 min): `\u002Fresearch` (add `--parallel` for multi-scout), `\u002Finfra-audit`\n4. **Orchestration** (1 min): `\u002Fmarshal`, `\u002Farchon`, `\u002Ffleet`\n5. **Observability** (1 min): `\u002Fdo next`, `\u002Fdashboard`, `\u002Fcost`, `\u002Flearn`\n\nAfter walkthrough: `That's the system. Everything routes through \u002Fdo — you never have to choose the right tool.`\n\n### Step 8: REFERENCE CARD (all modes)\n\nPrint the reference card using the canonical boxed layout at docs\u002FSETUP_REFERENCE.md#reference-card, filled with actual counts from the detected config. It must contain, in order:\n\n- Header: `CITADEL READY` — {N} skills · {N} hooks live · {language}{+ framework}\n- THE ONE COMMAND: `\u002Fdo [anything]` — describe what you want in plain English, the router handles the rest\n- COMMON STARTING POINTS: `\u002Fdo review [file]`, `\u002Fdo fix [description]`, `\u002Fdo why is [thing] broken`, `\u002Fdo build [feature]`, `\u002Fdo test [file]`, `\u002Fdo next`, `\u002Fdo status`, `\u002Fdo continue`\n- WHEN TASKS GET BIGGER: `\u002Fmarshal` (multi-step, one session), `\u002Farchon` (multi-session campaign), `\u002Ffleet` (parallel agents)\n- WHAT'S NOW PROTECTING YOUR SESSION: protect-files, external-gate, circuit-breaker, quality-gate, telemetry\n- NEXT STEPS: add conventions to CLAUDE.md, `\u002Fdo --list`, `\u002Fcreate-skill`, `\u002Fimprove [target]`\n- Footer: `docs\u002FSKILLS.md · INSTALL.md · \u002Fdo --list`\n\n**Express mode**: print abbreviated card (THE ONE COMMAND + WHAT'S NOW PROTECTING only).\n\n### Step 9: CLOSING LINE (all modes)\n\n```\nExpress:      Done. {N} hooks live, {N} skills registered.\n              Type \u002Fdo [anything] to start.\n\nRecommended:  Setup complete. Citadel is configured for {language}{+ framework}.\n              {N} hooks are protecting this session. {N} skills are registered.\n              Type \u002Fdo [anything] to get started — or \u002Fdo --list to browse all skills.\n\nFull Tour:    Tour complete. You've seen the full system.\n              {N} hooks live · {N} skills registered · trust level: {level}\n              The best next thing: \u002Fdo \"review the most important file in this codebase\"\n\nUpdate:       Configuration updated. {N} hooks reinstalled, {N} skills re-registered.\n              Changes: {list what changed vs previous config}\n```\n\n## Fringe Cases\n\n**Plugin not found (`.citadel\u002Fplugin-root.txt` missing):** Prompt for Citadel install path. Write answer to `.citadel\u002Fplugin-root.txt`.\n\n**Project has no source files:** Skip demo. Output: `\"Once you have code, try \u002Freview [file] to see the harness in action.\"`\n\n**harness.json is protected and Write tool is blocked:** Do not bypass the hook.\nUse the plan-first `citadel-config.js initialize` flow above.\n\n**Existing CLAUDE.md with no blank line at end:** Append newline before `## Citadel Harness` section.\n\n**Stack detection fails entirely:** Fall back to: `\"What's your primary language? (typescript \u002F javascript \u002F python \u002F go \u002F rust \u002F other)\"`\n\n**Re-running setup on configured project (Update mode):** Show diff of what would change. Don't silently overwrite. Confirm each change.\n\n**`bootstrap-project-guidance.js` not found:** Skip silently — fall back to manual CLAUDE.md template.\n\n## Contextual Gates\n\n**Disclosure:** \"Configuring Citadel for this project. Will preview a versioned config, reconcile the effective receipt, and install hooks owned by the selected bundles.\"\n**Reversibility:** amber. Writes receipted config\u002Fhook state and creates `.planning\u002F`; undo through `node scripts\u002Fadopt.js leave plan --target . --out ..\u002Fcitadel-leave.plan.json`, then apply that reviewed plan with its exact token\n**Trust gates:**\n- Any: first-run configuration; expected to modify settings and install hooks\n\n## Quality Gates\n\n- Hooks must be installed before any other step completes\n- harness.json must validate as schema v2 and contain `registeredSkillCount` matching actual skill count\n- `.citadel\u002Feffective-config\u002F\u003Cruntime-id>.json` must be current for the harness source digest\n- installed hooks must belong only to effective bundles\n- CLAUDE.md must not lose existing content\n- Demo must run on real user code, not a canned example\n- Reference card must show accurate skill and hook counts\n- Closing line must confirm hooks are live\n\n## Exit Protocol\n\nDo not output a HANDOFF block. Setup is the beginning.\nAfter the closing line, wait for the user's next command.\n",{"name":5,"license":15,"description":7,"auto-trigger":49,"last-updated":53,"user-invocable":54,"trigger_keywords":55},1775433600000,true,[5,56,57,58,39],"first run","configure harness","install citadel","main","e1a3d45697a0f323aaedcbea0ab6a0387b5fe722","skills\u002Fsetup",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":69,"prompt":79,"zipAvailable":54},[70,73,76],{"tool":71,"command":72},"npx","npx skills add SethGammon\u002FCitadel --skill setup",{"tool":74,"command":75},"bunx","bunx skills add SethGammon\u002FCitadel --skill setup",{"tool":77,"command":78},"pnpm","pnpm dlx skills add SethGammon\u002FCitadel --skill setup","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FSethGammon\u002FCitadel\u002Fblob\u002Fmain\u002Fskills\u002Fsetup\u002FSKILL.md",[81,87],{"path":82,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":85,"sourceHtmlUrl":86},"__benchmarks__\u002Falready-configured.md","REFERENCE","参考文档",851,"https:\u002F\u002Fgithub.com\u002FSethGammon\u002FCitadel\u002Fblob\u002Fmain\u002Fskills\u002Fsetup\u002F__benchmarks__\u002Falready-configured.md",{"path":88,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":89,"sourceHtmlUrl":90},"__benchmarks__\u002Ffresh-project.md",847,"https:\u002F\u002Fgithub.com\u002FSethGammon\u002FCitadel\u002Fblob\u002Fmain\u002Fskills\u002Fsetup\u002F__benchmarks__\u002Ffresh-project.md",[92,117,144,168,190,209],{"skillNo":93,"name":94,"nameZh":6,"description":95,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":98,"publishedAt":48},"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",[],[94,99,100,101,102,103,104,105,106,107,108,109,110,32,111,112,113,114,115,116],"repos","snowflake","multi-repo","work","context","campaign","coordinate","but","across","campaigns","shared","as","scope","add","unit","coordinator","fleet","claims",{"skillNo":118,"name":119,"nameZh":6,"description":120,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":121,"categories":122,"keywords":126,"publishedAt":48},"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",[123],{"categoryNo":124,"categoryName":125,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",[119,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,110,32,142,143],"vector","embeddings","librarian","markdown","knowledge","karpathy","knowledge management","karpathy wiki","up","files","maintain","self","knowledge base","project","db","sources","native",{"skillNo":145,"name":146,"nameZh":6,"description":147,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":148,"categories":149,"keywords":150,"publishedAt":48},"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",[],[146,151,152,153,154,155,156,157,158,159,160,161,136,162,163,164,165,166,32,167],"directory","commit","tasks","git","batch","actions","start","sentinel","diff","auto","stop","do","scan","human","judgment","reactions","processing",{"skillNo":169,"name":170,"nameZh":6,"description":171,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":172,"categories":173,"keywords":177,"publishedAt":48},"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",[174],{"categoryNo":175,"categoryName":176,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",[170,30,178,45,179,180,181,182,183,184,185,37,186,138,33,32,187,188,189,29],"telemetry","pipeline","Bash","tool","read","write","edit","session","reports","hook","errors","calls",{"skillNo":191,"name":192,"nameZh":6,"description":193,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":194,"categories":195,"keywords":196,"publishedAt":48},"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",[],[192,197,30,45,198,199,200,201,202,135,186,203,204,205,206,207,110,32,208,29],"uninstall","adoption","plan","archive","remove","only","Legacy","surfaces","clean","imported","active","material",{"skillNo":210,"name":211,"nameZh":6,"description":212,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":213,"categories":214,"keywords":219,"publishedAt":48},"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",[215,218],{"categoryNo":216,"categoryName":217,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},[211,220,221,222,223,46,224,225,226,227,228,229,230,231,162,32,232,233,234,29],"code review","review","review pr","pr","github issues","issues","open","use","unrelated","issue","general","references","line","investigator","reviews"]