Skip to main content

project-spec-workflow

Flujo obligatorio de spec antes de código. Cuando el usuario pide un proyecto nuevo o feature grande, el agente hace preguntas estructuradas, propone arquitectura modular, y genera SPEC.md antes de escribir una sola línea de código.

インストールへ移動

ソース情報

リポジトリ
Ntizar/NtizarBrainMasterMind
ソースの最終更新活動
2026年7月16日 08:02
検出された SKILL.md の言語
スペイン語
スター
2
フォーク
0

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

ファイルエクスプローラー
11 ファイル

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
project-spec-workflow
version
1.0.0
description
Flujo obligatorio de spec antes de código. Cuando el usuario pide un proyecto nuevo o feature grande, el agente hace preguntas estructuradas, propone arquitectura modular, y genera SPEC.md antes de escribir una sola línea de código.
tags
["mastermind","spec","architecture","workflow","planning","project-init"]
# Project Spec Workflow — Spec antes que código ## Cuándo se activa **AUTOMÁTICAMENTE** cuando el usuario pide: - Un proyecto nuevo ("hazme un visor de X", "crea un dashboard de Y") - Una feature grande (>3 archivos, nueva pestaña, nuevo módulo) - Un "rewrite" o reestructuración **NO se activa** para: - Fixes puntuales (1-2 archivos) - Preguntas o consultas - Cambios de estilo/contenido - Tareas que el usuario ya ha especificado completamente ## Principio fundamental > **Sin spec, no codeas.** Si el usuario no puede describir qué quiere en 5 minutos, el agente no puede construirlo en 5 horas. ## Fase 1 — Detección y propuesta inicial Cuando el usuario pide algo nuevo, el agente **NO empieza a codear**. En su lugar: 1. **Busca en memoria** si hay proyectos similares del usuario (GTFSSpain, DataHubEspana, GBFSSpain, etc.) 2. **Busca en ChromaDB** skills relevantes para el dominio 3. **Propone una visión inicial** basándose en lo que ya sabe ### Plantilla de propuesta inicial ``` He detectado que quieres [X]. Basándome en tu historial ([proyectos similares]), propongo: 🎯 **Qué será:** [1 frase] 📊 **Datos:** [fuentes probables] 🗺️ **Pantallas:** [lista inicial] ⚡ **Stack:** [tecnologías] 🚫 **No incluye:** [non-goals iniciales] Antes de construir nada, necesito que confirmes o ajustes estas decisiones: ``` ## Fase 2 — Preguntas estructuradas (NO abiertas) El agente hace preguntas **estructuradas con opciones**, nunca preguntas abiertas tipo "¿qué quieres?". El usuario responde rápido, no tiene que pensar desde cero. ### Bloque A — Alcance (qué hace y qué no) ``` A1. ¿Qué problema resuelve? [ ] Panel de visualización de datos [ ] Herramienta interactiva/análisis [ ] Visor cartográfico [ ] Otro: _____ A2. ¿Cuál es la pantalla principal? [ ] Mapa a pantalla completa + panel lateral [ ] Dashboard con tabs/pestañas [ ] Lista/tabla + detalle [ ] Otro: _____ A3. ¿Qué NO hace? (non-goals — tan importante como qué sí hace) [ ] No tiene backend (todo client-side) [ ] No tiene login/usuarios [ ] No tiene modo offline [ ] No guarda datos de usuario [ ] Otro: _____ ``` ### Bloque B — Datos ``` B1. ¿De dónde vienen los datos? [ ] APIs públicas (cuáles: _____) [ ] JSON estático (tamaño aproximado: _____) [ ] Mixto (algunos estáticos + APIs en vivo) [ ] No lo sé, propón tú B2. ¿Cada cuánto se actualizan? [ ] Tiempo real (segundos/minutos) [ ] Diario [ ] Estático (no cambia) [ ] Mixto B3. ¿Volumen de datos? [ ] Pequeño (< 100 registros) [ ] Medio (100-10K registros) [ ] Grande (10K-1M registros) [ ] No lo sé ``` ### Bloque C — Arquitectura y stack ``` C1. ¿Frontend, backend, o ambos? [ ] Solo frontend (estático, GitHub Pages) [ ] Frontend + proxy backend mínimo [ ] Full-stack (backend con DB) C2. ¿Tecnologías preferidas? [ ] Vanilla JS (sin framework) ← recomendado para visores [ ] React/Vue (si hay mucha interactividad) [ ] Three.js (si hay 3D) [ ] Lo que propongas tú C3. ¿Deploy dónde? [ ] GitHub Pages (estático) [ ] NaN.builders (con backend) [ ] No lo sé todavía ``` ### Bloque D — Lo que el usuario ya sabe ``` D1. ¿Hay algo que YA sabes cómo quieres que sea? (colores, estilo, disposición, comportamiento específico) → El usuario describe. El agente anota como REQUISITOS. D2. ¿Hay algo que HAYAS VISTO que te guste como referencia? (URLs, proyectos, diseños) → El agente busca referencias visuales si hace falta. D3. ¿Hay algo que TE HAYA PASADO antes que quieras evitar? (bugs recurrentes, patrones que no funcionan) → El agente anota como ANTI-PATRONES. ``` ## Fase 3 — Generación de SPEC.md Con las respuestas, el agente genera un documento `SPEC.md` en el repo del proyecto con esta estructura: ```markdown # [Nombre del proyecto] — SPEC ## Visión [1 frase: qué es y para qué] ## Alcance ### Sí hace - [lista de features] ### NO hace (non-goals) - [lista explícita de lo que no] ## Pantallas 1. [Pantalla 1]: [descripción] 2. [Pantalla 2]: [descripción] ## Datos | Fuente | Tipo | Actualización | Volumen | |--------|------|---------------|---------| | [fuente] | [API/JSON] | [frecuencia] | [tamaño] | ## Arquitectura ### Capas | Capa | Archivo | Responsabilidad | |------|---------|----------------| | Datos | data/*.json | Datos estáticos | | Estado | js/state.js | Estado global + carga | | API | js/api.js | Fetch de APIs | | UI | js/ui.js | Tabs, panels, eventos | | Render | js/render.js | Gráficos, mapa, tablas | ### Estado global [Diagrama de qué estado existe y quién lo posee] ### Interfaces entre módulos [Qué funciones expone cada módulo] ## Stack - Frontend: [tecnologías] - Deploy: [plataforma] ## Criterios de éxito - [métrica 1: ej, carga en < 3s] - [métrica 2: ej, click → respuesta < 500ms] - [métrica 3] ## Anti-patrones (lo que evitamos) - [patrón 1: ej, no usar estado global esparcido] - [patrón 2] ## Referencias - [proyectos similares del usuario] - [links de inspiración] ``` ## Fase 4 — Propuesta de arquitectura modular El agente propone la estructura de archivos **antes de codear**: ``` proyecto/ ├── SPEC.md ← La spec generada ├── index.html ← Solo estructura DOM, sin lógica ├── css/ │ └── styles.css ← Solo estilos ├── js/ │ ├── state.js ← Estado global + funciones de carga │ ├── api.js ← Fetch de APIs externas │ ├── map.js ← Solo mapa (init, markers, layers) │ ├── charts.js ← Solo gráficos │ ├── ui.js ← Tabs, panels, eventos de UI │ └── main.js ← Orquestador: init + wiring ├── data/ │ └── *.json ← Datos estáticos └── README.md ← Docs generadas desde SPEC ``` **Regla de oro:** Un archivo = una responsabilidad. Si el agente va a tocar 3+ archivos en una iteración simple, para y replantea. ## Fase 5 — Human loop (aprobación obligatoria) ``` 1. Agente presenta SPEC.md + arquitectura propuesta 2. Usuario revisa: ✅ o ajustes 3. Solo DESPUÉS del ✅ → empezar a codear ``` **El agente NUNCA empieza a codear sin SPEC aprobada.** ## Fase 6 — Iteración segura (en cada cambio posterior) Para cada feature nueva o cambio grande: ``` 1. IMPACTO: ¿Qué archivos toca? ¿Qué no toca? 2. ¿Actualiza SPEC.md? (si el alcance cambia) 3. Implementar 4. Verificar que lo anterior sigue funcionando 5. Commit ``` ### Plantilla de iteración ```markdown ## Iteración: [nombre] ### Qué quiero [1 frase] ### Archivos que toca - js/ui.js: [qué cambio] - js/state.js: [qué cambio] ### Archivos que NO toca - js/map.js - js/charts.js - data/*.json ### Verificación - [ ] Lo anterior sigue funcionando - [ ] Lo nuevo funciona - [ ] No hay console errors ``` ## Detección automática El agente debe detectar automáticamente cuándo activar este flujo. Señales: - "hazme", "crea", "construye", "quiero un" + nombre de proyecto → **proyecto nuevo** - "añade", "agrega", "ponle" + feature grande → **iteración con spec** - "arregla", "cambia", "modifica" + cosa pequeña → **fix directo, sin spec** Si hay duda, el agente pregunta: *"¿Es un proyecto nuevo o un cambio en algo existente?"* ## Integración con memoria El agente consulta memoria antes de proponer: - ¿Hay proyectos similares del usuario? → usar como referencia - ¿Hay preferencias de diseño? → aplicar (Aurora, colores, etc.) - ¿Hay anti-patrones conocidos? → evitar ## Referencias - **Template copiable:** `templates/SPEC-template.md` — starter file para generar SPEC.md en nuevos proyectos - **Demo real:** `references/datahubespana-spec-demo.md` — ejemplo aplicado a DataHubEspana (monolito 11K líneas → modular) - **SPEC.md completa de ejemplo:** `references/datahubespana-SPEC.md` — spec real generada para DataHubEspana - **Skill relacionado:** `spec-driven-development` (toolkit externo GitHub spec-kit) — `project-spec-workflow` es la adaptación interna del mismo concepto - **Skill umbrella:** `software-development` → sección "Spec-Driven Development" apunta a este skill - **Orquestación:** `mastermind-orchestration` → paso 0 del flujo activa este skill para proyectos nuevos ## Pitfalls - **No sobre-preguntar:** Si el usuario ya dio suficiente contexto en el primer mensaje, no hacer 20 preguntas. Hacer solo las que falten. - **No spec sin código:** La spec no es un ensayo. Si pasa de 2 páginas, es demasiado. Specs ejecutables, concisas. - **No ignorar la spec:** Una vez aprobada, la spec es el contrato. Si el agente se desvía, el usuario lo puede frenar con "vuelve a la spec". - **No codear sin ✅:** El human loop es obligatorio. Sin aprobación, no hay código. - **Proyectos de 1 archivo:** Si es algo pequeño (un solo HTML), la spec puede ser un comentario en el top del archivo. No necesita SPEC.md completo. - **Iteración sobre monolitos:** Si el proyecto ya existe como monolito (ej: index.html de 11K líneas), la spec debe incluir un PLAN DE EXTRACCIÓN: qué sacar a archivos separados y en qué orden.
GitHubで見る