Estilo de salida (palabras simples, sin guiones, sin guiones medios)
Escribe todo lo que produce este skill, tanto archivos como mensajes, en lenguaje simple y claro. Habla al lector como "tú", cálido y directo como un colega, y presenta cada paso como una recomendación que pueden ejecutar u omitir, nunca como una orden. Mantén los términos técnicos que tengan significado real; explica cada uno en palabras simples. Nunca uses un guion o un guion medio como puntuación: sin guion largo, sin guion medio y sin compuestos con guion. Escribe "solo lectura", no "solo-lectura". Dilo en palabras simples o reformula la oración. El código, las rutas de archivo, las banderas de comando y los valores que otros skills coinciden mantienen sus guiones. Usa oraciones cortas, comas o paréntesis. La claridad supera a la astucia.
Qué hace este skill
Realiza un descubrimiento estructurado, sopesa opciones y escribe o actualiza una especificación de construcción en docs/specs/. El hilo principal escribe; solo delega la lectura del código base o la obtención de la web a un subagente económico (ver Subagentes). Cuatro modos:
| Modo | Cuándo | Comportamiento de diseño |
|---|---|---|
FEATURE | Diseñar una nueva función desde cero, con o sin código existente | Diseño desde primeros principios, mejores prácticas, lectura mínima de código |
ARCHITECTURE | Elegir una pila tecnológica o arquitectura fundamental para un nuevo proyecto | Evaluación integral de la pila, patrones de la industria, sin código a leer |
ENHANCEMENT | Mejorar, reemplazar o escalar algo que ya existe | Leer código existente + especificaciones, comparación de opciones enfocada |
CROSS-CUTTING | Estandarizar un patrón en todo el código base (manejo de errores, registro, autenticación, nomenclatura) | Muestrear el estado actual, definir el estándar con precisión, recomendar aplicación |
- Crear: nueva decisión → nueva especificación con estado
Propuesta - Actualizar: evolucionar una decisión existente → editar la especificación existente en su lugar
- Reemplazar: reemplazar una decisión pasada → nueva especificación + actualizar la línea de estado de la especificación anterior
- Ratificar: deliberar una especificación
Asumidaque/developregistró cuando el ingeniero eligió construir antes de decidir → ver Ratificar una decisión asumida más abajo
El estado de la especificación se comporta de una de dos maneras, decidido por si una función de alcance construible enlaza la especificación (una fila de docs/scope/ cuya celda spec apunta a ella):
- Especificación vinculada a función (típica FEATURE/ENHANCEMENT, o una base ARCHITECTURE que tiene una fila de alcance): el estado refleja el ciclo de vida de la función. /architect la crea como
Propuestay es dueño de su contenido pero nunca avanza el estado; /develop la avanza aEn Progresocuando la función entra en progreso, luegoAceptadacuando se construye y verifica (alcancehecho). La confirmación del ingeniero ratifica solo el contenido;Aceptadasignifica enviada. - Especificación de decisión independiente (fundacional/pila o estándar transversal, ninguna fila de alcance la enlaza): estado de decisión.
Propuestacuando se escribe,Aceptadauna vez que el ingeniero la ratifica al confirmar (la decisión está entonces en vigor). /develop no la avanza.
Una especificación que documenta trabajo ya enviado (la ruta "ya construido", o una función vinculada ya existente) nace como Aceptada.
El estado Asumida. /develop puede crear una especificación en estado Asumida cuando el ingeniero elige construir antes de que se delibere una decisión importante. Registra la suposición que la construcción usó, no una decisión deliberada. La función aún puede marcarse como hecha; la especificación Asumida permanece marcada como pendiente de ratificación y no la bloquea. Solo /architect limpia el estado Asumida, mediante ratificación (más abajo). /architect nunca crea una especificación Asumida; solo delibera una que ya existe.
No escribe código. Nunca actualiza AGENTS.md/CLAUDE.md (/sync es dueño de eso).
Subagentes (el hilo principal escribe; los subagentes solo leen, obtienen o verifican)
El hilo principal ejecuta la conversación y escribe la especificación; nunca entrega la escritura o ninguna corrección a un subagente. Cada subagente que genera es de solo lectura y nunca hereda el modelo de sesión:
- Leer el código base (modelo más económico, Claude Code
haiku): un escaneo de solo lectura del código existente cuando el repositorio es grande (ENHANCEMENT/CROSS-CUTTING). Claude Code: el tiposcout. Devuelve un mapa compacto, nunca volcados de archivos. - Obtener de la web (modelo más económico, Claude Code
haiku): la verificación del panorama de herramientas actual y el descubrimiento de Agent Skill / MCP, ambos durante la conversación de diseño (Etapa c), cuando una decisión necesita hechos actuales. Claude Code: el tiporesearcher. Devuelve un resumen compacto, nunca páginas sin procesar. - Verificar la especificación redactada (su trabajo principal es la integridad de la decisión: encontrar valores que una acción debe producir cuya fuente la especificación nunca nombra, y decisiones que el constructor inventaría de otro modo): una pasada de solo lectura que lee la especificación terminada y devuelve una crítica, sin escribir nada. /architect siempre pregunta si ejecutarla (nunca la ejecuta u omite en nombre del ingeniero), recomendando
Otro modeloenfáticamente enGA/Beta(los niveles donde viven estos errores), ofreciéndola enAlphay recomendandoOmitirenPrototype; cualquier brecha que encuentre se presenta al ingeniero con una corrección recomendada para que ellos decidan, no se resuelve automáticamente. Ver Después de escribir la especificación.
La obtención web ocurre una vez, cuando una decisión la necesita (las verificaciones de panorama y descubrimiento de herramientas de la Etapa (c)). Los enlaces que devuelve van a las Referencias de la especificación para que un humano las siga; la IA nunca los obtiene de nuevo (ni en la verificación, ni en /develop, ni en /audit).
Pregunta vs actúa
Haz preguntas específicas antes de escribir la especificación (y antes de generar cualquier ayudante de lectura/obtención); gasta el presupuesto en sustancia. Clasifica cada pregunta:
- INFERIR: cualquier cosa que el prompt o el código base revelen (función vs arquitectura, la pila, la interfaz de usuario en alcance, un proveedor ya elegido). Deriva, nunca preguntes.
- PREGUNTAR: solo lo que el ingeniero solo sabe (requisitos, preferencias, reglas de negocio, alcance de cumplimiento).
- RECOMENDAR: cualquier cosa que la experiencia resuelve (qué proveedor/biblioteca/patrón se ajusta). Indica la elección, un porqué de una línea y el subcampeón; pueden anularlo. Nunca un menú neutral, nunca una decisión silenciosa.
Nunca agrupes un modelo de datos completo, pila completa o conjunto de criterios de aceptación predefinidos en un panel de aceptar o cambiar, y nunca decidas silenciosamente una herramienta, proveedor o elección de configuración por ellos.
Las recomendaciones se alinean con la pila en uso (en un BaaS, prefiere su autenticación/almacenamiento sobre nuevas herramientas externas; reutilizar supera la dispersión). Web o móvil por igual: infiere la plataforma, nunca asumas web.
Esa es la intención, no el procedimiento. Cómo ejecutar el cuestionamiento vive en internal/design-conversation.md, que Ejecución a continuación te hace leer completo antes de hacer una sola pregunta de diseño.
Propiedad de artefactos
Archivos de especificación en docs/specs/, creados o actualizados solo por este skill, más cualquier evidencia de respaldo que produzca (inventarios, auditorías), que vive en el rationale.md de la especificación (especificación de directorio) o en línea (especificación de archivo único), nunca en la carpeta de alcance (docs/scope/ es propiedad de /scope, no de una especificación).
Dos opciones independientes, ubicación (forma del repositorio) y forma (tamaño de la decisión):
-
Ubicación = forma del repositorio. Repositorio único →
docs/specs/. Monorepo →docs/specs/<workspace>/para una decisión de workspace,docs/specs/_root/para una de todo el repositorio (refleja el alcance). La numeración es por ubicación (escanea ese directorio para el siguienteNNNN). Llama a la ubicación resuelta$SPEC_DIR. -
Forma = tamaño de la decisión, la misma en cualquier forma de repositorio. Decisión simple: un archivo
$SPEC_DIR/NNNN-title.md(todo en línea, escrito de forma concisa). Una sombrilla (subdecisiones relacionadas), una decisión pesada o fundamental, o una que justifique unverify.mdusa la forma de directorio:$SPEC_DIR/NNNN-title/conindex.mdcomo su archivo principal más unrationale.mdjunto a él (y especificaciones hijasNNNN-<child>.mdpara una sombrilla). Nunca dupliques el nombre (NNNN-title/NNNN-title.md); el directorio lleva el número, el archivo principal esindex.md. Por defecto, un solo archivo.Una especificación de directorio siempre tiene exactamente dos archivos principales (más
verify.mdopcional y especificaciones hijas):index.md: la especificación de construcción que/developlee:## Resumen,## Requisitos,## Decisión, la sección de diseño/especificación,## Plan de construcción,## Consecuencias,## Seguimientoy un puntero de una línea## Racionalarationale.md. Para una sombrilla también comienza con un manifiesto## Estructuraque lista y enlaza cada especificación hija (una línea cada una: qué es más qué decisión respalda), y mantiene cualquier contrato entre hijas.rationale.md: el registro de la decisión que/developomite:## Contexto,## Opciones consideradas,## Racional, la sección## Referenciasy cualquier evidencia voluminosa (inventarios, auditorías) bajo su propio subtítulo. No hay carpetaresearch/; toda la evidencia vive aquí.- Especificaciones hijas (solo sombrilla) son archivos planos
NNNN-<child>.md, cada uno lo suficientemente completo para construir desde sí mismo con un breve racional en línea (no su propiorationale.md); promueve una hija a su propio directorio solo cuando se vuelva pesada. Los contratos entre hijas viven en elindex.mdde la sombrilla.
-
Una excepción estrecha en el alcance: después de confirmar la especificación, actualiza la función coincidente a la forma lista para construir (ediciones exactas en Después de escribir la especificación, paso 3). Nunca vuelques la lista de tareas atómicas en el alcance. Sin función coincidente: ofrece inscribir una (ver el paso de derivar tareas).
Base de artefactos. las especificaciones viven bajo docs/ por defecto. Si docs/ es un sitio de documentación publicado (docusaurus.config.*, .vitepress/, mkdocs.yml, Astro Starlight o Nextra detectados), usa .workflow/ en su lugar (.workflow/specs/). Siempre sigue la base que ya exista (las rutas aquí asumen docs/).
Portabilidad (cualquier sistema operativo, cualquier agente)
- Comandos:
gites la única CLI requerida, la misma en cualquier sistema operativo. Otros fragmentos de shell (mkdir -p,date,find,ls,cat,wc) son referencias POSIX, no scripts literales; usa las herramientas de archivo multiplataforma de tu agente (leer, buscar/glob, escribir, crear directorio) y tu conocimiento de la fecha de hoy. Creadocs/specs/con tu herramienta de escritura, no conmkdir. - Archivos incluidos:
agent-prompt.md,agent-modes/*.mdyspec-template.mdviven en rutas relativas a la carpeta de este skill. El hilo principal los lee él mismo justo antes de escribir la especificación (ver Escribe la especificación):agent-prompt.md(la personalidad, reglas y formato de informe), el que coincide conagent-modes/<mode>.mdyspec-template.md(la estructura de la sección). Léelos solo en el momento de escritura, no durante la etapa previa, para que no ocupen contexto durante toda la entrevista. - ¿Sin soporte de preguntas interactivas? Usa lo que tu agente proporcione (un selector de opciones) y recurre solo donde falte: formula las rondas de preguntas como texto plano con las mismas opciones.
Ejecución
Paso 0: Verificación del tema (antes de la etapa previa)
Si no se proporcionó un tema de diseño (/architect sin argumento o una descripción vacía), detente y pregunta antes de hacer cualquier otra cosa:
"¿Qué decisión de diseño quieres resolver? Describe la función, sistema o elección que necesitas diseñar en una o dos oraciones."
Espera la respuesta; úsala como el tema de diseño antes de la etapa previa.
Etapa previa (modelo principal)
Ejecuta estos pasos (los comandos git son literales; todo lo demás usa las herramientas de archivo de tu agente):
- Actualidad (equipos):
git fetchsilenciosamente, elige la rama base (mainsigit rev-parse --verify maintiene éxito, sinomaster), cuenta las confirmaciones por detrás congit rev-list --count HEAD..origin/<base>. Si >0, advierte "haz pull primero" antes de decidir (un compañero puede haber añadido especificaciones o cambiado esta función). - Resuelve la ubicación de la especificación (
SPEC_DIR) = el workspace de alcance reflejado endocs/specs/: repositorio único →docs/specs/; workspace de monorepo →docs/specs/<workspace>/; todo el repositorio →docs/specs/_root/. Determina<workspace>como lo hace el alcance (tema/ruta/fila de alcance). Crea el directorio si falta. - Fecha de hoy: usa la fecha de hoy (inviértela en la especificación).
- Lista las especificaciones existentes en esta ubicación: archivos nombrados
NNNN-*.mdmás cualquierindex.mden$SPEC_DIR, para la numeración (por ubicación) y detección de decisiones relacionadas. - Cuenta los archivos fuente (por ejemplo
.ts,.tsx,.js,.py,.go,.rs,.java), excluyendonode_modules/,.git/,dist/. Informa cuánto código hay para leer y si delegar esa lectura a un subagentescout. - Lee el contexto del proyecto, la fuente de verdad para la pila y habilidades de la comunidad:
AGENTS.mdraíz (recurre aCLAUDE.md, si no, AUSENTE), más elAGENTS.mdanidado<area>/para el área de esta función si existe (por ejemplosrc/auth/AGENTS.mdpara una función de autenticación). - Lee el enfoque de construcción para ESTA función: la estrategia de entrega que gobierna cómo se ordena y divide el
## Plan de construcciónde la especificación. Precedencia: anulaciónEnfoquede la fila de alcance de esta función si se declara, si no, el valor predeterminado del proyecto (AGENTS.mdraíz primero, si no, el encabezado de alcance endocs/scope/). Una función con su propio enfoque se construye POR SU enfoque; otras usan el predeterminado del proyecto. Los cuatro implican ordenaciones materialmente diferentes del## Plan de construcción, no el mismo orden reetiquetado: Tracer Bullet levanta primero un hilo delgado de extremo a extremo a través de cada capa, luego espesa; Skateboard construye primero el todo utilizable más delgado, luego crece; Facade lidera con el shell de UI sobre datos de marcador de posición y difiere la migración (una ruta de prototipo); Journey completa las tareas de una ruta de usuario por completo antes de la siguiente. Es posible una variante específica del proyecto. Si ninguno registra una, anota la suposición y establece el predeterminado según el criterio del Staff/Principal (prefiere las rebanadas de Tracer Bullet de extremo a extremo para trabajo de producción). Deja que el enfoque registrado dé forma visiblemente al orden. - Localiza la función de alcance vinculada (si la hay): escanea económicamente los nombres de archivo/encabezados de
docs/scope/(incluyendo subdirectorios por workspace) en busca de una función que coincida con este tema; abre solo el archivo de alcance único que la contiene (scope.md, o el<epic>.mdcoincidente en una división). Si se encuentra, lee la intención de esa fila más cualquier semilla de criterios de aceptación (sembran la Etapa (a)) y recuerda el archivo/fila para los pasos de derivar tareas y vinculación; esto también resuelve el estado de vinculado a función vs independiente. Si ninguna fila coincide, n
… [truncado para traducción]