{"id":50809064,"url":"https://github.com/cristiancorreau/forge","last_synced_at":"2026-07-19T04:00:40.980Z","repository":{"id":362000204,"uuid":"1256783009","full_name":"cristiancorreau/forge","owner":"cristiancorreau","description":"Agentic development framework for Claude Code, OpenCode, Codex CLI and Kiro — multi-runtime support","archived":false,"fork":false,"pushed_at":"2026-07-06T04:12:55.000Z","size":4661,"stargazers_count":4,"open_issues_count":8,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-07-06T06:07:17.183Z","etag":null,"topics":["agentic","ai-agents","claude-code","cli","codex","developer-tools","kiro","opencode","spec-driven-development","typescript"],"latest_commit_sha":null,"homepage":"https://cristiancorreau.github.io/forge/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cristiancorreau.png","metadata":{"files":{"readme":"README.es.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-02T04:54:26.000Z","updated_at":"2026-07-06T04:12:56.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/cristiancorreau/forge","commit_stats":null,"previous_names":["cristiancorreau/forge"],"tags_count":67,"template":false,"template_full_name":null,"purl":"pkg:github/cristiancorreau/forge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cristiancorreau%2Fforge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cristiancorreau%2Fforge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cristiancorreau%2Fforge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cristiancorreau%2Fforge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cristiancorreau","download_url":"https://codeload.github.com/cristiancorreau/forge/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cristiancorreau%2Fforge/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35640428,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-19T02:00:06.923Z","response_time":112,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agentic","ai-agents","claude-code","cli","codex","developer-tools","kiro","opencode","spec-driven-development","typescript"],"created_at":"2026-06-13T03:12:42.848Z","updated_at":"2026-07-19T04:00:40.974Z","avatar_url":"https://github.com/cristiancorreau.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[English](README.md) · **Español**\n\n\u003cdiv align=\"center\"\u003e\n\n\u003cbr\u003e\n\n\u003c!-- forge — logo SVG (vectorial, nítido). Ruta relativa: GitHub lo sirve como image/svg+xml. --\u003e\n\u003cimg alt=\"forge\" height=\"92\" src=\"docs/assets/forge-logo.svg\"\u003e\n\n\u003cbr\u003e\n\u003cbr\u003e\n\n# Forge AI\n\n### Configura cualquier proyecto para trabajar con agentes de IA en un solo comando\n\nUn equipo de agentes, todos los runtimes — **19 runtimes** (4 nativos + 15 editores basados en reglas) desde un único `project.yaml`.\n\n\u003cbr\u003e\n\n[![npm version](https://img.shields.io/npm/v/@cristiancorreau/forge?style=for-the-badge\u0026labelColor=0a0a0a\u0026color=FF9F1C\u0026logo=npm)](https://www.npmjs.com/package/@cristiancorreau/forge)\n[![CI tests](https://img.shields.io/github/actions/workflow/status/cristiancorreau/forge/tests.yml?branch=main\u0026style=for-the-badge\u0026labelColor=0a0a0a\u0026color=FFD26F\u0026label=tests)](https://github.com/cristiancorreau/forge/actions/workflows/tests.yml)\n[![license](https://img.shields.io/badge/license-Apache--2.0-FF9F1C?style=for-the-badge\u0026labelColor=0a0a0a)](LICENSE)\n[![node](https://img.shields.io/badge/node-%3E%3D20-FFD26F?style=for-the-badge\u0026labelColor=0a0a0a\u0026logo=node.js\u0026logoColor=white)](https://nodejs.org)\n\n\u003cbr\u003e\n\n**[Landing](https://cristiancorreau.github.io/forge/)**\n\u0026nbsp;\u0026nbsp;•\u0026nbsp;\u0026nbsp;\n**[Documentación](docs/guide.md)**\n\u0026nbsp;\u0026nbsp;•\u0026nbsp;\u0026nbsp;\n**[npm](https://www.npmjs.com/package/@cristiancorreau/forge)**\n\u0026nbsp;\u0026nbsp;•\u0026nbsp;\u0026nbsp;\n**[Issues](https://github.com/cristiancorreau/forge/issues)**\n\n\u003cbr\u003e\n\n\u003c/div\u003e\n\n```bash\nnpx @cristiancorreau/forge init\n```\n\n\u003cdiv align=\"center\"\u003e\n\n\u003cbr\u003e\n\n\u003cimg alt=\"Panel interactivo de forge en la terminal (OpenTUI): agentes, skills, hooks y profiles\" width=\"780\" src=\"https://raw.githubusercontent.com/cristiancorreau/forge/main/docs/assets/cli-preview.png\"\u003e\n\n\u003csub\u003eEl panel interactivo de forge (\u003ccode\u003eforge panel\u003c/code\u003e) requiere Bun (OpenTUI) — explora agentes, skills, hooks y profiles sin salir de la terminal.\u003c/sub\u003e\n\n\u003cbr\u003e\n\n\u003c/div\u003e\n\n---\n\n## ¿Qué es Forge AI?\n\n**Forge AI** (la CLI `forge`) es un framework de _agentic development_ multi-runtime. Un solo comando analiza tu proyecto, instala un equipo de agentes especializados, cablea guardrails de seguridad y deja un `project.yaml` como **única fuente de verdad** desde la que se regenera la configuración nativa de cada runtime de IA.\n\nEn vez de copiar y pegar reglas de agentes entre proyectos y entre herramientas, defines el equipo **una vez** y forge lo materializa para los 19 runtimes soportados.\n\n- 🤖 **Equipos de agentes multi-runtime** — 7 agentes universales + 19 profiles de stack\n- 📐 **Flujo SDD spec-first** — ninguna tarea de código sin una spec `APPROVED`\n- 🪝 **Guardrail hooks en JS puro** — branch-guard, debug, secretos y prod-safety, cero Python\n- 🔁 **Un `project.yaml`, cada CLI** — 19 runtimes: 4 nativos + 15 basados en reglas\n- ⚖️ **Compliance con veto vinculante** — revisor GDPR/LGPD/CCPA que bloquea el merge\n- 🔄 **Operaciones reversibles** — manifest SHA-256 + `--dry-run` para auditar cada cambio\n- 📚 **Knowledge base del proyecto** — wiki que ingesta, lintea y responde con citas\n\n---\n\n## ¿Por qué forge?\n\n### vs. reglas de agente hechas a mano\n\n- **Un `project.yaml`, cuatro runtimes** — escribes el equipo una vez, no cuatro.\n- **Spec-first por defecto** — el `orchestrator` rechaza spawnear agentes sin spec aprobada.\n- **Guardrails ya cableados** — hooks de seguridad listos, sin instalar nada de Python.\n- **Regenerable** — `forge generate` reconstruye todo el equipo desde la fuente de verdad.\n\n### vs. copiar y pegar agentes entre proyectos\n\n- **TIERs componibles** — universal → stack → dominio, con resolución de colisiones predecible.\n- **19 profiles de stack** listos — Next.js, FastAPI, Django, Rails, Laravel, Go, Rust, Flutter…\n- **Operaciones reversibles** — manifest SHA-256 detecta drift; `forge teardown` desinstala limpio.\n- **Drift bajo control** — `forge update` re-sincroniza con el catálogo preservando tus ediciones.\n\n---\n\n## Instalación\n\nforge corre con **Node.js 20+**. Con **Bun** se desbloquea el panel full-screen (OpenTUI, `@opentui/core`); en Node cae a prompts [@clack](https://github.com/bombshell-dev/clack); en consolas legacy, a ASCII.\n\n**Probar sin instalar:**\n\n```bash\nnpx @cristiancorreau/forge init\n```\n\n**Instalar el comando global `forge`** — elegí tu gestor:\n\n```bash\nnpm  install -g @cristiancorreau/forge   # npm\npnpm add     -g @cristiancorreau/forge   # pnpm  (requiere `pnpm setup` una vez)\nbun  add     -g @cristiancorreau/forge   # bun   (requiere ~/.bun/bin en el PATH)\n```\n\n\u003e El wizard de `forge init` usa por defecto los prompts `@clack`, multiplataforma e idénticos en Windows, macOS y Linux. El wizard full-screen OpenTUI es **opt-in**: define `FORGE_ENABLE_OPENTUI=1` (requiere **Bun** y una terminal capaz). Si tienes forge instalado con bun **y** con npm a la vez, gana el que esté primero en el `PATH`; actualiza ese mismo gestor (p. ej. `bun add -g @cristiancorreau/forge@latest`).\n\n\u003cdetails\u003e\n\u003csummary\u003eTroubleshooting de PATH\u003c/summary\u003e\n\n\u003cbr\u003e\n\n¿El comando `forge` no se reconoce tras el install global? El directorio de binarios globales no está en tu `PATH`. `npx @cristiancorreau/forge \u003ccmd\u003e` siempre funciona sin instalar; para el comando a secas:\n\n- **npm:** `export PATH=\"$(npm prefix -g)/bin:$PATH\"`\n- **pnpm:** ejecuta `pnpm setup` y reabre la terminal\n- **bun:** agrega `export PATH=\"$HOME/.bun/bin:$PATH\"` a tu shell rc\n\n\u003c/details\u003e\n\n---\n\n## Quickstart (30 s)\n\n```bash\n# 1. Inicializa forge en tu proyecto\n#    (wizard: detecta stack, instala agentes + hooks, escribe el manifest)\nnpx @cristiancorreau/forge init\n\n# 2. Verifica el entorno y la conformidad\nforge doctor\nforge validate\n\n# 3. Regenera la configuración nativa de cada runtime desde project.yaml\nforge generate\n```\n\n¿Ya tienes un codebase en marcha? Intégralo sin partir de cero:\n\n```bash\nforge adopt        # analiza el repo existente + auto-wiki\n```\n\n---\n\n## Las 5 capas\n\nforge se organiza en cinco capas que van de la fuente de verdad a la materialización por runtime.\n\n| Capa | Responsabilidad |\n|------|-----------------|\n| 🧠 **Memory** | `project.yaml` como única fuente de verdad — stack, equipo, skills, reglas. |\n| 📚 **Knowledge** | Agentes + profiles de stack que aportan el saber de cada rol y framework. |\n| 🛡️ **Guardrail** | Enforcement de compliance y seguridad: hooks, branch-guard, detección de secretos. |\n| 🎯 **Delegation** | Orquestación y despacho de skills: qué agente atiende qué tarea. |\n| 📡 **Distribution** | Adapters de runtime que traducen la fuente de verdad a 19 runtimes de IA (4 nativos + 15 basados en reglas). |\n\n---\n\n## Sistema de TIERs\n\nTres niveles componibles, de lo general a lo específico. Cada tier hereda y especializa al anterior; ante una colisión, gana el más concreto.\n\n| Tier | Qué es | Ejemplos |\n|------|--------|----------|\n| **Tier 1 — universal** | 7 agentes definidos por su _output_, no por el stack. Sirven en cualquier proyecto. | `orchestrator`, `backend-engineer`, `frontend-engineer`, `test-engineer`, `docs-writer`, `compliance-reviewer`, `security-auditor` |\n| **Tier 2 — stack** | Los mismos roles con instrucciones del framework. 19 profiles disponibles. | Next.js, FastAPI, Django, Rails, Laravel, Go-Gin, Rust, NestJS… |\n| **Tier 3 — dominio** | Agentes que conocen el negocio del proyecto. Viven en el repo, se registran en `agents.specialized`. | `dsar-specialist`, `gcm-engineer`, `policy-engineer`… |\n\nDetalle completo en [docs/tiers.md](docs/tiers.md).\n\n---\n\n## Comandos\n\nLos 18 comandos de la CLI.\n\n| Comando | Qué hace |\n|---------|----------|\n| `forge init` | Wizard completo: detecta el stack, instala agentes y hooks, escribe el manifest. |\n| `forge adopt` | Onboarda forge en un codebase **existente** (análisis + auto-wiki). |\n| `forge analyze` | Lectura determinística y offline de un repo existente (stack, hotspots, TODO/FIXME, tests, agentes sugeridos). Base del skill `/onboard`; `--json` / `--write`. |\n| `forge generate` | Regenera la configuración nativa de cada runtime desde `project.yaml`. |\n| `forge update` | Re-sincroniza archivos gestionados con el catálogo preservando ediciones locales (drift SHA-256). |\n| `forge validate` | Valida que `project.yaml` y los archivos generados cumplan el esquema. |\n| `forge doctor` | Health-check del entorno: Node.js, git, runtime de IA activo, permisos. |\n| `forge migrate` | Migra `project.yaml` del schema v1 al v2 (`--dry-run`, `--backup`). |\n| `forge audit` | Verifica el proyecto contra el manifest; detecta archivos modificados o faltantes. |\n| `forge export` | Emite el modelo resuelto del proyecto (agentes, skills, comandos, MCP servers) como JSON estable (`--json`, valida contra `export.schema.json`). |\n| `forge mcp serve` | Server MCP completo por stdio: resources (specs, export, audit), prompts (agentes/comandos como templates) y tools (`forge_audit`, `forge_recommend`, `forge_generate`). Conéctalo con `claude mcp add forge -- forge mcp serve`. |\n| `forge scaffold` | Genera un agente nuevo: profile Tier 2 o agente de dominio Tier 3. |\n| `forge teardown` | Desinstala forge del proyecto de forma limpia vía manifest (`--dry-run`, `--keep-config`). |\n| `forge skills` | Lista los skills disponibles agrupados por categoría. |\n| `forge aitmpl-search` | Busca en el catálogo curado offline (frameworks, MCP servers, profiles). |\n| `forge wiki` | Gestiona la knowledge base del proyecto (`status` \\| `ingest` \\| `query` \\| `lint`). |\n| `forge panel` | Panel interactivo OpenTUI (config / monitor / skills / hooks / templates). |\n| `forge session-start` | Abre una sesión de trabajo: detecta el estado del repo y enruta. |\n| `forge session-close` | Cierra una sesión: commit → daily note → sync → PR. |\n\n\u003e **Panel interactivo.** Con Bun, `forge panel` (y el dashboard post-`init`) abre un panel navegable OpenTUI para explorar agentes, skills, hooks y profiles sin salir de la terminal. Con Node cae al flujo de prompts estándar.\n\n---\n\n## Stacks / Profiles (19)\n\nProfiles Tier 2 listos para activar. Cada uno aporta reglas de arquitectura, convenciones de código y patrones del framework.\n\n\u003cdetails open\u003e\n\u003csummary\u003eVer los 19 profiles\u003c/summary\u003e\n\n\u003cbr\u003e\n\n| TypeScript / JS | Python | PHP | Otros |\n|---|---|---|---|\n| `astro` | `django` | `laravel` | `go-gin` (Go) |\n| `express` | `fastapi` | `wordpress` | `rust` |\n| `hono-drizzle` | `flask` | | `springboot` (Java) |\n| `nestjs` | | | `rails` (Ruby) |\n| `nextjs-admin` | | | `flutter` (Dart) |\n| `sveltekit` | | | |\n| `vuenuxt` | | | |\n| `expo` | | | |\n| `playwright-crawler` | | | |\n\n\u003c/details\u003e\n\n---\n\n## Runtimes\n\nUn mismo proyecto forge se adapta a cuatro runtimes, cada uno con su salida nativa.\n\n| Runtime | Soporte | Salida |\n|---------|---------|--------|\n| **Claude Code** | ✅ Completo | `CLAUDE.md`, `.claude/agents/`, `.claude/commands/`, `.claude/settings.json`, hooks |\n| **OpenCode** | ✅ Soportado | `AGENTS.md` generado desde la raíz |\n| **Codex CLI** | ✅ Soportado | `AGENTS.md` enriquecido para contexto de proyecto |\n| **Kiro** | 🔭 Monitoring | steering files (`.kiro/steering/*.md`) |\n\nDetalle por runtime en [docs/runtimes/](docs/runtimes/).\n\n---\n\n## Skills\n\n12 skills **generales** que encapsulan flujos completos, mapeados por runtime y disparables como slash commands (`/spec`, `/new-feature`, `/db-migrate`…), más skills **por stack**.\n\n| Skill | Para qué |\n|-------|----------|\n| `spec` | Redacta specs SDD en `docs/specs/`. |\n| `new-feature` | Kickoff de feature spec-first, de plan a deploy. |\n| `security-audit` | Checklist de auditoría de seguridad. |\n| `db-migrate` | Migraciones seguras (Prisma, Drizzle, ActiveRecord, Alembic, Goose). |\n| `local2prod` | Deploy con gate de producción multi-provider. |\n| `browser-test` | Verificación de UI y flujos críticos vía navegador. |\n| `phase-kickoff` | Arranque de una fase del roadmap. |\n| `obsidian-sync` | Sincronización con Obsidian. |\n| `aitmpl-search` | Busca en el catálogo curado offline. |\n| `wiki-ingest` | Ingesta fuentes a la knowledge base. |\n| `wiki-lint` | Lintea la consistencia de la wiki. |\n| `wiki-query` | Responde queries citando páginas de la wiki. |\n\n\u003e Además, `session-start` y `session-close` están disponibles como comandos de la CLI.\n\n\u003e **Skills por stack.** El profile **Laravel** suma 5 skills orientados a Laravel 13: `/laravel-eloquent`, `/laravel-pest`, `/laravel-security`, `/laravel-verify` y `/laravel-mcp` (Boost, `laravel/mcp`, AI SDK, embeddings/pgvector).\n\nCatálogo completo en [docs/skills.md](docs/skills.md).\n\n---\n\n## SDD: spec-first, no opcional\n\nforge aplica **Spec-Driven Development** con un gate real, no una sugerencia:\n\n- Ninguna tarea de código arranca sin una spec en estado **`APPROVED`** dentro de `docs/specs/`.\n- El **`orchestrator` veta** spawnear agentes de implementación si no hay spec aprobada.\n- El skill `/spec` redacta la spec; `/new-feature` la lleva de plan a deploy.\n\nEl resultado: el equipo de agentes no improvisa código sobre requisitos ambiguos — primero se acuerda el _qué_, después se genera el _cómo_.\n\n---\n\n## Compliance con veto vinculante\n\nEl agente **`compliance-reviewer`** (Tier 1, model `opus`) revisa cada PR contra los marcos de compliance activos — **GDPR / LGPD / CCPA** — con **poder de veto vinculante** antes de mergear.\n\nSumado a los **guardrail hooks en JavaScript puro** (cero Python):\n\n- 🚫 **branch-guard** — evita commits directos sobre ramas protegidas.\n- 🐛 **debug detection** — bloquea `console.log` / `print` de depuración.\n- 🔐 **secret detection** — frena secretos hardcodeados antes del commit.\n- 🚀 **prod-safety** — protege operaciones sensibles contra producción.\n\n---\n\n## Comparativa\n\n| Capacidad | forge | autoskills | cc-sdd |\n|---|:---:|:---:|:---:|\n| Enfoque | Framework agentic end-to-end | Colección de skills | SDD para Claude Code |\n| SDD spec-first con gate | ✅ veto del orchestrator | ❌ | ✅ núcleo |\n| Agentes por tier (1/2/3) | ✅ | ❌ | ❌ |\n| Profiles de stack | ✅ 19 | 🚧 parcial | ❌ |\n| Skills invocables | ✅ 12 | ✅ foco central | 🚧 |\n| Multi-runtime | ✅ 19 runtimes | 🚧 sobre todo Claude Code | 🚧 |\n| Compliance con veto (GDPR/LGPD/CCPA) | ✅ vinculante | ❌ | ❌ |\n| Guardrail hooks (branch/secrets/prod) | ✅ sin Python | ❌ | ❌ |\n| Knowledge base / wiki con citas | ✅ ingest/lint/query | ❌ | ❌ |\n| Operaciones reversibles (SHA-256, dry-run) | ✅ | ❌ | ❌ |\n| Deploy con gate de producción | ✅ multi-provider | ❌ | ❌ |\n\n---\n\n## Documentación\n\n- 🌐 **[Landing](https://cristiancorreau.github.io/forge/)** — el pitch en una página.\n- 📖 **[Guía completa](docs/guide.md)**\n- 🧩 **[Skills](docs/skills.md)**\n- 🏗️ **[TIERs](docs/tiers.md)**\n- 📚 **[Wiki / knowledge base](docs/wiki.md)**\n- 📡 **[Runtimes](docs/runtimes/)**\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n\u003cbr\u003e\n\n### Forja tu equipo de agentes en un comando\n\n```bash\nnpx @cristiancorreau/forge init\n```\n\n**[Empieza en la landing →](https://cristiancorreau.github.io/forge/)**\n\n\u003cbr\u003e\n\n\u003csub\u003eHecho con fuego, yunque y mucho dogfooding.\u003c/sub\u003e\n\n\u003cbr\u003e\n\n\u003c/div\u003e\n\n---\n\n## Licencia\n\n[Apache-2.0](LICENSE) — Copyright © 2026 [Cristian Correa](https://github.com/cristiancorreau).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcristiancorreau%2Fforge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcristiancorreau%2Fforge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcristiancorreau%2Fforge/lists"}