Exhaustive match
Use when every known variant must be handled. Prefer compiler, type-checker, linter, or test-enforced exhaustive matches.From its SKILL.md
npx -y skills add selamy-labs/agent-skills --skill exhaustive-matchAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
1.6 KB, 315 tokens by cl100k_base, as published. Nobody here has run it
Exhaustive Match
Use this skill when a status, enum, union, event type, command, or error code has a finite set of known variants and missing one would create incorrect behavior.
Workflow
- Model the variants as an enum, tagged union, sealed class, literal union, or another construct your toolchain can reason about.
- Replace loose
ifchains with a match, switch, dispatch table, or strategy selection that enumerates every known case. - Make the default branch unreachable, absent, or fail closed. Do not use a broad default that hides newly added variants.
- Enable the strongest available enforcement: compiler exhaustiveness, type-checker assertions, lint rules, or a test that compares handled cases to the declared variant set.
- Add or update one test per behavior group, plus a test that proves unknown external values are rejected at the boundary.
Review Checks
- Adding a new variant creates a visible failure until behavior is implemented.
- Unknown external input is parsed separately from internal exhaustive handling.
- The fallback path is explicit and safe, not a catch-all for forgotten cases.
- The match body stays small; complex behavior is delegated to named handlers.
Anti-Patterns
- Keeping a
defaultbranch that returns a plausible value for all unknowns. - Exhaustively matching raw strings from outside the system instead of parsing them into a known type first.
- Adding a variant without updating tests, documentation, and caller behavior.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.