360 Secure SkillHub
360 安全技能中心

escribir-contrato

根据用户故事、功能请求或技术债条目,整理项目上下文,按功能或重构类型生成可观测的契约文档:功能类型写明输入、输出、错误和不可协商的命名;重构类型写明不可改变的现有行为和可量化改进。文档还会标注每行内容的来源、列出开放问题、保存到 contratos/,并暂停等待人工批准。

分类:开发
adminoryslabs
热度 0.00
最近更新 2026-10-30 17:10:12

安装

发给 Agent
帮我安装这个技能:npx secure-skills-cli add adminoryslabs/armory/escribir-contrato
兼容性
通用兼容
联网要求
联网要求未确认
数据出网
数据出网未确认
Metadata
name
escribir-contrato
description
Escribe el contrato observable de una unidad de trabajo para que el TESTER y el DEV puedan trabajar sin verse - para una feature (HU o pedido) define entrada, salida por caso, errores y nombres que no se negocian; para un refactor (ítem de deuda) define el comportamiento actual que no puede cambiar y la mejora medible. Arma el paquete de contexto, anota el origen de cada línea, propone las rutas de cada rol si el proyecto no las define, lista las decisiones abiertas y se detiene para aprobación humana. Use when the LEAD takes a user story, a feature request or a technical-debt item to build or refactor, or when asked to write, draft, or version a contract/spec.
type
skill
tags
["lead","contrato","spec","hu","refactor","caja-negra"]

Escribir contrato (v3)

Goal

Producir el único documento que leen el TESTER y el DEV: lo que la unidad de trabajo tiene que cumplir vista desde afuera, con la precisión suficiente para que dos agentes que no se ven lleguen al mismo resultado. El contrato fija lo observable; lo interno queda libre para el DEV.

Hay dos tipos de contrato:

Tipo Qué fija
Feature El comportamiento nuevo que hay que construir
Refactor El comportamiento actual que no puede cambiar + la mejora medible

Esta skill no construye nada. Escribe, pregunta y se detiene.

Novedades v3: tipo refactor; contexto de proyectos existentes (docs/contexto/); rutas de cada rol propuestas en el contrato cuando AGENTS.md no las define.

Input

  • La tarea: una HU (desde Jira vía MCP o el archivo/enlace indicado), un pedido de feature, o un ítem de deuda (docs/contexto/DEUDA.md). Si una HU tiene puntos abiertos sin resolver, detenerse: se escalan antes de escribir el contrato.
  • El contexto del proyecto, empezando por AGENTS.md como índice:
    • proyecto nuevo: TECH-DESIGN.md (la sección de esta HU) + adrs/;
    • proyecto existente: docs/contexto/ (ARQUITECTURA.md, PATRONES.md, DEUDA.md…) + adrs/. Solo los ADRs y documentos que tocan esta unidad de trabajo.
  • Contratos anteriores en contratos/, para no contradecir nombres ya fijados.

Workflow — común a los dos tipos

  1. Armar el paquete de contexto: la tarea + los ADRs y documentos que aplican. Nada más. Listar qué entró y por qué.

  2. Identificar la interfaz observable por la que se usa o se ve la funcionalidad (una ruta HTTP, una pantalla, un comando, un evento…). El contrato se escribe sobre esa interfaz.

  3. Fijar las rutas de cada rol. Si AGENTS.md ya dice qué rutas son del TESTER y cuáles del DEV, citarlo. Si no lo dice, proponerlas (por ejemplo: pruebas en la carpeta de pruebas que usa el proyecto; código en la zona del cambio) y marcarlas como DECISIÓN PROPUESTA.

  4. Revisar PATRONES.md si existe: si la tarea toca un tema sin canon o una pregunta abierta, no se elige: va a "Preguntas abiertas para el humano".

  5. Seguir con el workflow del tipo (feature o refactor).

Workflow — Feature

  1. Por cada escenario Gherkin y cada criterio de aceptación, derivar los casos:

    • entrada exacta (ruta, parámetros, formato);
    • salida exacta por caso (status, datos, texto visible, efecto persistente);
    • errores (qué entrada inválida produce qué respuesta).
  2. Fijar los nombres que no se negocian: rutas, campos, mensajes visibles, formatos. Son los que el TESTER verificará textualmente.

  3. Si la feature pasa por una zona de DEUDA.md, anotarlo en el contrato como aviso para el humano (puede convenir resolver esa deuda antes, como un refactor aparte).

Workflow — Refactor

  1. Delimitar el alcance: qué archivos o módulos reordena el DEV, según la evidencia del ítem de deuda. Lo que queda fuera del alcance no se toca.

  2. Listar el comportamiento que no cambia: los casos observables de la zona afectada (camino feliz, entradas inválidas, recursos inexistentes, errores). Incluir lo raro: si hoy el sistema responde algo que parece incorrecto, se lista tal cual y se marca como "se conserva". Los valores exactos los confirma el TESTER al fotografiar el sistema; si no coinciden con el contrato, se corrige el contrato.

  3. Definir la mejora medible: qué se mide, cuánto vale hoy (con evidencia) y qué valor se espera después. Ejemplos:

    Tipo de deuda Qué se mide
    Código duplicado Cuántas copias hay
    Archivo o función gigante Líneas del archivo o de la función
    Rendimiento Tiempo o memoria, con el mismo comando antes y después
    Dependencia fija Cuántos archivos importan el módulo directo

    Indicar cómo se comprueba (comando, búsqueda, CodeGraph, diff).

  4. Pruebas que ya tenía el proyecto: listar los comandos que tienen que seguir en verde.

Cierre — común a los dos tipos

  1. Anotar el origen de cada línea (escenario Gherkin, criterio, ADR, ítem de deuda, archivo:línea). Una línea sin origen es una decisión nueva: se marca DECISIÓN PROPUESTA y entra en la lista de preguntas. Nunca se presenta como si viniera de la tarea.

  2. Declarar qué queda fuera del contrato (todo lo interno) → libertad del DEV.

  3. Guardar contratos/CONTRATO-<ID>.md con la plantilla del tipo, versión v1:

    • feature: assets/contrato-template.md;
    • refactor: assets/contrato-refactor-template.md.
  4. Detenerse. Presentar el contrato y las preguntas al humano. No invocar a nadie.

Versionado

Cuando durante el ciclo aparece un hueco (lo reporta el TESTER, el DEV o el veredicto):

  1. se formula la pregunta al humano;
  2. con la respuesta, se edita el contrato, se sube la versión (v2, v3…) y se agrega una fila al changelog (qué cambió, por qué, quién lo aprobó);
  3. el LEAD avisa a TESTER y DEV de la nueva versión.

Constraints

  • No se completa con suposiciones lo que la tarea no dice: se pregunta.
  • No se describe implementación interna en el contrato.
  • En un refactor, no se "arregla" ningún comportamiento observable: se conserva.
  • No se contradice un nombre fijado en un contrato anterior sin decirlo explícitamente.
  • No se publica nada.