[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C5FV2MRJ6P5EFS69TA1CWD":3,"skill-same:01M6C5FV2MRJ6P5EFS69TA1CWD":90},{"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":46,"linkOnly":47,"markdownContent":48,"markdownBody":49,"frontMatter":50,"refName":56,"commitSha":57,"skillDirectory":58,"forksCount":59,"repositoryHtmlUrl":60,"repositoryHomepageUrl":6,"ownerHtmlUrl":61,"ownerBlogUrl":6,"ownerDescription":62,"updatedAt":63,"install":64,"resources":77},"01M6C5FV2MRJ6P5EFS69TA1CWD","blueprint-story-reconcile",null,"Reconcile PRD requirements with a story-audit drift report. Use when marking PRD entries implemented\u002Fpartial\u002Fmissing, or promoting code-only stories into the PRD.","laurigates\u002Fclaude-plugins","laurigates","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F13014001?v=4","01M6C59YHWS9C7KMXKSRX1YXNP","Lauri Gates","01M6C59YP2APG9YAM4DWYQYGFJ",59,"MIT","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fblueprint-plugin\u002Fskills\u002Fblueprint-story-reconcile\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000031","产品经理","PROFESSION","适用职业",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],"reconcile","Story","Blueprint","blueprint story reconcile","2026","use","when","apply","missing","entries","path","opus","dry","drift","only","edit","write","read","run","audit","code","Bash","2026-11-10 10:12:30",false,"---\ncreated: 2026-04-25\nmodified: 2026-10-09\nreviewed: 2026-04-25\ndescription: Reconcile PRD requirements with a story-audit drift report. Use when marking PRD entries implemented\u002Fpartial\u002Fmissing, or promoting code-only stories into the PRD.\nargs: \"[--audit \u003Cpath>] [--prd \u003Cpath>] [--apply-all] [--dry-run]\"\nargument-hint: \"--audit docs\u002Fblueprint\u002Faudits\u002F2026-04-25-story-audit.md (defaults to latest)\"\nallowed-tools: Read, Write, Edit, Glob, Grep, Bash, AskUserQuestion\nmodel: opus\nname: blueprint-story-reconcile\n---\n\n# \u002Fblueprint:story-reconcile\n\nApply the drift findings from `\u002Fblueprint:story-audit` back to the PRDs. Adds status markers, a `Known Drift` section, and (with consent) promotes candidate stories. Does **not** delete unimplemented requirements — they remain the roadmap.\n\n**Usage**: `\u002Fblueprint:story-reconcile [--audit \u003Cpath>] [--prd \u003Cpath>] [--apply-all] [--dry-run]`\n\n## When to Use This Skill\n\n| Use this skill when... | Use alternative when... |\n|------------------------|-------------------------|\n| Marking PRD requirements as implemented \u002F partial \u002F missing after an audit | Producing the audit itself (`\u002Fblueprint:story-audit`) |\n| Adding a \"Known Drift\" section to a PRD | Generating PRDs from scratch (`\u002Fblueprint:derive-plans`) |\n| Promoting a single candidate story into the PRD with user consent | Bulk-rewriting PRDs (this skill is deliberately conservative) |\n\nThis skill **only edits PRDs**. Code changes belong to `\u002Fblueprint:work-order`. Audit re-runs belong to `\u002Fblueprint:story-audit`.\n\n## Context\n\n- Latest audit: !`find . -path '*\u002Fdocs\u002Fblueprint\u002Faudits\u002F*' -maxdepth 4 -name '*-story-audit.md'`\n- PRD directory: !`find . -path '*\u002Fdocs\u002Fprds' -maxdepth 2 -type d`\n- PRD files: !`find . -path '*\u002Fdocs\u002Fprds\u002F*' -maxdepth 3 -name '*.md'`\n- Manifest: !`find . -path '*\u002Fdocs\u002Fblueprint\u002F*' -maxdepth 3 -name 'manifest.json'`\n- Branch: !`git branch --show-current`\n- Repo status: !`git status --porcelain=v2 --branch`\n\n## Parameters\n\nParse `$ARGUMENTS`:\n\n- `--audit \u003Cpath>`: Path to the audit artifact. Default: most-recent file matching `docs\u002Fblueprint\u002Faudits\u002F*-story-audit.md` (sort lexically — date-stamped names sort correctly).\n- `--prd \u003Cpath>`: Limit edits to a single PRD. Default: every PRD referenced by the audit's drift table.\n- `--apply-all`: Skip per-row prompts and apply every drift entry as an edit. Use only when the audit was reviewed elsewhere.\n- `--dry-run`: Show the planned edits as unified diffs without writing.\n\n## Interaction Mode\n\nBefore any closing `AskUserQuestion` menu, resolve the automation config:\n\n```bash\nbash \"${CLAUDE_SKILL_DIR}\u002F..\u002F..\u002Fscripts\u002Fget-automation-config.sh\"\n```\n\nWhen `EFFECTIVE_INTERACTION_MODE=quiet` **and** this invocation was\nautomation-initiated (autopilot, session bookend, drift-nudge follow-up — not\na slash command the user typed), skip closing navigation menus (\"what next?\" \u002F\n\"create another?\" style): apply the safe default and end with a one-line\nreceipt instead. Quiet mode never skips confirmation gates that guard writes —\nonly navigation menus. A direct user invocation always behaves fully\ninteractively (explicit intent overrides quiet; see ADR-0020).\n\n## Execution\n\nExecute this PRD-reconciliation workflow.\n\n### Step 1: Locate the audit artifact\n\n1. If `--audit \u003Cpath>` provided, read that file.\n2. Otherwise, list `docs\u002Fblueprint\u002Faudits\u002F*-story-audit.md`, pick the lexicographically last one (date-stamped names sort correctly).\n3. If none found → abort with: \"No audit artifact found. Run `\u002Fblueprint:story-audit` first.\"\n\n### Step 2: Parse the drift report\n\nRead the audit's **Drift Report** section (Section 4 in the canonical template). Extract every row into a structured list:\n\n```\n{ status: ✅|⚠️|❌|?, prd_ref: \u003Cid-or-null>, capability: \u003Cname>, evidence: \u003Ctext> }\n```\n\nSkip `✅ implemented` rows — they're informational; reconcile only adds value for `⚠️`, `❌`, and `?`.\n\nIf the audit also has a **Story Inventory → Candidate** section, merge those rows into the `?` group with their `entry-point` evidence.\n\n### Step 3: Group edits by PRD\n\nFor each non-`✅` drift entry, determine the target PRD:\n\n| Status | Target PRD |\n|--------|-----------|\n| ⚠️ partial \u002F ❌ missing | The PRD whose `prd_ref` matches the entry (e.g. `FR-2.3` → `docs\u002Fprds\u002FPRD-002.md`) |\n| ? candidate | Ask the user which PRD to promote into; if no PRD covers the area, suggest creating a stub via `\u002Fblueprint:derive-plans` |\n\nIf `--prd \u003Cpath>` is set, drop entries whose target PRD doesn't match.\n\n### Step 4: Plan edits per PRD\n\nFor each target PRD, plan two kinds of edit:\n\n**A. Inline status markers** for `⚠️` and `❌` entries — locate the line containing the requirement (search by `prd_ref` or substring of `capability`) and prepend the marker to the requirement line:\n\n```\n- FR-2.3 OCR support → server runs tesseract over uploads\n```\n\nbecomes\n\n```\n- ❌ FR-2.3 OCR support → server runs tesseract over uploads (drift: dep declared but never imported)\n```\n\n**B. A \"Known Drift\" appendix** at the bottom of the PRD, in this exact format (idempotent — replace the section if it already exists):\n\n```markdown\n## Known Drift\n\n> Tracked by audit: `docs\u002Fblueprint\u002Faudits\u002F\u003CYYYY-MM-DD>-story-audit.md`\n\n| Status | Requirement | Evidence | Action |\n|--------|-------------|----------|--------|\n| ❌ | FR-2.3 OCR support | dep `tesseract` declared but never imported | \u003Cwork-order id or \"open\"> |\n| ⚠️ | FR-1.4 deskew on import | implemented but only for landscape orientation | open |\n```\n\nFor `?` candidate entries (Step 3 mapped them to a PRD): append a new requirement row at the end of the relevant FR section, with explicit text:\n\n```\n- FR-N.M (candidate, promoted from audit \u003CYYYY-MM-DD>): \u003Cverbatim capability name>\n  Evidence: \u003Centry-point file:line>\n```\n\nDo **not** renumber existing FRs — append at the end.\n\n### Step 5: Confirm before writing\n\nSkip this step when `--apply-all` is set.\n\nFor each PRD, show the planned edits as a unified diff and ask via AskUserQuestion:\n\n- **Apply all edits to this PRD** — proceed\n- **Apply some edits** — show each row individually for accept\u002Fskip\n- **Skip this PRD** — no edits land\n- **Cancel reconcile entirely** — exit with no changes\n\nIf `--dry-run` is set, print the diffs and exit without prompting.\n\n### Step 6: Apply edits\n\nFor each accepted edit, use the Edit tool to modify the PRD. Keep edits **idempotent**: re-running this skill against the same audit + same PRD must produce no further changes (the inline marker is already there; the Known Drift table already reflects the same rows).\n\nAfter all PRD edits land:\n\n```bash\ngit status --porcelain=v2 docs\u002Fprds\u002F\n```\n\nIf any non-PRD file shows up as modified → abort and report. This skill must only touch PRDs.\n\n### Step 7: Update the manifest\n\nUpdate the task registry entry:\n\n```bash\njq --arg now \"$(date -u +%Y-%m-%dT%H:%M:%SZ)\" \\\n   --arg result \"${RECONCILE_RESULT:-success}\" \\\n   --argjson edits \"${EDITS_APPLIED:-0}\" \\\n   --argjson prds \"${PRDS_TOUCHED:-0}\" \\\n   '.task_registry[\"story-reconcile\"].last_completed_at = $now |\n    .task_registry[\"story-reconcile\"].last_result = $result |\n    .task_registry[\"story-reconcile\"].stats.runs_total = ((.task_registry[\"story-reconcile\"].stats.runs_total \u002F\u002F 0) + 1) |\n    .task_registry[\"story-reconcile\"].stats.items_processed = $edits |\n    .task_registry[\"story-reconcile\"].stats.prds_touched = $prds' \\\n   docs\u002Fblueprint\u002Fmanifest.json > docs\u002Fblueprint\u002Fmanifest.json.tmp \\\n   && mv docs\u002Fblueprint\u002Fmanifest.json.tmp docs\u002Fblueprint\u002Fmanifest.json\n```\n\n### Step 8: Suggest the commit\n\nPrint the suggested commit message but **do not commit automatically** — the user owns the commit boundary:\n\n```\ndocs(\u003Cscope>): reconcile PRD with story-audit \u003CYYYY-MM-DD>\n\nRefs docs\u002Fblueprint\u002Faudits\u002F\u003CYYYY-MM-DD>-story-audit.md\n\n- Marked \u003CN> drift entries (✅ \u003Ca> ⚠️ \u003Cb> ❌ \u003Cc>)\n- Promoted \u003CN> candidate stories\n- Touched: \u003Clist of PRD paths>\n```\n\nChoose `\u003Cscope>` as the PRD prefix shared by edits (e.g. `prd-001`) or omit if multiple PRDs were touched.\n\n### Step 9: Hand off the next action\n\nUse AskUserQuestion to surface the obvious follow-on:\n\n- **Open work-orders for ❌ entries** → run `\u002Fblueprint:work-order` per Tier-3 row (model-invocable since ADR-0024 — invoke it via the Skill tool once the user picks this option)\n- **Re-run the audit to confirm green** → invoke `\u002Fblueprint:story-audit`\n- **I'm done** → exit\n\n## Scope and Idempotency\n\nThe off-limits table (source code, deleting requirements, issue filing, FR renumbering, commits) is in [REFERENCE.md](REFERENCE.md#what-this-skill-deliberately-does-not-do); the two no-op-on-re-run mechanisms are in [REFERENCE.md](REFERENCE.md#idempotency).\n\n## Agentic Optimizations\n\n| Context | Command |\n|---------|---------|\n| Find latest audit | `find docs\u002Fblueprint\u002Faudits -maxdepth 1 -name '*-story-audit.md'` |\n| Show audit drift section | `awk '\u002F^## 4\\. Drift Report\u002F,\u002F^## 5\\. \u002F' \u003Caudit-path>` |\n| Detect existing Known Drift | `grep -c '^## Known Drift' docs\u002Fprds\u002F*.md` |\n| Locate FR by id | `grep -n 'FR-2\\.3' docs\u002Fprds\u002F*.md` |\n| Count PRD files | `find docs\u002Fprds -maxdepth 1 -name '*.md'` |\n| Verify only-PRDs touched | `git status --porcelain=v2 docs\u002Fprds\u002F` |\n\n---\n\nFor drift-marker conventions, the full Known-Drift section format, and idempotency edge cases, see [REFERENCE.md](REFERENCE.md).\n","# \u002Fblueprint:story-reconcile\n\nApply the drift findings from `\u002Fblueprint:story-audit` back to the PRDs. Adds status markers, a `Known Drift` section, and (with consent) promotes candidate stories. Does **not** delete unimplemented requirements — they remain the roadmap.\n\n**Usage**: `\u002Fblueprint:story-reconcile [--audit \u003Cpath>] [--prd \u003Cpath>] [--apply-all] [--dry-run]`\n\n## When to Use This Skill\n\n| Use this skill when... | Use alternative when... |\n|------------------------|-------------------------|\n| Marking PRD requirements as implemented \u002F partial \u002F missing after an audit | Producing the audit itself (`\u002Fblueprint:story-audit`) |\n| Adding a \"Known Drift\" section to a PRD | Generating PRDs from scratch (`\u002Fblueprint:derive-plans`) |\n| Promoting a single candidate story into the PRD with user consent | Bulk-rewriting PRDs (this skill is deliberately conservative) |\n\nThis skill **only edits PRDs**. Code changes belong to `\u002Fblueprint:work-order`. Audit re-runs belong to `\u002Fblueprint:story-audit`.\n\n## Context\n\n- Latest audit: !`find . -path '*\u002Fdocs\u002Fblueprint\u002Faudits\u002F*' -maxdepth 4 -name '*-story-audit.md'`\n- PRD directory: !`find . -path '*\u002Fdocs\u002Fprds' -maxdepth 2 -type d`\n- PRD files: !`find . -path '*\u002Fdocs\u002Fprds\u002F*' -maxdepth 3 -name '*.md'`\n- Manifest: !`find . -path '*\u002Fdocs\u002Fblueprint\u002F*' -maxdepth 3 -name 'manifest.json'`\n- Branch: !`git branch --show-current`\n- Repo status: !`git status --porcelain=v2 --branch`\n\n## Parameters\n\nParse `$ARGUMENTS`:\n\n- `--audit \u003Cpath>`: Path to the audit artifact. Default: most-recent file matching `docs\u002Fblueprint\u002Faudits\u002F*-story-audit.md` (sort lexically — date-stamped names sort correctly).\n- `--prd \u003Cpath>`: Limit edits to a single PRD. Default: every PRD referenced by the audit's drift table.\n- `--apply-all`: Skip per-row prompts and apply every drift entry as an edit. Use only when the audit was reviewed elsewhere.\n- `--dry-run`: Show the planned edits as unified diffs without writing.\n\n## Interaction Mode\n\nBefore any closing `AskUserQuestion` menu, resolve the automation config:\n\n```bash\nbash \"${CLAUDE_SKILL_DIR}\u002F..\u002F..\u002Fscripts\u002Fget-automation-config.sh\"\n```\n\nWhen `EFFECTIVE_INTERACTION_MODE=quiet` **and** this invocation was\nautomation-initiated (autopilot, session bookend, drift-nudge follow-up — not\na slash command the user typed), skip closing navigation menus (\"what next?\" \u002F\n\"create another?\" style): apply the safe default and end with a one-line\nreceipt instead. Quiet mode never skips confirmation gates that guard writes —\nonly navigation menus. A direct user invocation always behaves fully\ninteractively (explicit intent overrides quiet; see ADR-0020).\n\n## Execution\n\nExecute this PRD-reconciliation workflow.\n\n### Step 1: Locate the audit artifact\n\n1. If `--audit \u003Cpath>` provided, read that file.\n2. Otherwise, list `docs\u002Fblueprint\u002Faudits\u002F*-story-audit.md`, pick the lexicographically last one (date-stamped names sort correctly).\n3. If none found → abort with: \"No audit artifact found. Run `\u002Fblueprint:story-audit` first.\"\n\n### Step 2: Parse the drift report\n\nRead the audit's **Drift Report** section (Section 4 in the canonical template). Extract every row into a structured list:\n\n```\n{ status: ✅|⚠️|❌|?, prd_ref: \u003Cid-or-null>, capability: \u003Cname>, evidence: \u003Ctext> }\n```\n\nSkip `✅ implemented` rows — they're informational; reconcile only adds value for `⚠️`, `❌`, and `?`.\n\nIf the audit also has a **Story Inventory → Candidate** section, merge those rows into the `?` group with their `entry-point` evidence.\n\n### Step 3: Group edits by PRD\n\nFor each non-`✅` drift entry, determine the target PRD:\n\n| Status | Target PRD |\n|--------|-----------|\n| ⚠️ partial \u002F ❌ missing | The PRD whose `prd_ref` matches the entry (e.g. `FR-2.3` → `docs\u002Fprds\u002FPRD-002.md`) |\n| ? candidate | Ask the user which PRD to promote into; if no PRD covers the area, suggest creating a stub via `\u002Fblueprint:derive-plans` |\n\nIf `--prd \u003Cpath>` is set, drop entries whose target PRD doesn't match.\n\n### Step 4: Plan edits per PRD\n\nFor each target PRD, plan two kinds of edit:\n\n**A. Inline status markers** for `⚠️` and `❌` entries — locate the line containing the requirement (search by `prd_ref` or substring of `capability`) and prepend the marker to the requirement line:\n\n```\n- FR-2.3 OCR support → server runs tesseract over uploads\n```\n\nbecomes\n\n```\n- ❌ FR-2.3 OCR support → server runs tesseract over uploads (drift: dep declared but never imported)\n```\n\n**B. A \"Known Drift\" appendix** at the bottom of the PRD, in this exact format (idempotent — replace the section if it already exists):\n\n```markdown\n## Known Drift\n\n> Tracked by audit: `docs\u002Fblueprint\u002Faudits\u002F\u003CYYYY-MM-DD>-story-audit.md`\n\n| Status | Requirement | Evidence | Action |\n|--------|-------------|----------|--------|\n| ❌ | FR-2.3 OCR support | dep `tesseract` declared but never imported | \u003Cwork-order id or \"open\"> |\n| ⚠️ | FR-1.4 deskew on import | implemented but only for landscape orientation | open |\n```\n\nFor `?` candidate entries (Step 3 mapped them to a PRD): append a new requirement row at the end of the relevant FR section, with explicit text:\n\n```\n- FR-N.M (candidate, promoted from audit \u003CYYYY-MM-DD>): \u003Cverbatim capability name>\n  Evidence: \u003Centry-point file:line>\n```\n\nDo **not** renumber existing FRs — append at the end.\n\n### Step 5: Confirm before writing\n\nSkip this step when `--apply-all` is set.\n\nFor each PRD, show the planned edits as a unified diff and ask via AskUserQuestion:\n\n- **Apply all edits to this PRD** — proceed\n- **Apply some edits** — show each row individually for accept\u002Fskip\n- **Skip this PRD** — no edits land\n- **Cancel reconcile entirely** — exit with no changes\n\nIf `--dry-run` is set, print the diffs and exit without prompting.\n\n### Step 6: Apply edits\n\nFor each accepted edit, use the Edit tool to modify the PRD. Keep edits **idempotent**: re-running this skill against the same audit + same PRD must produce no further changes (the inline marker is already there; the Known Drift table already reflects the same rows).\n\nAfter all PRD edits land:\n\n```bash\ngit status --porcelain=v2 docs\u002Fprds\u002F\n```\n\nIf any non-PRD file shows up as modified → abort and report. This skill must only touch PRDs.\n\n### Step 7: Update the manifest\n\nUpdate the task registry entry:\n\n```bash\njq --arg now \"$(date -u +%Y-%m-%dT%H:%M:%SZ)\" \\\n   --arg result \"${RECONCILE_RESULT:-success}\" \\\n   --argjson edits \"${EDITS_APPLIED:-0}\" \\\n   --argjson prds \"${PRDS_TOUCHED:-0}\" \\\n   '.task_registry[\"story-reconcile\"].last_completed_at = $now |\n    .task_registry[\"story-reconcile\"].last_result = $result |\n    .task_registry[\"story-reconcile\"].stats.runs_total = ((.task_registry[\"story-reconcile\"].stats.runs_total \u002F\u002F 0) + 1) |\n    .task_registry[\"story-reconcile\"].stats.items_processed = $edits |\n    .task_registry[\"story-reconcile\"].stats.prds_touched = $prds' \\\n   docs\u002Fblueprint\u002Fmanifest.json > docs\u002Fblueprint\u002Fmanifest.json.tmp \\\n   && mv docs\u002Fblueprint\u002Fmanifest.json.tmp docs\u002Fblueprint\u002Fmanifest.json\n```\n\n### Step 8: Suggest the commit\n\nPrint the suggested commit message but **do not commit automatically** — the user owns the commit boundary:\n\n```\ndocs(\u003Cscope>): reconcile PRD with story-audit \u003CYYYY-MM-DD>\n\nRefs docs\u002Fblueprint\u002Faudits\u002F\u003CYYYY-MM-DD>-story-audit.md\n\n- Marked \u003CN> drift entries (✅ \u003Ca> ⚠️ \u003Cb> ❌ \u003Cc>)\n- Promoted \u003CN> candidate stories\n- Touched: \u003Clist of PRD paths>\n```\n\nChoose `\u003Cscope>` as the PRD prefix shared by edits (e.g. `prd-001`) or omit if multiple PRDs were touched.\n\n### Step 9: Hand off the next action\n\nUse AskUserQuestion to surface the obvious follow-on:\n\n- **Open work-orders for ❌ entries** → run `\u002Fblueprint:work-order` per Tier-3 row (model-invocable since ADR-0024 — invoke it via the Skill tool once the user picks this option)\n- **Re-run the audit to confirm green** → invoke `\u002Fblueprint:story-audit`\n- **I'm done** → exit\n\n## Scope and Idempotency\n\nThe off-limits table (source code, deleting requirements, issue filing, FR renumbering, commits) is in [REFERENCE.md](REFERENCE.md#what-this-skill-deliberately-does-not-do); the two no-op-on-re-run mechanisms are in [REFERENCE.md](REFERENCE.md#idempotency).\n\n## Agentic Optimizations\n\n| Context | Command |\n|---------|---------|\n| Find latest audit | `find docs\u002Fblueprint\u002Faudits -maxdepth 1 -name '*-story-audit.md'` |\n| Show audit drift section | `awk '\u002F^## 4\\. Drift Report\u002F,\u002F^## 5\\. \u002F' \u003Caudit-path>` |\n| Detect existing Known Drift | `grep -c '^## Known Drift' docs\u002Fprds\u002F*.md` |\n| Locate FR by id | `grep -n 'FR-2\\.3' docs\u002Fprds\u002F*.md` |\n| Count PRD files | `find docs\u002Fprds -maxdepth 1 -name '*.md'` |\n| Verify only-PRDs touched | `git status --porcelain=v2 docs\u002Fprds\u002F` |\n\n---\n\nFor drift-marker conventions, the full Known-Drift section format, and idempotency edge cases, see [REFERENCE.md](REFERENCE.md).\n",{"args":51,"name":5,"model":35,"created":52,"modified":53,"reviewed":52,"description":7,"allowed-tools":54,"argument-hint":55},"[--audit \u003Cpath>] [--prd \u003Cpath>] [--apply-all] [--dry-run]",1777075200000,1791504000000,"Read, Write, Edit, Glob, Grep, Bash, AskUserQuestion","--audit docs\u002Fblueprint\u002Faudits\u002F2026-04-25-story-audit.md (defaults to latest)","main","0f16c3d5530537790787dc648f3e78f5f32b1825","blueprint-plugin\u002Fskills\u002Fblueprint-story-reconcile",6,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins","https:\u002F\u002Fgithub.com\u002Flaurigates","Linux enthusiast, cloud engineer, neovim addict, electronics hobbyist.","2026-11-13 03:22:01",{"source":8,"skillName":5,"commands":65,"prompt":75,"zipAvailable":76},[66,69,72],{"tool":67,"command":68},"npx","npx skills add laurigates\u002Fclaude-plugins --skill blueprint-story-reconcile",{"tool":70,"command":71},"bunx","bunx skills add laurigates\u002Fclaude-plugins --skill blueprint-story-reconcile",{"tool":73,"command":74},"pnpm","pnpm dlx skills add laurigates\u002Fclaude-plugins --skill blueprint-story-reconcile","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fblueprint-plugin\u002Fskills\u002Fblueprint-story-reconcile\u002FSKILL.md",true,[78,84],{"path":79,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":82,"sourceHtmlUrl":83},"REFERENCE.md","REFERENCE","参考文档",6882,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fblueprint-plugin\u002Fskills\u002Fblueprint-story-reconcile\u002FREFERENCE.md",{"path":85,"resourceType":86,"resourceTypeDesc":87,"sizeBytes":88,"sourceHtmlUrl":89},"scripts\u002Ftests\u002Ftest-work-order-handoff.sh","SCRIPT","脚本",4689,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fblueprint-plugin\u002Fskills\u002Fblueprint-story-reconcile\u002Fscripts\u002Ftests\u002Ftest-work-order-handoff.sh",[91,118,137,153,175,202],{"skillNo":92,"name":93,"nameZh":6,"description":94,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":102,"publishedAt":46},"01M70PFHMH9ADY0CRE6047Y4B2","kitty-show-image","Show the user an image with a note on what to judge, via a file send or a labelled kitty tab. Use when the user must see an image, or icat fails with no \u002Fdev\u002Ftty.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fkitty-plugin\u002Fskills\u002Fkitty-show-image\u002FSKILL.md",[97],{"categoryNo":98,"categoryName":99,"taxonomyType":100,"taxonomyTypeDesc":101},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[103,104,105,106,107,108,109,110,111,112,29,30,45,113,114,115,116,117,28,41],"show","kitty show image","image","kitty","show image","ls","get","send","open","dev","file","text","with","xdg","via",{"skillNo":119,"name":120,"nameZh":6,"description":121,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":124,"publishedAt":46},"01M70PFEN18HKQ4RCQ1VPGMPTB","kitty-session-persistence","Snapshot and restore kitty terminal sessions on macOS. Use when surviving WindowServer hangs without losing tabs, configuring snapshots, or restoring after a force-reboot.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fkitty-plugin\u002Fskills\u002Fkitty-session-persistence\u002FSKILL.md",[],[106,125,126,127,128,129,30,45,130,131,132,28,41,40,39,133,134,135,136,29],"kitty session persistence","session","persistence","false","snapshots","uname","reboot","terminal","snapshot","macos","sessions","restore",{"skillNo":138,"name":139,"nameZh":6,"description":140,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":141,"categories":142,"keywords":143,"publishedAt":46},"01M70PFC77XGXCVQ1543VGZHYR","kitty-remote-control","Safe kitty remote control from an agent — read panes with kitty @ ls\u002Fget-text, notify, and never mutate the live terminal unasked. Use when running inside kitty.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fkitty-plugin\u002Fskills\u002Fkitty-remote-control\u002FSKILL.md",[],[144,145,106,146,147,108,148,149,109,150,151,29,30,152,45,114,115,132,28,41],"kitty remote control","remote","control","remote control","running","never","panes","notify","query",{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":159,"publishedAt":46},"01M70P6WVMCT5JG4SACTM69AF9","docs-reference-check","Dangling doc-reference gate: flag markdown naming repo paths or relative links that no longer exist. Use when docs cite moved\u002Fdeleted files, or wiring a doc-drift lint.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fdocumentation-plugin\u002Fskills\u002Fdocs-reference-check\u002FSKILL.md",[],[160,161,162,163,164,165,166,167,168,169,29,30,45,37,113,170,171,172,173,174],"docs reference check","check","reference check","reference","docs","links","python3","repo","files","auto","lint","wiring","chezmoi","references","cp",{"skillNo":176,"name":177,"nameZh":6,"description":178,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":179,"categories":180,"keywords":188,"publishedAt":46},"01M6C6NDE7DAQGNWSF22J5CJ0Z","youtube-upload","Upload a video to YouTube via the Data API v3 and edit its title, description, tags or thumbnail afterwards. Use when publishing or retitling a YouTube video.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fyoutube-plugin\u002Fskills\u002Fyoutube-upload\u002FSKILL.md",[181,184,185],{"categoryNo":182,"categoryName":183,"taxonomyType":100,"taxonomyTypeDesc":101},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":98,"categoryName":99,"taxonomyType":100,"taxonomyTypeDesc":101},{"categoryNo":186,"categoryName":187,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000030","开发工程师",[189,190,191,192,166,42,41,193,39,194,195,196,29,45,113,197,198,30,199,200,201,117,28],"youtube upload","upload","youtube","Video","uv run","publishing","data","uv","api","v3","tags","id","title",{"skillNo":203,"name":204,"nameZh":6,"description":205,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":206,"categories":207,"keywords":211,"publishedAt":46},"01M6C6NABWW1X58KJJM4F6GQMQ","youtube-studio-share","Share a private YouTube video with a whole Google Workspace organization by scripting YouTube Studio in the browser. Use when a video must be org-only.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fyoutube-plugin\u002Fskills\u002Fyoutube-studio-share\u002FSKILL.md",[208],{"categoryNo":209,"categoryName":210,"taxonomyType":100,"taxonomyTypeDesc":101},"01JBSEEDCAT000000000000023","Skill与智能体开发",[212,213,214,215,191,192,216,217,218,219,220,41,221,222,38,223,29,224,30,115,225,28],"youtube studio share","share","youtube studio","studio","browser","javascript","scripting","google workspace","workspace","tool","google","MCP","chrome","organization"]