self-test
Pattern for testing your own code during implementation. Ensures quality before declaring complete.
When & Why to Use This Skill
The Self-Test Claude skill establishes a robust, iterative testing pattern for software development. By integrating automated test execution, linting, and typechecking directly into the implementation phase, it empowers AI agents and developers to verify code quality in real-time, reduce technical debt, and ensure all deliverables meet rigorous stability standards before they are declared complete.
Use Cases
- Continuous Verification: Automatically running unit tests (such as Jest or Pytest) immediately after code modifications to catch logic errors early in the development cycle.
- Static Analysis Integration: Executing linters and typecheckers (like ESLint, Ruff, or Mypy) to maintain code style consistency and prevent type-related runtime crashes.
- Pre-Completion Validation: Utilizing a standardized checklist to ensure that new features are fully tested, linted, and compliant with project requirements before final submission.
- Regression Prevention: Running project-specific test suites during the development loop to ensure that new changes haven't introduced bugs into existing functionality.
| name | self-test |
|---|---|
| description | Pattern for testing your own code during implementation. Ensures quality before declaring complete. |
| allowed-tools | Bash, Read |
Self-Test Skill
Pattern for iterative testing during implementation.
When to Load This Skill
- You are implementing code
- You need to verify your work before completing
- You want to catch issues early
Self-Test Loop
WHILE implementation not complete:
Write/modify code
↓
Write tests for new code
↓
Run tests
↓
FAIL? → Fix code, retry
↓
Run lint
↓
FAIL? → Fix issues, retry
↓
Run typecheck
↓
FAIL? → Fix types, retry
↓
Continue to next piece
Running Tests
Use project-specific test commands: @.claude/skills/project/run-tests/SKILL.md
Common patterns:
# Run specific test file
npm test -- --testPathPattern={file}
pytest {file} -v
# Run affected tests
npm test -- --changedSince=HEAD
Running Lint/Typecheck
Use project-specific commands: @.claude/skills/project/lint/SKILL.md
Common patterns:
# TypeScript
npx tsc --noEmit
npx eslint {files} --fix
# Python
mypy {files}
ruff check {files} --fix
Before Declaring Pre-Complete
Checklist:
- New code has tests
- All tests pass
- Lint passes
- Typecheck passes
- No console errors/warnings
If ANY fails, status is NOT pre_complete.
Principles
- Test as you go - Don't batch at the end
- Fix immediately - Don't accumulate failures
- Be honest - Report actual status