intended-vs-implemented
phuryn/pm-skills
Detecta discrepancias entre la intención documentada y la implementación real en los códigos fuente, identificando errores que los escáneres genéricos pasan por alto al carecer de un modelo de intención.
...Expandir todoLo previsto frente a lo implementado: auditoría de la diferencia
Objetivo
Un linter analiza el código de forma aislada. Puede indicarte que el código es coherente internamente; pero no puede decirte si el código hace lo que tú pretendías, porque no dispone de un modelo de tu intención. Los errores de seguridad y corrección más graves se encuentran en esa brecha: un permiso documentado pero que nunca se aplica, un punto final «solo para cron» al que cualquiera puede acceder, un campo marcado como «solo público» que filtra datos privados.
Esta habilidad es el método para detectar esa brecha. Es el factor diferenciador: solo funciona cuando la intención se ha plasmado por escrito previamente (véase la habilidad «artefactos de entrega»), y esa es precisamente la razón por la que las herramientas genéricas no pueden replicarla.
Contexto
Utilízala cuando exista una intención documentada — permissions.md, architecture.md, variables.md, etc. Si esos documentos faltan o están obsoletos, esa ausencia es en sí misma el primer hallazgo: no se puede auditar una intención que nunca se ha registrado. Se recomienda documentar primero y, a continuación, auditar.
Método
Establece la intención. Lee el
/documentation/*.mdconjunto como la fuente de referencia de lo que debería ser cierto: quién puede acceder a qué, qué límites son fiables, qué datos son públicos. Trata la documentación como afirmaciones que hay que verificar, no como pruebas.Recopila pruebas de la implementación. Lee el código que aplica (o no aplica) cada afirmación. La prueba es un archivo y una línea concretos: la comprobación de autorización real, el filtro de consulta real, el sanitizador real. «Probablemente se gestiona en una fase anterior» no es una prueba; la ruta del código sí lo es.
Compara la afirmación con el código, límite por límite. Para cada regla documentada, pregúntate: ¿hay algún punto de aplicación que la implemente realmente, en el servidor, en todas las rutas? Desconfía de comentarios como «solo interno», «solo para administradores» o «validado en otro lugar»: verifícalos en el código.
Clasifica cada discrepancia según su importancia. Una discrepancia es relevante cuando, al cruzarla, permite que un actor real acceda a datos, dinero, infraestructura u otro inquilino al que no debería. No es relevante cuando la única persona afectada es el propio actor con respecto a sus propios datos. Descarta las desviaciones superficiales; mantén las que cruzan los límites.
Evita los hallazgos vagos. Cada hallazgo debe especificar: la intención documentada (cita el documento), la realidad implementada (cita el código), el atacante y la víctima, y la solución concreta. Si no puedes citar ambos lados de la discrepancia, se trata de una cuestión que hay que investigar, no de un hallazgo que debas notificar.
Lo que cuenta
- Intención: una regla, un límite, un ámbito o una clasificación de público/privado documentados.
- Prueba de implementación: un punto de aplicación citado (o su ausencia demostrable) en el código.
- Una discrepancia relevante: la documentación dice una cosa, el código hace otra, y la diferencia traspasa un límite de confianza, de coste, de datos o de inquilino.
Notas
- «Documentado pero no aplicado» es un hallazgo en sí mismo: clasifícalo según lo que revele el hecho de traspasar esa brecha.
- «No documentado pero aplicado» suele estar bien, pero hay que señalarlo: la documentación está desactualizada, lo que debilita la próxima auditoría.
- Este método alimenta las auditorías de seguridad y rendimiento; no sustituye su análisis a nivel de «sink», sino que añade el eje de la intención del que carecen.
- Nunca inventes una intención para crear una brecha. Si la documentación no dice nada, di que la documentación no dice nada.
---
name: intended-vs-implemented
description: Finds gaps between documented intent and actual implementation in codebases, catching bugs that generic scanners miss because they lack a model of intent.
---
# Intended vs. Implemented: Auditing the Gap
## Purpose
A linter scans code in a vacuum. It can tell you the code is *internally* consistent; it cannot tell you the code does what you *meant*, because it has no model of your intent. The highest-value security and correctness bugs live in that gap — a permission documented but never enforced, a "cron-only" endpoint anyone can call, a field marked public-only that leaks private data.
This skill is the method for finding that gap. It is the differentiator: it only works when intent has been written down first (see the **shipping-artifacts** skill), and that's exactly why commodity tools can't replicate it.
## Context
Use this when documented intent exists — `permissions.md`, `architecture.md`, `variables.md`, etc. If those docs are absent or stale, that absence is itself the first finding: you cannot audit intent you never recorded. Recommend documenting first, then auditing.
## Method
1. **Establish intent.** Read the `/documentation/*.md` set as the source of truth for what *should* be true: who may access what, which boundaries are trusted, which data is public. Treat the docs as claims to verify, not as proof.
2. **Gather implementation evidence.** Read the code that enforces (or fails to enforce) each claim. Evidence is a cited file and line — the actual authorization check, the actual query filter, the actual sanitizer. "It's probably handled upstream" is not evidence; the code path is.
3. **Compare claim to code, one boundary at a time.** For each documented rule, ask: does an enforcement point actually implement it, on the server, on every path? Distrust comments like "internal only," "admin only," or "validated elsewhere" — verify them in code.
4. **Classify each mismatch by whether it matters.** A mismatch matters when crossing it lets a real actor reach data, money, infrastructure, or another tenant they shouldn't. It does not matter when the only person affected is the actor themselves on their own data. Drop cosmetic drift; keep boundary-crossing drift.
5. **Avoid hand-wavy findings.** Every finding names: the **documented intent** (quote the doc), the **implemented reality** (cite the code), the **attacker and victim**, and the **concrete fix**. If you cannot cite both sides of the gap, it is a question to investigate, not a finding to report.
## What counts
- **Intent:** a documented rule, boundary, scope, or public/private classification.
- **Implementation evidence:** a cited enforcement point (or its provable absence) in the code.
- **A mismatch that matters:** doc says one thing, code does another, and the difference crosses a trust, cost, data, or tenant boundary.
## Notes
- Documented-but-unenforced is a finding on its own — rank it by what crossing the gap exposes.
- Undocumented-but-enforced is usually fine, but flag it: the docs are now stale, which weakens the next audit.
- This method feeds the security and performance audits; it does not replace their sink-level analysis — it adds the intent axis they lack.
- Never fabricate intent to manufacture a gap. If the docs are silent, say the docs are silent.
Todos los archivos
1 archivosInstalar intended-vs-implemented
Descarga y descomprime los archivos de habilidades en tu directorio .claude/skills/.
Descargar ZIPClona el repositorio y copia los archivos de la habilidad a tu proyecto.
git clone https://github.com/phuryn/pm-skills/tree/main/pm-ai-shipping/skills/intended-vs-implemented # Copy SKILL.md to your .claude/skills/ directory
Copiar





Hogar
