[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6JJSASVPFKKY0ZVHCTQAC4G":3,"skill-same:01M6JJSASVPFKKY0ZVHCTQAC4G":72},{"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":50,"commitSha":51,"skillDirectory":52,"forksCount":53,"repositoryHtmlUrl":54,"repositoryHomepageUrl":55,"ownerHtmlUrl":56,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":57,"install":58,"resources":71},"01M6JJSASVPFKKY0ZVHCTQAC4G","cprune",null,"Documentation and artifact pruning skill. Detects stale entries and orphaned artifacts, archives documentation (never deletes), cleans ephemeral artifacts. Two modes — autonomous for \u002Fcauto pipeline, interactive for direct invocation.","joshft\u002Fcorrectless","joshft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F2847920?v=4","01M6JJGJ1WCYFH1BKGPZJ0Z4YD","josh","01M6JJGJ69XYFA6MTDXSH5BG42",66,"MIT","https:\u002F\u002Fgithub.com\u002Fjoshft\u002Fcorrectless\u002Fblob\u002Fmain\u002Fskills\u002Fcprune\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[5,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"autonomous","deprecated","mkdir","antipatterns","scripts","artifact","drift","learnings","never","architecture","edit","write","read","prune","Bash","Meta","pipeline","git","documentation","2026-11-10 10:12:30",false,"---\nname: cprune\ndescription: Documentation and artifact pruning skill. Detects stale entries and orphaned artifacts, archives documentation (never deletes), cleans ephemeral artifacts. Two modes — autonomous for \u002Fcauto pipeline, interactive for direct invocation.\ninteraction_mode: hybrid\nallowed-tools: Read, Grep, Glob, Bash(scripts\u002Fprune-scan.sh*), Bash(git*), Bash(sed*), Bash(mkdir*), Bash(jq*), Write(.correctless\u002FARCHITECTURE.md), Write(.correctless\u002Fantipatterns.md), Write(.correctless\u002FAGENT_CONTEXT.md), Write(.correctless\u002FARCHITECTURE_DEPRECATED.md), Write(.correctless\u002Fantipatterns-archived.md), Write(.correctless\u002FCLAUDE_LEARNINGS_ARCHIVED.md), Write(.correctless\u002Fmeta\u002Fdrift-debt.json), Write(.correctless\u002Fspecs\u002Farchived\u002F*), Write(.correctless\u002Fartifacts\u002Fprune-report-*.md), Edit(.correctless\u002FARCHITECTURE.md), Edit(.correctless\u002Fantipatterns.md), Edit(.correctless\u002FAGENT_CONTEXT.md), Edit(CLAUDE.md)\n---\n\n# \u002Fcprune — Documentation and Artifact Pruning\n\n> **EXECUTE IMMEDIATELY.** This skill being loaded into your context IS the user's instruction.\n\nYou are the pruning orchestrator. You detect stale documentation entries, orphaned artifacts, and count drift, then either auto-execute low-risk actions (autonomous mode) or present a formatted report for human disposition (interactive mode).\n\n## Mode Detection (INV-001)\n\nDetect execution mode from prompt context:\n\n- **Autonomous mode**: When `mode: autonomous` appears in the prompt context (invoked by `\u002Fcauto` pipeline). Auto-execute low-risk actions only. Do not pause for confirmation. Log all actions to audit trail. CLAUDE.md is excluded from autonomous mode entirely (PRH-002) — do not read, modify, or suggest changes to CLAUDE.md in autonomous mode. When a category has `bulk_warning: true` (>50% of entries flagged), skip that category with a log entry and include the count in the return summary (BND-002).\n- **Interactive mode**: When invoked directly by the user. Produce a formatted pruning report, present each category for human disposition before executing changes.\n\n## Lockfile (BND-004)\n\nBefore starting, check for `.correctless\u002Fartifacts\u002Fcprune-lock-{slug}` (where slug is derived from `branch_slug`). If the lock exists and was created by a different process, refuse with \"Another \u002Fcprune is running.\" Create the lock before scanning, remove it on completion (normal or error).\n\n## Scanner\n\nThe scanner script at `scripts\u002Fprune-scan.sh` (or `.correctless\u002Fscripts\u002Fprune-scan.sh` on installed projects) is the sole detection mechanism. It accepts `--category` and `--base` flags and outputs JSON to stdout.\n\nRun the scanner for each category:\n```bash\nbash scripts\u002Fprune-scan.sh --category \u003Ccategory> --base .\n```\n\nCategories (9 total): `architecture`, `antipatterns`, `claude-md`, `artifacts`, `deferred`, `counts`, `crossrefs`, `specs`, `driftdebt`\n\n### Scanner output schema (BND-001)\n\nFor the `artifacts` category, the scanner emits a **wrapped object** (NOT a bare array). All other categories still emit a bare array. The skill must read `.candidates` from the wrapped object:\n\n```bash\n# Correct:\nbash scripts\u002Fprune-scan.sh --category artifacts --base . | jq -r '.candidates[]'\n\n# Wrong — would read the wrapper object as a candidate:\nbash scripts\u002Fprune-scan.sh --category artifacts --base . | jq -r '.[]'\n```\n\nWrapped-object schema (`artifacts` only):\n```json\n{\n  \"candidates\": [...],\n  \"skipped_unclassified\": [{\"pattern\": \"...\", \"count\": N}],\n  \"protection_set\": {\n    \"live_branches\": [...],\n    \"live_branch_slugs\": [...],\n    \"live_task_slugs\": [...],\n    \"live_session_ids\": [...],\n    \"source_workflow_state_files\": [...]\n  },\n  \"protection_status\": {\n    \"task_slug\": \"ok|fail-closed\",\n    \"reason\": \"no-workflow-state|incomplete-spec_file|parse-failure|null\"\n  }\n}\n```\n\nRender the **Protection Set** section in the prune report from `.protection_set` (INV-017). When `protection_status.task_slug` is `fail-closed`, the report must include the reason and explain that no task-slug-named files were considered for pruning in this scan. Render skipped patterns from `.skipped_unclassified` (INV-007 — surfaces unclassified-pattern safety belt activations).\n\n**Baseline-update flag is interactive-only** (INV-011):\nThe baseline manifest at `.correctless\u002Fmeta\u002Fprune-pattern-baseline.json` is\nupdated only by interactive mode after the human confirms newly-emitted\n`medium`-risk candidates have been reviewed. The autonomous code path below\nmust never pass the baseline-update flag to `scripts\u002Fprune-scan.sh` regardless\nof the candidate set; the flag (its literal name redacted here so structural\ntests can assert the autonomous block does not invoke it) is reserved for the\nhuman-confirmed interactive flow.\n\n## Archive Contract (ABS-038)\n\n`\u002Fcprune` is the sole writer for archive files. Only `\u002Fcprune` writes to these files:\n- `.correctless\u002FARCHITECTURE_DEPRECATED.md` — archived architecture entries (ABS\u002FPAT\u002FTB\u002FENV)\n- `.correctless\u002Fantipatterns-archived.md` — archived antipatterns (AP-xxx)\n- `.correctless\u002FCLAUDE_LEARNINGS_ARCHIVED.md` — archived CLAUDE.md learnings\n\nArchive files are committed to the repo (not gitignored). Each has a header comment on first creation (BND-001):\n\n```markdown\n# Archived [Type] Entries\n# Entries moved here by \u002Fcprune. Original IDs are preserved — do not reuse them.\n# To un-archive, copy the entry back from this file to the source file.\n```\n\n### Archive-Before-Remove Ordering (PRH-001)\n\nWhen archiving an entry:\n1. Write the entry to the archive file with an `Archived` field: `- **Archived**: {date} — {reason}`\n2. Verify the archive write succeeded (file exists and contains the entry ID)\n3. Only then remove the entry from the source file\n\nIf the archive write fails, preserve the source entry unchanged. Never permanently delete documentation entries — always archive first, then remove.\n\n### Entries with Live File References (PRH-003)\n\nNever archive entries whose referenced file paths still exist. The scanner enforces this — only entries with ALL dead references are candidates. The skill must not override this criterion.\n\n## Autonomous Mode Behavior (AD-001)\n\nIn autonomous mode, execute only `risk: low` candidates:\n- **Orphaned artifacts** (category: `artifacts`): delete ephemeral artifacts for deleted branches\n- **Count corrections** (category: `counts`): auto-correct mismatched counts in `.correctless\u002FAGENT_CONTEXT.md` via `sed` substitution (label-anchored matching)\n- **Resolved drift debt >90 days** (category: `driftdebt`): remove resolved\u002Fwont-fix entries\n- **Specs 90+ days post-merge** (category: `specs`, `risk: low` only): archive to `.correctless\u002Fspecs\u002Farchived\u002F`\n\nSkip categories where `bulk_warning: true` (BND-002 safety valve).\nSkip CLAUDE.md entirely (PRH-002 — interactive-only, never autonomous).\nSkip deferred findings (PRH-004 — read-only, report stale count only).\n\nReturn a structured summary of actions taken.\n\n## Interactive Mode Behavior\n\n### Persist-Before-Present (INV-015, AP-029)\n\nWrite scan results to `.correctless\u002Fartifacts\u002Fprune-report-{date}.md` BEFORE presenting them to the user. The artifact is the recovery path if the terminal display is interrupted. The interactive presentation renders from the artifact.\n\n### Progress and Disposition (INV-018)\n\nDisplay progress between categories: \"Scanning {category}... found {N} candidates.\"\n\nFor each category with candidates, present:\n1. Category name and total candidate count\n2. Per-candidate: ID, reason, risk level, dead_refs count\n3. Confirmation prompt showing archive destination: \"Archive {ID} to {destination}?\"\n4. Disposition options per category:\n   1. Execute all (recommended for low-risk)\n   2. Review individually\n   3. Skip this category\n\nAfter each category's disposition is confirmed, execute immediately (not batched at end).\n\nFinal summary: total actions taken, files modified, archive destination paths.\n\nTo un-archive an entry, copy it back from the archive file to the source file manually.\n\n## \u002Fcprune is Read-Only for Deferred Findings (PRH-004)\n\n`\u002Fcprune` reports stale deferred findings but does NOT write to `.correctless\u002Fmeta\u002Fdeferred-findings.json`. Users should run `\u002Fctriage` to update stale findings. This keeps `\u002Fcprune` as a scanner\u002Freporter and avoids adding a 5th writer to ABS-033.\n\n## Risk Classification (DD-003)\n\n- **Low risk**: orphaned artifacts, count corrections, resolved drift debt >90 days, specs >90 days post-merge. Auto-execute in autonomous mode.\n- **Medium risk**: architecture entries, antipatterns, deferred findings, specs 30-90 days post-merge, cross-reference fixes. Interactive confirmation required.\n- **High risk**: CLAUDE.md learnings. Interactive-only, never autonomous.\n\n## Autonomous Defaults\n\nWhen running in autonomous mode (`mode: autonomous` in prompt context), use these defaults instead of pausing for human input. Return autonomous decisions in the `AUTONOMOUS_DECISIONS_START`\u002F`AUTONOMOUS_DECISIONS_END` format provided in the task prompt.\n\n- **AD-001**: Scan all 9 categories. Execute only `risk: low` candidates. Skip categories with `bulk_warning: true`. Rationale: low-risk actions are safe for autonomous execution.\n- **AD-002**: Deferred findings — report only (read-only per PRH-004). Include stale count in summary. Rationale: \u002Fcprune is a scanner, not a writer for deferred findings.\n- **AD-003**: Archive specs 90+ days post-merge. Skip architecture\u002Fantipattern\u002FCLAUDE.md archiving. Rationale: old specs are the lowest-risk documentation to archive.\n- **AD-004**: High-risk pruning candidates (CLAUDE.md, architecture archiving) — `escalate: always`. Rationale: these affect every conversation's context quality and require human judgment.\n","# \u002Fcprune — Documentation and Artifact Pruning\n\n> **EXECUTE IMMEDIATELY.** This skill being loaded into your context IS the user's instruction.\n\nYou are the pruning orchestrator. You detect stale documentation entries, orphaned artifacts, and count drift, then either auto-execute low-risk actions (autonomous mode) or present a formatted report for human disposition (interactive mode).\n\n## Mode Detection (INV-001)\n\nDetect execution mode from prompt context:\n\n- **Autonomous mode**: When `mode: autonomous` appears in the prompt context (invoked by `\u002Fcauto` pipeline). Auto-execute low-risk actions only. Do not pause for confirmation. Log all actions to audit trail. CLAUDE.md is excluded from autonomous mode entirely (PRH-002) — do not read, modify, or suggest changes to CLAUDE.md in autonomous mode. When a category has `bulk_warning: true` (>50% of entries flagged), skip that category with a log entry and include the count in the return summary (BND-002).\n- **Interactive mode**: When invoked directly by the user. Produce a formatted pruning report, present each category for human disposition before executing changes.\n\n## Lockfile (BND-004)\n\nBefore starting, check for `.correctless\u002Fartifacts\u002Fcprune-lock-{slug}` (where slug is derived from `branch_slug`). If the lock exists and was created by a different process, refuse with \"Another \u002Fcprune is running.\" Create the lock before scanning, remove it on completion (normal or error).\n\n## Scanner\n\nThe scanner script at `scripts\u002Fprune-scan.sh` (or `.correctless\u002Fscripts\u002Fprune-scan.sh` on installed projects) is the sole detection mechanism. It accepts `--category` and `--base` flags and outputs JSON to stdout.\n\nRun the scanner for each category:\n```bash\nbash scripts\u002Fprune-scan.sh --category \u003Ccategory> --base .\n```\n\nCategories (9 total): `architecture`, `antipatterns`, `claude-md`, `artifacts`, `deferred`, `counts`, `crossrefs`, `specs`, `driftdebt`\n\n### Scanner output schema (BND-001)\n\nFor the `artifacts` category, the scanner emits a **wrapped object** (NOT a bare array). All other categories still emit a bare array. The skill must read `.candidates` from the wrapped object:\n\n```bash\n# Correct:\nbash scripts\u002Fprune-scan.sh --category artifacts --base . | jq -r '.candidates[]'\n\n# Wrong — would read the wrapper object as a candidate:\nbash scripts\u002Fprune-scan.sh --category artifacts --base . | jq -r '.[]'\n```\n\nWrapped-object schema (`artifacts` only):\n```json\n{\n  \"candidates\": [...],\n  \"skipped_unclassified\": [{\"pattern\": \"...\", \"count\": N}],\n  \"protection_set\": {\n    \"live_branches\": [...],\n    \"live_branch_slugs\": [...],\n    \"live_task_slugs\": [...],\n    \"live_session_ids\": [...],\n    \"source_workflow_state_files\": [...]\n  },\n  \"protection_status\": {\n    \"task_slug\": \"ok|fail-closed\",\n    \"reason\": \"no-workflow-state|incomplete-spec_file|parse-failure|null\"\n  }\n}\n```\n\nRender the **Protection Set** section in the prune report from `.protection_set` (INV-017). When `protection_status.task_slug` is `fail-closed`, the report must include the reason and explain that no task-slug-named files were considered for pruning in this scan. Render skipped patterns from `.skipped_unclassified` (INV-007 — surfaces unclassified-pattern safety belt activations).\n\n**Baseline-update flag is interactive-only** (INV-011):\nThe baseline manifest at `.correctless\u002Fmeta\u002Fprune-pattern-baseline.json` is\nupdated only by interactive mode after the human confirms newly-emitted\n`medium`-risk candidates have been reviewed. The autonomous code path below\nmust never pass the baseline-update flag to `scripts\u002Fprune-scan.sh` regardless\nof the candidate set; the flag (its literal name redacted here so structural\ntests can assert the autonomous block does not invoke it) is reserved for the\nhuman-confirmed interactive flow.\n\n## Archive Contract (ABS-038)\n\n`\u002Fcprune` is the sole writer for archive files. Only `\u002Fcprune` writes to these files:\n- `.correctless\u002FARCHITECTURE_DEPRECATED.md` — archived architecture entries (ABS\u002FPAT\u002FTB\u002FENV)\n- `.correctless\u002Fantipatterns-archived.md` — archived antipatterns (AP-xxx)\n- `.correctless\u002FCLAUDE_LEARNINGS_ARCHIVED.md` — archived CLAUDE.md learnings\n\nArchive files are committed to the repo (not gitignored). Each has a header comment on first creation (BND-001):\n\n```markdown\n# Archived [Type] Entries\n# Entries moved here by \u002Fcprune. Original IDs are preserved — do not reuse them.\n# To un-archive, copy the entry back from this file to the source file.\n```\n\n### Archive-Before-Remove Ordering (PRH-001)\n\nWhen archiving an entry:\n1. Write the entry to the archive file with an `Archived` field: `- **Archived**: {date} — {reason}`\n2. Verify the archive write succeeded (file exists and contains the entry ID)\n3. Only then remove the entry from the source file\n\nIf the archive write fails, preserve the source entry unchanged. Never permanently delete documentation entries — always archive first, then remove.\n\n### Entries with Live File References (PRH-003)\n\nNever archive entries whose referenced file paths still exist. The scanner enforces this — only entries with ALL dead references are candidates. The skill must not override this criterion.\n\n## Autonomous Mode Behavior (AD-001)\n\nIn autonomous mode, execute only `risk: low` candidates:\n- **Orphaned artifacts** (category: `artifacts`): delete ephemeral artifacts for deleted branches\n- **Count corrections** (category: `counts`): auto-correct mismatched counts in `.correctless\u002FAGENT_CONTEXT.md` via `sed` substitution (label-anchored matching)\n- **Resolved drift debt >90 days** (category: `driftdebt`): remove resolved\u002Fwont-fix entries\n- **Specs 90+ days post-merge** (category: `specs`, `risk: low` only): archive to `.correctless\u002Fspecs\u002Farchived\u002F`\n\nSkip categories where `bulk_warning: true` (BND-002 safety valve).\nSkip CLAUDE.md entirely (PRH-002 — interactive-only, never autonomous).\nSkip deferred findings (PRH-004 — read-only, report stale count only).\n\nReturn a structured summary of actions taken.\n\n## Interactive Mode Behavior\n\n### Persist-Before-Present (INV-015, AP-029)\n\nWrite scan results to `.correctless\u002Fartifacts\u002Fprune-report-{date}.md` BEFORE presenting them to the user. The artifact is the recovery path if the terminal display is interrupted. The interactive presentation renders from the artifact.\n\n### Progress and Disposition (INV-018)\n\nDisplay progress between categories: \"Scanning {category}... found {N} candidates.\"\n\nFor each category with candidates, present:\n1. Category name and total candidate count\n2. Per-candidate: ID, reason, risk level, dead_refs count\n3. Confirmation prompt showing archive destination: \"Archive {ID} to {destination}?\"\n4. Disposition options per category:\n   1. Execute all (recommended for low-risk)\n   2. Review individually\n   3. Skip this category\n\nAfter each category's disposition is confirmed, execute immediately (not batched at end).\n\nFinal summary: total actions taken, files modified, archive destination paths.\n\nTo un-archive an entry, copy it back from the archive file to the source file manually.\n\n## \u002Fcprune is Read-Only for Deferred Findings (PRH-004)\n\n`\u002Fcprune` reports stale deferred findings but does NOT write to `.correctless\u002Fmeta\u002Fdeferred-findings.json`. Users should run `\u002Fctriage` to update stale findings. This keeps `\u002Fcprune` as a scanner\u002Freporter and avoids adding a 5th writer to ABS-033.\n\n## Risk Classification (DD-003)\n\n- **Low risk**: orphaned artifacts, count corrections, resolved drift debt >90 days, specs >90 days post-merge. Auto-execute in autonomous mode.\n- **Medium risk**: architecture entries, antipatterns, deferred findings, specs 30-90 days post-merge, cross-reference fixes. Interactive confirmation required.\n- **High risk**: CLAUDE.md learnings. Interactive-only, never autonomous.\n\n## Autonomous Defaults\n\nWhen running in autonomous mode (`mode: autonomous` in prompt context), use these defaults instead of pausing for human input. Return autonomous decisions in the `AUTONOMOUS_DECISIONS_START`\u002F`AUTONOMOUS_DECISIONS_END` format provided in the task prompt.\n\n- **AD-001**: Scan all 9 categories. Execute only `risk: low` candidates. Skip categories with `bulk_warning: true`. Rationale: low-risk actions are safe for autonomous execution.\n- **AD-002**: Deferred findings — report only (read-only per PRH-004). Include stale count in summary. Rationale: \u002Fcprune is a scanner, not a writer for deferred findings.\n- **AD-003**: Archive specs 90+ days post-merge. Skip architecture\u002Fantipattern\u002FCLAUDE.md archiving. Rationale: old specs are the lowest-risk documentation to archive.\n- **AD-004**: High-risk pruning candidates (CLAUDE.md, architecture archiving) — `escalate: always`. Rationale: these affect every conversation's context quality and require human judgment.\n",{"name":5,"description":7,"allowed-tools":48,"interaction_mode":49},"Read, Grep, Glob, Bash(scripts\u002Fprune-scan.sh*), Bash(git*), Bash(sed*), Bash(mkdir*), Bash(jq*), Write(.correctless\u002FARCHITECTURE.md), Write(.correctless\u002Fantipatterns.md), Write(.correctless\u002FAGENT_CONTEXT.md), Write(.correctless\u002FARCHITECTURE_DEPRECATED.md), Write(.correctless\u002Fantipatterns-archived.md), Write(.correctless\u002FCLAUDE_LEARNINGS_ARCHIVED.md), Write(.correctless\u002Fmeta\u002Fdrift-debt.json), Write(.correctless\u002Fspecs\u002Farchived\u002F*), Write(.correctless\u002Fartifacts\u002Fprune-report-*.md), Edit(.correctless\u002FARCHITECTURE.md), Edit(.correctless\u002Fantipatterns.md), Edit(.correctless\u002FAGENT_CONTEXT.md), Edit(CLAUDE.md)","hybrid","main","74f9ef3f5acae9c857f6be6dd86cdc3b10830c90","skills\u002Fcprune",4,"https:\u002F\u002Fgithub.com\u002Fjoshft\u002Fcorrectless","https:\u002F\u002Fjoshft.github.io\u002Fcorrectless\u002F","https:\u002F\u002Fgithub.com\u002Fjoshft","2026-11-07 02:53:35",{"source":8,"skillName":5,"commands":59,"prompt":69,"zipAvailable":70},[60,63,66],{"tool":61,"command":62},"npx","npx skills add joshft\u002Fcorrectless --skill cprune",{"tool":64,"command":65},"bunx","bunx skills add joshft\u002Fcorrectless --skill cprune",{"tool":67,"command":68},"pnpm","pnpm dlx skills add joshft\u002Fcorrectless --skill cprune","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjoshft\u002Fcorrectless\u002Fblob\u002Fmain\u002Fskills\u002Fcprune\u002FSKILL.md",true,[],[73,94,116,134,151,165],{"skillNo":74,"name":75,"nameZh":6,"description":76,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":80,"publishedAt":43},"01M6JJW224Q40TCVMTKRZPDHDY","cwtf","Audit the workflow itself. Use when you suspect agents shortcut or after a bug escapes despite the workflow running. Checks phase execution, rule coverage, and agent thoroughness.","https:\u002F\u002Fgithub.com\u002Fjoshft\u002Fcorrectless\u002Fblob\u002Fmain\u002Fskills\u002Fcwtf\u002FSKILL.md",[79],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[75,81,41,82,83,84,38,85,86,87,36,35,34,88,24,89,90,91,92,93],"workflow","artifacts","audit","execution","grep","find","jq","coverage","use","wtf","bug","you","shortcut",{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":106,"publishedAt":43},"01M6JJVT9M4KGWQ99V0CSF6WZ5","cverify","Verify implementation matches spec. Check rule coverage, undocumented dependencies, architecture compliance. Writes verification report and drift debt. Run after \u002Fctdd completes.","https:\u002F\u002Fgithub.com\u002Fjoshft\u002Fcorrectless\u002Fblob\u002Fmain\u002Fskills\u002Fcverify\u002FSKILL.md",[100,101],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":102,"categoryName":103,"taxonomyType":104,"taxonomyTypeDesc":105},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[96,107,81,33,108,41,109,39,38,36,35,34,88,110,111,30,112,113,114,115],"go","run","verification","diff","ruff","verify implementation","cargo","stryker","ctdd",{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":122,"publishedAt":43},"01M6JJVP2E6BHHKF3SCMDXG0S2","cupdate-arch","Update .correctless\u002FARCHITECTURE.md after features land. Use after \u002Fcdocs or when the codebase structure has changed.","https:\u002F\u002Fgithub.com\u002Fjoshft\u002Fcorrectless\u002Fblob\u002Fmain\u002Fskills\u002Fcupdate-arch\u002FSKILL.md",[],[123,124,125,33,126,41,127,38,128,85,36,35,34,89,129,130,131,132,133],"arch","cupdate arch","docs","update","land","Rules","structure","codebase","features","codebase structure","cdocs",{"skillNo":135,"name":136,"nameZh":6,"description":137,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":138,"categories":139,"keywords":140,"publishedAt":43},"01M6JJVJVZ72KVWN1K3RWQK0YJ","ctriage","Bulk triage deferred findings backlog. Presents findings one at a time with disposition options.","https:\u002F\u002Fgithub.com\u002Fjoshft\u002Fcorrectless\u002Fblob\u002Fmain\u002Fskills\u002Fctriage\u002FSKILL.md",[],[136,141,39,38,142,85,87,143,36,35,34,144,145,146,147,148,149,150],"triage","json","one at a time","interactive","options","backlog","time","bulk","with","at",{"skillNo":152,"name":115,"nameZh":6,"description":153,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":154,"categories":155,"keywords":157,"publishedAt":43},"01M6JJVCYCNYD4GHK33DZE9DXA","Enforced TDD workflow. Write failing tests from spec rules, then implement. Use after \u002Fcreview approves a spec.","https:\u002F\u002Fgithub.com\u002Fjoshft\u002Fcorrectless\u002Fblob\u002Fmain\u002Fskills\u002Fctdd\u002FSKILL.md",[156],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[115,158,159,160,81,82,161,38,128,85,36,35,34,89,162,163,164],"spec","implement","tdd","tdd workflow","task","tests","creview",{"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":171,"publishedAt":43},"01M6JJV7S3EQG3GHQ56DD8P1SA","csummary","Feature summary. Use after \u002Fcdocs to see what the workflow caught, or mid-feature to check progress.","https:\u002F\u002Fgithub.com\u002Fjoshft\u002Fcorrectless\u002Fblob\u002Fmain\u002Fskills\u002Fcsummary\u002FSKILL.md",[],[167,81,41,82,38,85,172,36,35,34,24,89,173,174,175,176,133],"check","what the","summary","feature","progress"]