a11y-check
Accessibility audit, scoped to the surfaces a product actually has. Detects web / rendered_markdown / terminal / native_app / video_audio / document /…
Derive this project's own integration conventions from what the code already does, draft them as a wiring contract, and hold new work to it. Closes the built-but-not-wired gap at L3 (walking skeleton) — a mechanism that ships and is never called reads green in every other check.
$ npx -y skills add haabe/mycelium --skill wiring-contract --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/wiring-contractContext preview
The summary Claude sees to decide when to auto-load this skill.
Derive this project's own integration conventions from what the code already does, draft them as a wiring contract, and hold new work to it. Closes the built-but-not-wired gap at L3 (walking skeleton) — a mechanism that ships and is never called reads green in every other check.
name: wiring-contract description: "Derive this project's own integration conventions from what the code already does, draft them as a wiring contract, and hold new work to it. Closes the built-but-not-wired gap at L3 (walking skeleton) — a mechanism that ships and is never called reads green in every other check." metadata: instruction_budget: "38" framework_dependency: "mycelium" framework_dependency_note: "This skill is designed to run within the Mycelium framework (https://github.com/haabe/mycelium). Standalone use will skip the canvas state, theory gates, and harness behavior the skill assumes. Install: /plugin install mycelium@haabe-mycelium."
Answer one question for this project and then keep answering it automatically: **when something is built here, what does it have to be connected to before it counts as done?**
The failure is not carelessness, it is structural. A model's context makes it unable to see whether the element it just generated is referenced anywhere else, so plausible-but-unreferenced code is the *expected* output. Across 304,362 verified AI-authored commits in 6,275 repositories, "unused variables or parameters" is the second most frequent issue class, and "undefined variable or reference" — writer and reader disagreeing about a name or path — is the most common runtime bug category. It does not wash out: AI-authored code survives **longer** than human-written code (53.9% vs 69.3% line death rate), so an orphan is *less* likely to be cleaned up than a human's.
Every ordinary signal misses it. Tests pass, coverage rises, lint is clean, review approves — because each of those verifies a thing **against itself**, and wiring is a property of a **pair**.
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/check_wiring_contract.py" --root . --detectThis proposes a rule only where the repo **already** behaves that way, and records the evidence:
- id: wc-002
pattern: "scripts/*.py"
obliges:
- referenced_by: ["**/*"]
detected_from: "18 of 20 files already satisfy this"
confidence: 0.90A rule without observed support is a preference, not a contract. Two obligation types exist and that is deliberate — `referenced_by` (something outside the file references it, by import, invocation, path, or a glob that matches it) and `sibling_reference` (a same-directory barrel or registry lists it). Nine specific obligations rot; two general ones that always run do not.
Present the proposal and ask, per rule, in plain language: *"18 of 20 scripts here have a caller. Should that be required?"* Watch for two failure shapes:
Write the confirmed contract to `.claude/harness/wiring-contract.yml`. Per the evidence-writes rule, the contract is a **human-confirmed draft**, never written unattended.
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/check_wiring_contract.py" --root .Per **G-V14**, add this to the command run after *every change*, not only to CI. Agents respond to automated signals far more reliably than to documentation: a failing command gets fixed, a guardrail paragraph in the context window may not be read at all.
Files matching no rule are listed with a count. **Zero violations across a governed subset is not zero violations.** A clean report beside 300 ungoverned files describes the health of a fraction while implying the whole — the precise false green this skill exists to end. Either extend coverage or state why those files are outside it.
Mycelium does not ship a list of integration points to check. A sibling project hand-listed 4 component and 9 plugin integration points; such a list is stale the moment someone adds the tenth, and hand-enumerated scope is the origin of this entire failure family. The rules here are derived from the project in front of you, and regenerated when it changes.
A harness that asks who this is for before the agent writes code. Built on Claude Code, where the gates are structural. The files and skills port to opencode, Codex and Cursor. Outcome over output. You know how this goes.
Accessibility audit, scoped to the surfaces a product actually has. Detects web / rendered_markdown / terminal / native_app / video_audio / document /…
Bring Mycelium into a project that already has code. Detects that the repo predates the framework, asks before touching anything, then reads the codebase to…
Design the smallest viable test to validate or invalidate a critical assumption. Based on Torres's assumption testing framework, organized by Gilad's AFTER…
Use before any research activity or significant decision. Reviews cognitive biases relevant to the current stage.
Use to evaluate whether current work aligns with Better Value Sooner Safer Happier. Run at diamond completion and periodically.
Lint canvas files for staleness, missing fields, inconsistent evidence types, and orphaned references. Run periodically or before major transitions.