@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.
Files changed (153) hide show
  1. package/CHANGELOG.md +228 -0
  2. package/LICENSE +191 -0
  3. package/README.md +156 -0
  4. package/assets/adapters/claude-code/commands/deploy-check.md +12 -0
  5. package/assets/adapters/claude-code/commands/new-feature.md +11 -0
  6. package/assets/adapters/claude-code/commands/plan.md +116 -0
  7. package/assets/adapters/claude-code/commands/review.md +219 -0
  8. package/assets/adapters/claude-code/commands/session-close.md +109 -0
  9. package/assets/adapters/claude-code/commands/session-start.md +59 -0
  10. package/assets/adapters/claude-code/commands/ship.md +133 -0
  11. package/assets/adapters/claude-code/commands/wiki-ingest.md +7 -0
  12. package/assets/adapters/claude-code/commands/wiki-lint.md +5 -0
  13. package/assets/adapters/claude-code/commands/wiki-query.md +7 -0
  14. package/assets/adapters/claude-code/commands/work.md +101 -0
  15. package/assets/adapters/claude-code/generate-claude-md.py +304 -0
  16. package/assets/adapters/codex/commands/plan.md +63 -0
  17. package/assets/adapters/codex/commands/review.md +53 -0
  18. package/assets/adapters/codex/commands/session-close.md +53 -0
  19. package/assets/adapters/codex/commands/session-start.md +49 -0
  20. package/assets/adapters/codex/commands/ship.md +53 -0
  21. package/assets/adapters/codex/commands/work.md +53 -0
  22. package/assets/adapters/codex/generate-codex-config.py +269 -0
  23. package/assets/adapters/codex/hooks/codex.yaml.tpl +43 -0
  24. package/assets/adapters/codex/hooks/forge-codex-finish.sh +158 -0
  25. package/assets/adapters/codex/hooks/forge-codex-start.sh +186 -0
  26. package/assets/adapters/kiro/generate-steering.py +367 -0
  27. package/assets/adapters/opencode/HOOKS.md +123 -0
  28. package/assets/adapters/opencode/commands/plan.md +119 -0
  29. package/assets/adapters/opencode/commands/review.md +164 -0
  30. package/assets/adapters/opencode/commands/session-close.md +111 -0
  31. package/assets/adapters/opencode/commands/session-start.md +62 -0
  32. package/assets/adapters/opencode/commands/ship.md +135 -0
  33. package/assets/adapters/opencode/commands/work.md +82 -0
  34. package/assets/adapters/opencode/generate-agents-md.py +262 -0
  35. package/assets/core/agents/backend-engineer.md +61 -0
  36. package/assets/core/agents/compliance-reviewer.md +83 -0
  37. package/assets/core/agents/docs-writer.md +77 -0
  38. package/assets/core/agents/frontend-engineer.md +70 -0
  39. package/assets/core/agents/orchestrator.md +104 -0
  40. package/assets/core/agents/security-auditor.md +54 -0
  41. package/assets/core/agents/test-engineer.md +57 -0
  42. package/assets/core/hooks/hooks-registry.yaml +48 -0
  43. package/assets/core/hooks/post-turn-check.sh +139 -0
  44. package/assets/core/hooks/pre-bash-check.py +202 -0
  45. package/assets/core/hooks/pre-edit-check.py +317 -0
  46. package/assets/core/hooks/session-start.sh +184 -0
  47. package/assets/core/schemas/project.schema.json +503 -0
  48. package/assets/core/skills/README.md +88 -0
  49. package/assets/core/skills/aitmpl-search/SKILL.md +74 -0
  50. package/assets/core/skills/browser-test/SKILL.md +177 -0
  51. package/assets/core/skills/db-migrate/SKILL.md +163 -0
  52. package/assets/core/skills/local2prod/SKILL.md +147 -0
  53. package/assets/core/skills/new-feature/SKILL.md +155 -0
  54. package/assets/core/skills/obsidian-sync/SKILL.md +152 -0
  55. package/assets/core/skills/phase-kickoff/SKILL.md +69 -0
  56. package/assets/core/skills/security-audit/SKILL.md +125 -0
  57. package/assets/core/skills/spec/SKILL.md +72 -0
  58. package/assets/core/skills/wiki-ingest/SKILL.md +183 -0
  59. package/assets/core/skills/wiki-lint/SKILL.md +109 -0
  60. package/assets/core/skills/wiki-query/SKILL.md +100 -0
  61. package/assets/core/templates/claude-md/architecture.rules +20 -0
  62. package/assets/core/templates/claude-md/global.md +30 -0
  63. package/assets/core/templates/claude-md/project.md +36 -0
  64. package/assets/core/templates/daily-note.md +38 -0
  65. package/assets/core/templates/spec-template.md +43 -0
  66. package/assets/core/workflows/sdd.md +69 -0
  67. package/assets/core/workflows/sprint.md +59 -0
  68. package/assets/forge.py +1265 -0
  69. package/assets/hooks/pre-commit +43 -0
  70. package/assets/manifest.json +274 -0
  71. package/assets/profiles/astro/README.md +24 -0
  72. package/assets/profiles/astro/agents/frontend-engineer.md +74 -0
  73. package/assets/profiles/django/agents/api-engineer.md +83 -0
  74. package/assets/profiles/expo/README.md +24 -0
  75. package/assets/profiles/expo/agents/mobile-engineer.md +69 -0
  76. package/assets/profiles/express/agents/api-engineer.md +60 -0
  77. package/assets/profiles/fastapi/README.md +32 -0
  78. package/assets/profiles/fastapi/agents/api-engineer.md +87 -0
  79. package/assets/profiles/go-gin/agents/api-engineer.md +98 -0
  80. package/assets/profiles/hono-drizzle/README.md +31 -0
  81. package/assets/profiles/hono-drizzle/agents/api-engineer.md +82 -0
  82. package/assets/profiles/laravel/README.md +32 -0
  83. package/assets/profiles/laravel/agents/api-engineer.md +114 -0
  84. package/assets/profiles/laravel/agents/fullstack-engineer.md +67 -0
  85. package/assets/profiles/laravel/agents/migration-specialist.md +420 -0
  86. package/assets/profiles/nestjs/agents/api-engineer.md +79 -0
  87. package/assets/profiles/nextjs-admin/README.md +32 -0
  88. package/assets/profiles/nextjs-admin/agents/admin-engineer.md +78 -0
  89. package/assets/profiles/playwright-crawler/agents/scanner-engineer.md +51 -0
  90. package/assets/profiles/rails/agents/fullstack-engineer.md +61 -0
  91. package/assets/profiles/sveltekit/agents/frontend-engineer.md +96 -0
  92. package/assets/profiles/vuenuxt/agents/frontend-engineer.md +82 -0
  93. package/assets/profiles/wordpress/README.md +30 -0
  94. package/assets/profiles/wordpress/agents/divi-engineer.md +273 -0
  95. package/assets/profiles/wordpress/agents/elementor-engineer.md +310 -0
  96. package/assets/profiles/wordpress/agents/wp-engineer.md +216 -0
  97. package/assets/requirements.txt +2 -0
  98. package/assets/scripts/aitmpl-search.py +808 -0
  99. package/assets/scripts/forge-add-opportunities.py +92 -0
  100. package/assets/scripts/forge-audit.py +1061 -0
  101. package/assets/scripts/forge-generate-all.py +283 -0
  102. package/assets/scripts/forge-init.py +900 -0
  103. package/assets/scripts/forge-migrate-project-yaml.py +397 -0
  104. package/assets/scripts/forge-scaffold-profile.py +181 -0
  105. package/assets/scripts/forge-teardown.py +193 -0
  106. package/assets/scripts/forge-validate-project-yaml.py +457 -0
  107. package/assets/scripts/forge-wizard.py +1003 -0
  108. package/assets/scripts/setup-codex.sh +229 -0
  109. package/assets/scripts/team-install.sh +147 -0
  110. package/assets/scripts/token-stats.py +201 -0
  111. package/assets/templates/modes/enterprise.yaml.tpl +114 -0
  112. package/assets/templates/modes/multi-runtime.yaml.tpl +89 -0
  113. package/assets/templates/modes/new-stack.yaml.tpl +101 -0
  114. package/assets/templates/modes/startup.yaml.tpl +74 -0
  115. package/assets/templates/project.yaml.tpl +185 -0
  116. package/assets/templates/wiki/concepts/_template.md +22 -0
  117. package/assets/templates/wiki/entities/_template.md +19 -0
  118. package/assets/templates/wiki/index.md +32 -0
  119. package/assets/templates/wiki/log.md +6 -0
  120. package/assets/templates/wiki/sources/_template.md +25 -0
  121. package/dist/cli.d.ts +3 -0
  122. package/dist/cli.d.ts.map +1 -0
  123. package/dist/cli.js +64 -0
  124. package/dist/cli.js.map +1 -0
  125. package/dist/commands/audit.d.ts +2 -0
  126. package/dist/commands/audit.d.ts.map +1 -0
  127. package/dist/commands/audit.js +21 -0
  128. package/dist/commands/audit.js.map +1 -0
  129. package/dist/commands/doctor.d.ts +2 -0
  130. package/dist/commands/doctor.d.ts.map +1 -0
  131. package/dist/commands/doctor.js +58 -0
  132. package/dist/commands/doctor.js.map +1 -0
  133. package/dist/commands/generate.d.ts +2 -0
  134. package/dist/commands/generate.d.ts.map +1 -0
  135. package/dist/commands/generate.js +27 -0
  136. package/dist/commands/generate.js.map +1 -0
  137. package/dist/commands/init.d.ts +2 -0
  138. package/dist/commands/init.d.ts.map +1 -0
  139. package/dist/commands/init.js +22 -0
  140. package/dist/commands/init.js.map +1 -0
  141. package/dist/commands/validate.d.ts +2 -0
  142. package/dist/commands/validate.d.ts.map +1 -0
  143. package/dist/commands/validate.js +20 -0
  144. package/dist/commands/validate.js.map +1 -0
  145. package/dist/lib/paths.d.ts +10 -0
  146. package/dist/lib/paths.d.ts.map +1 -0
  147. package/dist/lib/paths.js +49 -0
  148. package/dist/lib/paths.js.map +1 -0
  149. package/dist/lib/python.d.ts +4 -0
  150. package/dist/lib/python.d.ts.map +1 -0
  151. package/dist/lib/python.js +46 -0
  152. package/dist/lib/python.js.map +1 -0
  153. package/package.json +46 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,228 @@
1
+ # Changelog
2
+
3
+ Todos los cambios notables de forge se documentan en este archivo.
4
+
5
+ Formato: [Keep a Changelog](https://keepachangelog.com/es/1.0.0/)
6
+ Versioning: [Semantic Versioning](https://semver.org/lang/es/)
7
+
8
+ ---
9
+
10
+ ## [2.0.1] — 2026-05-18
11
+
12
+ ### Agregado
13
+ - `forge wiki` subcomando: `status`, `ingest`, `query`, `lint` (F1-F01)
14
+ - 45 tests nuevos: validador de project.yaml, migrador v1→v2, forge-generate-all, pre-bash-check
15
+ - Copyright headers en 7 scripts principales (Apache 2.0, SocialWeb 2026)
16
+ - `vscode-extension/forge-agent-framework-0.5.0.vsix` empaquetada y lista para instalar
17
+
18
+ ### Total: 509 tests pasando
19
+
20
+ ---
21
+
22
+ ## [2.0.0] — 2026-05-18
23
+
24
+ ### Agregado — Forge v2 Fase 3 (liberación pública)
25
+
26
+ #### Limpieza (F3-01)
27
+ - `LICENSE`: Apache 2.0, Copyright 2026 SocialWeb
28
+ - `docs/RELEASE-CHECKLIST.md`: checklist de liberación pública (seguridad, técnico, legal, operativo)
29
+ - Anonimización de referencias internas en `docs/plan/`: clientes reales → `Cliente-Media`, `Cliente-ONG`, etc.; proyectos internos → `proyecto-alpha`, `proyecto-beta`; `Bienes Nacionales` → `organismo-publico`
30
+
31
+ #### README y documentación (F3-02)
32
+ - README reescrito para público general: posicionamiento honesto, tabla comparativa vs cc-sdd/Bridle/wshobson, quick start de 4 pasos, sin referencias a clientes
33
+
34
+ #### Extensión VS Code (F3-04)
35
+ - Versión `0.2.1` → `0.5.0` (alineada con forge pre-milestone)
36
+ - 3 nuevos comandos: `forge: Generate All Runtimes`, `forge: Validate project.yaml`, `forge: Migrate project.yaml to v2`
37
+ - Handlers en `extension.ts` con confirmación para migración destructiva
38
+
39
+ #### Artículos (F3-05)
40
+ - `docs/content/linkedin-articles/`: 3 borradores listos para publicar
41
+ - "Por qué los agentes de IA necesitan un harness, no solo prompts"
42
+ - "Las cinco capas de un kit de desarrollo agéntico"
43
+ - "Cómo usamos agentes para enseñar gestión de proyectos de software"
44
+
45
+ ### Convenciones
46
+ - Versión `2.0.0` corresponde a Forge v2 completo (Fases 0–3)
47
+ - Milestone: `v2.0.0` — listo para publicación pública
48
+
49
+ ---
50
+
51
+ ## [0.5.0] — 2026-05-17
52
+
53
+ ### Agregado — Forge v2 Fase 2 (multi-runtime)
54
+
55
+ #### OpenCode (F2-01/02/03/04)
56
+ - `adapters/opencode/commands/`: 6 comandos adaptados para ejecución serial (plan, work, review, ship, session-start, session-close)
57
+ - `/work` en OpenCode: modo serial equivalente a `--serial` de Claude Code (sin agent teams paralelos)
58
+ - `/review`: veredicto APPROVED/CHANGES_REQUESTED/BLOCKED; escribe `.opencode/review-status.json`
59
+ - `/ship`: usa `vercel deploy` vía CLI en vez de MCP tools
60
+ - `adapters/opencode/HOOKS.md`: tabla de equivalencia hook-por-hook; todos los guardrails se embeben en AGENTS.md
61
+ - `adapters/opencode/generate-agents-md.py`: agrega sección de comandos SDD y reglas de guardrail al AGENTS.md generado
62
+ - `docs/runtimes/opencode.md`: guía completa con diferencias vs Claude Code, agent teams serial, limitaciones
63
+
64
+ #### Codex CLI (F2-05/06/07/08)
65
+ - `adapters/codex/commands/`: 6 prompt templates para uso con Codex CLI autónomo
66
+ - `adapters/codex/hooks/codex.yaml.tpl`: template de configuración con hooks `onStart`/`onFinish`
67
+ - `adapters/codex/hooks/forge-codex-start.sh`: checks determinísticos de entorno al inicio de sesión
68
+ - `adapters/codex/hooks/forge-codex-finish.sh`: typecheck/lint post-sesión por tipo de archivo
69
+ - `scripts/setup-codex.sh`: instalación automática del entorno Codex en 7 pasos
70
+ - `adapters/codex/generate-codex-config.py`: agrega SDD workflow, production safety rules y branch guard al AGENTS.md
71
+ - `docs/runtimes/codex.md`: guía completa con tabla de diferencias, uso diario y consideraciones de seguridad
72
+
73
+ #### Kiro (F2-09)
74
+ - `adapters/kiro/generate-steering.py`: agrega flujo SDD en `structure.md`, genera `commands.md` y hook `pre-edit-branch-guard.json`
75
+ - `docs/runtimes/kiro.md`: tablas de equivalencia de conceptos, guía de uso, roadmap para soporte completo
76
+ - `docs/architecture/adr/ADR-002-kiro-support-level.md`: decisión formal de soporte en nivel "monitoring"
77
+
78
+ #### Capa de traducción (F2-10)
79
+ - `scripts/forge-generate-all.py`: punto de entrada unificado para generar configs de todos los runtimes activos
80
+ - Auto-detección por marcadores de filesystem (`.claude/`, `.opencode/`, `.kiro/`, `AGENTS.md`)
81
+ - Flags: `--runtime`, `--dry-run`, `--force`
82
+ - `templates/project.yaml.tpl`: nueva sección `runtimes.active` con los 4 runtimes soportados
83
+ - `core/schemas/project.schema.json`: validación de la nueva sección `runtimes`
84
+ - `docs/runtimes/README.md`: índice de runtimes con tabla de nivel de soporte
85
+
86
+ ---
87
+
88
+ ## [0.4.0] — 2026-05-17
89
+
90
+ ### Agregado — Forge v2 Fase 1 (core commands + full stack)
91
+
92
+ #### Memory Layer (Capa 1)
93
+ - Templates `core/templates/claude-md/`: `global.md`, `project.md`, `architecture.rules` (separación 3 capas de CLAUDE.md)
94
+ - Template `core/templates/daily-note.md` con placeholders para `/session-close`
95
+ - Template `core/templates/spec-template.md` con secciones obligatorias (Problem, Non-goals, Acceptance, Compliance, Edge cases)
96
+ - `forge-init.py`: `_install_templates()` crea `docs/daily-notes/`, `docs/specs/_template.md`, `.claude/architecture.rules` automáticamente
97
+ - `generate-claude-md.py`: genera `.claude/architecture.rules` al crear CLAUDE.md si no existe
98
+ - Schema JSON Draft-07: `core/schemas/project.schema.json` para validar `project.yaml` v2
99
+ - Validador: `scripts/forge-validate-project-yaml.py` con flag `--json`, exit 1 en errores
100
+ - Migrador: `scripts/forge-migrate-project-yaml.py` de v1 → v2, soporta `--dry-run` y `--backup`
101
+ - Referencia completa: `docs/project-yaml-v2-reference.md` con tablas por sección
102
+
103
+ #### Knowledge Layer (Capa 2)
104
+ - Slash command `/plan` (3 modos): crear spec, listar specs, revisar con Planner-Critic
105
+ - Slash command `/work`: lee spec aprobada, propone team según mode, spawna teammates en paralelo
106
+ - Slash command `/review` (F1-B03): multi-agente en standard/enterprise; veredicto APPROVED/CHANGES_REQUESTED/BLOCKED; escribe `.claude/review-status.json` para `/ship`
107
+ - Slash command `/ship`: pipeline 10 pasos, polling max 1/min a Vercel, smoke tests, logs en tiempo real
108
+
109
+ #### Guardrail Layer (Capa 3)
110
+ - `core/hooks/hooks-registry.yaml`: declarativo por mode (universal/standard/enterprise) y stack
111
+ - `core/hooks/pre-bash-check.py`: bloquea comandos destructivos basado en incidente 2026-04-28
112
+ - `core/hooks/session-start.sh`: verificaciones determinísticas al inicio de sesión (tools, branch, env)
113
+ - `forge-init.py`: lee `hooks-registry.yaml` para instalar hooks según mode del proyecto
114
+ - Nuevas entradas en hooks-registry.yaml para stacks `nextjs-admin` (prisma-safety) y `laravel` (composer-check)
115
+
116
+ #### Delegation Layer (Capa 4)
117
+ - 7 agentes Tier 1 (`core/agents/`) actualizados con sección `## Forge v2` (spec-first, hooks awareness, scope rules)
118
+ - 7 perfiles Tier 2 actualizados a Forge v2: `hono-drizzle`, `nextjs-admin`, `laravel`, `fastapi`, `astro`, `expo`, `wordpress`
119
+ - `README.md` creado para cada perfil con agentes, cuándo usar, hooks específicos del stack, activación en `project.yaml`
120
+
121
+ #### Distribution Layer (Capa 5)
122
+ - `manifest.json`: inventario completo de agentes, perfiles, skills, comandos, hooks y schemas
123
+ - `docs/team-install.md`: guía de onboarding de 5 minutos para nuevos desarrolladores
124
+ - `scripts/team-install.sh`: script de instalación automática del equipo
125
+
126
+ ---
127
+
128
+ ## [0.3.0] — 2026-05-17
129
+
130
+ ### Agregado — Forge v2 Fase 0 (session lifecycle + hooks)
131
+ - Slash commands de ciclo de sesión: `/session-start` (3 escenarios, detección automática de branch) y `/session-close` (pipeline de 8 pasos: commit, changeset, GitHub Projects, daily-note, RELEASE-NOTES, rebase + PR)
132
+ - Hook `pre-edit-check.py` (PreToolUse): branch guard en main, detección de debug statements multi-stack (TS/PHP/Python/Ruby), detección de credenciales hardcodeadas
133
+ - Hook `post-turn-check.sh` (Stop): typecheck automático sobre archivos modificados, auto-detección de package manager, soporte `scripts.check` en project.yaml
134
+ - `forge-init.py`: instala hooks en `.claude/hooks/` del proyecto (función `install_hooks()`)
135
+ - `forge-init.py`: `session-start.md` y `session-close.md` se instalan siempre (sin requerir skill activa)
136
+ - `settings.json` ahora incluye configuración de hooks (`PreToolUse`, `Stop`) además de `permissions.allow`
137
+ - Documentación del plan v2: `docs/plan/forge-v2-plan.md`, `docs/plan/forge-v2-implementation.md`
138
+ - Bitácora de fricción: `docs/feedback/friction-log.md` con template y formato estándar
139
+ - Guía de migración: `docs/migration/v1-to-v1.5.md`
140
+
141
+ ### Convenciones
142
+ - Versión "Forge v1.5" del plan de arquitectura = `0.3.0` en semver
143
+
144
+ ---
145
+
146
+ ## [0.2.2] — 2026-05-05
147
+
148
+ ### Agregado
149
+ - Picker TUI de dos paneles en audit: lista navegable (izquierda) + detalle del ítem (derecha)
150
+ - `forge-init.py`: genera CLAUDE.md automáticamente desde el adapter de claude-code
151
+ - `forge-init.py`: inyecta `scope:` en el frontmatter de cada agente desde `agent_paths` en project.yaml
152
+ - `forge-init.py`: genera `.claude/settings.json` con `permissions.allow` según el stack del proyecto
153
+ - Slash commands nuevos: `/new-feature`, `/deploy-check`, `/review` instalados automáticamente por forge-init
154
+ - CLI: opción "Regenerar CLAUDE.md — sin reinstalar agentes" en el submenú de init
155
+ - Extensión VS Code: comando `forge: Regenerate CLAUDE.md` con icono en el panel lateral
156
+ - `generate-claude-md.py`: tabla "Agentes y su scope" en el CLAUDE.md generado
157
+ - `generate-claude-md.py`: soporte a `--force` para bypass del prompt interactivo
158
+ - `project.yaml.tpl`: sección `agent_paths` con keys api, frontend, admin, mobile, scanner
159
+ - Extensión VS Code: `showOpportunitiesPicker()` multi-select QuickPick con `canPickMany: true`
160
+ - Extensión VS Code: context states `forge.installed` / `forge.active` vía `setContext`
161
+ - Extensión VS Code: `AuditOpportunity` interface para parseo estructurado del JSON de audit
162
+
163
+ ### Cambiado
164
+ - Picker de oportunidades: reemplaza lista estática + prompt de texto por TUI de dos paneles
165
+ - CLI `menu_init()`: descripciones actualizadas mencionando settings.json y slash commands
166
+ - `ForgeActionsProvider`: incluye "Regenerate CLAUDE.md" en el panel de acciones
167
+ - Fallback a `_simple_opp_picker` en Windows, terminal <60 cols o modo no-TTY/CI
168
+
169
+ ---
170
+
171
+ ## [0.2.1] — 2026-05-04
172
+
173
+ ### Agregado
174
+ - Profile `laravel`: agentes `api-engineer`, `fullstack-engineer`, `migration-specialist` con ruta completa L6→L13
175
+ - Profile `wordpress`: agentes `wp-engineer`, `divi-engineer`, `elementor-engineer` (FSE, Divi 5, Elementor Pro)
176
+ - `scripts/forge-add-opportunities.py`: aplica profiles/skills seleccionados a `project.yaml` vía CLI o VS Code
177
+ - Filtrado inteligente de oportunidades en audit por stack declarado (`_PROFILE_RELEVANCE`)
178
+ - Picker interactivo numerado en terminal para seleccionar y aplicar oportunidades
179
+ - Catálogos `_SKILL_INFO` y `_PROFILE_INFO` con descripción y trigger por item
180
+ - Agentes especialistas: `forge-init-specialist`, `forge-audit-specialist`, `forge-catalog-specialist`
181
+ - VS Code: `showOpportunitiesPicker()` con QuickPick multi-select
182
+ - VS Code: vistas `forgeActionsView`, `forgeProjectView`, `forgeAgentsView` con `viewsWelcome`
183
+ - VS Code: campo `publisher: "socialwebcl"` en `package.json`
184
+ - GitHub Actions: workflow `tests.yml` con matrix Python 3.9/3.11/3.12
185
+ - Campo `last_verified` en agentes de terceros (Divi, Elementor) con check de expiración en audit
186
+ - Sección de extensión VS Code en README y `docs/guide.md`
187
+
188
+ ### Corregido
189
+ - Windows: `ModuleNotFoundError: No module named 'termios'` reemplazado por mensaje orientativo con exit limpio
190
+ - URL del submodule en README: `socialweb-cl` → `socialwebcl` (sin guión)
191
+ - Instrucciones de `git submodule update --init --recursive` para colaboradores nuevos
192
+ - Campo `summary` ausente en salida JSON de `forge-audit.py` (generaba falsa seguridad en CI)
193
+ - Flags `--forge` y `--only` declarados en docs pero no implementados en `forge-audit.py`
194
+ - 4 profiles sin documentar en `agent-standard.md` (django, go-gin, sveltekit, vuenuxt)
195
+ - `codex.md` con convención no verificada en spec de Codex CLI → eliminado, adapter simplificado
196
+ - Referencias a `aitmpl.com` en código activo → removidas
197
+ - Wizard: 4 brechas de UX para usuario nuevo (mensajes de error, terminología)
198
+ - `pbcopy`/`open` macOS-only → reemplazado por alternativas multiplataforma
199
+ - Extensión VS Code: sin documentación ni instrucciones de instalación → documentada con VSIX
200
+
201
+ ### Cambiado
202
+ - Audit terminal: agentes OK colapsados en una línea por tier (reduce scroll)
203
+ - Oportunidades en audit: cards con descripción, agentes/trigger y selección numerada integrada
204
+ - Extensión VS Code: 624 → 1071 líneas (opportunity picker, estados gestionados)
205
+ - `forge-audit.py`: 557 → 855 líneas (filtrado, catálogos, UI)
206
+ - Tests: 358 → 464 casos (contratos JSON, platform compat, VS Code extension, profiles nuevos)
207
+ - Extensión VS Code: `0.1.2` → `0.2.1`
208
+
209
+ ---
210
+
211
+ ## [0.2.0] — 2026-05-03
212
+
213
+ ### Agregado
214
+ - Profiles: `django`, `go-gin`, `sveltekit`, `vuenuxt`, `astro`
215
+ - Skills: `browser-test`, `wiki-ingest`, `wiki-query`, `wiki-lint`
216
+ - Adapter Codex CLI
217
+ - Extensión VS Code (inicial, sin publicar)
218
+ - Wizard interactivo TUI con 10 preguntas guiadas
219
+ - `forge-audit.py` con salida `--json` e integración CI
220
+ - Catálogo curado offline (20 MCP servers, 13 profiles, 5 frameworks)
221
+
222
+ ---
223
+
224
+ ## Convenciones de versioning
225
+
226
+ - **MAJOR** (`1.0.0`): breaking changes en `project.yaml`, estructura de agentes, o adapters
227
+ - **MINOR** (`0.X.0`): profiles nuevos, skills nuevos, features de CLI o extensión
228
+ - **PATCH** (`0.2.X`): bugfixes, documentación, mejoras de UX sin cambios de estructura
package/LICENSE ADDED
@@ -0,0 +1,191 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship made available under
36
+ the License, as indicated by a copyright notice that is included in
37
+ or attached to the work (an example is provided in the Appendix below).
38
+
39
+ "Derivative Works" shall mean any work, whether in Source or Object
40
+ form, that is based on (or derived from) the Work and for which the
41
+ editorial revisions, annotations, elaborations, or other modifications
42
+ represent, as a whole, an original work of authorship. For the purposes
43
+ of this License, Derivative Works shall not include works that remain
44
+ separable from, or merely link (or bind by name) to the interfaces of,
45
+ the Work and Derivative Works thereof.
46
+
47
+ "Contribution" shall mean, as submitted to the Licensor for inclusion
48
+ in the Work by the copyright owner or by an individual or Legal Entity
49
+ authorized to submit on behalf of the copyright owner. For the purposes
50
+ of this definition, "submitted" means any form of electronic, verbal,
51
+ or written communication sent to the Licensor or its representatives,
52
+ including but not limited to communication on electronic mailing lists,
53
+ source code control systems, and issue tracking systems that are managed
54
+ by, or on behalf of, the Licensor for the purpose of discussing and
55
+ improving the Work, but excluding communication that is conspicuously
56
+ marked or otherwise designated in writing by the copyright owner as
57
+ "Not a Contribution."
58
+
59
+ "Contributor" shall mean Licensor and any Legal Entity on behalf of
60
+ whom a Contribution has been received by the Licensor and subsequently
61
+ incorporated within the Work.
62
+
63
+ 2. Grant of Copyright License. Subject to the terms and conditions of
64
+ this License, each Contributor hereby grants to You a perpetual,
65
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
66
+ copyright license to reproduce, prepare Derivative Works of,
67
+ publicly display, publicly perform, sublicense, and distribute the
68
+ Work and such Derivative Works in Source or Object form.
69
+
70
+ 3. Grant of Patent License. Subject to the terms and conditions of
71
+ this License, each Contributor hereby grants to You a perpetual,
72
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
73
+ (except as stated in this section) patent license to make, have made,
74
+ use, offer to sell, sell, import, and otherwise transfer the Work,
75
+ where such license applies only to those patent claims licensable
76
+ by such Contributor that are necessarily infringed by their
77
+ Contribution(s) alone or by the combination of their Contribution(s)
78
+ with the Work to which such Contribution(s) was submitted. If You
79
+ institute patent litigation against any entity (including a cross-claim
80
+ or counterclaim in a lawsuit) alleging that the Work or any Contributor
81
+ Contribution constitutes direct or contributory patent infringement,
82
+ then any patent licenses granted to You under this License for that
83
+ Work shall terminate as of the date such litigation is filed.
84
+
85
+ 4. Redistribution. You may reproduce and distribute copies of the
86
+ Work or Derivative Works thereof in any medium, with or without
87
+ modifications, and in Source or Object form, provided that You
88
+ meet the following conditions:
89
+
90
+ (a) You must give any other recipients of the Work or Derivative
91
+ Works a copy of this License; and
92
+
93
+ (b) You must cause any modified files to carry prominent notices
94
+ stating that You changed the files; and
95
+
96
+ (c) You must retain, in the Source form of any Derivative Works
97
+ that You distribute, all copyright, patent, trademark, and
98
+ attribution notices from the Source form of the Work,
99
+ excluding those notices that do not pertain to any part of
100
+ the Derivative Works; and
101
+
102
+ (d) If the Work includes a "NOTICE" text file as part of its
103
+ distribution, You must include a readable copy of the
104
+ attribution notices contained within such NOTICE file, in
105
+ at least one of the following places: within a NOTICE text
106
+ file distributed as part of the Derivative Works; within
107
+ the Source form or documentation, if provided along with the
108
+ Derivative Works; or, within a display generated by the
109
+ Derivative Works, if and wherever such third-party notices
110
+ normally appear. The contents of the NOTICE file are for
111
+ informational purposes only and do not modify the License.
112
+ You may add Your own attribution notices within Derivative
113
+ Works that You distribute, alongside or as an addendum to
114
+ the NOTICE text from the Work, provided that such additional
115
+ attribution notices cannot be construed as modifying the License.
116
+
117
+ You may add Your own license statement for Your modifications and
118
+ may provide additional grant of rights to use, copy, modify, merge,
119
+ publish, distribute, sublicense, and/or sell copies of the
120
+ Work, subject to the terms and conditions of this License.
121
+
122
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
123
+ any Contribution intentionally submitted for inclusion in the Work
124
+ by You to the Licensor shall be under the terms and conditions of
125
+ this License, without any additional terms or conditions.
126
+ Notwithstanding the above, nothing herein shall supersede or modify
127
+ the terms of any separate license agreement you may have executed
128
+ with Licensor regarding such Contributions.
129
+
130
+ 6. Trademarks. This License does not grant permission to use the trade
131
+ names, trademarks, service marks, or product names of the Licensor,
132
+ except as required for reasonable and customary use in describing the
133
+ origin of the Work and reproducing the content of the NOTICE file.
134
+
135
+ 7. Disclaimer of Warranty. Unless required by applicable law or
136
+ agreed to in writing, Licensor provides the Work (and each
137
+ Contributor provides its Contributions) on an "AS IS" BASIS,
138
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
139
+ implied, including, without limitation, any warranties or conditions
140
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
141
+ PARTICULAR PURPOSE. You are solely responsible for determining the
142
+ appropriateness of using or reproducing the Work and assume any
143
+ risks associated with Your exercise of permissions under this License.
144
+
145
+ 8. Limitation of Liability. In no event and under no legal theory,
146
+ whether in tort (including negligence), contract, or otherwise,
147
+ unless required by applicable law (such as deliberate and grossly
148
+ negligent acts) or agreed to in writing, shall any Contributor be
149
+ liable to You for damages, including any direct, indirect, special,
150
+ incidental, or exemplary damages of any character arising as a
151
+ result of this License or out of the use or inability to use the
152
+ Work (including but not limited to damages for loss of goodwill,
153
+ work stoppage, computer failure or malfunction, or all other
154
+ commercial damages or losses), even if such Contributor has been
155
+ advised of the possibility of such damages.
156
+
157
+ 9. Accepting Warranty or Additional Liability. While redistributing
158
+ the Work or Derivative Works thereof, You may choose to offer,
159
+ and charge a fee for, acceptance of support, warranty, indemnity,
160
+ or other liability obligations and/or rights consistent with this
161
+ License. However, in accepting such obligations, You may offer only
162
+ conditions consistent with the terms of this License, in a
163
+ manner that is not on behalf of any other Contributor, and only if
164
+ You agree to indemnify, defend, and hold each Contributor harmless
165
+ for any liability incurred by, or claims asserted against, such
166
+ Contributor by reason of your accepting any such warranty or
167
+ additional liability.
168
+
169
+ END OF TERMS AND CONDITIONS
170
+
171
+ APPENDIX: How to apply the Apache License to your work.
172
+
173
+ To apply the Apache License to your work, attach the following
174
+ boilerplate notice, with the fields enclosed by brackets "[]"
175
+ replaced with your own identifying information. (Don't include
176
+ the brackets!) The text should be enclosed in the appropriate
177
+ comment syntax for the file format in question.
178
+
179
+ Copyright 2026 Cristian Correa
180
+
181
+ Licensed under the Apache License, Version 2.0 (the "License");
182
+ you may not use this file except in compliance with the License.
183
+ You may obtain a copy of the License at
184
+
185
+ http://www.apache.org/licenses/LICENSE-2.0
186
+
187
+ Unless required by applicable law or agreed to in writing, software
188
+ distributed under the License is distributed on an "AS IS" BASIS,
189
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
190
+ See the License for the specific language governing permissions and
191
+ limitations under the License.
package/README.md ADDED
@@ -0,0 +1,156 @@
1
+ # forge
2
+
3
+ [![tests](https://github.com/cristiancorreau/forge/actions/workflows/tests.yml/badge.svg)](https://github.com/cristiancorreau/forge/actions/workflows/tests.yml)
4
+ [![version](https://img.shields.io/badge/version-0.5.0-blue)](CHANGELOG.md)
5
+ [![license](https://img.shields.io/badge/license-Apache%202.0-green)](LICENSE)
6
+
7
+ Framework de desarrollo agéntico para equipos de software. Un `project.yaml` genera la configuración correcta de agentes, skills y reglas para cualquier runtime de IA.
8
+
9
+ > Los agentes sin harness derivan. Forge es el harness: reglas persistentes, memoria del proyecto, y delegación estructurada desde el primer commit.
10
+
11
+ ---
12
+
13
+ ## Por qué Forge
14
+
15
+ - **Los agentes olvidan.** Sin memoria y reglas persistentes, cada sesión empieza desde cero. Forge mantiene el contexto entre sesiones.
16
+ - **El contexto se pierde entre archivos.** Un CLAUDE.md plano no sabe qué agente ejecuta qué tarea. Forge separa responsabilidades con agentes especializados por tier.
17
+ - **Cada runtime tiene su formato.** Claude Code, OpenCode, Kiro y Codex CLI esperan archivos distintos. Forge los genera todos desde una sola fuente de verdad.
18
+ - **La calidad baja con el tiempo.** Sin auditoría, los agentes se desactualizan silenciosamente. Forge detecta gaps y ofrece correcciones.
19
+
20
+ ---
21
+
22
+ ## Diferencias con otras herramientas
23
+
24
+ | Herramienta | Qué hace | Alcance | Runtimes | Hooks | Equipos |
25
+ |-------------|----------|---------|----------|-------|---------|
26
+ | **Forge** | Framework completo: agentes, skills, reglas, auditoría | Proyecto + team | Claude Code, OpenCode, Kiro, Codex CLI | Sí (pre-commit) | Sí (tiers) |
27
+ | `cc-sdd` | Plantillas SDD para Claude Code | Proyecto individual | Claude Code | No | No |
28
+ | `Bridle` | Guardrails para prompts | Prompt-level | Agnóstico | No | No |
29
+ | `wshobson/agents` | Colección de agent files | Proyecto individual | Claude Code | No | No |
30
+ | CLAUDE.md manual | Instrucciones en texto plano | Sesión | Claude Code | No | No |
31
+
32
+ **Lo que Forge NO es:** no es un modelo de IA, no es un servicio en la nube, no es una plataforma de deployment, no ejecuta agentes por sí solo. Es una capa de configuración y estructura que vive en tu repositorio.
33
+
34
+ ---
35
+
36
+ ## Quick start (5 minutos)
37
+
38
+ **Requisitos:** Python 3.9+, git, Claude Code (u otro runtime soportado).
39
+
40
+ ```bash
41
+ # 1. Agregar forge al proyecto como submodule
42
+ git submodule add https://github.com/cristiancorreau/forge .agentic
43
+ pip3 install -r .agentic/requirements.txt
44
+ ```
45
+
46
+ ```bash
47
+ # 2. Copiar y completar project.yaml
48
+ cp .agentic/templates/project.yaml.tpl project.yaml
49
+ ```
50
+
51
+ Editar `project.yaml` con los datos del proyecto:
52
+
53
+ ```yaml
54
+ project:
55
+ name: "Mi SaaS"
56
+ mode: "standard" # startup | standard | enterprise
57
+
58
+ stack:
59
+ backend: "hono"
60
+ frontend: "nextjs"
61
+
62
+ agents:
63
+ active: [orchestrator, test-engineer, docs-writer]
64
+ profiles: [hono-drizzle, nextjs-admin]
65
+
66
+ skills:
67
+ active: [new-feature, security-audit, db-migrate]
68
+ ```
69
+
70
+ ```bash
71
+ # 3. Inicializar agentes
72
+ python3 .agentic/scripts/forge-init.py --tool claude-code
73
+ ```
74
+
75
+ ```bash
76
+ # 4. Abrir Claude Code y ejecutar
77
+ /session-start
78
+ ```
79
+
80
+ Después del paso 4 verás: agentes instalados en `.claude/agents/`, un `CLAUDE.md` generado con el roster del proyecto, y slash commands disponibles en Claude Code.
81
+
82
+ ---
83
+
84
+ ## Arquitectura — cinco capas
85
+
86
+ | Capa | Qué hace |
87
+ |------|----------|
88
+ | **Memory** | `project.yaml` como fuente de verdad; wiki de proyecto persistente entre sesiones |
89
+ | **Knowledge** | Agentes especializados (Tier 1/2/3) con scope declarado y reglas no-negociables |
90
+ | **Guardrail** | Compliance by design, hook de pre-commit, auditoría con `forge-audit.py` |
91
+ | **Delegation** | Orquestador que descompone tareas y delega a agentes especializados |
92
+ | **Distribution** | Un solo `project.yaml` genera configs para todos los runtimes soportados |
93
+
94
+ Documentación completa: [`docs/guide.md`](docs/guide.md)
95
+
96
+ ---
97
+
98
+ ## Runtimes soportados
99
+
100
+ | Runtime | Soporte | Cómo instalar |
101
+ |---------|---------|---------------|
102
+ | **Claude Code** | Completo (agentes, CLAUDE.md, settings, slash commands) | `--tool claude-code` |
103
+ | **OpenCode** | Serial (AGENTS.md) | `--tool opencode` |
104
+ | **Codex CLI** | Serial (AGENTS.md enriquecido) | `--tool codex` |
105
+ | **Kiro** | Serial (steering files) | `--tool kiro` |
106
+ | **Todos** | Genera los cuatro | `--tool all` |
107
+
108
+ "Soporte completo" significa integración con hooks, settings.json y slash commands. "Serial" significa generación del archivo de instrucciones sin integración profunda con el runtime.
109
+
110
+ ---
111
+
112
+ ## Perfiles de stack disponibles
113
+
114
+ 15 perfiles listos para usar, declarados en `agents.profiles` del `project.yaml`:
115
+
116
+ `hono-drizzle` · `nextjs-admin` · `astro` · `expo` · `playwright-crawler`
117
+ `fastapi` · `express` · `rails` · `nestjs` · `django`
118
+ `vuenuxt` · `go-gin` · `sveltekit` · `laravel` · `wordpress`
119
+
120
+ Cada profile instala uno o más agentes especializados en ese stack. Ver [`profiles/`](profiles/) para el detalle de cada uno.
121
+
122
+ Para stacks no cubiertos:
123
+
124
+ ```bash
125
+ python3 .agentic/scripts/forge-scaffold-profile.py --name <stack> --engineer <agente>
126
+ ```
127
+
128
+ ---
129
+
130
+ ## Contribuir
131
+
132
+ **Fork + PR.** Para cambios grandes, abre un issue primero.
133
+
134
+ **Agregar un profile:**
135
+
136
+ ```bash
137
+ python3 .agentic/scripts/forge-scaffold-profile.py --name <stack> --engineer <agente>
138
+ ```
139
+
140
+ El agente debe seguir el estándar en [`docs/agent-standard.md`](docs/agent-standard.md). Agregar el nombre al `CATALOG` en `scripts/aitmpl-search.py` y a los parametrize en `tests/test_profiles.py`.
141
+
142
+ **Agregar un skill:** Crear `core/skills/<nombre>/SKILL.md` con la estructura estándar. Ver skills existentes como referencia.
143
+
144
+ **Reportar fricción:** Abre un issue con el formato: _qué intentabas hacer → qué pasó → qué esperabas_. Los friction logs son bienvenidos como issues o PRs directamente en `docs/`.
145
+
146
+ **Tests antes de cada PR:**
147
+
148
+ ```bash
149
+ python3 -m pytest tests/ -q # debe pasar al 100%
150
+ ```
151
+
152
+ ---
153
+
154
+ ## Licencia
155
+
156
+ Apache 2.0 — [Cristian Correa](https://github.com/cristiancorreau), 2026.
@@ -0,0 +1,12 @@
1
+ # deploy-check
2
+
3
+ Verifica que el proyecto esté listo para deploy y ejecuta los checks previos al push.
4
+
5
+ Entorno target: $ARGUMENTS (ej: staging, production — vacío para checks generales).
6
+
7
+ 1. Ejecutar lint y tests completos.
8
+ 2. Verificar que no hay cambios no commiteados.
9
+ 3. Revisar variables de entorno: ¿están todas documentadas en .env.example?
10
+ 4. Buscar console.log / print de depuración en los cambios recientes.
11
+ 5. Confirmar branch y proveedor de deploy desde project.yaml.
12
+ 6. Si el target es production, confirmar que el entorno de staging fue validado primero.
@@ -0,0 +1,11 @@
1
+ # new-feature
2
+
3
+ Inicia la implementación de una nueva feature siguiendo SDD (Spec-Driven Development).
4
+
5
+ Argumentos: $ARGUMENTS — nombre de la feature o ruta a la spec existente.
6
+
7
+ 1. Si no existe spec para "$ARGUMENTS" en docs/specs/, crearla primero antes de escribir código.
8
+ 2. Leer la spec antes de proponer cualquier implementación.
9
+ 3. Proponer el plan de implementación y esperar aprobación explícita.
10
+ 4. Implementar con tests junto a la implementación, no al final.
11
+ 5. Al terminar, actualizar la spec con las decisiones tomadas durante la implementación.