self-validating-example

Self-Validating API Endpoint Generator

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "self-validating-example" with this command: npx skills add anton-abyzov/specweave/anton-abyzov-specweave-self-validating-example

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;

  1. 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

Project-Specific Learnings

Before starting work, check for project-specific learnings:

Check if skill memory exists for this skill

cat .specweave/skill-memories/self-validating-example.md 2>/dev/null || echo "No project learnings yet"

Project learnings are automatically captured by the reflection system when corrections or patterns are identified during development. These learnings help you understand project-specific conventions and past decisions.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

technical-writing

No summary provided by upstream source.

Repository SourceNeeds Review
General

spec-driven-brainstorming

No summary provided by upstream source.

Repository SourceNeeds Review
General

kafka-architecture

No summary provided by upstream source.

Repository SourceNeeds Review