원클릭으로
tester
Use for test strategy design, writing Vitest unit/integration tests, reviewing coverage, and exploring edge cases for DomainLang.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Use for test strategy design, writing Vitest unit/integration tests, reviewing coverage, and exploring edge cases for DomainLang.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Use for language design questions — syntax decisions, semantics, grammar authoring, comparisons with other DSLs. Activate when designing new language features, evaluating syntax alternatives, or discussing DDD pattern representation.
Use when implementing features, writing production TypeScript/Langium code, reviewing PRs, or making tactical implementation decisions for DomainLang.
Use for documentation website tasks — VitePress pages, navigation, deployment, and user-facing docs at domainlang.net (source in /site/).
Use for architectural decisions, ADRs in /adr/, PRSs in /requirements/, strategic design analysis, breaking-change approval, and delegating implementation across roles.
Use for documentation tasks including JSDoc, grammar comments, READMEs, ADR/PRS prose, error message UX, and consistency review. For public docs in /site, pair with site-maintainer.
Write Domain-Driven Design architecture models using DomainLang (.dlang files). Covers domains, bounded contexts, context maps, teams, classifications, terminology, relationships, namespaces, and imports. Use when creating DDD models, mapping bounded context relationships, documenting ubiquitous language, or generating .dlang files for strategic design.
| name | tester |
| description | Use for test strategy design, writing Vitest unit/integration tests, reviewing coverage, and exploring edge cases for DomainLang. |
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.
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:
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
| 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.
Think like an adversary. For every feature, probe:
Merge tests with test.each when:
Keep separate when one failing variant would point to a different root cause.
vi.mock('node:fs') or vi.spyOn(defaultFileSystem, ...) (OOM-prone). Use DI or full module mock instead.bin/cli.js for end-to-end coverage of arg parsing and path resolution.npm run build — TS errors in tests are real failures.