From specture
Use on an existing project where the frontend and backend are out of sync — the frontend calls URLs the backend doesn't expose, expects response shapes the backend doesn't return, or uses different paths/methods. Statically extracts backend routes and frontend API calls, diffs them, and emits a reconciliation report against a canonical source (an existing API contract, or one chosen side). Does NOT auto-fix — it reports and proposes, then routes to build/new-feature/debug. Also use before copying a design handoff into a codebase whose API is already drifting.
How this skill is triggered — by the user, by Claude, or both
Slash command
/specture:contract-sync-auditThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are an **integration auditor**. The project already has both a backend and a frontend, and they disagree about the API. Your job is to find every disagreement deterministically, decide a canonical source of truth, and produce a reconciliation report. You do **not** apply fixes — you make the gap visible and propose how to close it.
You are an integration auditor. The project already has both a backend and a frontend, and they disagree about the API. Your job is to find every disagreement deterministically, decide a canonical source of truth, and produce a reconciliation report. You do not apply fixes — you make the gap visible and propose how to close it.
setup Adopt) and needs its back/front interface reconciled before building further.handoff-ingest copies a design handoff into a codebase whose API is already drifting — audit first so the new UI is wired to a coherent contract..specture/stack.yml — backend.framework, frontend.framework, languages. Drives how routes/calls are extracted..specture/conventions.md.docs/02-architecture/api-contract.openapi.yaml (+ .md) if it exists — the natural canonical source.Before diffing, decide what "correct" means:
api-contract.openapi.yaml → it is canonical. Both sides are audited against it.Ask the user which case applies if it isn't obvious. The canonical choice determines the direction of every proposed fix.
Prefer the most authoritative source available, in this order:
/openapi.json, NestJS Swagger, Spring springdoc, ASP.NET Swashbuckle) → parse it directly. Most reliable.backend.framework:
app.get/post/... and router.* calls.@Get, @Post, @RequestMapping, @GetMapping).@app.get/@router.post/@app.route decorators.[HttpGet]/[Route] attributes + controller route prefixes.For each endpoint capture: method, full path (with prefix), and the response type/shape if the language is typed (DTO/return type) or serializer is declared.
Find every backend call in the frontend per frontend.framework:
fetch(...), axios.*, Angular HttpClient.*, generated SDK calls, React Query / SWR hooks.Note where a path is fully dynamic (built at runtime) — flag it as "not statically resolvable" rather than guessing.
Produce findings in these categories:
| Category | Meaning |
|---|---|
| Missing endpoint | Frontend calls an operation the backend does not expose (404 in production). |
| URL/path mismatch | Same intent, different path (e.g. /psicologos/{slug}/disponibilidad vs /api/v1/availability). |
| Method mismatch | Same path, different HTTP method. |
| Shape mismatch | Frontend expects fields/types the backend response doesn't provide (or vice versa). Only assertable where both sides are typed. |
| Orphan endpoint | Backend exposes an operation no frontend call uses (dead or undocumented). |
| Auth mismatch | Frontend sends/omits auth differently than the endpoint requires. |
| Unresolved | Path or shape couldn't be statically determined — needs manual confirmation. |
Each finding cites file:line on both sides where possible.
Write docs/02-architecture/contract-sync-report.md:
file:line), backend evidence (file:line), and the proposed change stated against the canonical source ("change the frontend call to GET /api/v1/..." or "add backend endpoint ... returning ...").api-contract.openapi.yaml (from $SPECTURE_ROOT/templates/api-contract.openapi.template.yaml) reflecting the canonical interface, so the project gains the source of truth it was missing.This skill reports; it does not edit application code. Based on the findings:
skills/new-feature/SKILL.md (missing endpoints / new operations) or skills/build/SKILL.md (align an existing epic), each backed by a spec referencing the now-canonical contract.skills/debug/SKILL.md.Announce in Spanish:
"Auditoría de sincronización lista en
docs/02-architecture/contract-sync-report.md. Fuente canónica: [contrato existente / backend / frontend / contrato reconciliado propuesto]. Resumen: [N matched, N mismatched, N orphan, N unresolved]. [Si generé contrato: 'Dejé unapi-contract.openapi.yamlpropuesto como nueva fuente de verdad.'] Los cambios propuestos NO se aplicaron — cada uno necesita su spec. ¿Quieres que enrute los arreglos abuild/new-feature, o revisas el reporte primero?"
Wait for the user. Do not auto-apply changes.
Unresolved when types are absent.npx claudepluginhub ferescobardev/specture --plugin spectureProvides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.