← Biblioteca 📦 Repo · 13 min Ver en GitHub ↗

gstack: convertir Claude Code en un equipo de ingeniería entero

El "software factory" de Garry Tan (CEO de Y Combinator): 23 especialistas y 8 power-tools, todo en Markdown y slash commands, para que un solo builder envíe como un equipo de veinte.

ia-agentesclaude-codedev-toolsproductividadstartupsharnessopen-sourcegarrytan/gstack
🎧 Escuchar Voz Álvaro (Edge TTS). Si el audio no carga, todavía no está generado.

⚡ En 30 segundos

gstack (de Garry Tan, CEO de Y Combinator) es un conjunto de skills para Claude Code —y otros 9 agentes de coding— que convierten al modelo en un equipo de ingeniería virtual: un CEO que repiensa el producto, un eng manager que cierra la arquitectura, un diseñador que caza "AI slop", un reviewer que encuentra bugs de producción, un QA lead que abre un navegador real y un release engineer que abre el PR.

Por qué importa: no es un copilot ni una colección de prompts sueltos. Es un proceso de sprint encadenado (Think → Plan → Build → Review → Test → Ship → Reflect) donde cada skill escribe un artefacto que la siguiente lee. Todo es Markdown + slash commands, MIT, gratis. La única pieza pesada de verdad es un daemon de navegador Chromium persistente escrito en Bun.

Para quién: fundadores técnicos que aún quieren shippear, usuarios primerizos de Claude Code que prefieren roles estructurados a un prompt en blanco, y tech leads que quieren review/QA/release automatizados en cada PR. Para Raúl: es exactamente un "harness" de generación/ejecución solo-founder + IA — el mismo patrón que su Factory, pero centrado en ejecutar producto, no en filtrar ideas.

23
especialistas (slash commands) + 8 power-tools
10
agentes de coding soportados (Claude, Codex, Cursor, Factory…)
~58MB
binario único compilado con Bun (sin node_modules)
~100ms
por comando de navegador tras el primer arranque (~3s)
72
scripts en bin/ (telemetría, memoria, redact, deploy…)
MIT
licencia · 100% open source

🧠 El problema que resuelve

Un prompt en blanco frente a Claude Code es potente pero sin estructura: el agente hace lo que le pides literalmente, no lo que necesitas. Pides una "app de briefing diario" y te construye exactamente eso, en vez de cuestionarte que lo que describiste es en realidad un "chief of staff AI". Falta juicio de producto, rigor de review y disciplina de proceso — justo lo que aporta un equipo senior.

La tesis de Tan (citando a Karpathy) es que la barrera de ingeniería desapareció: lo que queda es taste, criterio y la voluntad de "hacer la cosa completa". Su archivo ETHOS.md lo formaliza con una tabla de ratios de compresión humano-vs-IA (boilerplate ~100×, tests ~50×, features ~30×) y un principio provocador: "Boil the Ocean" — el viejo "no abarques demasiado" era válido cuando el tiempo de ingeniería era el cuello de botella; ahora el último 10% de completitud cuesta segundos, así que hazlo siempre.

gstack resuelve esto inyectando roles opinados que reintroducen la fricción buena (preguntas forzadas, review adversarial, QA en navegador real) sin reintroducir la lentitud del equipo humano. Todo el repo gira en torno a una idea: encadenar especialistas en un sprint reproducible donde nada se cae entre etapas porque cada skill conoce el artefacto que dejó la anterior.

🏗 Arquitectura

Hay dos capas muy distintas. La capa de proceso es trivial técnicamente (puro Markdown: cada skill es un SKILL.md generado desde un .tmpl). La capa difícil es el navegador: un daemon Chromium persistente para que el agente clique webs reales con latencia sub-segundo.

Claude Code tool: $B snapshot CLI (binario Bun) lee state file · POST Server (Bun.serve) 127.0.0.1:PORT Chromium tabs + cookies HTTP+Bearer CDP Daemon de navegador: estado persistente, ~100ms/comando 1ª llamada arranca todo (~3s) · idle timeout 30min · puerto aleatorio 10000-60000 state file .gstack/browse.json (pid, port, token UUID, binaryVersion) — mode 0o600 si cambia la versión del binario → mata el server viejo y arranca uno nuevo (anti "stale binary")

Cómo leerlo: el agente nunca habla con Chromium directamente. Emite un comando ($B …), el CLI (binario compilado) lee un state file para encontrar el server y hace un POST autenticado con Bearer token a localhost. El server (Bun.serve) traduce ese comando a CDP (Chrome DevTools Protocol) y mantiene tabs, cookies y sesiones vivas. La clave de diseño: arrancar un navegador por comando costaría 40s+ en una sesión de QA de 20 clics y perderías todo el estado entre comandos. El daemon resuelve ambas cosas.

Eligieron Bun por tres razones concretas: bun build --compile da un binario único sin node_modules (instala en ~/.claude/skills/ sin que gestiones un proyecto Node), SQLite nativo para desencriptar cookies de Chromium sin addons nativos, y Bun.serve() integrado sin Express.

THINK /office-hours PLAN /autoplan BUILD implementar REVIEW /review /cso TEST /qa SHIP /ship /land REFLECT /retro /learn El sprint: cada skill escribe un artefacto que la siguiente lee /office-hours escribe el design doc → /plan-eng-review escribe el test plan → /qa lo recoge → /review caza bugs que /ship verifica

El sprint es la idea central del repo: gstack es un proceso, no una caja de herramientas. El encadenamiento por artefactos (el design doc de /office-hours alimenta a /plan-ceo-review; el test plan de /plan-eng-review lo recoge /qa) es lo que diferencia esto de tener 23 prompts sueltos.

🔑 Conceptos / técnicas clave

Skill = especialista en un SKILL.md — Cada rol es un fichero Markdown con instrucciones de comportamiento. Se generan desde plantillas .tmpl (bun run gen:skill-docs) y se reescriben por host (Claude, Codex…). Editas la plantilla, no el output.
Ethos inyectadoETHOS.md ("Boil the Ocean", "Search Before Building", tres capas de conocimiento) se inyecta en el preámbulo de cada skill. Es el "carácter" compartido que hace que todos los roles empujen hacia completitud y rigor.
Daemon de navegador (browse) — La única pieza de software "real". Chromium persistente + CLI compilado + server Bun sobre CDP. Habilita /qa, /canary, /scrape: el agente clica webs de verdad con login real importando cookies de tu navegador.
Multi-host (10 agentes) — Añadir soporte para otro agente de coding es "un fichero de config TypeScript, cero cambios de código" (agents/openai.yaml, docs/ADDING_A_HOST.md). gstack se posiciona como capa neutral por encima del agente.
Team mode auto-update — En un repo compartido, cada sesión de Claude Code hace un chequeo de auto-update (throttle 1/hora, silencioso, a prueba de fallos de red). Sin ficheros vendados ni drift de versiones.
Memoria + telemetría (gbrain)/context-save, /learn, sync cross-máquina vía gbrain/Supabase, decision-log, telemetry-log. La factoría recuerda decisiones entre sesiones (paralelo directo a tu MEMORY.md).

Los especialistas más importantes, agrupados por fase:

ComandoRolQué hace
/office-hoursYC Office HoursPunto de partida. Seis preguntas forzadas que re-enmarcan el producto antes de escribir código. Cuestiona premisas, genera alternativas de implementación, escribe el design doc.
/plan-ceo-reviewCEO / FounderBusca el "producto de 10 estrellas" escondido en la petición. 4 modos: Expansión, Expansión selectiva, Mantener scope, Reducción.
/plan-eng-reviewEng ManagerCierra arquitectura, data flow, diagramas ASCII, edge cases y matriz de tests. Saca a la luz suposiciones ocultas.
/autoplanUn comando corre CEO → design → eng → DX review en cadena.
/reviewStaff EngineerEncuentra bugs que pasan CI pero explotan en producción. Auto-arregla los obvios, marca gaps de completitud.
/csoSecurity OfficerAuditoría OWASP Top 10 + STRIDE.
/investigateDebuggerRoot-cause sistemático. Ley de hierro: sin investigación no hay fix. Para tras 3 fixes fallidos.
/qa / /qa-onlyQA LeadAbre navegador real, clica flujos, encuentra bugs, los arregla con commits atómicos y genera tests de regresión. -only = solo reporta.
/design-shotgun + /design-htmlDiseñadorGenera 4-6 variantes de mockup, board de comparación en el navegador, "taste memory" que aprende lo que te gusta, y convierte el elegido en HTML de producción.
/ship / /land-and-deploy / /canaryRelease EngineerTests + review + push + abre PR; mergea, espera CI/deploy y verifica salud; monitoriza post-deploy.
/careful / /freeze / /guardSafetyAvisa antes de comandos destructivos (rm -rf, DROP TABLE, force-push) y bloquea edición fuera de un directorio.

🗂 Mapa de ficheros importantes

Fichero / carpetaPara qué sirve
README.mdManifiesto + quick start + tabla completa de skills. La "venta" del proyecto y la demo de sesión end-to-end.
ETHOS.mdLos principios ("Boil the Ocean", tabla de compresión IA) que se inyectan en cada skill. El "alma" del repo.
ARCHITECTURE.mdEl "por qué" técnico. Daemon model, elección de Bun, state file, y un modelo de seguridad muy detallado (dual-listener tunnel, sanitización de surrogates, defensa anti prompt-injection).
AGENTS.mdCatálogo de todas las skills por categoría + build commands + convenciones (SKILL.md se genera de .tmpl).
*/SKILL.md + SKILL.md.tmplCada skill vive en su carpeta (autoplan/, benchmark/, browse/…). El .tmpl es la fuente; el .md es output generado.
browse/src/*.tsEl corazón técnico: server.ts, cdp-bridge.ts, browser-manager.ts, content-security.ts (defensa prompt-injection), cli.ts. ~22 ficheros TypeScript.
bin/ (72 scripts)Toda la fontanería: gstack-paths (resuelve rutas de estado), gstack-redact (no filtrar secretos), gstack-telemetry-log, gstack-brain-* (memoria), gstack-team-init, gstack-decision-log.
agents/openai.yamlEjemplo de config de host: así se añade soporte para otro agente de coding sin tocar código.
docs/ON_THE_LOC_CONTROVERSY.mdDefensa de Tan ante las críticas a sus métricas de LOC con IA: metodología, caveats y script de reproducción.
setup / ./setup --team / --hostInstalador. Auto-detecta qué agentes tienes y dónde colocar las skills.

🎯 Qué puedes aplicar tú

⚠️ Limitaciones / cuándo NO usarlo