AI Workflows
assertcheck ships five Claude Code skills — structured workflows that guide your AI assistant through Negative Space Programming tasks from spec to audit.
Each skill enforces a strict protocol: it interviews before producing output, runs a defined set of passes or phases in order, and validates its own output before delivering. They are designed to work together as a complete development workflow.
The five skills
Define what a feature must NEVER accept before a single line of implementation. Produces a precondition/postcondition table and an implementation checklist — every invariant traceable to one assertion.
View skill
assertcheck-featureBuild a new function, class, or service with the guard block first. Maps every input, prior state, and external response to an assertion — contract table before any code.
View skill
assertcheck-auditScan existing code for every unguarded boundary — nil dereferences, silent exits, absorbed errors. 6-category pass, risk-ranked report, ready-to-paste assertions.
View skill
assertcheck-refactorModify existing code without breaking contracts. Every change maps to a guard impact. Every removed safety check is replaced by an assertion — never silently deleted.
View skill
assertcheck-selectorInstant lookup: which assert.* call for which invariant? Always picks the most specific assertion. Used internally by all other skills.
View skill
How they fit together
The skills follow the natural lifecycle of a feature:
assertcheck-spec → define what must NEVER happen
↓
assertcheck-feature → build with the guard block first
↓
assertcheck-refactor → modify without breaking contracts
↓
assertcheck-audit → find the gaps that slipped through
↑
assertcheck-selector → lookup at every stepStart with spec before touching a keyboard. Use feature to scaffold. Use refactor when extending. Use audit before any release. Selector is always available as a lookup when you're not sure which assertion to reach for.
How to trigger a skill
Each skill listens for natural-language triggers in your AI assistant:
| You say | Skill invoked |
|---|---|
| "I'm building a new service for…" | assertcheck-feature |
| "Review this code for unguarded inputs" | assertcheck-audit |
| "Write a spec for the payment module" | assertcheck-spec |
| "I'm adding a parameter to this method" | assertcheck-refactor |
| "Which assert function should I use for…" | assertcheck-selector |
Each skill begins with a mandatory interview step before producing any output — and runs a self-check on its own output before delivering. The quality of the contract map depends on understanding the feature's boundaries, not just its implementation.
What skills produce
| Skill | Output |
|---|---|
assertcheck-spec | Feature identity, preconditions table, postconditions table, state machine (if applicable), implementation checklist |
assertcheck-feature | Contract table, guarded implementation (guard block + logic block), rejected-states summary |
assertcheck-audit | Guard coverage score, risk-ranked findings table, proposed assertions, mindset note |
assertcheck-refactor | Impact table, guard diff with [EXISTING] / [NEW] annotations, removed-safety ⚠ flags, caller note |
assertcheck-selector | Most-specific assertion, msg / note phrasing, assert.* vs check() recommendation |
Installation
Install all five skills into your current project:
npx skills add thonymg/assertcheck --skill='*'
bunx skills add thonymg/assertcheck --skill='*'
pnpx skills add thonymg/assertcheck --skill='*'Install globally for use across all projects:
npx skills add thonymg/assertcheck --skill='*' -gInstall a single skill:
npx skills add thonymg/assertcheck --skill='assertcheck-audit'Learn more at vercel-labs/skills.
Built for Claude Code
These skills are designed for the Claude Code CLI. They work in any Claude-powered AI assistant that supports the skills protocol.