[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6NTW8WV175DQAFW7HE78J5N":3,"skill-same:01M6NTW8WV175DQAFW7HE78J5N":76},{"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":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":52,"commitSha":53,"skillDirectory":54,"forksCount":55,"repositoryHtmlUrl":56,"repositoryHomepageUrl":57,"ownerHtmlUrl":58,"ownerBlogUrl":59,"ownerDescription":60,"updatedAt":61,"install":62,"resources":75},"01M6NTW8WV175DQAFW7HE78J5N","corrections-audit",null,"Use to analyze correction trends, surface recurring patterns, and graduate repeat corrections to guardrails or anti-patterns.","haabe\u002Fmycelium","haabe","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F2988921?v=4","01M6NTRKFVVHQG4RF09EB5FRB4","Håvard Bartnes","01M6NTRKKSM94X8BRYCYE2D80Y",54,"MIT","https:\u002F\u002Fgithub.com\u002Fhaabe\u002Fmycelium\u002Fblob\u002Fmain\u002Fplugins\u002Fmycelium\u002Fskills\u002Fcorrections-audit\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"corrections audit","audit","trends","github","plugin","state","gates","use","recurring","harness","framework","patterns","mycelium","install","anti-patterns","run","analyze","Guardrails","canvas","standalone","2026-11-10 10:12:30",false,"---\nname: corrections-audit\ndescription: \"Use to analyze correction trends, surface recurring patterns, and graduate repeat corrections to guardrails or anti-patterns.\"\nmetadata:\n  instruction_budget: \"40\"\n  framework_dependency: \"mycelium\"\n  framework_dependency_note: \"This skill is designed to run within the Mycelium framework (https:\u002F\u002Fgithub.com\u002Fhaabe\u002Fmycelium). Standalone use will skip the canvas state, theory gates, and harness behavior the skill assumes. Install: \u002Fplugin install mycelium@haabe-mycelium.\"\n---\n\n# Corrections Audit Skill\n\nAnalyze corrections.md for trends, recurring patterns, and actionable insights.\n\n\n## Attribution: run the script, do not count by hand\n\n```bash\npython3 \"${CLAUDE_PLUGIN_ROOT}\u002Fscripts\u002Fcheck_correction_attribution.py\" --root . --snapshot\n```\n\n**Added 2026-08-03.** This audit's headline number — *who caught the mistake* —\nwas computed by hand and had been produced exactly twice, six weeks apart, each\ntime because a human remembered to look. It is the only number that answers the\nquestion the correction loop exists to answer: **more harness, or more context.**\n\nThe script reports the escape rate **and its denominator, every time**. At the\ntime of writing 14 of 72 entries carry a catcher, so the rate covers 19% of the\ncorpus — quoting it without that is a claim about the whole wearing borrowed\nclothes, which is the failure this repo spent 2026-08-02\u002F03 removing from its own\nchecks. If it prints `NO RATE AVAILABLE`, that is not 0%: it means nothing in the\ncorpus says who caught anything.\n\n`--snapshot` appends the reading to `.claude\u002Fevals\u002Fmetrics\u002Fcorrections\u002F\u003Cdate>.json`, the same layout the other metric adapters use. **The level is not the signal.** Trend `caught_by_hook_or_check` rising in absolute terms; the ratio can also be improved by logging fewer user-caught mistakes, which is why this script never gates on it.\n\n**Attribution is a HARD RULE at write time**, not a suggestion — see `engine\u002Fagent-operating-contract.md`. It was advisory until 2026-08-03 and 72 of 100 entries carry no catcher as a result. Do not backfill those in bulk: who caught a mistake six weeks ago is not recoverable by inference, and a guessed catcher corrupts the only number this loop produces.\n\n**For entries written before the rule, add one phrase per new entry** — `caught by user`,\n`caught by hook`, `caught by review`, `self-caught`. The parser reads the prose\nforms already present rather than requiring a new field, so nothing existing\nneeds rewriting.\n\n## When to Use\n\n- Loop 2 (Incremental) cadence: after every 3+ corrections are logged\n- When the same correction category appears 3+ times\n- During `\u002Fmycelium:diamond-assess` if corrections gate has findings\n- Before starting a new diamond at the same scale as a previously corrected one\n\n## Workflow\n\n1. **Load corrections AND warnings AND clusters**: Read `.claude\u002Fmemory\u002Fcorrections.md`, `.claude\u002Fmemory\u002Fwarnings-log.md`, AND `.claude\u002Fmemory\u002Fcluster-instances.md` (the cluster log graduated 2026-05-08 — canonical record of recurring-pattern instances and their graduation status; without it, \"the cluster has graduated N times\" has no auditable backing).\n   - If corrections + warnings both empty AND no clusters logged: report \"No corrections, warnings, or clusters to audit\" and stop\n   - Treat all three as inputs to the same pattern analysis. Corrections capture agent-introduced failures; warnings capture framework-state debt; cluster-instances capture cross-cluster pattern accumulation with explicit graduation criteria. Same recurring-pattern shape, different vantage points.\n\n2. **Categorize by frequency**:\n   - Group corrections by `Category` (bias, security, engineering, process, communication)\n   - Group by `Scope` (discovery, delivery, orchestration, quality)\n   - Count occurrences per group\n\n3. **Detect recurring patterns**:\n   - [ ] Same category appears 3+ times -> candidate for guardrail graduation\n   - [ ] Same scope appears 3+ times -> candidate for domain-level CLAUDE.md update\n   - [ ] Same mistake repeats after prevention was documented -> prevention strategy failed, needs escalation\n\n4. **Check origin distribution** (APEX alignment):\n   - Count corrections by `Origin` (ai-generated, human-written, ai-assisted)\n   - If ai-generated corrections dominate (>60%): flag for prompt\u002Fcontext improvement, BUT see `detection_origin` cross-check below before acting on this interpretation\n   - If human-written corrections dominate (>60%): flag for process\u002Ftraining improvement\n   - If ai-assisted is high: check if the AI contribution or the human contribution caused the issue\n\n4b. **Cross-check with detection_origin** (when field is present — see .claude\u002Fmemory\u002FREADME.md):\n   - Count corrections by `Detection_origin` if present (user \u002F agent_self \u002F hook \u002F evaluator \u002F eval_runner \u002F external_review)\n   - **Critical disambiguation**: if Origin is heavily ai-generated AND detection_origin is heavily `user`, the apparent AI-quality signal is actually a HARNESS-DETECTION GAP. The AI is generating failures and the user is the only entity catching them. The right intervention is more harness checks (hooks, evaluators), NOT more AI context.\n   - If detection_origin is dominantly `user` (>70%): flag for harness-detection gap. Suggest where new hooks or evaluators could catch the failure modes earlier.\n   - If detection_origin is well-distributed across mechanisms: harness coverage is healthy; trust the Origin signal at face value.\n   - Surfaced 2026-05-03 (mycelium-roadmap dogfood): without this cross-check, the audit's \"100% ai-generated → improve prompt context\" framing would have driven the wrong intervention. Real signal was \"AI generates, user catches\" — fixed by shipping the framework-guard hook (harness-detection layer), not by improving prompts.\n\n5. **Root-cause recurring corrections** (5 Whys):\n   For each correction that appears 3+ times, apply 5 Whys to find the systemic root:\n   - Why did this happen? -> Why did that happen? -> ... -> [systemic root cause]\n   - Stop when you reach something changeable: a guardrail, gate, process step, or prompt instruction\n   - Anti-pattern: stopping at \"human error\" or \"agent didn't follow instructions\" — ask why the system allowed it\n   *Source: Toyoda\u002FOhno (5 Whys), adapted for agentic workflows.*\n\n6. **Identify graduation candidates** (across corrections, warnings, AND cluster-instances):\n   - Correction logged 3+ times with same root cause -> propose new guardrail (draft G-XX entry) AND ensure a cluster-instances.md entry exists for the pattern\n   - Warning class with `Count: 3+` and `Status: open` in `.claude\u002Fmemory\u002Fwarnings-log.md` -> graduation candidate. Consult `${CLAUDE_PLUGIN_ROOT}\u002Fengine\u002Fwarning-handbook.md` for the canonical fix; if the canonical fix is \"manifest-driven\" or similar structural pattern that's already shipped, the recurrence indicates a regression, not a new pattern.\n   - Correction reveals a failure mode not in ${CLAUDE_PLUGIN_ROOT}\u002Fharness\u002Fanti-patterns.md -> propose new anti-pattern entry\n   - Correction reveals a successful mitigation -> propose new pattern in patterns.md\n   - **Cross-cluster patterns**: when corrections + warnings together reveal the same shape (e.g., \"documented rule diverges from enforcement\" — fired both via validator gaps in warnings-log AND via agent-behavior corrections), graduate to a meta-pattern in patterns.md and consider whether one upstream mechanism could close both surfaces.\n\n6b. **Cluster-instance audit** (graduated 2026-05-08):\n   For each entry in `cluster-instances.md`:\n   - **Update instance count**: if any correction logged since the last audit fits an existing cluster's shape, increment that cluster's instance count and add a row to its instance log. If the shape is new and recurs (≥2 candidates), propose a new cluster section.\n   - **Check graduation criterion**: each cluster has a stated graduation criterion (e.g., \"≥3 instances, ≥3 detection rules validated, \u003C5% FP\"). If a cluster has crossed its criterion without being graduated, flag it as a graduation-readiness signal.\n   - **Cross-reference spec docs**: if a cluster has a `spec` graduation status (e.g., \"documented-rule-diverges-from-enforcement\" → `${CLAUDE_PLUGIN_ROOT}\u002Fengine\u002Fconsistency-check-spec.md`), check whether new instances introduce subclass shapes the spec hasn't yet considered. New subclasses extend the spec; recurring known subclasses just increment the count.\n   - **Surface mis-counted clusters**: a recurring failure mode silently accumulating without a cluster entry IS the harness-context-debt the cluster log was created to scope. If you find correction patterns that should have been counted but weren't, propose backfill entries.\n   - **Recursive check**: a cluster's graduation criterion not being honored is itself an instance of the documented-rule-diverges-from-enforcement cluster. If you detect this, log it as a new instance of that cluster (with appropriate eyebrow-raising in the report).\n\n6c. **Scan `docs\u002Freceipts\u002Fcases\u002F` frontmatter for graduation signals** (added 2026-05-08 with the docs restructure):\n   For each case file in `docs\u002Freceipts\u002Fcases\u002F*.md`:\n   - **Parse YAML frontmatter** (`id`, `date`, `contributor`, `mechanism_or_status`, `commits`, `subclass`).\n   - **Cross-reference with `cluster-instances.md`**: if the case's `subclass` field names a known cluster, ensure the cluster's instance count includes this case. If the case is the first instance of a recurring shape that has no cluster entry, propose a new cluster.\n   - **Detect mechanism-or-status patterns**: if multiple cases share a `mechanism_or_status: in-progress` and the underlying friction recurs, that is a graduation-readiness signal — the partial fix has not converged. If multiple cases share `mechanism_or_status: one-off`, check whether they actually share a root-cause shape that warrants graduation to a cluster.\n   - **Report contributor distribution**: which contributors produce the most receipts? Solo internal-dogfood receipts are valid but the framework's claim of community-shaped feedback weakens if external_human contributor cases are sparse. Flag if external receipts \u003C internal receipts × 0.2 across the last 90 days.\n   - **Identify candidate-graduation cases**: a `mechanism_or_status: spec` that has been at spec ≥30 days without a promotion-bar update is a stalled-spec signal worth surfacing.\n   *The frontmatter exists specifically so this audit step can detect graduations from cases without parsing prose. See `docs\u002Fcontributing\u002Fstyle.md#receipts-case-file-frontmatter`.*\n\n6d. **Consistency-as-evidence pattern detection** (added 2026-05-09 with the anti-pattern graduation):\n   Scan `corrections.md` entries for the *Consistency-as-Evidence* signature:\n   - Mistake involves a generalization (claim of structural significance, \"this means\", \"this generalizes to\")\n   - At least one piece of supporting evidence in the entry's mistake or correction sections is consistency-only (the data is compatible with the hypothesis but the cause was not isolated)\n   - User intervention caught the failure post-publication, not the agent pre-publication\n   If 3+ instances within a rolling 90-day window: surface as graduation-confirmed (the anti-pattern *Consistency-as-Evidence* in `${CLAUDE_PLUGIN_ROOT}\u002Fharness\u002Fanti-patterns.md` #7). If the pattern recurs after graduation, that's a signal the prevention layer needs strengthening (e.g., harden Technique 4 in `\u002Fdevils-advocate` from skill-time check to ambient hook).\n\n6e. **Stale-state-read pattern detection** (added 2026-05-09 with the anti-pattern graduation):\n   Scan `corrections.md` for the *Stale State Read* signature:\n   - Mistake involves a script, validator, or check producing nominally-correct output against an outdated reference\n   - Root cause: read default was hardcoded local path without explicit-source override, OR a sync flow read pre-replacement state\n   - Same epistemic shape as anti-pattern #8 in `${CLAUDE_PLUGIN_ROOT}\u002Fharness\u002Fanti-patterns.md`\n   Track instance count. The 5th instance graduates the prevention layer beyond the existing `parse_manifest.py --manifest=\u003Cpath>` worked example: scan the codebase via `validate-template.sh` Check 29 for state-reading scripts that lack explicit-source parameters. Until then, the anti-pattern entry is the primary defense.\n\n7. **Consolidate memory files** (automated hygiene):\n   - **Deduplication**: Identify corrections that describe the same root cause in different words. Merge into a single entry, preserving all dates and evidence.\n   - **Contradiction detection**: Flag corrections that contradict each other (e.g., \"always use X\" vs \"never use X\"). Present conflicts to the user for resolution.\n   - **Staleness removal**: Corrections older than 6 months whose prevention has been verified effective (no recurrence) can be archived to `.claude\u002Fmemory\u002Fcorrections-archive.md`.\n   - **Size cap**: If corrections.md exceeds 50 entries, consolidate the oldest resolved entries into a summary paragraph in the archive.\n   - Apply the same consolidation to `.claude\u002Fmemory\u002Fpatterns.md`.\n   *Inspired by: greyhaven-ai\u002Fautocontext curator agent — periodic dedup, cap, and contradiction removal.*\n\n8. **Update TL;DR section**:\n   - Regenerate the TL;DR in corrections.md with the top 5 most impactful corrections\n   - Impact = frequency x severity (blocking vs. quality vs. cosmetic)\n\n9. **Recommend actions**:\n   - For each graduation candidate: specific guardrail text, tier, and constraint type\n   - For failed preventions: what went wrong and what stronger mechanism to use\n   - For origin imbalances: specific context improvements\n\n## Output Format\n\n```\n## Corrections Audit\n\n### Summary\nTotal corrections: [N]\nPeriod: [earliest date] to [latest date]\n\n### Frequency Analysis\n| Category | Count | Trend |\n|----------|-------|-------|\n| engineering | 3 | rising |\n| bias | 1 | stable |\n\n### Origin Distribution\n| Origin | Count | % |\n|--------|-------|---|\n| ai-generated | 4 | 57% |\n| human-written | 2 | 29% |\n| ai-assisted | 1 | 14% |\n\n### Recurring Patterns\n- [Pattern description]: [N] occurrences -> [recommendation]\n\n### Cluster Status (from cluster-instances.md)\n| Cluster | Instances | Status | Graduation criterion | Notes |\n|---|---|---|---|---|\n| documented-rule-diverges-from-enforcement | 8 | spec | ≥3 detection rules validated, \u003C5% FP | Spec at ${CLAUDE_PLUGIN_ROOT}\u002Fengine\u002Fconsistency-check-spec.md (graduated 2026-05-08) |\n\n### Graduation Candidates\n1. [Correction pattern] -> Proposed guardrail: G-XX \"[text]\" `[TIER]` `[type]`\n2. [Cluster X reaching its graduation criterion] -> Proposed promotion from \u003Ccurrent_status> to \u003Cnext_status>: \u003Caction>\n\n### Failed Preventions\n- [Correction] was logged again despite prevention \"[strategy]\" -> [escalation]\n\n### TL;DR Update\n[Updated summary for corrections.md TL;DR section]\n```\n\n\n## Prior findings first (added v0.96.0)\n\nBefore producing new findings, **rule on the previous run's** — per `${CLAUDE_PLUGIN_ROOT}\u002Fengine\u002Fcanvas-guidance.yml#prior_findings_first`. For each: CLOSED (name what closed it), STILL-OPEN (carry it forward with a horizon), or DECLINED (a reason AND a re-open trigger). If there is no prior run, say so and continue.\n\n**Scoring goes first because it is the boring half.** A periodic instrument that produces findings and never scores its old ones accumulates a ranking nobody reads — `theory-audit-2026-04-17.md` ranked its gaps and sat unconsumed for four months. Anything placed after the interesting work is what a long session drops.\n\n**A finding ranked HIGH must leave this skill with a home** — tag or create an opportunity on the framework-side root of the OST (`opportunities.yml`, `rolls_up_to`), or decline it with a re-open trigger. Scoring alone does not close the loop: it fires only when someone runs this skill again, so on a slow cadence findings still sleep. An opportunity is read by instruments on their own schedule. Not `human-tasks.yml` — that canvas is scoped to offline HUMAN work (interviews, outreach), and an engineering finding filed there is a category error.\n\n## Theory Citations\n- Mycelium internal learning loop\n- APEX framework (origin-aware quality tracking)\n- Senge: systems thinking (recurring patterns signal structural issues)\n","# Corrections Audit Skill\n\nAnalyze corrections.md for trends, recurring patterns, and actionable insights.\n\n\n## Attribution: run the script, do not count by hand\n\n```bash\npython3 \"${CLAUDE_PLUGIN_ROOT}\u002Fscripts\u002Fcheck_correction_attribution.py\" --root . --snapshot\n```\n\n**Added 2026-08-03.** This audit's headline number — *who caught the mistake* —\nwas computed by hand and had been produced exactly twice, six weeks apart, each\ntime because a human remembered to look. It is the only number that answers the\nquestion the correction loop exists to answer: **more harness, or more context.**\n\nThe script reports the escape rate **and its denominator, every time**. At the\ntime of writing 14 of 72 entries carry a catcher, so the rate covers 19% of the\ncorpus — quoting it without that is a claim about the whole wearing borrowed\nclothes, which is the failure this repo spent 2026-08-02\u002F03 removing from its own\nchecks. If it prints `NO RATE AVAILABLE`, that is not 0%: it means nothing in the\ncorpus says who caught anything.\n\n`--snapshot` appends the reading to `.claude\u002Fevals\u002Fmetrics\u002Fcorrections\u002F\u003Cdate>.json`, the same layout the other metric adapters use. **The level is not the signal.** Trend `caught_by_hook_or_check` rising in absolute terms; the ratio can also be improved by logging fewer user-caught mistakes, which is why this script never gates on it.\n\n**Attribution is a HARD RULE at write time**, not a suggestion — see `engine\u002Fagent-operating-contract.md`. It was advisory until 2026-08-03 and 72 of 100 entries carry no catcher as a result. Do not backfill those in bulk: who caught a mistake six weeks ago is not recoverable by inference, and a guessed catcher corrupts the only number this loop produces.\n\n**For entries written before the rule, add one phrase per new entry** — `caught by user`,\n`caught by hook`, `caught by review`, `self-caught`. The parser reads the prose\nforms already present rather than requiring a new field, so nothing existing\nneeds rewriting.\n\n## When to Use\n\n- Loop 2 (Incremental) cadence: after every 3+ corrections are logged\n- When the same correction category appears 3+ times\n- During `\u002Fmycelium:diamond-assess` if corrections gate has findings\n- Before starting a new diamond at the same scale as a previously corrected one\n\n## Workflow\n\n1. **Load corrections AND warnings AND clusters**: Read `.claude\u002Fmemory\u002Fcorrections.md`, `.claude\u002Fmemory\u002Fwarnings-log.md`, AND `.claude\u002Fmemory\u002Fcluster-instances.md` (the cluster log graduated 2026-05-08 — canonical record of recurring-pattern instances and their graduation status; without it, \"the cluster has graduated N times\" has no auditable backing).\n   - If corrections + warnings both empty AND no clusters logged: report \"No corrections, warnings, or clusters to audit\" and stop\n   - Treat all three as inputs to the same pattern analysis. Corrections capture agent-introduced failures; warnings capture framework-state debt; cluster-instances capture cross-cluster pattern accumulation with explicit graduation criteria. Same recurring-pattern shape, different vantage points.\n\n2. **Categorize by frequency**:\n   - Group corrections by `Category` (bias, security, engineering, process, communication)\n   - Group by `Scope` (discovery, delivery, orchestration, quality)\n   - Count occurrences per group\n\n3. **Detect recurring patterns**:\n   - [ ] Same category appears 3+ times -> candidate for guardrail graduation\n   - [ ] Same scope appears 3+ times -> candidate for domain-level CLAUDE.md update\n   - [ ] Same mistake repeats after prevention was documented -> prevention strategy failed, needs escalation\n\n4. **Check origin distribution** (APEX alignment):\n   - Count corrections by `Origin` (ai-generated, human-written, ai-assisted)\n   - If ai-generated corrections dominate (>60%): flag for prompt\u002Fcontext improvement, BUT see `detection_origin` cross-check below before acting on this interpretation\n   - If human-written corrections dominate (>60%): flag for process\u002Ftraining improvement\n   - If ai-assisted is high: check if the AI contribution or the human contribution caused the issue\n\n4b. **Cross-check with detection_origin** (when field is present — see .claude\u002Fmemory\u002FREADME.md):\n   - Count corrections by `Detection_origin` if present (user \u002F agent_self \u002F hook \u002F evaluator \u002F eval_runner \u002F external_review)\n   - **Critical disambiguation**: if Origin is heavily ai-generated AND detection_origin is heavily `user`, the apparent AI-quality signal is actually a HARNESS-DETECTION GAP. The AI is generating failures and the user is the only entity catching them. The right intervention is more harness checks (hooks, evaluators), NOT more AI context.\n   - If detection_origin is dominantly `user` (>70%): flag for harness-detection gap. Suggest where new hooks or evaluators could catch the failure modes earlier.\n   - If detection_origin is well-distributed across mechanisms: harness coverage is healthy; trust the Origin signal at face value.\n   - Surfaced 2026-05-03 (mycelium-roadmap dogfood): without this cross-check, the audit's \"100% ai-generated → improve prompt context\" framing would have driven the wrong intervention. Real signal was \"AI generates, user catches\" — fixed by shipping the framework-guard hook (harness-detection layer), not by improving prompts.\n\n5. **Root-cause recurring corrections** (5 Whys):\n   For each correction that appears 3+ times, apply 5 Whys to find the systemic root:\n   - Why did this happen? -> Why did that happen? -> ... -> [systemic root cause]\n   - Stop when you reach something changeable: a guardrail, gate, process step, or prompt instruction\n   - Anti-pattern: stopping at \"human error\" or \"agent didn't follow instructions\" — ask why the system allowed it\n   *Source: Toyoda\u002FOhno (5 Whys), adapted for agentic workflows.*\n\n6. **Identify graduation candidates** (across corrections, warnings, AND cluster-instances):\n   - Correction logged 3+ times with same root cause -> propose new guardrail (draft G-XX entry) AND ensure a cluster-instances.md entry exists for the pattern\n   - Warning class with `Count: 3+` and `Status: open` in `.claude\u002Fmemory\u002Fwarnings-log.md` -> graduation candidate. Consult `${CLAUDE_PLUGIN_ROOT}\u002Fengine\u002Fwarning-handbook.md` for the canonical fix; if the canonical fix is \"manifest-driven\" or similar structural pattern that's already shipped, the recurrence indicates a regression, not a new pattern.\n   - Correction reveals a failure mode not in ${CLAUDE_PLUGIN_ROOT}\u002Fharness\u002Fanti-patterns.md -> propose new anti-pattern entry\n   - Correction reveals a successful mitigation -> propose new pattern in patterns.md\n   - **Cross-cluster patterns**: when corrections + warnings together reveal the same shape (e.g., \"documented rule diverges from enforcement\" — fired both via validator gaps in warnings-log AND via agent-behavior corrections), graduate to a meta-pattern in patterns.md and consider whether one upstream mechanism could close both surfaces.\n\n6b. **Cluster-instance audit** (graduated 2026-05-08):\n   For each entry in `cluster-instances.md`:\n   - **Update instance count**: if any correction logged since the last audit fits an existing cluster's shape, increment that cluster's instance count and add a row to its instance log. If the shape is new and recurs (≥2 candidates), propose a new cluster section.\n   - **Check graduation criterion**: each cluster has a stated graduation criterion (e.g., \"≥3 instances, ≥3 detection rules validated, \u003C5% FP\"). If a cluster has crossed its criterion without being graduated, flag it as a graduation-readiness signal.\n   - **Cross-reference spec docs**: if a cluster has a `spec` graduation status (e.g., \"documented-rule-diverges-from-enforcement\" → `${CLAUDE_PLUGIN_ROOT}\u002Fengine\u002Fconsistency-check-spec.md`), check whether new instances introduce subclass shapes the spec hasn't yet considered. New subclasses extend the spec; recurring known subclasses just increment the count.\n   - **Surface mis-counted clusters**: a recurring failure mode silently accumulating without a cluster entry IS the harness-context-debt the cluster log was created to scope. If you find correction patterns that should have been counted but weren't, propose backfill entries.\n   - **Recursive check**: a cluster's graduation criterion not being honored is itself an instance of the documented-rule-diverges-from-enforcement cluster. If you detect this, log it as a new instance of that cluster (with appropriate eyebrow-raising in the report).\n\n6c. **Scan `docs\u002Freceipts\u002Fcases\u002F` frontmatter for graduation signals** (added 2026-05-08 with the docs restructure):\n   For each case file in `docs\u002Freceipts\u002Fcases\u002F*.md`:\n   - **Parse YAML frontmatter** (`id`, `date`, `contributor`, `mechanism_or_status`, `commits`, `subclass`).\n   - **Cross-reference with `cluster-instances.md`**: if the case's `subclass` field names a known cluster, ensure the cluster's instance count includes this case. If the case is the first instance of a recurring shape that has no cluster entry, propose a new cluster.\n   - **Detect mechanism-or-status patterns**: if multiple cases share a `mechanism_or_status: in-progress` and the underlying friction recurs, that is a graduation-readiness signal — the partial fix has not converged. If multiple cases share `mechanism_or_status: one-off`, check whether they actually share a root-cause shape that warrants graduation to a cluster.\n   - **Report contributor distribution**: which contributors produce the most receipts? Solo internal-dogfood receipts are valid but the framework's claim of community-shaped feedback weakens if external_human contributor cases are sparse. Flag if external receipts \u003C internal receipts × 0.2 across the last 90 days.\n   - **Identify candidate-graduation cases**: a `mechanism_or_status: spec` that has been at spec ≥30 days without a promotion-bar update is a stalled-spec signal worth surfacing.\n   *The frontmatter exists specifically so this audit step can detect graduations from cases without parsing prose. See `docs\u002Fcontributing\u002Fstyle.md#receipts-case-file-frontmatter`.*\n\n6d. **Consistency-as-evidence pattern detection** (added 2026-05-09 with the anti-pattern graduation):\n   Scan `corrections.md` entries for the *Consistency-as-Evidence* signature:\n   - Mistake involves a generalization (claim of structural significance, \"this means\", \"this generalizes to\")\n   - At least one piece of supporting evidence in the entry's mistake or correction sections is consistency-only (the data is compatible with the hypothesis but the cause was not isolated)\n   - User intervention caught the failure post-publication, not the agent pre-publication\n   If 3+ instances within a rolling 90-day window: surface as graduation-confirmed (the anti-pattern *Consistency-as-Evidence* in `${CLAUDE_PLUGIN_ROOT}\u002Fharness\u002Fanti-patterns.md` #7). If the pattern recurs after graduation, that's a signal the prevention layer needs strengthening (e.g., harden Technique 4 in `\u002Fdevils-advocate` from skill-time check to ambient hook).\n\n6e. **Stale-state-read pattern detection** (added 2026-05-09 with the anti-pattern graduation):\n   Scan `corrections.md` for the *Stale State Read* signature:\n   - Mistake involves a script, validator, or check producing nominally-correct output against an outdated reference\n   - Root cause: read default was hardcoded local path without explicit-source override, OR a sync flow read pre-replacement state\n   - Same epistemic shape as anti-pattern #8 in `${CLAUDE_PLUGIN_ROOT}\u002Fharness\u002Fanti-patterns.md`\n   Track instance count. The 5th instance graduates the prevention layer beyond the existing `parse_manifest.py --manifest=\u003Cpath>` worked example: scan the codebase via `validate-template.sh` Check 29 for state-reading scripts that lack explicit-source parameters. Until then, the anti-pattern entry is the primary defense.\n\n7. **Consolidate memory files** (automated hygiene):\n   - **Deduplication**: Identify corrections that describe the same root cause in different words. Merge into a single entry, preserving all dates and evidence.\n   - **Contradiction detection**: Flag corrections that contradict each other (e.g., \"always use X\" vs \"never use X\"). Present conflicts to the user for resolution.\n   - **Staleness removal**: Corrections older than 6 months whose prevention has been verified effective (no recurrence) can be archived to `.claude\u002Fmemory\u002Fcorrections-archive.md`.\n   - **Size cap**: If corrections.md exceeds 50 entries, consolidate the oldest resolved entries into a summary paragraph in the archive.\n   - Apply the same consolidation to `.claude\u002Fmemory\u002Fpatterns.md`.\n   *Inspired by: greyhaven-ai\u002Fautocontext curator agent — periodic dedup, cap, and contradiction removal.*\n\n8. **Update TL;DR section**:\n   - Regenerate the TL;DR in corrections.md with the top 5 most impactful corrections\n   - Impact = frequency x severity (blocking vs. quality vs. cosmetic)\n\n9. **Recommend actions**:\n   - For each graduation candidate: specific guardrail text, tier, and constraint type\n   - For failed preventions: what went wrong and what stronger mechanism to use\n   - For origin imbalances: specific context improvements\n\n## Output Format\n\n```\n## Corrections Audit\n\n### Summary\nTotal corrections: [N]\nPeriod: [earliest date] to [latest date]\n\n### Frequency Analysis\n| Category | Count | Trend |\n|----------|-------|-------|\n| engineering | 3 | rising |\n| bias | 1 | stable |\n\n### Origin Distribution\n| Origin | Count | % |\n|--------|-------|---|\n| ai-generated | 4 | 57% |\n| human-written | 2 | 29% |\n| ai-assisted | 1 | 14% |\n\n### Recurring Patterns\n- [Pattern description]: [N] occurrences -> [recommendation]\n\n### Cluster Status (from cluster-instances.md)\n| Cluster | Instances | Status | Graduation criterion | Notes |\n|---|---|---|---|---|\n| documented-rule-diverges-from-enforcement | 8 | spec | ≥3 detection rules validated, \u003C5% FP | Spec at ${CLAUDE_PLUGIN_ROOT}\u002Fengine\u002Fconsistency-check-spec.md (graduated 2026-05-08) |\n\n### Graduation Candidates\n1. [Correction pattern] -> Proposed guardrail: G-XX \"[text]\" `[TIER]` `[type]`\n2. [Cluster X reaching its graduation criterion] -> Proposed promotion from \u003Ccurrent_status> to \u003Cnext_status>: \u003Caction>\n\n### Failed Preventions\n- [Correction] was logged again despite prevention \"[strategy]\" -> [escalation]\n\n### TL;DR Update\n[Updated summary for corrections.md TL;DR section]\n```\n\n\n## Prior findings first (added v0.96.0)\n\nBefore producing new findings, **rule on the previous run's** — per `${CLAUDE_PLUGIN_ROOT}\u002Fengine\u002Fcanvas-guidance.yml#prior_findings_first`. For each: CLOSED (name what closed it), STILL-OPEN (carry it forward with a horizon), or DECLINED (a reason AND a re-open trigger). If there is no prior run, say so and continue.\n\n**Scoring goes first because it is the boring half.** A periodic instrument that produces findings and never scores its old ones accumulates a ranking nobody reads — `theory-audit-2026-04-17.md` ranked its gaps and sat unconsumed for four months. Anything placed after the interesting work is what a long session drops.\n\n**A finding ranked HIGH must leave this skill with a home** — tag or create an opportunity on the framework-side root of the OST (`opportunities.yml`, `rolls_up_to`), or decline it with a re-open trigger. Scoring alone does not close the loop: it fires only when someone runs this skill again, so on a slow cadence findings still sleep. An opportunity is read by instruments on their own schedule. Not `human-tasks.yml` — that canvas is scoped to offline HUMAN work (interviews, outreach), and an engineering finding filed there is a category error.\n\n## Theory Citations\n- Mycelium internal learning loop\n- APEX framework (origin-aware quality tracking)\n- Senge: systems thinking (recurring patterns signal structural issues)\n",{"name":5,"metadata":49,"description":7},{"instruction_budget":50,"framework_dependency":36,"framework_dependency_note":51},"40","This skill is designed to run within the Mycelium framework (https:\u002F\u002Fgithub.com\u002Fhaabe\u002Fmycelium). Standalone use will skip the canvas state, theory gates, and harness behavior the skill assumes. Install: \u002Fplugin install mycelium@haabe-mycelium.","main","7a6e1f5bd6a868d24fc645c4ebceb0e12e4491c6","plugins\u002Fmycelium\u002Fskills\u002Fcorrections-audit",6,"https:\u002F\u002Fgithub.com\u002Fhaabe\u002Fmycelium","https:\u002F\u002Fgithub.com\u002Fhaabe\u002Fmycelium\u002Fblob\u002Fmain\u002Fdocs\u002Fget-started.md","https:\u002F\u002Fgithub.com\u002Fhaabe","https:\u002F\u002Feccera.com\u002F","Building platform tooling for AI-assisted product development.","2026-11-13 22:01:28",{"source":8,"skillName":5,"commands":63,"prompt":73,"zipAvailable":74},[64,67,70],{"tool":65,"command":66},"npx","npx skills add haabe\u002Fmycelium --skill corrections-audit",{"tool":68,"command":69},"bunx","bunx skills add haabe\u002Fmycelium --skill corrections-audit",{"tool":71,"command":72},"pnpm","pnpm dlx skills add haabe\u002Fmycelium --skill corrections-audit","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fhaabe\u002Fmycelium\u002Fblob\u002Fmain\u002Fplugins\u002Fmycelium\u002Fskills\u002Fcorrections-audit\u002FSKILL.md",true,[],[77,89,102,113,119,126],{"skillNo":78,"name":79,"nameZh":6,"description":80,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":84,"publishedAt":44},"01M6NVR17TVR7WM0MJD1TPY0CW","good_skill","Valid frontmatter.","https:\u002F\u002Fgithub.com\u002Fhaabe\u002Fmycelium\u002Fblob\u002Fmain\u002Ftests\u002Fbash\u002Ffixtures\u002Fcheck_8\u002Fvalid\u002Fplugins\u002Fmycelium\u002Fskills\u002Fgood_skill\u002FSKILL.md",[83],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[85,86,87,88],"good skill","good","frontmatter","valid",{"skillNo":90,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":96,"publishedAt":44},"01M6NVQPDAP1S4JQ5XFCT6P4PG","bad_skill","Has description but no name field.","https:\u002F\u002Fgithub.com\u002Fhaabe\u002Fmycelium\u002Fblob\u002Fmain\u002Ftests\u002Fbash\u002Ffixtures\u002Fcheck_8\u002Fmissing_name\u002Fplugins\u002Fmycelium\u002Fskills\u002Fbad_skill\u002FSKILL.md",[95],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[97,98,99,100,101],"bad skill","bad","name","but","no name",{"skillNo":103,"name":104,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":110,"publishedAt":44},"01M6NVQHEZAMP2JB45CA6Y3G1B","canvas-update","https:\u002F\u002Fgithub.com\u002Fhaabe\u002Fmycelium\u002Fblob\u002Fmain\u002Ftests\u002Fbash\u002Ffixtures\u002Fcheck_5\u002Fmissing_canvas_in_mapping\u002Fplugins\u002Fmycelium\u002Fskills\u002Fcanvas-update\u002FSKILL.md",[107],{"categoryNo":108,"categoryName":109,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计",[42,111,112],"update","canvas update",{"skillNo":114,"name":104,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":115,"categories":116,"keywords":118,"publishedAt":44},"01M6NVQDX6GEEHJ48WEPK0EG1Q","https:\u002F\u002Fgithub.com\u002Fhaabe\u002Fmycelium\u002Fblob\u002Fmain\u002Ftests\u002Fbash\u002Ffixtures\u002Fcheck_5\u002Fall_present\u002Fplugins\u002Fmycelium\u002Fskills\u002Fcanvas-update\u002FSKILL.md",[117],{"categoryNo":108,"categoryName":109,"taxonomyType":21,"taxonomyTypeDesc":22},[42,111,112],{"skillNo":120,"name":121,"nameZh":6,"description":6,"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":44},"01M6NVQ5BH3VN7P9Q185Z2TMRN","ice-score","https:\u002F\u002Fgithub.com\u002Fhaabe\u002Fmycelium\u002Fblob\u002Fmain\u002Ftests\u002Fbash\u002Ffixtures\u002Fcheck_45\u002Fmissing_marker\u002Fplugins\u002Fmycelium\u002Fskills\u002Fice-score\u002FSKILL.md",[],[125],"ice score",{"skillNo":127,"name":128,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":129,"categories":130,"keywords":131,"publishedAt":44},"01M6NVPTQY2QMDABA1GJW5H1EG","bvssh-check","https:\u002F\u002Fgithub.com\u002Fhaabe\u002Fmycelium\u002Fblob\u002Fmain\u002Ftests\u002Fbash\u002Ffixtures\u002Fcheck_45\u002Fmissing_marker\u002Fplugins\u002Fmycelium\u002Fskills\u002Fbvssh-check\u002FSKILL.md",[],[132,133],"bvssh check","check"]