3. /slashforge:setup frente a /init
Secciones
Ajustes de lectura
Ninguna voz para este idioma en este navegador.
Más voces
Código y términos técnicos en inglés
Desactivado: la voz de la página lo lee todo, sin pausa entre dos voces.
Ninguna voz para este idioma en este navegador.
Más voces
Más voces: Microsoft Edge ofrece voces naturales en línea, y Windows (Configuración › Hora e idioma › Voz), macOS y Android instalan otras.
Código: code/slashforge/lab/prepare.sh y lab/run.sh. Las ejecuciones de esta lección y de las dos siguientes están registradas en el diario, con sus hipótesis, escritas antes de las ejecuciones.
Un laboratorio que no alcanza nada
Sección titulada «Un laboratorio que no alcanza nada»Setup escribe una docena de archivos en un repositorio, y las lecciones siguientes pueden hacer push de ramas y publicar revisiones. Nada de eso debería ocurrirle a un repositorio real, ni a tu propio ~/.claude, mientras aprendes. lab/prepare.sh construye un laboratorio en el directorio que elijas:
- un directorio personal, un directorio de configuración de Claude Code (
CLAUDE_CONFIG_DIR), un directorio para la CLI de GitHub (GH_CONFIG_DIR) y una configuración de git, todo dentro del laboratorio; - un clon del propio SlashForge en
v4.4.3, en una ramalab, sin remote y con un hook pre-push que rechaza; - SlashForge instalado de forma global en el directorio personal del laboratorio, de modo que el repositorio queda exactamente como se clonó.
El repositorio es SlashForge porque es público, pequeño y no tiene dependencias, y porque el curso ya conoce sus bugs: será interesante ver si los comandos los encuentran.
cd code/slashforgenpm cibash lab/prepare.sh ../../../sf-lablab: …/sf-labrepository: bd75a4f release: 4.4.3 (#64) (v4.4.3, branch lab, no remote)kit: "version": "4.4.3" in …\sf-lab\home\.clauderemotes: 0El Claude Code del laboratorio no tiene sesión iniciada, y una ejecución que lo intenta de todos modos se detiene antes de llamar al modelo: la ejecución e0 del diario gastó 0 tokens. Iniciar la sesión necesita a una persona, porque la página de inicio de sesión da un código para pegar en la terminal. Apunta CLAUDE_CONFIG_DIR al laboratorio para ese único comando:
$env:CLAUDE_CONFIG_DIR = "$PWD\..\..\..\sf-lab\home\.claude"claude auth login --claudeaiRemove-Item Env:CLAUDE_CONFIG_DIRCLAUDE_CONFIG_DIR="$PWD/../../../sf-lab/home/.claude" claude auth login --claudeaiCLAUDE_CONFIG_DIR="$PWD/../../../sf-lab/home/.claude" claude auth login --claudeai--claudeai usa tu suscripción; --console facturaría la API. Tu propio ~/.claude sigue con su sesión iniciada y sin tocar.
Una ejecución, un tope
Sección titulada «Una ejecución, un tope»lab/run.sh ejecuta un prompt con claude -p y se niega a arrancar sin un tope:
bash lab/run.sh <lab> <name> <max-usd> <max-turns> "<prompt>"Pasa --max-budget-usd y --max-turns, se detiene a los 900 s, y registra los turnos, los tokens, el coste, los permisos denegados y cada ruta que cambió. Dos decisiones determinan lo que puede hacer una ejecución:
- Headless significa que la primera pregunta termina la ejecución.
claude -pno tiene a nadie que responda, así que cuando un comando de SlashForge llega a una puerta, pregunta, y la ejecución termina. El laboratorio mide cada comando hasta su primera decisión, nunca más allá. - Las ediciones solo se aceptan dentro del repositorio. La ejecución usa
--permission-mode acceptEditsy permite git de solo lectura,lsy las pruebas. El push,gh,curly la web se rechazan. Una versión anterior también listabaEdityWriteentre las herramientas permitidas. Eso las preaprueba en todas partes, y la lección 5 muestra lo que un modelo hizo con ello.
/init: un archivo, de inmediato
Sección titulada «/init: un archivo, de inmediato»/init es el propio comando de Claude Code para un repositorio nuevo. Ejecución e2b, con un tope de 0.50 USD y 20 turnos:
exit: 0wall: 92 sturns: 9tokens: in 16, cache write 24664, cache read 252589, out 3555cost: 0.3189938 USD (as computed by Claude Code)changed: 1 path(s) in the lab repositoryLa única ruta es un CLAUDE.md de 50 líneas, escrito sin ninguna pregunta: qué es el paquete, los comandos (pruebas, dry run, el sitio de documentación), la arquitectura de las plantillas y sus cuatro listas, los releases. Termina con una sección que el curso no pidió:
## Known drift
The README's "What gets installed" table still shows `commands/forge/`; the code installs to `commands/slashforge/`. Trust `bin/install.js`.Es la tabla obsoleta del README que la lección 1 encontró comparando el README con la salida del instalador. /init la encontró leyendo.
/slashforge:setup: primero las preguntas
Sección titulada «/slashforge:setup: primero las preguntas»Ejecución e2, sobre el mismo clon, con 0.75 USD y 20 turnos:
exit: 0wall: 56 sturns: 6tokens: in 6, cache write 25541, cache read 86674, out 2190cost: 0.2654868 USD (as computed by Claude Code)changed: 0 path(s) in the lab repositoryNada escrito. setup.md dice por qué: “Collect every user decision in Phase 1, then run the rest without interrupting the user. Do not write any file until Phase 3.” La fase 1 exploró el repositorio y terminó en seis preguntas:
Questions before I write anything
1. Layout: should I treat this as one app, with a single root `CLAUDE.md` and rules that cover `docs/` as a sub-area? Or do you want a separate `CLAUDE.md` for `docs/`?2. Common tasks: my guess is that most day-to-day work is (a) editing or adding a template or skill, (b) changing the installer logic, (c) updating the docs site, and (d) cutting a release. Is that right, and is anything missing?3. Template rules: …4. Releases: …5. Agents: I plan to create `installer-developer` (Node CLI and tests), `template-author` (the prompt and guide Markdown), `docs-developer` (Astro), and a `code-reviewer`. Does that split work for you?6. Hooks and commands: …La pregunta que el curso esperaba primero, la oferta de instalar Graphify, no llegó nunca. La guía de setup aplica una puerta de adecuación del lenguaje: cuando menos del 70% del código fuente es código que Graphify puede indexar, omite la oferta en silencio. SlashForge es sobre todo Markdown y archivos .astro, y la ejecución lo dijo en una línea: “Graphify: skipped.” La hipótesis escrita antes de la ejecución esperaba un archivo y una pregunta sobre Graphify, y quedó refutada en ambos puntos.
Lado a lado
Sección titulada «Lado a lado»/init |
/slashforge:setup |
|
|---|---|---|
| Pregunta antes de escribir | no | seis preguntas |
| Archivos escritos en la ejecución | CLAUDE.md |
ninguno todavía; CLAUDE.md al final, después de los agentes, las reglas, los hooks y los comandos |
| Turnos, tiempo real | 9, 92 s | 6, 56 s |
| Coste de la ejecución | 0.32 USD | 0.27 USD, y las respuestas todavía están por venir |
| Estimación del README | — | “~50–120k tokens, paid once” para todo el setup |
Los recuentos de tokens son difíciles de comparar con los del README, porque la mayor parte de la entrada se sirve desde la caché de prompts: la ejecución de setup leyó 86,674 tokens de ella y escribió 25,541. Si el rango del README cuenta la entrada en caché, no lo dice.
Claude Code tiene su propia versión de la entrevista. Con CLAUDE_CODE_NEW_INIT=1, /init pregunta qué artefactos configurar (archivos CLAUDE.md, skills, hooks), explora con un subagente, hace preguntas de seguimiento y “presents a reviewable proposal before writing any files”. El laboratorio no ejecutó ese modo; compararlo con setup es el ejercicio 4.
Es la diferencia entre dotnet new y un consultor. La plantilla escribe un valor por defecto sensato de inmediato; el consultor te entrevista primero y escribe algo que encaja, a un precio, y solo cuando has respondido. Para un repositorio que conoces bien, /init y diez minutos de edición pueden bastar. Para un equipo, las preguntas de setup son la parte útil: son las decisiones que alguien tiene que tomar de todos modos.
Puntos clave
Sección titulada «Puntos clave»- Un laboratorio con su propio directorio personal, su configuración de Claude Code, de
ghy de git, y un clon sin remote, permite ejecutar un workflow sin tocar nada real. claude -ptermina en la primera pregunta, así que una ejecución headless mide un comando hasta su primera puerta y nunca la responde.- Listar
EditoWriteen--allowedToolslas preaprueba en todas partes;acceptEditspor sí solo las acepta únicamente en el directorio de trabajo. /initescribeCLAUDE.mdde inmediato./slashforge:setupexplora, hace primero todas las preguntas y no escribe nada antes de que respondas.- La oferta de Graphify de setup solo aparece cuando la mayor parte del repositorio es código que Graphify puede leer.
Ejercicios
Sección titulada «Ejercicios»- En el laboratorio, ejecuta
/inituna segunda vez, cuando ya existe el primerCLAUDE.md. ¿Qué esperas que haga, y qué dice la documentación de/init? - La fase 1 de setup termina con preguntas, y la ejecución headless se detiene ahí. ¿Cómo le darías las respuestas sin una sesión interactiva?
- Encuentra la frase de
setup.mdque le hace escribirCLAUDE.mdal final, y da una razón para ese orden. - Ejecuta
/initen el laboratorio conCLAUDE_CODE_NEW_INIT=1y un tope. ¿Dónde se detiene, comparado con las seis preguntas de setup?
Solución
- La documentación de la memoria dice: “If a CLAUDE.md already exists,
/initsuggests improvements rather than overwriting it.” Pruébalo y compara el diff con lo que esperabas; después, restaura el repositorio del laboratorio congit checkout -- .ygit clean -fd. - Continúa la misma conversación:
claude -p --resume <session-id> "<answers>", con el id de sesión deresult.json. Cada respuesta es una nueva ejecución, con su propio tope, y la siguiente puerta la vuelve a terminar. Esa es la idea: cada decisión sigue siendo un paso separado y deliberado. - El paso 9 del flujo nuevo de una sola aplicación: “Create
CLAUDE.mdin the repo root last”. Los pasos anteriores escriben los agentes, las reglas, las skills, los comandos y los hooks, de modo queCLAUDE.mdpuede describir y enlazar lo que ya existe. Escrito primero, describiría archivos que todavía no están ahí, y un fallo a mitad de camino dejaría unCLAUDE.mdque apunta a nada. La integración de Graphify, que añade texto aCLAUDE.md, se ejecuta después del paso 9 por la misma razón. - No medido por el curso: es una ejecución del modelo, así que anota tu propio tope, tus turnos y tu coste. La diferencia documentada es que pregunta qué artefactos crear antes de explorar, mientras que setup decide la lista por sí mismo y te pide que la confirmes.