[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M77VEAPRZSS82S2P0VWHPD3G":3,"skill-same:01M77VEAPRZSS82S2P0VWHPD3G":45},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":18,"linkOnly":19,"markdownContent":20,"markdownBody":21,"frontMatter":22,"refName":23,"commitSha":24,"skillDirectory":25,"forksCount":26,"repositoryHtmlUrl":27,"repositoryHomepageUrl":28,"ownerHtmlUrl":29,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":30,"install":31,"resources":44},"01M77VEAPRZSS82S2P0VWHPD3G","e2e-wiring-proof",null,"Use immediately before declaring \"done\" on any code generation that adds a new entry point — function, endpoint, route, CLI command, UI component, plugin, hook, or bridge handler. Forbids closing the task without (1) proving the new code is reachable from a real trigger, outside test files, and (2) a generated or extended E2E test that exercises it through that real entry point, executed with captured evidence. A unit test that imports and calls the code directly does not satisfy this gate.","CorvinLabs\u002FCorvinOS","CorvinLabs","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F289506478?v=4","01M77VCHYED8C391HPBTNYP0HS","01M77VCHZ5K92DH3W6SPN8Y4P2",25,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FCorvinLabs\u002FCorvinOS\u002Fblob\u002Fmain\u002Fcorvin_operator\u002Fbundle\u002Fskills\u002Fldd\u002Fe2e-wiring-proof\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: e2e-wiring-proof\ndescription: Use immediately before declaring \"done\" on any code generation that adds a new entry point — function, endpoint, route, CLI command, UI component, plugin, hook, or bridge handler. Forbids closing the task without (1) proving the new code is reachable from a real trigger, outside test files, and (2) a generated or extended E2E test that exercises it through that real entry point, executed with captured evidence. A unit test that imports and calls the code directly does not satisfy this gate.\n---\n\n# E2E Wiring Proof — reachability + functional proof discipline\n\nApply this gate once, at the END of any code-generation task that introduces a new entry\npoint, immediately before `docs-as-definition-of-done` and before declaring \"done.\" It is\nthe sibling gate to `adr_gate`: `adr_gate` asks \"does this decision need a record?\"; this\ngate asks \"does this code actually run, and can I prove it?\"\n\n**Why this exists:** a unit test proves a function returns the right value *when called*.\nIt says nothing about whether anything in the running system *calls* it. CorvinOS has\nshipped structural instances of this exact failure — plugin types that register\nsuccessfully but are never invoked by any real code path, and an auth invariant that is\nunit-tested but reachable from zero live call sites. Both were \"tested,\" both were dead.\nThis gate exists to make that class of bug structurally harder to ship.\n\n## The bar\n\nThe default assumption is: **new code is unreachable until proven otherwise.** Do not\nassume wiring succeeded because the code compiles, the unit test passes, or the diff\n\"looks complete.\" Prove it.\n\n## When this gate fires\n\n**Fires on:**\n- A new function, class, or module intended to be called from outside its own file\n- A new HTTP\u002FREST endpoint or route\n- A new CLI command or flag that triggers new behavior\n- A new UI component, page, or interactive element\n- A new plugin, hook, extension point implementation, or event subscriber\n- A new bridge\u002Fadapter message handler\n- Any change where a reasonable reviewer could ask \"...but does anything actually call this?\"\n\n**Does NOT fire on:**\n- Trivial edits (rename, typo fix, comment, formatting)\n- Pure refactors with unchanged behavior and existing E2E coverage\n- Config value or threshold tuning\n- Internal helper functions with no new external entry point, already exercised by existing callers' tests\n- Code explicitly marked as an in-progress prototype not yet meant to be wired (state this explicitly if invoked)\n\nWhen in doubt, treat it as firing — the cost of a skipped gate (dead code shipped as\n\"done\") is higher than the cost of a five-minute reachability check.\n\n## Phase 1 — Reachability proof (cheap, do this first)\n\nBefore writing or running any test, trace the call graph:\n\n1. Grep for the new symbol name \u002F route path \u002F component export \u002F CLI subcommand.\n2. Find at least one call site that is:\n   - **Outside the file where the symbol is defined**, AND\n   - **Outside test files**, AND\n   - Traceable to a real trigger: a routing table, a CLI argument parser registration, a\n     UI render tree, a plugin\u002Fextension-point registry, a cron\u002Fschedule config, a\n     message-bus subscription, an `__init__.py` re-export that something imports.\n3. If you find zero such call sites: **STOP.** This is not a warning to note and move\n   past — it is a blocking finding. Do not proceed to Phase 2 with orphaned code.\n   Dispatch `root-cause-by-layer`: why is this unreachable? Is the registration\n   commented out, gated behind a flag nobody sets, or genuinely never wired in? Fix the\n   wiring — do not lower the bar by writing a test for code nothing calls.\n\n## Phase 2 — Generate or extend exactly one E2E test\n\nOnly after Phase 1 passes. The test must exercise the new code through its **real,\nuser-facing entry point** — the same interface a real caller would use:\n\n| Entry point type | The test must go through |\n|---|---|\n| HTTP endpoint\u002Froute | A real HTTP request against a running (or test-client-driven) server — not a direct call to the handler function |\n| CLI command | A real subprocess invocation of the installed command — not a direct call to the command's Python function |\n| UI component | A real browser interaction (Playwright or equivalent) — not a component-level render-and-assert with mocked props |\n| Plugin\u002Fhook\u002Fextension point | Invocation through the actual registry\u002Fdispatch mechanism — not a direct call to the plugin class |\n| Bridge\u002Fadapter handler | A real message pushed through the adapter's ingestion path — not a direct call to the handler |\n| MCP tool | A real tool call through the MCP protocol — not a direct Python import of the tool function |\n\n**Hard anti-gaming rule:** a test that imports the new symbol directly and calls it,\nskipping the transport\u002Finterface boundary, is a unit test wearing an E2E label. It does\nNOT satisfy this gate, no matter how thorough its assertions are. If an E2E test already\ncovers this entry point end-to-end, **extend it** rather than writing a duplicate.\n\nName the test so a regression is traceable to the feature (e.g.\n`test_\u003Cfeature>_e2e.py`), and register it in the project's test suite\n(`operator\u002Fbridges\u002Frun-all-tests.sh` or the relevant sub-suite) so it runs on every push.\n\n## Phase 3 — Execute and capture evidence\n\nRun the test. Do not declare \"done\" on the strength of having written it.\n\n- Capture the real exit code and relevant stdout\u002Foutput.\n- Include that evidence in the commit message, PR description, or response — a bare \"I\n  added an E2E test\" claim with no execution transcript does not close the loop\n  (`verification-before-completion`).\n- A failing or skipped E2E test blocks the gate exactly like a failing reachability\n  check. Fix the wiring or the test; do not weaken the assertion to make it pass.\n\n## When Phase 2 is genuinely infeasible\n\nSome entry points cannot be driven end-to-end at commit time (hardware dependency,\nexternal system unavailable in CI, licensed third-party service). In that case:\n\n- Name the reason explicitly — e.g. *\"No E2E test — requires a live TPM; covered by a\n  contract test against a software TPM simulator in `test_hw_binding_contract.py`.\"*\n- Never skip silently. A named exception is as valid as a passing test; an implicit skip\n  is not.\n- Phase 1 (reachability proof) still applies unconditionally — infeasibility of the\n  functional test never excuses skipping the reachability check.\n\n## Must NOT do\n\n- Declare a code-generation task \"done\" without running this gate\n- Treat \"the unit tests pass\" as equivalent to \"this is reachable and works end-to-end\"\n- Write an E2E test that imports and calls the target directly, bypassing its real\n  transport\u002Finterface boundary, and label it as satisfying this gate\n- Mock the exact component under test inside its own \"E2E\" test\n- Skip the reachability check because \"the code obviously gets called somewhere\"\n- Leave an infeasibility skip implicit — name the reason\n- Add the E2E test in a follow-up commit instead of alongside the implementation\n\n## Relationship to other LDD skills\n\n- **`adr_gate`** — asks whether the *decision* needs a record; this gate asks whether the\n  *code* is reachable and proven. Run both at task close; they are independent and often\n  both fire on the same task.\n- **`root-cause-by-layer`** — dispatched from Phase 1 when reachability fails; do not\n  patch around an orphaned call site, find why it's orphaned.\n- **`e2e-driven-iteration`** — governs the inner fix-loop rhythm while iterating on a\n  known-failing test; this gate is the one-time close-of-task check that a *newly\n  introduced* entry point has E2E coverage at all.\n- **`docs-as-definition-of-done`** — run immediately after this gate; document the new\n  entry point once you've proven it exists and works.\n","# E2E Wiring Proof — reachability + functional proof discipline\n\nApply this gate once, at the END of any code-generation task that introduces a new entry\npoint, immediately before `docs-as-definition-of-done` and before declaring \"done.\" It is\nthe sibling gate to `adr_gate`: `adr_gate` asks \"does this decision need a record?\"; this\ngate asks \"does this code actually run, and can I prove it?\"\n\n**Why this exists:** a unit test proves a function returns the right value *when called*.\nIt says nothing about whether anything in the running system *calls* it. CorvinOS has\nshipped structural instances of this exact failure — plugin types that register\nsuccessfully but are never invoked by any real code path, and an auth invariant that is\nunit-tested but reachable from zero live call sites. Both were \"tested,\" both were dead.\nThis gate exists to make that class of bug structurally harder to ship.\n\n## The bar\n\nThe default assumption is: **new code is unreachable until proven otherwise.** Do not\nassume wiring succeeded because the code compiles, the unit test passes, or the diff\n\"looks complete.\" Prove it.\n\n## When this gate fires\n\n**Fires on:**\n- A new function, class, or module intended to be called from outside its own file\n- A new HTTP\u002FREST endpoint or route\n- A new CLI command or flag that triggers new behavior\n- A new UI component, page, or interactive element\n- A new plugin, hook, extension point implementation, or event subscriber\n- A new bridge\u002Fadapter message handler\n- Any change where a reasonable reviewer could ask \"...but does anything actually call this?\"\n\n**Does NOT fire on:**\n- Trivial edits (rename, typo fix, comment, formatting)\n- Pure refactors with unchanged behavior and existing E2E coverage\n- Config value or threshold tuning\n- Internal helper functions with no new external entry point, already exercised by existing callers' tests\n- Code explicitly marked as an in-progress prototype not yet meant to be wired (state this explicitly if invoked)\n\nWhen in doubt, treat it as firing — the cost of a skipped gate (dead code shipped as\n\"done\") is higher than the cost of a five-minute reachability check.\n\n## Phase 1 — Reachability proof (cheap, do this first)\n\nBefore writing or running any test, trace the call graph:\n\n1. Grep for the new symbol name \u002F route path \u002F component export \u002F CLI subcommand.\n2. Find at least one call site that is:\n   - **Outside the file where the symbol is defined**, AND\n   - **Outside test files**, AND\n   - Traceable to a real trigger: a routing table, a CLI argument parser registration, a\n     UI render tree, a plugin\u002Fextension-point registry, a cron\u002Fschedule config, a\n     message-bus subscription, an `__init__.py` re-export that something imports.\n3. If you find zero such call sites: **STOP.** This is not a warning to note and move\n   past — it is a blocking finding. Do not proceed to Phase 2 with orphaned code.\n   Dispatch `root-cause-by-layer`: why is this unreachable? Is the registration\n   commented out, gated behind a flag nobody sets, or genuinely never wired in? Fix the\n   wiring — do not lower the bar by writing a test for code nothing calls.\n\n## Phase 2 — Generate or extend exactly one E2E test\n\nOnly after Phase 1 passes. The test must exercise the new code through its **real,\nuser-facing entry point** — the same interface a real caller would use:\n\n| Entry point type | The test must go through |\n|---|---|\n| HTTP endpoint\u002Froute | A real HTTP request against a running (or test-client-driven) server — not a direct call to the handler function |\n| CLI command | A real subprocess invocation of the installed command — not a direct call to the command's Python function |\n| UI component | A real browser interaction (Playwright or equivalent) — not a component-level render-and-assert with mocked props |\n| Plugin\u002Fhook\u002Fextension point | Invocation through the actual registry\u002Fdispatch mechanism — not a direct call to the plugin class |\n| Bridge\u002Fadapter handler | A real message pushed through the adapter's ingestion path — not a direct call to the handler |\n| MCP tool | A real tool call through the MCP protocol — not a direct Python import of the tool function |\n\n**Hard anti-gaming rule:** a test that imports the new symbol directly and calls it,\nskipping the transport\u002Finterface boundary, is a unit test wearing an E2E label. It does\nNOT satisfy this gate, no matter how thorough its assertions are. If an E2E test already\ncovers this entry point end-to-end, **extend it** rather than writing a duplicate.\n\nName the test so a regression is traceable to the feature (e.g.\n`test_\u003Cfeature>_e2e.py`), and register it in the project's test suite\n(`operator\u002Fbridges\u002Frun-all-tests.sh` or the relevant sub-suite) so it runs on every push.\n\n## Phase 3 — Execute and capture evidence\n\nRun the test. Do not declare \"done\" on the strength of having written it.\n\n- Capture the real exit code and relevant stdout\u002Foutput.\n- Include that evidence in the commit message, PR description, or response — a bare \"I\n  added an E2E test\" claim with no execution transcript does not close the loop\n  (`verification-before-completion`).\n- A failing or skipped E2E test blocks the gate exactly like a failing reachability\n  check. Fix the wiring or the test; do not weaken the assertion to make it pass.\n\n## When Phase 2 is genuinely infeasible\n\nSome entry points cannot be driven end-to-end at commit time (hardware dependency,\nexternal system unavailable in CI, licensed third-party service). In that case:\n\n- Name the reason explicitly — e.g. *\"No E2E test — requires a live TPM; covered by a\n  contract test against a software TPM simulator in `test_hw_binding_contract.py`.\"*\n- Never skip silently. A named exception is as valid as a passing test; an implicit skip\n  is not.\n- Phase 1 (reachability proof) still applies unconditionally — infeasibility of the\n  functional test never excuses skipping the reachability check.\n\n## Must NOT do\n\n- Declare a code-generation task \"done\" without running this gate\n- Treat \"the unit tests pass\" as equivalent to \"this is reachable and works end-to-end\"\n- Write an E2E test that imports and calls the target directly, bypassing its real\n  transport\u002Finterface boundary, and label it as satisfying this gate\n- Mock the exact component under test inside its own \"E2E\" test\n- Skip the reachability check because \"the code obviously gets called somewhere\"\n- Leave an infeasibility skip implicit — name the reason\n- Add the E2E test in a follow-up commit instead of alongside the implementation\n\n## Relationship to other LDD skills\n\n- **`adr_gate`** — asks whether the *decision* needs a record; this gate asks whether the\n  *code* is reachable and proven. Run both at task close; they are independent and often\n  both fire on the same task.\n- **`root-cause-by-layer`** — dispatched from Phase 1 when reachability fails; do not\n  patch around an orphaned call site, find why it's orphaned.\n- **`e2e-driven-iteration`** — governs the inner fix-loop rhythm while iterating on a\n  known-failing test; this gate is the one-time close-of-task check that a *newly\n  introduced* entry point has E2E coverage at all.\n- **`docs-as-definition-of-done`** — run immediately after this gate; document the new\n  entry point once you've proven it exists and works.\n",{"name":5,"description":7},"main","3f28cfd9b82326ff325e645ff041589c3220d813","corvin_operator\u002Fbundle\u002Fskills\u002Fldd\u002Fe2e-wiring-proof",4,"https:\u002F\u002Fgithub.com\u002FCorvinLabs\u002FCorvinOS","https:\u002F\u002Fcorvin-labs.com, https:\u002F\u002Fwww.youtube.com\u002F@Corvin-Labs","https:\u002F\u002Fgithub.com\u002FCorvinLabs","2026-11-14 23:30:13",{"source":8,"skillName":5,"commands":32,"prompt":42,"zipAvailable":43},[33,36,39],{"tool":34,"command":35},"npx","npx skills add CorvinLabs\u002FCorvinOS --skill e2e-wiring-proof",{"tool":37,"command":38},"bunx","bunx skills add CorvinLabs\u002FCorvinOS --skill e2e-wiring-proof",{"tool":40,"command":41},"pnpm","pnpm dlx skills add CorvinLabs\u002FCorvinOS --skill e2e-wiring-proof","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FCorvinLabs\u002FCorvinOS\u002Fblob\u002Fmain\u002Fcorvin_operator\u002Fbundle\u002Fskills\u002Fldd\u002Fe2e-wiring-proof\u002FSKILL.md",true,[],[46,53,59,65,72,78],{"skillNo":47,"name":48,"nameZh":6,"description":49,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":50,"categories":51,"keywords":52,"publishedAt":18},"01M77VGAEV6EQA3C62F78EDHQ3","voice","Voice mode for Claude Code — automatically reads assistant replies aloud via TTS, with German\u002FEnglish auto-detection and optional summarization for long responses. Trigger when the user mentions voice, vorlesen, sprachausgabe, TTS, \"speak\", \"say it out loud\", or asks about \u002Fvoice-* commands.","https:\u002F\u002Fgithub.com\u002FCorvinLabs\u002FCorvinOS\u002Fblob\u002Fmain\u002Fcorvin_operator\u002Fvoice\u002Fskills\u002Fvoice\u002FSKILL.md",[],[],{"skillNo":54,"name":55,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":56,"categories":57,"keywords":58,"publishedAt":18},"01M77VG6N69YBC0CR0TSMGXHTV","paper-generator-orchestrator","https:\u002F\u002Fgithub.com\u002FCorvinLabs\u002FCorvinOS\u002Fblob\u002Fmain\u002Fcorvin_operator\u002Fskills\u002Fpaper-generator-orchestrator\u002FSKILL.md",[],[],{"skillNo":60,"name":61,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":62,"categories":63,"keywords":64,"publishedAt":18},"01M77VG3DTRSZ1C4N57KNFARD5","academic-paper-generation","https:\u002F\u002Fgithub.com\u002FCorvinLabs\u002FCorvinOS\u002Fblob\u002Fmain\u002Fcorvin_operator\u002Fskills\u002Facademic-paper-generation\u002FSKILL.md",[],[],{"skillNo":66,"name":67,"nameZh":6,"description":68,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":69,"categories":70,"keywords":71,"publishedAt":18},"01M77VFXA58C38HG5K5J4Q67MF","forge","Forge schema-bound, sandboxed tools at runtime. Paired with the cowork `forge` persona for chat-driven use in the voice-skill bridge. Use when you would otherwise write the same Bash snippet ≥3× with different parameters, when you need precise numerical results over a dataset, or when the user wants reproducible\u002Fdeterministic output written to a file.","https:\u002F\u002Fgithub.com\u002FCorvinLabs\u002FCorvinOS\u002Fblob\u002Fmain\u002Fcorvin_operator\u002Fforge\u002FSKILL.md",[],[],{"skillNo":73,"name":74,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":77,"publishedAt":18},"01M77VFTJ8KS80R6PVPTBH4CWV","cowork","https:\u002F\u002Fgithub.com\u002FCorvinLabs\u002FCorvinOS\u002Fblob\u002Fmain\u002Fcorvin_operator\u002Fcowork\u002Fskills\u002Fcowork\u002FSKILL.md",[],[],{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":84,"publishedAt":18},"01M77VFQTC6WR708YMVHAKQWWN","quality-layer-control","Toggle quality disciplines (ADR Gate, docs-as-definition-of-done, etc.) on or off globally","https:\u002F\u002Fgithub.com\u002FCorvinLabs\u002FCorvinOS\u002Fblob\u002Fmain\u002Fcorvin_operator\u002Fbundle\u002Fskills\u002Fquality-layer-control\u002FSKILL.md",[],[]]