plugins/smedjen/skills/verification-before-completion/SKILL.md
Mandatory verification protocol before claiming any task is done. Run tests, check output, verify edge cases, and confirm acceptance criteria are met.
npx skillsauth add hjemmesidekongen/ai verification-before-completionInstall 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.
| Stack | Tests | Build | Types | Lint |
|-------|-------|-------|-------|------|
| React (Vite) | npx vitest run | npx vite build | npx tsc --noEmit | npx eslint . |
| Next.js | npx jest or npx vitest run | npx next build | npx tsc --noEmit | npx next lint |
| Node/Express | npx jest or npx vitest run | npx tsc (if TS) | npx tsc --noEmit | npx eslint . |
| Expo | npx jest | npx expo export | npx tsc --noEmit | npx eslint . |
| Prisma | npx jest (with test DB) | npx prisma generate | npx tsc --noEmit | npx prisma validate |
| Monorepo (Turbo) | npx turbo test | npx turbo build | npx turbo typecheck | npx turbo lint |
Always run npx tsc --noEmit separately from the build — some build tools (Vite, esbuild) strip types without checking them.
| Check type | What it catches | Automated? | |------------|----------------|------------| | Type check | Interface mismatches, null safety, wrong argument types | Yes | | Unit tests | Logic regressions, broken contracts | Yes | | Build | Import errors, missing exports, dead code tree-shaking issues | Yes | | Lint | Style violations, unused vars, accessibility issues (eslint-plugin-jsx-a11y) | Yes | | Integration test | Cross-module wiring, API contract breaks | Yes | | Visual review | Layout regressions, responsive breakpoints, animation glitches | Manual | | Runtime behavior | Memory leaks, race conditions, hydration errors | Manual | | Env-specific | Missing env vars, wrong API URLs, CORS in production | Manual |
undefined slips through a type assertion or as cast.rm -rf .next or rm -rf dist before building.Automated is sufficient when: pure logic, data transformations, API endpoints with test coverage, config changes with type checking.
Manual is required when: visual UI changes (layout, animations, responsive), user flows spanning multiple pages, third-party integration behavior (OAuth, payment, email), performance characteristics (load time, bundle size), accessibility (screen reader testing, keyboard navigation). See references/process.md for detailed checklists, command references, and anti-patterns.
development
Creates a brand from scratch through market research and interactive sparring. Runs competitive research via Perplexity, then guides the user through positioning, audience, voice, values, and content pillars. Produces the full brand guideline set at .ai/brand/{name}/. Use when building a new brand, defining brand strategy for a product, or when /våbenskjold:create is invoked.
testing
Loads brand guidelines from .ai/brand/{name}/ and makes them available to the current context. Progressive disclosure: L1 confirms brand exists, L2 loads summary, L3 loads specific files on demand. Use when a downstream skill or user needs brand context, or when /våbenskjold:apply is invoked.
documentation
Guided reinvention of an existing brand guideline. Loads current brand from .ai/brand/{name}/, identifies what to keep vs change, and walks the user through targeted evolution. Preserves brand equity while updating positioning, voice, or values. Use when refreshing a brand or when /våbenskjold:evolve is invoked.
development
Codifies an existing brand from materials, samples, and references. Analyzes provided content to extract voice patterns, values, and positioning. Produces the same guideline format as brand-strategy. Use when a brand already exists but isn't documented, or when /våbenskjold:audit is invoked.