@cristiancorreau/forge 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +228 -0
- package/LICENSE +191 -0
- package/README.md +156 -0
- package/assets/adapters/claude-code/commands/deploy-check.md +12 -0
- package/assets/adapters/claude-code/commands/new-feature.md +11 -0
- package/assets/adapters/claude-code/commands/plan.md +116 -0
- package/assets/adapters/claude-code/commands/review.md +219 -0
- package/assets/adapters/claude-code/commands/session-close.md +109 -0
- package/assets/adapters/claude-code/commands/session-start.md +59 -0
- package/assets/adapters/claude-code/commands/ship.md +133 -0
- package/assets/adapters/claude-code/commands/wiki-ingest.md +7 -0
- package/assets/adapters/claude-code/commands/wiki-lint.md +5 -0
- package/assets/adapters/claude-code/commands/wiki-query.md +7 -0
- package/assets/adapters/claude-code/commands/work.md +101 -0
- package/assets/adapters/claude-code/generate-claude-md.py +304 -0
- package/assets/adapters/codex/commands/plan.md +63 -0
- package/assets/adapters/codex/commands/review.md +53 -0
- package/assets/adapters/codex/commands/session-close.md +53 -0
- package/assets/adapters/codex/commands/session-start.md +49 -0
- package/assets/adapters/codex/commands/ship.md +53 -0
- package/assets/adapters/codex/commands/work.md +53 -0
- package/assets/adapters/codex/generate-codex-config.py +269 -0
- package/assets/adapters/codex/hooks/codex.yaml.tpl +43 -0
- package/assets/adapters/codex/hooks/forge-codex-finish.sh +158 -0
- package/assets/adapters/codex/hooks/forge-codex-start.sh +186 -0
- package/assets/adapters/kiro/generate-steering.py +367 -0
- package/assets/adapters/opencode/HOOKS.md +123 -0
- package/assets/adapters/opencode/commands/plan.md +119 -0
- package/assets/adapters/opencode/commands/review.md +164 -0
- package/assets/adapters/opencode/commands/session-close.md +111 -0
- package/assets/adapters/opencode/commands/session-start.md +62 -0
- package/assets/adapters/opencode/commands/ship.md +135 -0
- package/assets/adapters/opencode/commands/work.md +82 -0
- package/assets/adapters/opencode/generate-agents-md.py +262 -0
- package/assets/core/agents/backend-engineer.md +61 -0
- package/assets/core/agents/compliance-reviewer.md +83 -0
- package/assets/core/agents/docs-writer.md +77 -0
- package/assets/core/agents/frontend-engineer.md +70 -0
- package/assets/core/agents/orchestrator.md +104 -0
- package/assets/core/agents/security-auditor.md +54 -0
- package/assets/core/agents/test-engineer.md +57 -0
- package/assets/core/hooks/hooks-registry.yaml +48 -0
- package/assets/core/hooks/post-turn-check.sh +139 -0
- package/assets/core/hooks/pre-bash-check.py +202 -0
- package/assets/core/hooks/pre-edit-check.py +317 -0
- package/assets/core/hooks/session-start.sh +184 -0
- package/assets/core/schemas/project.schema.json +503 -0
- package/assets/core/skills/README.md +88 -0
- package/assets/core/skills/aitmpl-search/SKILL.md +74 -0
- package/assets/core/skills/browser-test/SKILL.md +177 -0
- package/assets/core/skills/db-migrate/SKILL.md +163 -0
- package/assets/core/skills/local2prod/SKILL.md +147 -0
- package/assets/core/skills/new-feature/SKILL.md +155 -0
- package/assets/core/skills/obsidian-sync/SKILL.md +152 -0
- package/assets/core/skills/phase-kickoff/SKILL.md +69 -0
- package/assets/core/skills/security-audit/SKILL.md +125 -0
- package/assets/core/skills/spec/SKILL.md +72 -0
- package/assets/core/skills/wiki-ingest/SKILL.md +183 -0
- package/assets/core/skills/wiki-lint/SKILL.md +109 -0
- package/assets/core/skills/wiki-query/SKILL.md +100 -0
- package/assets/core/templates/claude-md/architecture.rules +20 -0
- package/assets/core/templates/claude-md/global.md +30 -0
- package/assets/core/templates/claude-md/project.md +36 -0
- package/assets/core/templates/daily-note.md +38 -0
- package/assets/core/templates/spec-template.md +43 -0
- package/assets/core/workflows/sdd.md +69 -0
- package/assets/core/workflows/sprint.md +59 -0
- package/assets/forge.py +1265 -0
- package/assets/hooks/pre-commit +43 -0
- package/assets/manifest.json +274 -0
- package/assets/profiles/astro/README.md +24 -0
- package/assets/profiles/astro/agents/frontend-engineer.md +74 -0
- package/assets/profiles/django/agents/api-engineer.md +83 -0
- package/assets/profiles/expo/README.md +24 -0
- package/assets/profiles/expo/agents/mobile-engineer.md +69 -0
- package/assets/profiles/express/agents/api-engineer.md +60 -0
- package/assets/profiles/fastapi/README.md +32 -0
- package/assets/profiles/fastapi/agents/api-engineer.md +87 -0
- package/assets/profiles/go-gin/agents/api-engineer.md +98 -0
- package/assets/profiles/hono-drizzle/README.md +31 -0
- package/assets/profiles/hono-drizzle/agents/api-engineer.md +82 -0
- package/assets/profiles/laravel/README.md +32 -0
- package/assets/profiles/laravel/agents/api-engineer.md +114 -0
- package/assets/profiles/laravel/agents/fullstack-engineer.md +67 -0
- package/assets/profiles/laravel/agents/migration-specialist.md +420 -0
- package/assets/profiles/nestjs/agents/api-engineer.md +79 -0
- package/assets/profiles/nextjs-admin/README.md +32 -0
- package/assets/profiles/nextjs-admin/agents/admin-engineer.md +78 -0
- package/assets/profiles/playwright-crawler/agents/scanner-engineer.md +51 -0
- package/assets/profiles/rails/agents/fullstack-engineer.md +61 -0
- package/assets/profiles/sveltekit/agents/frontend-engineer.md +96 -0
- package/assets/profiles/vuenuxt/agents/frontend-engineer.md +82 -0
- package/assets/profiles/wordpress/README.md +30 -0
- package/assets/profiles/wordpress/agents/divi-engineer.md +273 -0
- package/assets/profiles/wordpress/agents/elementor-engineer.md +310 -0
- package/assets/profiles/wordpress/agents/wp-engineer.md +216 -0
- package/assets/requirements.txt +2 -0
- package/assets/scripts/aitmpl-search.py +808 -0
- package/assets/scripts/forge-add-opportunities.py +92 -0
- package/assets/scripts/forge-audit.py +1061 -0
- package/assets/scripts/forge-generate-all.py +283 -0
- package/assets/scripts/forge-init.py +900 -0
- package/assets/scripts/forge-migrate-project-yaml.py +397 -0
- package/assets/scripts/forge-scaffold-profile.py +181 -0
- package/assets/scripts/forge-teardown.py +193 -0
- package/assets/scripts/forge-validate-project-yaml.py +457 -0
- package/assets/scripts/forge-wizard.py +1003 -0
- package/assets/scripts/setup-codex.sh +229 -0
- package/assets/scripts/team-install.sh +147 -0
- package/assets/scripts/token-stats.py +201 -0
- package/assets/templates/modes/enterprise.yaml.tpl +114 -0
- package/assets/templates/modes/multi-runtime.yaml.tpl +89 -0
- package/assets/templates/modes/new-stack.yaml.tpl +101 -0
- package/assets/templates/modes/startup.yaml.tpl +74 -0
- package/assets/templates/project.yaml.tpl +185 -0
- package/assets/templates/wiki/concepts/_template.md +22 -0
- package/assets/templates/wiki/entities/_template.md +19 -0
- package/assets/templates/wiki/index.md +32 -0
- package/assets/templates/wiki/log.md +6 -0
- package/assets/templates/wiki/sources/_template.md +25 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +64 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/audit.d.ts +2 -0
- package/dist/commands/audit.d.ts.map +1 -0
- package/dist/commands/audit.js +21 -0
- package/dist/commands/audit.js.map +1 -0
- package/dist/commands/doctor.d.ts +2 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +58 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/generate.d.ts +2 -0
- package/dist/commands/generate.d.ts.map +1 -0
- package/dist/commands/generate.js +27 -0
- package/dist/commands/generate.js.map +1 -0
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +22 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/validate.d.ts +2 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +20 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/lib/paths.d.ts +10 -0
- package/dist/lib/paths.d.ts.map +1 -0
- package/dist/lib/paths.js +49 -0
- package/dist/lib/paths.js.map +1 -0
- package/dist/lib/python.d.ts +4 -0
- package/dist/lib/python.d.ts.map +1 -0
- package/dist/lib/python.js +46 -0
- package/dist/lib/python.js.map +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# Skill: wiki-query
|
|
2
|
+
|
|
3
|
+
Responde preguntas usando el wiki del proyecto como base de conocimiento,
|
|
4
|
+
citando las páginas relevantes. Opcionalmente archiva la respuesta como página
|
|
5
|
+
de síntesis.
|
|
6
|
+
|
|
7
|
+
Triggers: /wiki-query, "¿qué dice el wiki sobre", "buscar en wiki", "qué
|
|
8
|
+
sabemos de", "wiki:", "query:", "consultar wiki", "what does the wiki say about",
|
|
9
|
+
"look up in wiki".
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Cuándo usar este skill
|
|
14
|
+
|
|
15
|
+
- Antes de implementar algo que el wiki podría ya tener documentado
|
|
16
|
+
- Para responder preguntas sobre decisiones pasadas, conceptos técnicos o regulación
|
|
17
|
+
- Cuando el usuario pregunta por algo que podría estar en el conocimiento acumulado del proyecto
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Protocolo de consulta
|
|
22
|
+
|
|
23
|
+
### Paso 1 — Leer el índice
|
|
24
|
+
|
|
25
|
+
Leer `docs/wiki/index.md` para identificar qué páginas son relevantes a la pregunta.
|
|
26
|
+
|
|
27
|
+
Si no hay wiki (`docs/wiki/` no existe o está vacío): indicar que el wiki está vacío
|
|
28
|
+
y sugerir usar `/wiki-ingest` para agregar conocimiento.
|
|
29
|
+
|
|
30
|
+
### Paso 2 — Leer páginas relevantes
|
|
31
|
+
|
|
32
|
+
Leer las páginas identificadas. Prioridad:
|
|
33
|
+
|
|
34
|
+
1. `synthesis/` — síntesis cross-cutting ya compiladas
|
|
35
|
+
2. `concepts/` — definiciones y detalles técnicos
|
|
36
|
+
3. `entities/` — contexto sobre proyectos, personas, sistemas
|
|
37
|
+
4. `sources/` — si se necesita detalle de una fuente específica
|
|
38
|
+
|
|
39
|
+
Leer solo lo necesario — no cargar todo el wiki si la pregunta es acotada.
|
|
40
|
+
|
|
41
|
+
### Paso 3 — Responder con citas
|
|
42
|
+
|
|
43
|
+
Formato de respuesta:
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
<Respuesta concisa y directa>
|
|
47
|
+
|
|
48
|
+
**Fuentes wiki:**
|
|
49
|
+
- [[concepts/nombre]] — extracto relevante
|
|
50
|
+
- [[entities/nombre]] — extracto relevante
|
|
51
|
+
|
|
52
|
+
**Gaps detectados:** <páginas que harían falta pero no existen>
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Si el wiki no tiene suficiente información, decirlo explícitamente y sugerir
|
|
56
|
+
qué fuentes ingestar para cubrir el gap.
|
|
57
|
+
|
|
58
|
+
### Paso 4 — Archivar (opcional)
|
|
59
|
+
|
|
60
|
+
Si la pregunta produjo una síntesis nueva (no trivial, reutilizable), archivarla:
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
docs/wiki/synthesis/<tema>.md
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Formato:
|
|
67
|
+
```markdown
|
|
68
|
+
---
|
|
69
|
+
title: <Pregunta o tema>
|
|
70
|
+
tags: [tag1, tag2]
|
|
71
|
+
sources: [[[concepts/X]], [[entities/Y]]]
|
|
72
|
+
date: YYYY-MM-DD
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
# <Título>
|
|
76
|
+
|
|
77
|
+
<Síntesis completa con citas>
|
|
78
|
+
|
|
79
|
+
## Páginas relacionadas
|
|
80
|
+
- [[concepts/X]]
|
|
81
|
+
- [[entities/Y]]
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Agregar al `index.md` y al `log.md`.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Cuándo NO usar este skill
|
|
89
|
+
|
|
90
|
+
- Para preguntas sobre el estado actual del código → leer el código directamente
|
|
91
|
+
- Para preguntas sobre PRs o git → usar `git log` / `gh`
|
|
92
|
+
- Para preguntas donde el wiki claramente no tiene la respuesta → decirlo y sugerir ingest
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Relación con otros skills
|
|
97
|
+
|
|
98
|
+
- `wiki-ingest` popula el wiki que este skill consulta
|
|
99
|
+
- `wiki-lint` mantiene la integridad de los links que este skill cita
|
|
100
|
+
- Invocado implícitamente por `new-feature` para leer contexto antes de implementar
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Convenciones de arquitectura — <NOMBRE_PROYECTO>
|
|
2
|
+
|
|
3
|
+
Reglas específicas de arquitectura que Claude debe seguir en este proyecto.
|
|
4
|
+
Editar directamente — no se regenera con forge-init.
|
|
5
|
+
|
|
6
|
+
## Estructura de directorios
|
|
7
|
+
|
|
8
|
+
<A completar por el equipo según el proyecto>
|
|
9
|
+
|
|
10
|
+
## Convenciones de naming
|
|
11
|
+
|
|
12
|
+
<A completar>
|
|
13
|
+
|
|
14
|
+
## Patrones prohibidos
|
|
15
|
+
|
|
16
|
+
<A completar: qué NO hacer en este codebase>
|
|
17
|
+
|
|
18
|
+
## Decisiones de arquitectura (ADRs)
|
|
19
|
+
|
|
20
|
+
Ver `docs/architecture/adr/` para decisiones formales e inmutables.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Instrucciones globales — <NOMBRE_DEV>
|
|
2
|
+
|
|
3
|
+
Reglas que aplican a todos mis proyectos con Claude Code.
|
|
4
|
+
|
|
5
|
+
## Idioma y comunicación
|
|
6
|
+
- Responder en español por defecto. Cambiar a inglés si el proyecto lo requiere.
|
|
7
|
+
- Respuestas concisas — ir directo al punto.
|
|
8
|
+
- No usar emojis salvo que los use yo primero.
|
|
9
|
+
|
|
10
|
+
## Commits (todos mis proyectos)
|
|
11
|
+
- Conventional Commits: feat:, fix:, docs:, refactor:, chore:, test:
|
|
12
|
+
- Mensajes en inglés, tiempo presente imperativo
|
|
13
|
+
- Siempre incluir: Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
14
|
+
|
|
15
|
+
## Seguridad (todos mis proyectos)
|
|
16
|
+
- Nunca hardcodear tokens, passwords o claves en archivos que van a git
|
|
17
|
+
- Verificar autenticación Y autorización en cada endpoint
|
|
18
|
+
- Usar parámetros preparados — nunca concatenar input del usuario en SQL
|
|
19
|
+
- No exponer error.message al cliente en producción
|
|
20
|
+
|
|
21
|
+
## Herramientas
|
|
22
|
+
- Preferir Read/Edit/Write sobre Bash(cat/sed/echo) para archivos
|
|
23
|
+
- Reservar Bash para operaciones de sistema sin herramienta dedicada
|
|
24
|
+
- Usar Grep para buscar en código, Glob para listar archivos
|
|
25
|
+
|
|
26
|
+
## Deploy (todos mis proyectos)
|
|
27
|
+
- Esperar state: READY antes de dar deploy por terminado
|
|
28
|
+
- Verificar runtime logs después del deploy, no solo el build
|
|
29
|
+
- Nunca force push a main/master
|
|
30
|
+
- Max 1 poll/minuto a APIs de deploy
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# <NOMBRE_PROYECTO> — Contexto del proyecto
|
|
2
|
+
|
|
3
|
+
Generado por forge v<VERSION>. Actualizar con `/forge generate-claude-md` o `python3 .agentic/scripts/forge-init.py --tool claude-code --force`.
|
|
4
|
+
|
|
5
|
+
## Stack
|
|
6
|
+
|
|
7
|
+
- Backend: <BACKEND>
|
|
8
|
+
- Frontend: <FRONTEND>
|
|
9
|
+
- Base de datos: <DATABASE>
|
|
10
|
+
- Package manager: <PACKAGE_MANAGER>
|
|
11
|
+
|
|
12
|
+
## Agentes disponibles
|
|
13
|
+
|
|
14
|
+
<TABLA_AGENTES_CON_SCOPE>
|
|
15
|
+
|
|
16
|
+
## Slash commands
|
|
17
|
+
|
|
18
|
+
| Comando | Cuándo usarlo |
|
|
19
|
+
|---------|---------------|
|
|
20
|
+
| `/session-start` | Inicio de cada sesión de trabajo |
|
|
21
|
+
| `/session-close` | Cierre de sesión: commit, daily-note, PR |
|
|
22
|
+
| `/plan <fase> "<título>"` | Crear spec antes de implementar |
|
|
23
|
+
| `/work` | Implementar una spec aprobada con agent team |
|
|
24
|
+
| `/review` | Revisión de código antes de ship |
|
|
25
|
+
| `/ship` | Deploy con verificación en producción |
|
|
26
|
+
|
|
27
|
+
## Reglas del proyecto
|
|
28
|
+
|
|
29
|
+
1. Spec antes que código — sin spec en `docs/specs/`, sin implementación.
|
|
30
|
+
2. No editar código en main — crear feature branch con `/session-start`.
|
|
31
|
+
3. Conventional Commits siempre.
|
|
32
|
+
4. Compliance reviewer obligatorio si toca datos de usuarios (mode: <MODE>).
|
|
33
|
+
|
|
34
|
+
## Estructura del proyecto
|
|
35
|
+
|
|
36
|
+
<ESTRUCTURA_DIRECTORIOS>
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Session {{DATE}} — {{TOPIC}}
|
|
2
|
+
|
|
3
|
+
**Branch:** `{{BRANCH}}`
|
|
4
|
+
**Dev:** {{DEV_NAME}}
|
|
5
|
+
|
|
6
|
+
## Completado en esta sesión
|
|
7
|
+
|
|
8
|
+
<!-- Lista de qué se implementó/cambió -->
|
|
9
|
+
-
|
|
10
|
+
|
|
11
|
+
## Archivos modificados
|
|
12
|
+
|
|
13
|
+
<!-- Output de: git diff --stat HEAD~1..HEAD -->
|
|
14
|
+
```
|
|
15
|
+
{{GIT_DIFF_STAT}}
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Commits
|
|
19
|
+
|
|
20
|
+
<!-- Output de: git log --oneline HEAD~5..HEAD -->
|
|
21
|
+
```
|
|
22
|
+
{{GIT_LOG}}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Decisiones tomadas
|
|
26
|
+
|
|
27
|
+
<!-- Decisiones de diseño o arquitectura que vale registrar -->
|
|
28
|
+
-
|
|
29
|
+
|
|
30
|
+
## Blockers para próxima sesión
|
|
31
|
+
|
|
32
|
+
<!-- ¿Quedó algo incompleto o bloqueado? -->
|
|
33
|
+
-
|
|
34
|
+
|
|
35
|
+
## Issues trabajados
|
|
36
|
+
|
|
37
|
+
<!-- Si el proyecto tiene GitHub Project configurado -->
|
|
38
|
+
{{GITHUB_ISSUES}}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# [ID] Título de la Feature
|
|
2
|
+
|
|
3
|
+
> Estado: DRAFT | REVIEW | APPROVED | IMPLEMENTED
|
|
4
|
+
> Responsable: [nombre o rol]
|
|
5
|
+
> Creada: YYYY-MM-DD | Actualizada: YYYY-MM-DD
|
|
6
|
+
|
|
7
|
+
## Contexto
|
|
8
|
+
|
|
9
|
+
Por qué existe esta feature. Qué problema resuelve. Qué pasa si no la hacemos.
|
|
10
|
+
|
|
11
|
+
## Decisión
|
|
12
|
+
|
|
13
|
+
Qué vamos a implementar exactamente. Ser específico: endpoints, tablas, componentes.
|
|
14
|
+
|
|
15
|
+
## Alternativas consideradas
|
|
16
|
+
|
|
17
|
+
| Opción | Pros | Contras | Descartada por |
|
|
18
|
+
|--------|------|---------|----------------|
|
|
19
|
+
| Opción A | ... | ... | ... |
|
|
20
|
+
| Opción B | ... | ... | ... |
|
|
21
|
+
|
|
22
|
+
## Criterios de aceptación
|
|
23
|
+
|
|
24
|
+
- [ ] Criterio verificable 1
|
|
25
|
+
- [ ] Criterio verificable 2
|
|
26
|
+
- [ ] Criterio verificable N
|
|
27
|
+
|
|
28
|
+
## Impacto de compliance
|
|
29
|
+
|
|
30
|
+
Si el proyecto tiene `compliance.frameworks` configurado, completar:
|
|
31
|
+
|
|
32
|
+
- **Ley 21.719**: art. X → [descripción del impacto]
|
|
33
|
+
- **GDPR**: Art. Y → [descripción del impacto]
|
|
34
|
+
- No aplica (si no hay impacto de compliance)
|
|
35
|
+
|
|
36
|
+
## Dependencias
|
|
37
|
+
|
|
38
|
+
- Requiere que [otra spec ID] esté implementada
|
|
39
|
+
- Bloqueada por [issue/ticket]
|
|
40
|
+
|
|
41
|
+
## Notas de implementación
|
|
42
|
+
|
|
43
|
+
Cualquier decisión tomada durante la implementación que no estaba en la spec original.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Spec-Driven Development (SDD)
|
|
2
|
+
|
|
3
|
+
El flujo de trabajo central del framework forge.
|
|
4
|
+
|
|
5
|
+
## Principio
|
|
6
|
+
|
|
7
|
+
**Spec antes que código, siempre.**
|
|
8
|
+
|
|
9
|
+
Si no hay spec aprobada en `docs/specs/`, no se empieza a implementar.
|
|
10
|
+
Esta regla no tiene excepciones.
|
|
11
|
+
|
|
12
|
+
## Flujo completo
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
1. SPEC
|
|
16
|
+
├── Identificar la feature a implementar
|
|
17
|
+
├── Crear spec en docs/specs/[ID]-[nombre].md
|
|
18
|
+
│ (usar skill: spec para la plantilla)
|
|
19
|
+
├── Revisar dependencias (¿qué specs deben estar listas primero?)
|
|
20
|
+
└── Estado: DRAFT → [humano/lead aprueba] → APPROVED
|
|
21
|
+
|
|
22
|
+
2. KICKOFF
|
|
23
|
+
├── Leer spec aprobada
|
|
24
|
+
├── Mapear agentes necesarios
|
|
25
|
+
├── Identificar trabajo paralelo vs secuencial
|
|
26
|
+
└── Spawnear team (usar skill: phase-kickoff)
|
|
27
|
+
|
|
28
|
+
3. IMPLEMENTACIÓN
|
|
29
|
+
├── Cada agente trabaja en su scope
|
|
30
|
+
├── Tests junto con el código (no al final)
|
|
31
|
+
└── Si hay decisión no contemplada → actualizar spec antes de continuar
|
|
32
|
+
|
|
33
|
+
4. REVIEW
|
|
34
|
+
├── Compliance review (si el proyecto tiene frameworks configurados)
|
|
35
|
+
├── Security review (si hay endpoints nuevos o manejo de auth)
|
|
36
|
+
└── Test coverage satisfactorio
|
|
37
|
+
|
|
38
|
+
5. MERGE
|
|
39
|
+
├── Actualizar spec a estado IMPLEMENTED
|
|
40
|
+
├── Actualizar CLAUDE.md sección "Phases activas"
|
|
41
|
+
└── Tag de release si corresponde
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Reglas del flujo
|
|
45
|
+
|
|
46
|
+
- **Sin spec → sin código**: el orchestrator rechaza spawnear agentes sin spec aprobada.
|
|
47
|
+
- **Una spec por feature atómica**: si no puede implementarse en un sprint, dividirla.
|
|
48
|
+
- **Specs son living documents**: actualizarlas durante la implementación, no solo al inicio.
|
|
49
|
+
- **Los ADRs son inmutables**: una vez aprobado, crear uno nuevo para cambiar una decisión.
|
|
50
|
+
|
|
51
|
+
## Cómo crear una spec rápido
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
# 1. Crear el archivo
|
|
55
|
+
cp docs/specs/_template.md docs/specs/[ID]-[nombre].md
|
|
56
|
+
|
|
57
|
+
# 2. Completar los campos
|
|
58
|
+
# - Contexto: por qué existe esta feature
|
|
59
|
+
# - Decisión: qué vamos a implementar exactamente
|
|
60
|
+
# - Criterios de aceptación: lista de checkboxes verificables
|
|
61
|
+
|
|
62
|
+
# 3. Marcar como APPROVED cuando el humano/lead da el OK
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Señales de alerta
|
|
66
|
+
|
|
67
|
+
- "Lo hacemos rápido y documentamos después" → STOP. Spec primero.
|
|
68
|
+
- "Esto es tan chico que no necesita spec" → Si tarda más de 2h, necesita spec.
|
|
69
|
+
- "Ya sé lo que hay que hacer" → Escríbelo en la spec. Si es obvio, tardás 10 minutos.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Sprint Workflow
|
|
2
|
+
|
|
3
|
+
Cómo gestionar sprints en proyectos forge.
|
|
4
|
+
|
|
5
|
+
## Estructura de un sprint
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
Sprint N (14 días por defecto)
|
|
9
|
+
├── Día 1-2: Kickoff
|
|
10
|
+
│ ├── Revisar specs pendientes de la phase
|
|
11
|
+
│ ├── Aprobar specs DRAFT que estén listas
|
|
12
|
+
│ └── Asignar trabajo al team
|
|
13
|
+
├── Día 3-11: Implementación
|
|
14
|
+
│ ├── Agentes trabajan en sus specs
|
|
15
|
+
│ ├── Daily: actualizar CLAUDE.md con bloqueadores
|
|
16
|
+
│ └── PRs abiertos por feature (no por archivo)
|
|
17
|
+
├── Día 12-13: Review
|
|
18
|
+
│ ├── Compliance review (si aplica)
|
|
19
|
+
│ ├── Security review (si aplica)
|
|
20
|
+
│ └── Testing E2E
|
|
21
|
+
└── Día 14: Cierre
|
|
22
|
+
├── Mergear PRs aprobados
|
|
23
|
+
├── Actualizar sección "Phases activas" en CLAUDE.md
|
|
24
|
+
└── Tag de release
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Tracking de progreso
|
|
28
|
+
|
|
29
|
+
El progreso se visualiza en `docs/progress.html`.
|
|
30
|
+
|
|
31
|
+
Para actualizar manualmente:
|
|
32
|
+
```bash
|
|
33
|
+
python3 .agentic/scripts/token-stats.py --patch-html docs/progress.html
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Se actualiza automáticamente en cada commit si el pre-commit hook está activo.
|
|
37
|
+
|
|
38
|
+
## Estado de las specs en CLAUDE.md
|
|
39
|
+
|
|
40
|
+
Mantener esta sección actualizada:
|
|
41
|
+
|
|
42
|
+
```markdown
|
|
43
|
+
## Phases activas y estado
|
|
44
|
+
|
|
45
|
+
- **Sprint actual:** Sprint N
|
|
46
|
+
- **Completadas:** A1, A2, A3
|
|
47
|
+
- **En curso:** B1, B2
|
|
48
|
+
- **Pendientes:** B3, B4, C1
|
|
49
|
+
- **Bloqueadores:** [descripción si hay]
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Criterios para "completada"
|
|
53
|
+
|
|
54
|
+
Una spec está COMPLETADA cuando:
|
|
55
|
+
- [ ] Código implementado y mergeado a main
|
|
56
|
+
- [ ] Tests pasando en CI
|
|
57
|
+
- [ ] Spec actualizada a estado IMPLEMENTED
|
|
58
|
+
- [ ] Compliance review aprobado (si aplica)
|
|
59
|
+
- [ ] Documentación actualizada (si aplica)
|