skills/backend-test-writer/SKILL.md
Use when generating tests for backend code (Express routes, MongoDB models, Node services) - analyzes file type, detects test framework from package.json, generates comprehensive tests with setup/teardown and edge case coverage
npx skillsauth add 9tykeshav/mern-ninja-cc backend-test-writerInstall 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.
Generate comprehensive backend tests for MERN stack code. Analyzes file type, detects project conventions, produces tests that actually run.
Philosophy: Smart defaults, zero config. Detect everything from project.
<workflow>Copy and track progress:
Before generating tests, verify setup:
package.json for test framework (Jest/Vitest/Mocha)mongodb-memory-server (needed for integration tests)__tests__/ vs tests/)Stop if: No test framework and user declines setup.
| Pattern | Type | Test Approach |
|---------|------|---------------|
| routes/, *.routes.js | Route | Integration (Supertest + real DB) |
| controllers/ | Controller | Integration |
| services/ | Service | Unit (mocked deps) |
| models/, *.model.js | Model | Unit (validation tests) |
| middleware/ | Middleware | Unit (mock req/res/next) |
| utils/, helpers/ | Utility | Unit (pure functions) |
Override: User can specify --unit or --integration.
Process files sequentially with progress. User can stop anytime.
Each test includes:
Reference: See test-patterns.md for complete code examples.
Generated: X test files
Coverage: Y test cases total
Next: Run `npm test` to verify
</workflow>
<quick-reference>
| File Type | Imports | DB Setup |
|-----------|---------|----------|
| Route | supertest, mongodb-memory-server | Real (in-memory) |
| Service | jest | Mocked |
| Model | mongoose | Mocked |
| Middleware | jest | None |
describe('[Resource] [Method]', () => {
describe('success cases', () => {
it('should [expected behavior]', async () => {});
});
describe('validation errors', () => {
it('should return 400 for [invalid case]', async () => {});
});
describe('edge cases', () => {
it('should handle [edge case]', async () => {});
});
});
</quick-reference>
<checklists>
package.json"test": "jest")| Mistake | Fix |
|---------|-----|
| Starting server in tests | Import app, let Supertest handle it |
| No DB cleanup | Add afterEach with deleteMany({}) |
| Testing implementation | Test behavior through HTTP interface |
| Missing async/await | Await async operations |
| Mocking in integration tests | Use real DB for integration |
Load when implementing specific patterns:
| When | Reference | |------|-----------| | Writing any test | test-patterns.md | | Setting up test infrastructure | test-setup.md |
</references>development
Use when writing ANY Mongoose query (.find, .findOne, .findById, .aggregate, .populate), adding database operations to services or controllers, wiring data between services, building endpoints that read or write to MongoDB, or reviewing code that chains service calls. TRIGGER especially when about to write a new findById or pass an ID where a document could be passed instead.
development
Use when asked to review MERN stack code - comprehensive code reviewer that checks project health, security, maintainability, performance, testing, and architecture. Combines general code quality analysis with MERN-specific expertise.
development
Maintainer-only workflow for handling GitHub Secret Scanning alerts on OpenClaw. Use when Codex needs to triage, redact, clean up, and resolve secret leakage found in issue comments, issue bodies, PR comments, or other GitHub content.
development
Maintainer workflow for OpenClaw releases, prereleases, changelog release notes, and publish validation. Use when Codex needs to prepare or verify stable or beta release steps, align version naming, assemble release notes, check release auth requirements, or validate publish-time commands and artifacts.