← ClaudeAtlas

confab-contract-driftlisted

Use when the user asks to audit type signatures, docstrings, or API/OpenAPI/GraphQL schemas against actual call-site or handler usage, wants to check for contract drift after a refactor, or wants confab's contract-drift audit run. Scope is structural, machine-checkable declarations only. Not for prose documentation drift — claims in CLAUDE.md, README.md, ARCHITECTURE.md, DECISIONS.md or ADR files no longer matching the code: use self-assess-docs-drift for that. Verification runs by default and only skips if the user explicitly says skip_verification.
Anselmoo/werkstoff · ★ 1 · AI & Automation · score 67
Install: claude install-skill Anselmoo/werkstoff
Find drift between machine-checkable contracts (type hints, function signatures, docstring parameter/return descriptions, API/OpenAPI/GraphQL schemas) and how code actually uses them. Never extract or verify prose documentation — only structural, machine-checkable declarations. ## Steps 1. Determine `repo_root`, the contract source files (typed source, schema files) to scan, and any house rules the user mentioned. Determine `skip_verification`: **default `false`**. Only treat it as `true` if the user explicitly said so in this request — silence, "just run it quickly," or similar is NOT an explicit `true`. 2. Optionally build/reuse a symbol index (see "Shared symbol index" in `confab-assertion-audit`'s SKILL.md — the same single-flight rule applies here). 3. Dispatch the `contract-auditor` agent in **Find mode**: give it the contract source files and symbol index (if built) — if step 2 was skipped, tell the agent no symbol index exists and it should read the contract source files directly instead. Ask for `{"findings": [...]}` where each finding includes `declaredLocation` and `actualUsageLocation` (both `file:line`) in addition to the shared schema fields. Write its output to a scratch JSON file. 4. Unless `skip_verification` is `true`: dispatch the `contract-auditor` agent again in **Verify mode**, independently re-checking each Find-phase finding. Write `{"findings": [{"evidence": "...", "confirmed": true|false}, ...]}` to a se