skills/team/codebase-design/SKILL.md
Shared vocabulary for designing deep modules — a lot of behaviour behind a small interface, placed at a clean seam, testable through that interface. Use when designing or improving a module's interface, finding deepening opportunities, deciding where a seam goes, making code more testable, or when another skill needs the deep-module vocabulary. Pairs with improve-codebase-architecture (which applies it) and domain-model (which supplies the domain nouns). Ported from https://github.com/mattpocock/skills (Matt Pocock).
npx skillsauth add michaelalber/ai-toolkit codebase-designInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Design deep modules: a lot of behaviour behind a small interface, placed at a clean seam, testable through that interface. Use this language and these principles wherever code is being designed or restructured. The aim is leverage for callers, locality for maintainers, and testability for everyone.
Use these terms exactly — don't substitute "component," "service," "API," or "boundary." Consistent language is the whole point.
Deep = small interface + lots of implementation. Shallow = large interface + thin implementation (avoid).
DEEP [ small interface ] SHALLOW [ large interface ]
[ ] [ thin impl ]
[ deep impl ] ← interface ≈ implementation (avoid)
[ (hidden) ]
When designing an interface, ask: Can I reduce the number of methods? Can I simplify the parameters? Can I hide more complexity inside?
Good interfaces make testing natural: accept dependencies, don't create them (pass
paymentGateway in); return results, don't produce side effects (calculateDiscount(cart): Discount over a mutating applyDiscount); keep the surface small (fewer methods and params
= fewer, simpler tests). Worked examples in references/DESIGN-NOTES.md.
references/DESIGN-NOTES.md.references/DEEPENING.md (dependency
categories, seam discipline, replace-don't-layer testing).references/DESIGN-IT-TWICE.md (parallel sub-agents
design the interface several radically different ways, then compare on depth and locality).| Skill | Relationship |
|-------|-------------|
| improve-codebase-architecture | Applies this vocabulary — surfaces shallow modules, information leakage, and deepening candidates. This skill supplies the words it names them with. |
| domain-model | Supplies domain nouns (ubiquitous language); this skill supplies module-shape nouns (depth, seam, adapter). They compose — domain names what, this names how it's shaped. |
| refactor-challenger | Prioritises which deepenings to actually perform; this skill frames the target shape. |
development
Interviews the user relentlessly about a plan, decision, or idea — one question at a time, each with a recommended answer. Shared engine behind "grill-me" and "grill-with-docs". Use on any "grill" trigger phrase or to stress-test thinking. Do NOT use to build the plan; it ends at shared understanding, not implementation.
testing
Runs a relentless interview to sharpen a plan or design, capturing the decisions as ADRs and a glossary along the way. Use when the user wants to be grilled AND wants the session to leave durable domain documentation behind. Do NOT use for a throwaway stress-test with no artifacts; use grill-me instead.
tools
OWASP-based security review of Vue/TypeScript front-ends. Detects framework (Vite/Vue CLI/Nuxt), entry points, and data flows; scans the OWASP Top 10 (2025) mapped to Vue client-side risks (raw-HTML XSS via v-html, URL/protocol injection, bundled secrets, insecure token storage, dependency CVEs, missing CSP, open redirects, router guard bypass); emits an exec summary plus graded findings. Use to audit Vue for vulnerabilities. Not for architecture grading (vue-architecture-checklist).
tools
Analyzes legacy Vue codebases and produces actionable modernization plans. Primary migration paths include Options API to Composition API, Vue 2 to Vue 3, Vue CLI to Vite, JavaScript to TypeScript, Vue Test Utils/Karma/Mocha to Vitest + Vue Testing Library, legacy Vuex to Pinia, and removed-in-Vue-3 pattern cleanup (filters, event bus, `$listeners`). Does NOT perform the migration — assesses, quantifies risk, and plans.