← Back to list
1. API Endpoint (
2. Test File (

swvalidated-api
by anton-abyzov
Autonomous AI Development Framework. Build production software with specs, tests, and docs that write themselves. Works with Claude, Cursor, Copilot.
⭐ 23🍴 3📅 Jan 24, 2026
SKILL.md
name: sw:validated-api description: Generate a validated REST API endpoint with automatic test execution activation:
- "create validated api"
- "generate api with tests"
- "self-validating endpoint"
Skill-level hooks for self-validation
hooks: pre_tool_use: - validate: file_exists path: package.json error: "Must be in a Node.js project" - validate: dependency package: express error: "Express must be installed: npm install express" post_tool_use: - validate: tests_pass command: npm test -- --testPathPattern="$OUTPUT" max_retries: 3 - validate: lint command: npm run lint -- $OUTPUT auto_fix: true - validate: types command: npx tsc --noEmit $OUTPUT
Self-Validating API Endpoint Generator
You are generating a REST API endpoint with automatic validation.
How Self-Validation Works
┌──────────────────────────────────────────────────────────────┐
│ YOUR CODE WILL BE AUTOMATICALLY VALIDATED │
├──────────────────────────────────────────────────────────────┤
│ │
│ 1. PRE-CHECK: Verify project has Express installed │
│ │
│ 2. GENERATE: You create the endpoint + tests │
│ │
│ 3. VALIDATE (automatic): │
│ ├─ npm test → Must pass │
│ ├─ npm run lint → Auto-fixed if needed │
│ └─ tsc --noEmit → Must type-check │
│ │
│ 4. If validation fails: │
│ └─ You get feedback and retry (max 3 times) │
│ │
│ 5. If still failing after 3 attempts: │
│ └─ Pause for human review │
│ │
└──────────────────────────────────────────────────────────────┘
Required Outputs
1. API Endpoint (src/routes/[name].ts)
import { Router, Request, Response } from 'express';
const router = Router();
// GET /api/[name]
router.get('/', async (req: Request, res: Response) => {
// Implementation
});
// POST /api/[name]
router.post('/', async (req: Request, res: Response) => {
// Implementation with validation
});
export default router;
2. Test File (src/routes/[name].test.ts) - REQUIRED!
import { describe, it, expect, beforeAll, afterAll } from 'vitest';
import request from 'supertest';
import app from '../app';
describe('[Name] API', () => {
describe('GET /api/[name]', () => {
it('should return 200 with data', async () => {
const res = await request(app).get('/api/[name]');
expect(res.status).toBe(200);
expect(res.body).toBeDefined();
});
});
describe('POST /api/[name]', () => {
it('should create resource with valid data', async () => {
const res = await request(app)
.post('/api/[name]')
.send({ /* valid data */ });
expect(res.status).toBe(201);
});
it('should return 400 for invalid data', async () => {
const res = await request(app)
.post('/api/[name]')
.send({ /* invalid data */ });
expect(res.status).toBe(400);
});
});
});
Validation Criteria
| Check | Command | Required |
|---|---|---|
| Tests pass | npm test -- --testPathPattern="$OUTPUT" | ✅ Yes |
| Lint clean | npm run lint -- $OUTPUT | ✅ Yes (auto-fix) |
| Types valid | npx tsc --noEmit $OUTPUT | ✅ Yes |
Self-Healing Behavior
If tests fail, you will receive:
- The test output showing which tests failed
- A request to fix the failing tests
- Another attempt (up to 3 total)
Example failure feedback:
🔴 VALIDATION FAILED (attempt 1/3)
Test Results:
✗ GET /api/users should return 200 with data
Expected: 200
Received: 404
Please fix the route handler and regenerate.
Important Notes
- Always generate tests - The skill will NOT complete without passing tests
- Use proper types - TypeScript errors block completion
- Follow lint rules - Auto-fixed but avoid common issues
- Handle edge cases - Test both success and error paths
Score
Total Score
75/100
Based on repository quality metrics
✓SKILL.md
SKILL.mdファイルが含まれている
+20
✓LICENSE
ライセンスが設定されている
+10
✓説明文
100文字以上の説明がある
+10
○人気
GitHub Stars 100以上
0/15
✓最近の活動
1ヶ月以内に更新
+10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
✓タグ
1つ以上のタグが設定されている
+5
Reviews
💬
Reviews coming soon


