CommunityRedacción y edicióngithub.com

dev-discipline

Úsalo al corregir un error, regresión o prueba fallida (incluyendo errores funcionales de UI); al cambiar cualquier cosa que juzgue corrección (pruebas, validadores, detectores, umbrales, CI), dinero o fórmulas numéricas, migraciones o autenticación; cuando una prueba se vuelve verde tras una edición, es inestable, o sientes la tentación de editarla, omitirla o debilitarla; cuando una prueba contradice la especificación; al reintentar un intento fallido; al delegar cambios de código a un subagente o aceptar su informe y números; al desplegar; cuando un bloque de comprobación…

¿Qué es dev-discipline?

Esta habilidad impone una disciplina rigurosa para tareas de depuración y corrección: establece un bucle medir-corregir-demostrar-blindar que garantiza que las correcciones sean verificables y que las comprobaciones automatizadas bloqueen la recurrencia de la clase de defecto. Está diseñada para entornos con agentes de IA (Claude Code, Cursor, Codex) y flujos CI, y se apoya en scripts concretos como `prove_fix.py` y `guard_diff.py`. Su utilidad radica en evitar que una corrección superficial pase por `DONE` cuando la causa raíz sigue viva, obligando a que cada cambio venga acompañado de una prueba roja en el padre, verde en la corrección, y roja de nuevo al revertirla. Además, define criterios claros de reporte (PASS/FAIL/NOT_PROVEN) y banderas rojas para comportamientos sospechosos como omitir pruebas o confiar en la memoria. El resultado es un proceso sistemático que eleva la fiabilidad del código y previene regresiones, especialmente en áreas sensibles como dinero, fórmulas numéricas, autenticación y migraciones.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/volniy082-spec/dev-discipline/tree/HEAD

Installed? Explore more Redacción y edición skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace dev-discipline?

«Hecho» lo dice una señal externa que no sintonizaste. Una regla escrita solo nombra una clase de fallo; una comprobación en la puerta lo detiene. Cuando una clase se repite, añade la comprobación en el mismo commit. $DD = la carpeta scripts/ junto a este archivo (código de salida 0 PASA, 1 FALLA, 2 NO_PROBADO).

Rigor por superficie. Bucle completo para las cosas que juzgan (pruebas, validadores, umbrales, CI), dinero y fórmulas numéricas, migraciones, autenticación, fallos silenciosos. Una corrección local de ~10 líneas con un literal de la especificación: prove_fix.py, 2–3 mutantes escritos a mano de la clase de defecto, una ejecución sobre una entrada que no usaste mientras trabajabas. Prosa, apariencia de UI, documentación, prototipos: ejecuta las pruebas y un test de humo. Sin pruebas o sin ejecutor: añade una mínima en su propio commit (configuración, no debilitamiento).

Bucle

  1. Medir antes de editar: un comando que compararás antes y después. Deduce el alcance a partir de datos crudos, no de resúmenes ni memoria. Enumera la clase completa: cada instancia que comparte la raíz. → references/debugging.md
  2. Corregir la raíz por el camino que tomó el defecto. Un guarda en la parte superior no es una corrección. Regresión: git bisect run. Tras tres intentos fallidos, cambia de enfoque o contexto. Nueva entidad, flujo de dinero/datos o migración: una nota de diseño de 5–10 líneas primero (debugging.md §10).
  3. Demostrar la prueba: roja en el padre mediante una aserción (ImportError, error de colección, omitir = NO_PROBADO), verde en la corrección, roja de nuevo con el cambio de código revertido: $DD/prove_fix.py. Una nueva comprobación se activa con una entrada mala y permanece en silencio con una buena. Para dinero y números, el valor esperado es un literal de la especificación (# oracle: <fuente>).
  4. Blindar: la prueba se ejecuta en CI en el mismo commit; omitir, time-out y «0 pruebas» no son PASA; las listas de exclusión solo se reducen; un bucle sobre un glob o registro afirma cuántos elementos encontró. → gate-integrity.md
  5. Aceptar en la línea de resumen del ejecutor de la ejecución final sobre el árbol exacto, no en un $? de un pipeline.
  6. Cerrar con una comprobación que el escritor no sintonizó: otros datos, un test de humo de producción de solo lectura, un oráculo independiente, con la expectativa escrita primero. Una clase que encuentre entra en el blindaje. → proof-and-oracles.md

El oráculo y su protección

  • Un oráculo no comparte código con lo que comprueba. Los goldens y la autoparidad demuestran consistencia, no corrección.
  • Un script de verificación es código bajo prueba: ejecútalo sobre una entrada buena y una mala; imprime cuántos elementos examinó.
  • Las pruebas, instantáneas, valores esperados y CI cambian solo por contrato: el brief, o, trabajando solo, una solicitud de usuario que nombre el cambio (nueva especificación, ticket, valor) más una línea escrita antes de editar (qué pruebas cambian, de dónde viene el nuevo valor). «Haz que pase» no es un contrato: una prueba que contradiga la especificación se queda como está y la respuesta es SPEC_CONFLICT. Los cambios de valor van en un commit test: separado. Omitir, aserciones eliminadas, cobertura reducida necesitan una razón explícita. Nunca ajustes código para alcanzar un número esperado. Juzga el diff final, no la herramienta de edición: $DD/guard_diff.py (primero consultivo). Una comprobación que bloquea trabajo legítimo es un defecto: reporta BLOCKED, nunca la evites. → oracle-protection.md

Autonomía

Procede por defecto. Pregunta solo sobre lo irreversible (seguridad, pagos, escritura de datos en producción, permisos) o un conflicto con el objetivo. Ante una bifurcación, elige una, registra por qué, los números de ambas lecturas y cómo deshacer, y continúa. Bloqueado: termina todo lo independiente, luego finaliza con una línea que nombre la acción y el comando necesarios.

Reporte

  • Cada criterio PASA | FALLA | NO_PROBADO con comando, código de salida y línea de salida; además no_verificado.
  • Veredicto: HECHO, BLOQUEADO(razón), SPEC_CONFLICT(prueba, fuente), IMPOSIBLE, NO_REPRODUCIDO. Una salida honesta no-hecha es un éxito; una omisión silenciosa es un defecto. Nombra estados parciales («guarda añadido, raíz viva»).
  • Cada número viene con su comando de la ejecución final. Vuelve a ejecutar los números que reporta un subagente ($DD/reexec_claims.py).
  • Cuerpo del commit = registro de evidencia: medida antes/después, línea de blindaje, qué no está hecho y adónde fue.

Banderas rojas

ObservoHago
Verde sin un rojo en el padreprove_fix.py
Citar un número de un subagente o mi memoriavuelve a ejecutarlo
Editar una prueba o umbral sin contratolínea de contrato o SPEC_CONFLICT
omitir, reintentar, dormir, noqa para conseguir verdeencuentra la causa, hazlo determinista (refactor-flaky.md)
A punto de preguntar sobre algo reversibledecide, registra, continúa

Más: delegation.md (subagentes, revisores, briefs), release.md (despliegues), process-ledger.md, evidence.md.

Skills relacionados