CommunityProgramación y desarrollogithub.com

toyin-software-factory/architect

Ejecuta /architect al elegir entre enfoques, diseñar una función o página, seleccionar una pila tecnológica, o cuando /develop dice que se debe tomar una decisión, en cualquier momento que una decisión técnica importante esté pendiente. Hace preguntas profundas, recomienda una respuesta y escribe una especificación de construcción en docs/specs/. Es propietario de todos los archivos de especificación.

¿Qué es architect?

Este skill de agente de IA, diseñado para plataformas como Claude Code, Cursor o Codex, actúa como un arquitecto técnico senior. Su propósito es guiar a los desarrolladores a través de decisiones técnicas complejas, como elegir entre enfoques de diseño, seleccionar una pila tecnológica o estandarizar patrones en todo el código base. Funciona en cuatro modos (FEATURE, ARCHITECTURE, ENHANCEMENT, CROSS-CUTTING) y produce especificaciones de construcción detalladas en `docs/specs/`. El flujo de trabajo incluye hacer preguntas profundas, recomendar una respuesta basada en experiencia y generar un documento de especificación que describe los requisitos, la decisión, el plan de construcción y las consecuencias. El agente principal escribe la especificación, mientras que subagentes económicos se encargan solo de tareas de solo lectura, como escanear el código base existente o buscar en la web. Esto garantiza un proceso eficiente y escalable. El skill también maneja la ratificación de decisiones asumidas, el versionado de especificaciones (crear, actualizar, reemplazar) y la diferenciación entre especificaciones vinculadas a características y decisiones independientes. Es particularmente útil en proyectos grandes con múltiples repositorios o monorepos, donde la consistencia y la documentación de decisiones son críticas.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/toyin-software-factory/factory-template/tree/HEAD/.claude/skills/architect

Installed? Explore more Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

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

Documentación

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:

ModoCuándoComportamiento de diseño
FEATUREDiseñar una nueva función desde cero, con o sin código existenteDiseño desde primeros principios, mejores prácticas, lectura mínima de código
ARCHITECTUREElegir una pila tecnológica o arquitectura fundamental para un nuevo proyectoEvaluación integral de la pila, patrones de la industria, sin código a leer
ENHANCEMENTMejorar, reemplazar o escalar algo que ya existeLeer código existente + especificaciones, comparación de opciones enfocada
CROSS-CUTTINGEstandarizar 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 Asumida que /develop registró 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 Propuesta y es dueño de su contenido pero nunca avanza el estado; /develop la avanza a En Progreso cuando la función entra en progreso, luego Aceptada cuando se construye y verifica (alcance hecho). La confirmación del ingeniero ratifica solo el contenido; Aceptada significa enviada.
  • Especificación de decisión independiente (fundacional/pila o estándar transversal, ninguna fila de alcance la enlaza): estado de decisión. Propuesta cuando se escribe, Aceptada una 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 tipo scout. 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 tipo researcher. 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 modelo enfáticamente en GA/Beta (los niveles donde viven estos errores), ofreciéndola en Alpha y recomendando Omitir en Prototype; 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 siguiente NNNN). 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 un verify.md usa la forma de directorio: $SPEC_DIR/NNNN-title/ con index.md como su archivo principal más un rationale.md junto a él (y especificaciones hijas NNNN-<child>.md para una sombrilla). Nunca dupliques el nombre (NNNN-title/NNNN-title.md); el directorio lleva el número, el archivo principal es index.md. Por defecto, un solo archivo.

    Una especificación de directorio siempre tiene exactamente dos archivos principales (más verify.md opcional y especificaciones hijas):

    • index.md: la especificación de construcción que /develop lee: ## Resumen, ## Requisitos, ## Decisión, la sección de diseño/especificación, ## Plan de construcción, ## Consecuencias, ## Seguimiento y un puntero de una línea ## Racional a rationale.md. Para una sombrilla también comienza con un manifiesto ## Estructura que 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 /develop omite: ## Contexto, ## Opciones consideradas, ## Racional, la sección ## Referencias y cualquier evidencia voluminosa (inventarios, auditorías) bajo su propio subtítulo. No hay carpeta research/; 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 propio rationale.md); promueve una hija a su propio directorio solo cuando se vuelva pesada. Los contratos entre hijas viven en el index.md de 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: git es 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. Crea docs/specs/ con tu herramienta de escritura, no con mkdir.
  • Archivos incluidos: agent-prompt.md, agent-modes/*.md y spec-template.md viven 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 con agent-modes/<mode>.md y spec-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 fetch silenciosamente, elige la rama base (main si git rev-parse --verify main tiene éxito, sino master), cuenta las confirmaciones por detrás con git 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 en docs/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-*.md más cualquier index.md en $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), excluyendo node_modules/, .git/, dist/. Informa cuánto código hay para leer y si delegar esa lectura a un subagente scout.
  • Lee el contexto del proyecto, la fuente de verdad para la pila y habilidades de la comunidad: AGENTS.md raíz (recurre a CLAUDE.md, si no, AUSENTE), más el AGENTS.md anidado <area>/ para el área de esta función si existe (por ejemplo src/auth/AGENTS.md para 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ón de la especificación. Precedencia: anulación Enfoque de la fila de alcance de esta función si se declara, si no, el valor predeterminado del proyecto (AGENTS.md raíz primero, si no, el encabezado de alcance en docs/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>.md coincidente 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]

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

Skills relacionados