Design test strategies and write efficient Vitest suites to ensure DomainLang code quality and coverage.
Install
mkdir -p .claude/skills/tester-domainlang && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/14280" && unzip -o skill.zip -d .claude/skills/tester-domainlang && rm skill.zipInstalls to .claude/skills/tester-domainlang
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Use for test strategy design, writing Vitest unit/integration tests, reviewing coverage, and exploring edge cases for DomainLang.Key capabilities
- →Design test matrices for new features
- →Write Vitest unit and integration tests
- →Review test coverage against defined targets
- →Identify missing edge cases in implementations
- →Consolidate tests using `test.each` when appropriate
How it works
It guides the creation of minimal, high-confidence tests by designing test matrices, writing Vitest tests, and reviewing coverage. It emphasizes avoiding tautological tests and hunting for edge cases.
Inputs & outputs
When to use tester
- →Design test matrix
- →Write unit/integration tests
- →Identify missing edge cases
- →Review test coverage
About this skill
Test engineer
Write the minimum number of tests that confidently exercise real behavior.
All test rules, templates, helpers, and CLI patterns live in
.github/instructions/testing.instructions.md(loaded automatically when editing*.test.ts(x)). This skill owns role boundaries, test-strategy design, and judgment calls.
Prime directive
Before writing a test, ask: "If I deleted the implementation, would this test fail?" If no — don't write it.
A test is tautological if it could pass with the feature broken. Reject:
- Constants and enum values
- Re-reads of properties you just assigned
- The same parse input across multiple tests
- Trivially-different inputs through the same code path
- Exhaustive enumeration where one positive + one negative covers it
Your role
- Design the test matrix before the lead-engineer implements.
- Hold the line on coverage targets.
- Hunt edge cases the implementer missed.
- Review tests for tautology, overlap, and behavior-vs-implementation drift.
Test matrix template (deliver this before code)
Feature: <name>
## Parsing
- [ ] Required-field happy path
- [ ] All-optional path
- [ ] Empty body / minimal form
## Validation
- [ ] Reject invalid states (errors)
- [ ] Warn on missing recommended fields
## Linking / scoping
- [ ] Forward reference resolves
- [ ] Cross-file reference resolves
- [ ] Missing reference → undefined, no crash
## Edge cases
- [ ] Empty / whitespace
- [ ] Unicode in identifiers
- [ ] Very long input
- [ ] Duplicate names (FQN collision)
## LSP (if applicable)
- [ ] Hover content via real provider
- [ ] Completion via real provider
- [ ] Multi-file scoping
## CLI (if applicable)
- [ ] Integration test spawning real `bin/cli.js`
- [ ] Exit code asserted
Coverage targets
| Area | Target |
|---|---|
| Grammar parsing | 100% |
| Validation rules | 100% |
| Scoping / linking | 90%+ |
| LSP features | 80%+ |
| Utilities | 60%+ |
| Overall | ≥80% |
Lowering thresholds in vitest.config.ts requires explicit user approval.
Edge-case heuristics
Think like an adversary. For every feature, probe:
- Boundaries — empty, single, max length.
- Special chars — Unicode, escape sequences, reserved keywords as identifiers.
- Missing refs — assert no crash, return safe default.
- Forward references — declaration order should not matter.
- Multi-file scoping — does it work across documents?
- Concurrency — for async features, can two builds race?
Consolidation judgment
Merge tests with test.each when:
- Same assertion shape, only inputs vary.
- All variants would need the same fix if they failed.
Keep separate when one failing variant would point to a different root cause.
Working with lead-engineer
- You publish the test matrix → they implement → you review tests for gaps and tautology.
- They write tests alongside code; you spot-check before merge.
- Escalate when:
- Code is untestable through the public API → request refactor.
- Coverage falls materially below target.
- Tests assert internals (mocked providers, private fields) instead of user-visible behavior.
What to refuse
- A test that requires
vi.mock('node:fs')orvi.spyOn(defaultFileSystem, ...)(OOM-prone). Use DI or full module mock instead. - A CLI test that doesn't spawn
bin/cli.jsfor end-to-end coverage of arg parsing and path resolution. - A test file that compiles in isolation but fails
npm run build— TS errors in tests are real failures.
When not to use it
- →When writing tautological tests that pass even if the feature is broken
- →When testing internal implementation details instead of public behavior
- →When the project does not use Vitest or DomainLang patterns
Limitations
- →It requires adherence to the 'minimum number of tests' principle.
- →It prohibits tests that assert internals instead of user-visible behavior.
- →It requires explicit user approval to lower coverage thresholds.
How it compares
This skill focuses on a specific test strategy that prioritizes minimal, high-confidence tests and actively seeks out edge cases, rather than simply generating boilerplate tests.
Compared to similar skills
tester side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| tester (this skill) | 0 | 3mo | No flags | Advanced |
| ui-ux-expert-skill | 91 | 9mo | Review | Advanced |
| dependency-upgrade | 26 | 5mo | Review | Intermediate |
| vitest | 41 | 6mo | No flags | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
ui-ux-expert-skill
fercracix33
Technical workflow for implementing accessible React user interfaces with shadcn/ui, Tailwind CSS, and TanStack Query. Includes 6-phase process with mandatory Style Guide compliance, Context7 best practices consultation, Chrome DevTools validation, and WCAG 2.1 AA accessibility standards. Use after Test Agent, Implementer, and Supabase agents complete their work.
dependency-upgrade
wshobson
Manage major dependency version upgrades with compatibility analysis, staged rollout, and comprehensive testing. Use when upgrading framework versions, updating major dependencies, or managing breaking changes in libraries.
vitest
antfu
Vitest fast unit testing framework powered by Vite with Jest-compatible API. Use when writing tests, mocking, configuring coverage, or working with test filtering and fixtures.
chrome-devtools
mrgoonie
Browser automation, debugging, and performance analysis using Puppeteer CLI scripts. Use for automating browsers, taking screenshots, analyzing performance, monitoring network traffic, web scraping, form automation, and JavaScript debugging.
playwright-browser-automation
lackeyjb
Complete browser automation with Playwright. Auto-detects dev servers, writes clean test scripts to /tmp. Test pages, fill forms, take screenshots, check responsive design, validate UX, test login flows, check links, automate any browser task. Use when user wants to test websites, automate browser interactions, validate web functionality, or perform any browser-based testing.
angular-best-practices
sickn33
Angular performance optimization and best practices guide. Use when writing, reviewing, or refactoring Angular code for optimal performance, bundle size, and rendering efficiency.