Communitygithub.com

curiositech/windags-skills

Gera especificações OpenAPI 3.0/3.1, tipos TypeScript e exemplos curl a partir de código existente de manipuladores de rotas. Suporta Express, Next.js API Routes, Fastify e Hono.

O que é windags-skills?

Este skill automatiza a geração de documentação de API a partir do código-fonte existente. Ele analisa manipuladores de rotas em frameworks populares como Express, Next.js (App Router e Pages Router), Fastify e Hono, extrai definições de rotas, esquemas de requisição/resposta, requisitos de autenticação e limites de taxa. O resultado são três artefatos principais: uma especificação OpenAPI 3.0/3.1 completa (em YAML), tipos TypeScript que refletem exatamente o contrato da API e exemplos curl prontos para uso para cada endpoint. Sua utilidade reside em gerar documentação precisa a partir da implementação real do código, evitando documentação aspiracional ou desatualizada. Ele também identifica endpoints não documentados e sinaliza esquemas inferidos com baixa confiança, garantindo que a documentação gerada seja confiável e acionável.

Funciona com~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/curiositech/windags-skills/tree/HEAD/skills/api-documentation-generator

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Gerador de Documentação de API

Extrai documentação de API a partir do código existente de manipuladores de rotas. Lê seu código-fonte, infere esquemas e produz especificações OpenAPI, tipos TypeScript e exemplos curl executáveis — não a partir da intenção de design, mas da implementação real.

Gatilhos de Ativação

Ativar em: "gerar docs da API", "OpenAPI a partir do código", "documentar endpoints", "referência da API", "geração swagger", "documentação de endpoint", "criar tipos de API", "exemplos curl para API"

NÃO para: Design de API do zero --> api-architect | Criação de OpenAPI sem código-fonte --> openapi-spec-writer | Testes de API --> test-automation-expert

Capacidades Principais

  • Extrair definições de rotas de Express, Next.js App Router, Next.js Pages API Routes, Fastify e Hono handlers
  • Inferir esquemas de requisição/resposta a partir de tipos TypeScript, esquemas Zod ou validação em tempo de execução
  • Gerar especificações OpenAPI 3.0/3.1 com parâmetros de caminho precisos, strings de consulta e corpos de requisição
  • Produzir definições de tipo TypeScript correspondentes ao contrato real da API
  • Criar exemplos curl para cada endpoint com dados de amostra realistas
  • Documentar requisitos de autenticação rastreando cadeias de middleware
  • Identificar configuração de limite de taxa e documentar limites por endpoint
  • Catalogar respostas de erro analisando padrões de throw/return nos handlers
  • Detectar endpoints não documentados (rotas que existem, mas não têm JSDoc ou esquema)

Detecção de Framework

Antes de gerar qualquer coisa, identifique o framework. A estratégia de extração difere significativamente.

Express / Express-like

Sinais: app.get(), router.post(), express.Router()
Fonte da rota: app._router.stack ou arquivos de roteador explícitos
Cadeia de middleware: a ordem de app.use() é importante para detecção de autenticação

Procure por padrões de registro de rota:

  • router.get('/users/:id', authenticate, getUser) -- middleware antes do handler significa autenticação necessária
  • app.use('/api/v1', rateLimiter({ max: 100 }), apiRouter) -- limitador de taxa aplicado a uma subárvore

Next.js App Router

Sinais: arquivos route.ts exportando GET, POST, PUT, DELETE, PATCH
Fonte da rota: Convenção de sistema de arquivos em app/api/
Cadeia de middleware: middleware.ts nos limites de diretório

Parâmetros de caminho vêm de nomes de pasta: app/api/users/[id]/route.ts --> /api/users/{id}

Next.js Pages API Routes

Sinais: pages/api/**/*.ts com export default handler
Fonte da rota: Convenção de sistema de arquivos
Roteamento de método: switch req.method dentro do handler

Fastify

Sinais: fastify.get(), fastify.route(), propriedade schema nas opções de rota
Fonte da rota: Registro de plugin com fastify.register()
Esquema: Rotas Fastify geralmente têm JSON Schema — extraia e converta

Fastify é o framework mais fácil de documentar porque as rotas frequentemente declaram seus próprios esquemas. Priorize a extração de schema.body, schema.response e schema.querystring existentes antes de inferir.

Hono

Sinais: app.get(), app.post(), Hono(), zValidator()
Fonte da rota: Encadeamento de métodos na instância Hono
Validação: baseada em Zod via middleware zValidator

Hono com zValidator fornece esquemas Zod diretamente. Converta Zod --> JSON Schema --> OpenAPI schema.

Processo de Extração

Passo 1: Descobrir Rotas

Escaneie o projeto em busca de registro de rotas. Não confie em um único ponto de entrada — frameworks geralmente dividem rotas entre arquivos.

# Express: encontre arquivos de roteador
grep -rl "express.Router\|app.get\|app.post\|router\." src/ --include="*.ts" --include="*.js"

# Next.js App Router: encontre manipuladores de rota
find src/app/api -name "route.ts" -o -name "route.js"

# Next.js Pages: encontre rotas de API
find src/pages/api -name "*.ts" -o -name "*.js"

# Fastify: encontre registros de rota
grep -rl "fastify\.\(get\|post\|put\|delete\|route\)" src/ --include="*.ts"

# Hono: encontre definições de rota
grep -rl "app\.\(get\|post\|put\|delete\|patch\)" src/ --include="*.ts"

Passo 2: Extrair Esquemas

Para cada rota, identifique as formas de requisição e resposta.

Ordem de prioridade para fontes de esquema:

  1. Esquemas de validação explícitos (Zod/Joi/Yup) (maior confiança)
  2. Anotações de tipo TypeScript em requisição/resposta
  3. Declarações JSON Schema (Fastify)
  4. Anotações JSDoc @param / @returns
  5. Inferência em tempo de execução a partir da construção da resposta (menor confiança — sinalizar como aproximado)

Ao usar inferência em tempo de execução (opção 5), sempre marque o esquema com x-inferred: true na saída OpenAPI para que os consumidores saibam que pode estar incompleto.

Passo 3: Rastrear Autenticação

Percorra a cadeia de middleware para cada rota para determinar os requisitos de autenticação:

  • Sem middleware de autenticação: Marcar como security: [] (público)
  • Middleware de token Bearer: Marcar como security: [{ bearerAuth: [] }]
  • Middleware de chave de API: Marcar como security: [{ apiKeyAuth: [] }]
  • Autenticação de sessão/cookie: Marcar como security: [{ cookieAuth: [] }]
  • Múltiplas opções de autenticação: Listar todas como alternativas no array security

Passo 4: Catalogar Erros

Leia cada handler e liste cada resposta de erro:

  • res.status(400).json(...) ou throw new BadRequestError(...) --> esquema de resposta 400
  • res.status(401) --> 401 (incluir se middleware de autenticação presente mesmo sem throw explícito)
  • res.status(404) --> 404
  • res.status(409) --> 409 (conflito, comum em operações de criação)
  • res.status(422) --> 422 (falha de validação)
  • res.status(429) --> 429 (limite de taxa, incluir se middleware de limitador de taxa detectado)
  • res.status(500) --> 500 (sempre incluir como possibilidade)

Passo 5: Gerar Saídas

Produza três artefatos:

  1. Especificação OpenAPI (YAML, não JSON — mais legível, mais fácil de fazer diff)
  2. Tipos TypeScript (arquivo .d.ts independente com todos os tipos de requisição/resposta)
  3. Exemplos curl (um por endpoint, com cabeçalhos e payloads de amostra)

Pontos de Decisão

Quando o código-fonte NÃO tem esquemas de validação

Se os handlers aceitam req.body bruto sem validação Zod/Joi, você deve inferir tipos a partir do uso. Procure por:

  • Padrões de acesso a propriedades: req.body.name, req.body.email --> { name: string, email: string }
  • Destruturação: const { name, email } = req.body --> mesma inferência
  • Chamadas de inserção no banco de dados: db.users.create({ name: body.name }) --> cruzar referência com esquema do BD, se disponível

Sinalize toda a especificação com um aviso: x-schemas-inferred: true no nível de informação.

Quando as rotas usam segmentos de caminho dinâmicos

  • Express: :id --> OpenAPI {id}
  • Next.js: [id] --> OpenAPI {id}
  • Next.js catch-all: [...slug] --> OpenAPI {slug} com nota sobre comportamento de array
  • Fastify: :id --> OpenAPI {id}
  • Hono: :id --> OpenAPI {id}

Quando a forma da resposta varia por código de status

Documente cada código de status com seu próprio esquema. Não mescle 200 e 201 em um único esquema se eles diferirem. Padrão comum:

responses:
  '200':
    description: Usuário encontrado
    content:
      application/json:
        schema:
          $ref: '#/components/schemas/User'
  '404':
    description: Usuário não encontrado
    content:
      application/json:
        schema:
          $ref: '#/components/schemas/ErrorResponse'

Quando os limites de taxa diferem por endpoint

Documente limites de taxa usando extensões OpenAPI:

x-rate-limit:
  requests: 100
  window: 60s
  scope: por-chave-de-api

Se o limitador de taxa for global (aplicado uma vez no nível do aplicativo), documente-o na seção info de nível superior. Se por rota, documente em cada operação.

Geração de Tipo TypeScript

Gere tipos que correspondam exatamente à especificação OpenAPI. Use tipos marcados para IDs quando o código-fonte os usar.

// Gerado a partir da especificação OpenAPI — não edite manualmente

export interface CreateUserRequest {
  name: string;
  email: string;
  role?: 'admin' | 'member' | 'viewer';
}

export interface CreateUserResponse {
  id: string;
  name: string;
  email: string;
  role: 'admin' | 'member' | 'viewer';
  createdAt: string; // ISO 8601
}

export interface ErrorResponse {
  error: {
    code: string;
    message: string;
    details?: Array<{
      field: string;
      issue: string;
    }>;
  };
}

export interface PaginatedResponse<T> {
  data: T[];
  meta: {
    page: number;
    perPage: number;
    total: number;
    hasMore: boolean;
  };
}

Geração de Exemplo Curl

Gere um curl por endpoint. Use dados realistas, mas obviamente falsos.

# GET /api/users/:id -- Buscar um único usuário
curl -X GET https://api.example.com/api/users/usr_abc123 \
  -H "Authorization: Bearer sk_test_..." \
  -H "Accept: application/json"

# POST /api/users -- Criar um novo usuário
curl -X POST https://api.example.com/api/users \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Ada Lovelace",
    "email": "[email protected]",
    "role": "member"
  }'

# GET /api/users -- Listar usuários com paginação
curl -X GET "https://api.example.com/api/users?page=1&perPage=20&role=admin" \
  -H "Authorization: Bearer sk_test_..." \
  -H "Accept: application/json"

Regras para exemplos curl:

  • Sempre incluir a URL completa (usar https://api.example.com como base)
  • Incluir todos os cabeçalhos necessários
  • Usar -d com JSON formatado para corpos de requisição
  • Colocar URLs que contêm parâmetros de consulta entre aspas
  • Mostrar o método HTTP explicitamente mesmo para GET
  • Usar sk_test_... para tokens de autenticação (obviamente falsos)
  • Usar valores de campo realistas, não "string" ou "test"

Anti-Padrões

1. Documentar APIs Aspiracionais

Sintoma: Especificação descreve endpoints que ainda não existem no código Correção: Documente apenas o que o código realmente implementa. Se um endpoint planejado está em comentários ou em um arquivo de especificação, mas não em handlers, exclua-o.

2. Ignorar Efeitos Colaterais de Middleware

Sintoma: Documentação diz que o endpoint é público quando na verdade requer autenticação através de um middleware pai Correção: Rastreie a cadeia completa de middleware da raiz do aplicativo até o handler. Um router.use(auth) acima da definição da rota significa que todas as rotas abaixo requerem autenticação.

3. Assumir a Forma do Corpo da Requisição

Sintoma: Documentar req.body como any ou object porque não há validação Correção: Inferir a partir do uso (acesso a propriedades, destruturação, chamadas ao banco de dados). Marcar como x-inferred: true. Recomendar adicionar validação Zod.

4. Documentação de Erro Genérica

Sintoma: Todo endpoint lista o mesmo "400 Bad Request" genérico sem detalhes Correção: Leia os caminhos de erro de cada handler. Documente os códigos de erro e mensagens específicos retornados. Diferentes falhas de validação devem mostrar diferentes exemplos de resposta.

5. Documentos Gerados Desatualizados

Sintoma: Especificação foi gerada uma vez e nunca atualizada conforme o código mudou Correção: Gerar em um caminho conhecido (docs/openapi.yaml). Adicionar uma verificação de CI que regenera e faz diff contra a especificação confirmada. Se divergirem, falhe a build.

6. Documentação de Paginação Ausente

Sintoma: Endpoints de lista documentados sem esquemas de parâmetros de consulta para paginação Correção: Se o handler suporta page, limit, cursor, offset ou parâmetros similares, documente-os com valores padrão e máximos.

7. Uploads de Arquivo Não Documentados

Sintoma: Endpoints multipart/form-data documentados como JSON Correção: Detecte multer, formidable, busboy ou manipulação de arquivo nativa do framework. Use o tipo de conteúdo multipart/form-data com esquema binário adequado.

Lista de Verificação de Qualidade

[ ] Cada manipulador de rota no código-fonte tem uma operação OpenAPI correspondente
[ ] Parâmetros de caminho correspondem entre código e especificação (sem incompatibilidades :id vs {userId})
[ ] Esquemas de corpo de requisição cobrem todos os campos obrigatórios e opcionais
[ ] Esquemas de resposta correspondem à estrutura JSON real (verificado lendo o retorno do handler)
[ ] Requisitos de autenticação correspondem à análise da cadeia de middleware
[ ] Informações de limite de taxa documentadas onde existe middleware de limitação de taxa
[ ] Respostas de erro catalogadas a partir de declarações reais de throw/return nos handlers
[ ] Exemplos curl executam com sucesso contra uma instância em execução
[ ] Tipos TypeScript compilam sem erros
[ ] Nenhum esquema x-inferred deixado não documentado (cada um sinalizado tem um TODO para validação adequada)
[ ] Parâmetros de paginação documentados com valores padrão e máximos
[ ] Endpoints de upload de arquivo usam tipo de conteúdo multipart/form-data
[ ] Especificação OpenAPI valida com lint spectral ou swagger-cli
[ ] Especificação gerada confirmada em um caminho conhecido para diff de CI

Artefatos de Saída

  1. docs/openapi.yaml -- Especificação OpenAPI 3.0/3.1 completa
  2. docs/api-types.d.ts -- Definições de tipo TypeScript para todas as formas de requisição/resposta
  3. docs/api-examples.sh -- Exemplos curl executáveis para cada endpoint
  4. docs/api-coverage.md -- Relatório listando rotas documentadas vs não documentadas

Validação

# Lint da especificação OpenAPI gerada
npx @stoplight/spectral-cli lint docs/openapi.yaml

# Validar estrutura da especificação
npx swagger-cli validate docs/openapi.yaml

# Gerar cliente TypeScript para verificar se os tipos compilam
npx openapi-typescript docs/openapi.yaml -o /tmp/api-check.d.ts
tsc --noEmit /tmp/api-check.d.ts

# Diff contra a última especificação confirmada (verificação de CI)
diff <(cat docs/openapi.yaml) <(npx tsx scripts/generate-api-docs.ts --stdout) && echo "Especificação está atualizada" || echo "Especificação está desatualizada"

Cobre: Geração OpenAPI | Extração de tipos TypeScript | Criação de exemplos Curl | Documentação de autenticação | Documentação de limite de taxa | Catalogação de códigos de erro

Use com: api-architect (projetar primeiro, documentar depois) | openapi-spec-writer (criação manual) | test-automation-expert (testes de contrato contra especificação gerada)

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

curiositech/windags-skills

Expert in 2000s-era music visualization (Milkdrop, AVS, Geiss) and modern WebGL implementations. Specializes in Butterchurn integration, Web Audio API AnalyserNode FFT data, GLSL shaders for audio-reactive visuals, and psychedelic generative art. Activate on "Milkdrop", "music visualization", "WebGL visualizer", "Butterchurn", "audio reactive", "FFT visualization", "spectrum analyzer". NOT for simple bar charts/waveforms (use basic canvas), video editing, or non-audio visuals.

curiositech/windags-skills

Expert legal research agent for finding and scraping expungement data state by state. Knows authoritative sources, URL patterns, Firecrawl configuration, and 2026 legal landscape.

curiositech/windags-skills

Expert in 3D computer vision labeling tools, workflows, and AI-assisted annotation for LiDAR, point clouds, and sensor fusion. Covers SAM4D/Point-SAM, human-in-the-loop architectures, and vertical-specific training strategies. Activate on '3D labeling', 'point cloud annotation', 'LiDAR labeling', 'SAM 3D', 'SAM4D', 'sensor fusion annotation', '3D bounding box', 'semantic segmentation point cloud'. NOT for 2D image labeling (use clip-aware-embeddings), general ML training (use ml-engineer), video annotation without 3D (use computer-vision-pipeline), or VLM prompt engineering (use prompt-engineer).

curiositech/windags-skills

Implement WCAG 2.2 AA/AAA compliance with automated testing, keyboard navigation, screen reader support, and focus management. Activate on: accessibility audit, WCAG compliance, keyboard navigation, screen reader, aria attributes, axe-core, focus trap. NOT for: design-level accessibility review (use design-accessibility-auditor), color contrast only (use css-in-js-architect).

curiositech/windags-skills

Time-blind friendly planning, executive function support, and daily structure for ADHD brains. Specializes in realistic time estimation, dopamine-aware task design, and building systems that actually work for neurodivergent minds.

curiositech/windags-skills

Designs digital experiences for ADHD brains using neuroscience research and UX principles. Expert in reducing cognitive load, time blindness solutions, dopamine-driven engagement, and compassionate design patterns. Activate on 'ADHD design', 'cognitive load', 'accessibility', 'neurodivergent UX', 'time blindness', 'dopamine-driven', 'executive function'. NOT for general accessibility (WCAG only), neurotypical UX design, or simple UI styling without ADHD context.

curiositech/windags-skills

>- Apply crisis decision-making research to agent routing, uncertainty triage, and coordination failure analysis in time-pressured systems. Use when diagnosing handoff failures, analytical paralysis, or expert judgment under incomplete information. NOT for routine coding, simple CRUD design, or static single-agent tasks with complete information.

curiositech/windags-skills

Extend and modify the admin dashboard, developer portal, and operations console. Use when adding new admin tabs, metrics, monitoring features, or internal tools. Activates for dashboard development, analytics, user management, and internal tooling.

curiositech/windags-skills

Conversation patterns and interaction protocols for multi-agent systems. Covers request/response, pub/sub, blackboard, delegation chains, debate, critique, consensus, fan-out/fan-in, supervisor-worker, and peer negotiation. Deep analysis of AutoGen conversation patterns, CrewAI delegation, LangGraph state passing, and FIPA-ACL performatives. Teaches how to design what agents say to each other and in what order. Activate on: "agent conversation", "agent protocol", "multi-agent debate", "agent delegation", "supervisor worker pattern", "agent voting", "consensus protocol", "fan-out fan-in", "agent negotiation", "blackboard pattern", "agent dialogue", "conversation topology", "agent handoff". NOT for: wire format or serialization (use agent-interchange-formats), orchestration infrastructure (use agentic-infrastructure-2026), single agent behavior (use agentic-patterns).

curiositech/windags-skills

Meta-agent for creating new custom agents, skills, and MCP integrations. Expert in agent design, MCP development, skill architecture, and rapid prototyping. Activate on 'create agent', 'new skill', 'MCP server', 'custom tool', 'agent design'. NOT for using existing agents (invoke them directly), general coding (use language-specific skills), or infrastructure setup (use deployment-engineer).

curiositech/windags-skills

AI-powered calendar management and agent-based scheduling coordination. Covers calendar APIs (Google Calendar, CalDAV/iCal), AI scheduling assistants (Reclaim, Clockwise, Motion, Cal.com), building custom calendar agents with MCP, multi-calendar merging, timezone management, focus block protection, meeting fatigue detection, and agent-to-agent meeting negotiation protocols. Activate on: "calendar agent", "AI scheduling", "calendar coordination", "meeting scheduling", "calendar API", "focus time protection", "calendar optimization", "Google Calendar MCP", "Reclaim", "Clockwise", "Motion", "Cal.com", "smart scheduling", "calendar-aware agent", "timezone scheduling", "agent negotiation meetings". NOT for: manual calendar UI component design (use form-validation-architect), project management scheduling or Gantt charts (use project-management-guru-adhd), general time-tracking or pomodoro apps (use adhd-daily-planner for time-awareness), building the agent itself from scratch (use agent-creator).

curiositech/windags-skills

Build and adopt production AI agent infrastructure in 2026. Covers framework selection (LangGraph, CrewAI, AutoGen, MCP), orchestration patterns, evaluation, observability, memory systems, and tool use. Also covers the SOCIAL dimension: how to sell agent infrastructure internally, change management, measuring ROI, building trust in autonomous systems, and scaling adoption across teams. Activate on: "agent infrastructure", "agent framework comparison", "which agent framework", "sell AI tools internally", "agent adoption", "agent observability", "agent evaluation", "MCP architecture", "agentic mesh", "enterprise AI agents", "AI change management", "agent ROI". NOT for: building specific agents (use ai-engineer), designing agent behavior patterns (use agentic-patterns), prompt tuning (use prompt-engineer).

curiositech/windags-skills

Fundamental patterns for effective agentic behavior. Teaches decomposition, tool orchestration, error recovery, context management, quality self-assessment, and knowing when to stop. Model-agnostic principles that make any agent more effective regardless of domain. Activate on: "how should I structure this agent", "agentic workflow", "agent patterns", "multi-step task", "tool orchestration", "/agentic-patterns", "decompose this", "agent best practices", "chain of actions", "when should the agent stop", "agent loop design". NOT for: creating agent infrastructure (use agent-creator), building DAGs (use windags-architect), specific tool implementation.

curiositech/windags-skills

Automated discovery and matching of agent skills for dynamic task routing and capability assessment

curiositech/windags-skills

Cryptographic security for agentic systems — zero-trust agent networking, signed message envelopes (JWS/JWE), capability-based security (ocaps), Merkle tree audit trails, WASM sandboxing, and formal verification. Covers CLI dev tool security, mTLS between agents, permission boundaries (least privilege for AI agents), and supply chain security for skills/plugins. Activate on: "agent security", "zero trust agents", "secure agent communication", "capability-based security", "ocap", "signed messages between agents", "agent audit trail", "sandbox agent execution", "agent permissions", "mTLS agents", "cryptographic verification", "agent supply chain", "OWASP agentic", "prove agent did X", "tamper-proof agent logs". NOT for: application-level SAST scanning (use security-auditor), network firewall rules (use infrastructure), SOC2/HIPAA compliance (organizational), or prompt injection defense (use prompt-engineer).

curiositech/windags-skills

Data structures and serialization formats for agent-to-agent communication. Covers message envelopes, structured output schemas, capability declarations, task handoff payloads, error/retry signaling, and context windows as data structures. Deep comparison of A2A protocol, MCP, OpenAI function calling, and LangChain message types. Teaches when to use rigid schemas vs free-form with validation, typed vs untyped, streaming vs batch. Activate on: "agent message format", "agent communication schema", "agent-to-agent protocol", "A2A protocol", "MCP message format", "structured output for agents", "agent interop", "interchange format", "agent serialization", "task handoff format", "capability declaration". NOT for: what agents say to each other (use agent-conversation-protocols), orchestration topology (use multi-agent-coordination), building agent infrastructure (use agentic-infrastructure-2026).

curiositech/windags-skills

Logic-based agent programming language implementing BDI architecture for practical autonomous agent development

curiositech/windags-skills

>- Design AgentSpeak(L)-style BDI agents with context-guarded plans, selection functions, and intention stacks. Use for interruptible autonomy, agent policy, and multi-agent orchestration in dynamic environments. NOT for simple rule engines, static planners, or centralized workflows.

curiositech/windags-skills

Foundational concurrent computation model where actors communicate exclusively through asynchronous message passing

curiositech/windags-skills

license: Apache-2.0 NOT for unrelated tasks outside this domain.

Habilidades Relacionadas