@cristiancorreau/forge 2.7.0 → 2.9.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/README.md +64 -5
- package/dist/cli.js +44 -10
- package/dist/cli.js.map +1 -1
- package/dist/commands/aitmpl-search.d.ts +2 -0
- package/dist/commands/aitmpl-search.d.ts.map +1 -0
- package/dist/commands/aitmpl-search.js +711 -0
- package/dist/commands/aitmpl-search.js.map +1 -0
- package/dist/commands/audit.d.ts.map +1 -1
- package/dist/commands/audit.js +155 -5
- package/dist/commands/audit.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +113 -2
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +3 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/migrate.d.ts +2 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +261 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/scaffold.d.ts +2 -0
- package/dist/commands/scaffold.d.ts.map +1 -0
- package/dist/commands/scaffold.js +214 -0
- package/dist/commands/scaffold.js.map +1 -0
- package/dist/commands/skills.d.ts +2 -0
- package/dist/commands/skills.d.ts.map +1 -0
- package/dist/commands/skills.js +86 -0
- package/dist/commands/skills.js.map +1 -0
- package/dist/commands/teardown.d.ts +2 -0
- package/dist/commands/teardown.d.ts.map +1 -0
- package/dist/commands/teardown.js +186 -0
- package/dist/commands/teardown.js.map +1 -0
- package/dist/commands/wiki.d.ts +2 -0
- package/dist/commands/wiki.d.ts.map +1 -0
- package/dist/commands/wiki.js +400 -0
- package/dist/commands/wiki.js.map +1 -0
- package/dist/lib/catalog.d.ts +22 -0
- package/dist/lib/catalog.d.ts.map +1 -0
- package/dist/lib/catalog.js +49 -0
- package/dist/lib/catalog.js.map +1 -0
- package/dist/lib/wizard.d.ts +1 -0
- package/dist/lib/wizard.d.ts.map +1 -1
- package/dist/lib/wizard.js +16 -1
- package/dist/lib/wizard.js.map +1 -1
- package/dist/lib/yaml.d.ts +4 -0
- package/dist/lib/yaml.d.ts.map +1 -1
- package/dist/lib/yaml.js.map +1 -1
- package/dist/tui/wizard.d.ts.map +1 -1
- package/dist/tui/wizard.js +2 -0
- package/dist/tui/wizard.js.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -32,6 +32,31 @@ El wizard detecta y configura el proyecto en cinco pasos:
|
|
|
32
32
|
|
|
33
33
|
---
|
|
34
34
|
|
|
35
|
+
## Funcionalidades
|
|
36
|
+
|
|
37
|
+
| Funcionalidad | Descripción | Estado | Runtime |
|
|
38
|
+
|---|---|---|---|
|
|
39
|
+
| SDD (Spec-Driven Development) | Flujo spec-first: ninguna tarea de código arranca sin una spec `APPROVED`. El `orchestrator` rechaza spawnear agentes sin spec aprobada; el skill `/spec` redacta specs en `docs/specs/`. | ✅ | Claude Code, OpenCode, Codex, Kiro |
|
|
40
|
+
| Agentes Tier 1 (universal) | Agentes definidos por output, no por stack: `orchestrator`, `backend-engineer`, `frontend-engineer`, `test-engineer`, `docs-writer`, `compliance-reviewer`, `security-auditor`. Sirven en cualquier proyecto. | ✅ | Claude Code, OpenCode, Codex, Kiro |
|
|
41
|
+
| Agentes Tier 2 (stack) | Mismo rol que Tier 1 con instrucciones del stack: Hono+Drizzle, FastAPI, Express, NestJS, Django, Go-Gin, Laravel, Rails, Next.js, Expo, Astro, SvelteKit, Nuxt/Vue, WordPress, Playwright. | ✅ | Claude Code, OpenCode, Codex, Kiro |
|
|
42
|
+
| Agentes Tier 3 (dominio) | Agentes que conocen el negocio (`dsar-specialist`, `gcm-engineer`, `policy-engineer`, `banner-engineer`). Viven en el proyecto y se registran en `agents.specialized`. | 🚧 | Claude Code, OpenCode, Codex, Kiro |
|
|
43
|
+
| Hooks de guardrail (sin Python) | Guardrails de pre-edit/branch-guard, detección de debug, secretos y prod-safety, ejecutados por el runtime. | 🚧 | Claude Code, Codex, Kiro |
|
|
44
|
+
| Operaciones reversibles | Manifest SHA-256 + dry-run para instalaciones reversibles y verificables. | 🚧 | Claude Code, OpenCode, Codex, Kiro |
|
|
45
|
+
| Multi-runtime | Un mismo proyecto forge se adapta a varios runtimes con sus marcadores de detección y niveles de soporte. | ✅ | Claude Code (completo), OpenCode, Codex, Kiro |
|
|
46
|
+
| Auto-detección de stack | Detección por marcadores (`CLAUDE.md`+`.claude/`, `AGENTS.md`+`.opencode/`, `.codex/`, `.kiro/`) para activar profiles y adapters. | 🚧 | Claude Code, OpenCode, Codex, Kiro |
|
|
47
|
+
| Skills | Biblioteca de skills invocables (`spec`, `new-feature`, `security-audit`, `db-migrate`, `local2prod`, `browser-test`, `wiki-*`, etc.). | ✅ | Claude Code, OpenCode, Codex, Kiro |
|
|
48
|
+
| Compliance (GDPR/LGPD/CCPA) | `compliance-reviewer` (Tier 1, model opus) revisa cada PR contra los marcos de compliance activos con poder de veto vinculante antes de mergear. | ✅ | Claude Code, OpenCode, Codex, Kiro |
|
|
49
|
+
| forge wiki (knowledge base) | Knowledge base del proyecto: ingesta fuentes, compila páginas, mantiene índice y responde queries citando páginas (`wiki-ingest` / `wiki-lint` / `wiki-query`). | 🚧 | Claude Code, OpenCode, Codex, Kiro |
|
|
50
|
+
| Browser testing | Automatización de navegador (agent-browser sobre CDP) para verificar UI, flujos críticos, evidencia y diffs visuales/responsive (`/browser-test`). | ✅ | Claude Code, OpenCode, Codex, Kiro |
|
|
51
|
+
| DB migrations | Flujo seguro de migraciones compatible con Prisma, Drizzle, ActiveRecord, Alembic y Goose (`/db-migrate`). | ✅ | Claude Code, OpenCode, Codex, Kiro |
|
|
52
|
+
| Deploy a producción | Publicación con gate `READY/SUCCESS` sobre Vercel, Railway, Fly.io, GitHub Actions y pipelines custom (`/local2prod`). | ✅ | Claude Code, OpenCode, Codex, Kiro |
|
|
53
|
+
| Migración v1→v2 | Portado de proyectos forge v1 a v2. Comando `migrate` aún sin portar. | ❌ | Claude Code, Kiro |
|
|
54
|
+
| Scaffold / Teardown | Generación y desmontaje de estructura de proyecto. Comandos sin portar a la nueva CLI. | ❌ | Claude Code, OpenCode, Codex, Kiro |
|
|
55
|
+
|
|
56
|
+
Leyenda: ✅ disponible · 🚧 parcial · ❌ pendiente.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
35
60
|
## Comandos
|
|
36
61
|
|
|
37
62
|
| Comando | Qué hace |
|
|
@@ -42,6 +67,8 @@ El wizard detecta y configura el proyecto en cinco pasos:
|
|
|
42
67
|
| `forge validate` | Valida que los archivos generados cumplan el esquema esperado |
|
|
43
68
|
| `forge doctor` | Health-check del entorno: Node.js, git, runtime de IA activo, permisos |
|
|
44
69
|
|
|
70
|
+
> **Dashboard post-install.** Cuando `forge init` corre con Bun, al terminar abre un dashboard interactivo navegable con OpenTUI: panel con paneles para explorar agentes instalados, skills, profiles activos y estado del manifest sin salir de la terminal. Con Node.js el wizard cae al flujo de prompts estándar.
|
|
71
|
+
|
|
45
72
|
---
|
|
46
73
|
|
|
47
74
|
## Runtimes soportados
|
|
@@ -69,6 +96,28 @@ Cada stack instala agentes especializados con reglas de arquitectura, convencion
|
|
|
69
96
|
|
|
70
97
|
---
|
|
71
98
|
|
|
99
|
+
## Sistema de TIERs
|
|
100
|
+
|
|
101
|
+
forge organiza agentes y configuración en tres niveles que se componen de lo general a lo específico. Cada tier hereda y especializa al anterior, y la resolución de colisiones favorece siempre al tier más concreto.
|
|
102
|
+
|
|
103
|
+
**Tier 1 — core (universal).** Agentes definidos por su output, no por el stack: `orchestrator`, `backend-engineer`, `frontend-engineer`, `test-engineer`, `docs-writer`, `compliance-reviewer`, `security-auditor`. Sirven en cualquier proyecto sin modificación y son la base sobre la que se montan los demás tiers.
|
|
104
|
+
|
|
105
|
+
**Tier 2 — profile (stack).** Los mismos roles que Tier 1 pero con instrucciones específicas del stack (Hono+Drizzle, FastAPI, Django, Rails, Laravel, Go-Gin, Next.js, Expo, Astro, SvelteKit, WordPress, Playwright…). Un proyecto puede activar varios profiles a la vez; ante una colisión, gana el profile.
|
|
106
|
+
|
|
107
|
+
**Tier 3 — project (dominio).** Agentes que conocen el negocio concreto del proyecto (`dsar-specialist`, `gcm-engineer`, `policy-engineer`, `banner-engineer`). Viven dentro del repositorio y se registran en `agents.specialized`.
|
|
108
|
+
|
|
109
|
+
Detalle completo en [docs/tiers.md](docs/tiers.md).
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## Skills
|
|
114
|
+
|
|
115
|
+
forge incluye 12 skills invocables que encapsulan flujos completos: `spec` (redacta specs SDD), `new-feature` (kickoff de feature spec-first), `security-audit`, `db-migrate`, `local2prod` (deploy con gate de producción), `browser-test`, `phase-kickoff`, `obsidian-sync`, `aitmpl-search` y la familia `wiki-*` (`wiki-ingest`, `wiki-lint`, `wiki-query`) para la knowledge base del proyecto. Se invocan como slash commands (`/spec`, `/new-feature`, `/db-migrate`, …) y se mapean por runtime.
|
|
116
|
+
|
|
117
|
+
Catálogo completo en [docs/skills.md](docs/skills.md).
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
72
121
|
## Sin Python requerido
|
|
73
122
|
|
|
74
123
|
Toda la CLI corre en Node.js. Los hooks de guardrail son JavaScript puro.
|
|
@@ -79,11 +128,21 @@ No hay `pip install`, no hay `requirements.txt`, no hay dependencias de sistema
|
|
|
79
128
|
|
|
80
129
|
## Comparativa
|
|
81
130
|
|
|
82
|
-
|
|
|
83
|
-
|
|
84
|
-
|
|
|
85
|
-
|
|
|
86
|
-
|
|
|
131
|
+
| Capacidad | forge | autoskills | cc-sdd |
|
|
132
|
+
|---|---|---|---|
|
|
133
|
+
| Enfoque principal | Framework de agentic development end-to-end (agentes + skills + profiles + wiki + compliance) | Librería/colección de skills reutilizables | Spec-Driven Development para Claude Code |
|
|
134
|
+
| SDD spec-first con gate | ✅ spec `APPROVED` obligatoria, veto del orchestrator | ❌ | ✅ núcleo del producto |
|
|
135
|
+
| Agentes especializados por tier | ✅ Tier 1/2/3 (universal, stack, dominio) | ❌ | ❌ |
|
|
136
|
+
| Profiles por stack | ✅ 15+ stacks (Hono, FastAPI, Django, Rails, Laravel, Go, WordPress, Expo…) | 🚧 parcial | ❌ |
|
|
137
|
+
| Skills invocables | ✅ 12+ skills | ✅ foco central | 🚧 limitado |
|
|
138
|
+
| Multi-runtime | ✅ Claude Code, OpenCode, Codex, Kiro | 🚧 principalmente Claude Code | 🚧 Claude Code + parcial |
|
|
139
|
+
| Compliance con veto (GDPR/LGPD/CCPA) | ✅ `compliance-reviewer` vinculante | ❌ | ❌ |
|
|
140
|
+
| Hooks de guardrail (branch/secrets/prod) | 🚧 parcial, sin Python | ❌ | ❌ |
|
|
141
|
+
| Knowledge base / wiki del proyecto | ✅ ingest/lint/query con citas | ❌ | ❌ |
|
|
142
|
+
| Operaciones reversibles (manifest SHA-256, dry-run) | 🚧 parcial | ❌ | ❌ |
|
|
143
|
+
| Auto-detección de stack | 🚧 parcial | ❌ | ❌ |
|
|
144
|
+
| Deploy con gate de producción | ✅ multi-provider | ❌ | ❌ |
|
|
145
|
+
| Posicionamiento | Plataforma completa de orquestación de agentes, compliance-first y multi-runtime | Catálogo de skills sueltas | Especialista en disciplina de specs |
|
|
87
146
|
|
|
88
147
|
---
|
|
89
148
|
|
package/dist/cli.js
CHANGED
|
@@ -4,17 +4,33 @@ import { audit } from './commands/audit.js';
|
|
|
4
4
|
import { generate } from './commands/generate.js';
|
|
5
5
|
import { validate } from './commands/validate.js';
|
|
6
6
|
import { doctor } from './commands/doctor.js';
|
|
7
|
-
|
|
7
|
+
import { migrate } from './commands/migrate.js';
|
|
8
|
+
import { wiki } from './commands/wiki.js';
|
|
9
|
+
import { skills } from './commands/skills.js';
|
|
10
|
+
import { aitmplSearch } from './commands/aitmpl-search.js';
|
|
11
|
+
import { scaffold } from './commands/scaffold.js';
|
|
12
|
+
import { teardown } from './commands/teardown.js';
|
|
13
|
+
const VERSION = '2.9.0';
|
|
8
14
|
const HELP = `forge v${VERSION} — Agentic development framework
|
|
9
15
|
|
|
10
16
|
Usage: forge <command> [options]
|
|
11
17
|
|
|
12
|
-
|
|
13
|
-
init
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
+
Setup
|
|
19
|
+
init Initialize forge in a project (wizard + post-install dashboard)
|
|
20
|
+
generate Generate runtime config files from project.yaml
|
|
21
|
+
migrate Migrate project.yaml from the v1 schema to v2 (--dry-run, --backup)
|
|
22
|
+
scaffold Scaffold a new Tier 2 profile (profiles/<stack>/agents/<engineer>.md)
|
|
23
|
+
teardown Cleanly uninstall forge from a project (manifest-driven)
|
|
24
|
+
|
|
25
|
+
Inspect
|
|
26
|
+
audit Audit project against the forge standard
|
|
27
|
+
validate Validate project.yaml schema (exit 1 on error, CI-safe)
|
|
28
|
+
doctor Check environment, installed runtimes and project.yaml completeness
|
|
29
|
+
skills List available forge skills grouped by category
|
|
30
|
+
aitmpl-search Search the curated offline catalog (frameworks, MCP servers, profiles)
|
|
31
|
+
|
|
32
|
+
Knowledge
|
|
33
|
+
wiki Manage the project knowledge base (status | ingest | query | lint)
|
|
18
34
|
|
|
19
35
|
Options:
|
|
20
36
|
-v, --version Show version
|
|
@@ -24,9 +40,9 @@ Run forge <command> --help for command-specific options.
|
|
|
24
40
|
|
|
25
41
|
Examples:
|
|
26
42
|
npx @cristiancorreau/forge init
|
|
27
|
-
npx @cristiancorreau/forge
|
|
28
|
-
npx @cristiancorreau/forge
|
|
29
|
-
npx @cristiancorreau/forge
|
|
43
|
+
npx @cristiancorreau/forge skills
|
|
44
|
+
npx @cristiancorreau/forge migrate --dry-run
|
|
45
|
+
npx @cristiancorreau/forge wiki status
|
|
30
46
|
npx @cristiancorreau/forge doctor
|
|
31
47
|
`;
|
|
32
48
|
const [, , cmd, ...rest] = process.argv;
|
|
@@ -47,6 +63,24 @@ switch (cmd) {
|
|
|
47
63
|
case 'doctor':
|
|
48
64
|
exitCode = await doctor(rest);
|
|
49
65
|
break;
|
|
66
|
+
case 'migrate':
|
|
67
|
+
exitCode = await migrate(rest);
|
|
68
|
+
break;
|
|
69
|
+
case 'wiki':
|
|
70
|
+
exitCode = await wiki(rest);
|
|
71
|
+
break;
|
|
72
|
+
case 'skills':
|
|
73
|
+
exitCode = await skills(rest);
|
|
74
|
+
break;
|
|
75
|
+
case 'aitmpl-search':
|
|
76
|
+
exitCode = await aitmplSearch(rest);
|
|
77
|
+
break;
|
|
78
|
+
case 'scaffold':
|
|
79
|
+
exitCode = await scaffold(rest);
|
|
80
|
+
break;
|
|
81
|
+
case 'teardown':
|
|
82
|
+
exitCode = await teardown(rest);
|
|
83
|
+
break;
|
|
50
84
|
case '-v':
|
|
51
85
|
case '--version':
|
|
52
86
|
console.log(VERSION);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB,MAAM,IAAI,GAAG,UAAU,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiC7B,CAAC;AAEF,MAAM,CAAC,EAAE,AAAD,EAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;AAExC,IAAI,QAAQ,GAAG,CAAC,CAAC;AAEjB,QAAQ,GAAG,EAAE,CAAC;IACZ,KAAK,MAAM;QACT,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM;IACR,KAAK,OAAO;QACV,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM;IACR,KAAK,UAAU;QACb,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM;IACR,KAAK,UAAU;QACb,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM;IACR,KAAK,QAAQ;QACX,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM;IACR,KAAK,SAAS;QACZ,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM;IACR,KAAK,MAAM;QACT,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM;IACR,KAAK,QAAQ;QACX,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM;IACR,KAAK,eAAe;QAClB,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM;IACR,KAAK,UAAU;QACb,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM;IACR,KAAK,UAAU;QACb,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM;IACR,KAAK,IAAI,CAAC;IACV,KAAK,WAAW;QACd,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,MAAM;IACR,KAAK,SAAS,CAAC;IACf,KAAK,IAAI,CAAC;IACV,KAAK,QAAQ;QACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,MAAM;IACR;QACE,OAAO,CAAC,KAAK,CAAC,oBAAoB,GAAG,iCAAiC,CAAC,CAAC;QACxE,QAAQ,GAAG,CAAC,CAAC;AACjB,CAAC;AAED,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aitmpl-search.d.ts","sourceRoot":"","sources":["../../src/commands/aitmpl-search.ts"],"names":[],"mappings":"AAmuBA,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA4ElE"}
|