Diario
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.
Progreso
Sección titulada «Progreso»- SlashForge 4.4.3 fijado en
code/slashforge/package.json;check.shejecuta el instalador en un directorio personal desechable y en un repositorio desechable - CI:
check.shen Linux, Windows y macOS, sin Claude Code y sin clave de API - Lección 1: lo que escribe el instalador
- Lección 2: dentro de los archivos — comandos, skills, guías
- Lecciones 1 y 2 repetidas desde un export limpio del código del curso: 19 de 19 salidas coinciden
- Un laboratorio desechable para las lecciones 3 a 5:
code/slashforge/lab/prepare.shylab/run.sh, con un tope en cada ejecución - Lecciones 3 a 5 probadas en el laboratorio, en modo headless, cada una hasta su primera puerta: seis ejecuciones, 1.83 USD en total (ver Experimentos)
- Página de la lección 3:
/slashforge:setupfrente a/init - Página de la lección 4:
/slashforge:code, diez fases y cuatro puertas, con-quick - Página de la lección 5:
/slashforge:investigatey/slashforge:review-pr - Lección 6: hacerlo tuyo — reglas, verificación, una instalación de equipo;
check.shcompara ahora 20 salidas - Lección 7: contribuir aguas arriba, y una nueva prueba de 4.5.0 en Windows
- SlashForge 5.2.1 comprobado de nuevo en Windows: instalador, comprobación de tamaño de setup y pruebas del kit; tres issues abiertas aguas arriba
-
retest/recheck.shpara las releases 5.x, ejecutado en Windows y en Linux (WSL2)
Cada fila de abajo está reproducida por check.sh o leída en el instalador en el tag v4.4.3. Ninguna se ha reportado aguas arriba: el repositorio no tenía ninguna issue abierta ni cerrada el 2026-09-22, y sus pruebas no cubren el dry run. El 2026-09-26, el autor reconoció estos hallazgos y anunció correcciones (entrada), y la release 4.5.0 corrige las ocho filas sobre el instalador y las guías, vueltas a probar en Windows (nueva prueba). El 2026-10-09 se comprobó de nuevo la release 5.2.1; las tres últimas filas salen de ahí y se reportaron aguas arriba (entrada).
| Esperado | Lo que pasa | Dónde | Medición | Estado |
|---|---|---|---|---|
--dry-run lista lo que escribe la instalación |
Lista 21 archivos; la instalación escribe 32. Faltan las nueve skills, forge-open.sh y forge-report-shell.html |
bin/install.js#L499-L528 construye su propia lista a partir de dos de los cuatro arrays |
l01_dry_run_vs_install: 11 escritos y no anunciados; 0 anunciados y no escritos |
Reproducido, no reportado 2026-09-22 · Corregido en v4.5.0, vuelto a probar en Windows (2026-09-26) |
| El dry run etiqueta cada archivo con lo que la instalación le hace | Dice copy para todas las guías. Las guías se renderizan desde la 4.4.1 |
mismas líneas | l02_global_vs_project: dos guías difieren entre la instalación global y la de proyecto, cosa que una copia no podría hacer |
Reproducido, no reportado 2026-09-22 · Corregido en v4.5.0, vuelto a probar en Windows (2026-09-26) |
| El apartado What gets installed del README describe la 4.4.3 | Describe tres comandos en commands/forge/; la 4.4.3 escribe cuatro comandos y nueve skills en commands/slashforge/ |
README.md#L103-L112 |
l01_files |
Reproducido, no reportado 2026-09-22 · Corregido en v4.5.0, vuelto a probar en Windows (2026-09-26) |
| Los comentarios del instalador describen su código | Tres son más antiguos que él: “the three entry points” encima de una lista de cuatro; 'forge/setup.md' -> '/slashforge:setup' encima de commandName; “a namespace subdirectory (forge/)” donde escribe slashforge/ |
#L45-L50, #L182-L183, #L259-L260 |
l02_installer_functions: commandName('slashforge/setup.md') da /slashforge:setup |
Leído; solo comentarios, ningún comportamiento afectado · Corregido en v4.5.0, vuelto a probar en Windows (2026-09-26) |
--yes, que la ayuda asocia a “the update prompt”, no responde a otras preguntas |
Con un stdin que no es una terminal está activado, y uninstall lo borra todo sin preguntar |
#L628-L633 |
l01_uninstall: 15 borrados, exit 0, ninguna pregunta |
Reproducido; documentado en parte · Corregido en v4.5.0, vuelto a probar en Windows (2026-09-26) |
| Una plantilla que Claude Code acepta, el instalador la acepta | El instalador lee el frontmatter línea a línea: una description: > plegada de YAML se rechaza, y un --- de cierre seguido de un espacio no se encuentra, aunque al delimitador de apertura sí se le quitan los espacios |
#L113-L137 |
l02_installer_functions: 6 rechazos de 7 muestras |
Reproducido; solo afecta a las plantillas que añadas tú · Corregido en v4.5.0, vuelto a probar en Windows (2026-09-26) |
El campo name que exige el instalador da nombre al comando |
Claude Code ignora name en un archivo bajo commands/; es la ruta la que da nombre al comando |
Claude Code, skills | — | Documentado por ambos lados; una trampa al renombrar (lección 2, ejercicio 1) |
| Las guías del kit coinciden sobre dónde va una skill y cuánto puede medir | forge-instructions.md dice .claude/skills/*.md y “Every .md file … under 200 lines”; forge-skills.md dice una carpeta con SKILL.md, por debajo de 500 líneas. La documentación de Claude Code solo lista la forma de carpeta |
forge-instructions.md#L14-L34, forge-skills.md#L27-L51 |
Dos contradicciones en guías que el modelo lee en la misma ejecución | Leído, no reportado 2026-09-22 · Corregido en v4.5.0, vuelto a probar en Windows (2026-09-26) |
| El paso de verificación de setup detecta un archivo de más de 200 líneas | wc -l CLAUDE.md .claude/**/*.md en bash sin globstar se queda a una carpeta de profundidad, así que el SKILL.md de una skill nunca se cuenta |
forge-instructions.md Step 9 |
l06_verify_glob: un SKILL.md de 300 líneas ausente del recuento, en Linux, Windows y macOS |
Reproducido, no reportado 2026-09-22 · Corregido en v4.5.0, vuelto a probar en Windows (2026-09-26) |
| La corrección 4.5.0 de la prueba del asistente de apertura retira la aserción que lanza el abridor real | La prueba simulada se añadió junto a la antigua, que sigue lanzando el asistente sobre un archivo inexistente sin SSH_CONNECTION: start en Windows, xdg-open en un escritorio Linux, open en macOS |
test/install.test.js#L570, línea 526 en v4.5.0 |
Leído en v4.5.0 y v5.2.1, no ejecutado, porque abre un diálogo. Invalida la frase de la nueva prueba del 2026-09-26, «Windows ya no abre un diálogo» |
Leído; reportado como #104 2026-10-09 · Resuelto por eliminación en 5.3.0: el asistente y sus pruebas ya no existen en v5.3.1 (2026-10-10) · Cerrado el 2026-10-11 (comentario) |
Donde el host lo respeta, los comandos del kit llevan disable-model-invocation: true |
Desde 5.0.0, los ocho comandos lo llevan en Cursor y Codex. Ninguno de los 17 archivos de ~/.claude/commands/ lo lleva, aunque la propia guía del kit lo llama «critical for commands with side effects» y Claude Code deja por defecto que el modelo invoque un comando |
bin/install.js#L618, templates/slashforge-commands.md#L127, Claude Code, skills |
Frontmatter de una instalación global 5.2.1 en un directorio personal desechable: 0 de 17. No ejecutado con un modelo | Leído e instalado; reportado como #105 2026-10-09 |
| El mensaje final de la instalación lista los comandos | Lista seis comandos y -quick. Faltan /slashforge-test y /slashforge-refactor, añadidos en 5.2.0, mientras que status lista ocho |
bin/install.js#L1199-L1209 |
Salida de la instalación, global y --project |
Reproducido; reportado como #106 2026-10-09 · Corregido en 5.3.1, comprobado de nuevo en Windows y Linux (2026-10-10) |
Experimentos
Sección titulada «Experimentos»Las lecciones 3 a 5 ejecutan los comandos a través del modelo, así que cada ejecución tiene una hipótesis escrita antes y un tope (lab/run.sh no tiene presupuesto por defecto). Las hipótesis de L3 a L5 se escribieron cuando el laboratorio aún no tenía sesión iniciada; las ejecuciones vinieron después de que el autor iniciara sesión en el laboratorio. Cada ejecución es headless y termina en la primera pregunta que hace el workflow. Los costes son los que Claude Code calcula para el modelo que usó, claude-opus-5-5[1m], el predeterminado de la cuenta: serían más bajos con un modelo más pequeño. Son una ejecución cada uno, no promedios.
| Pregunta | Hipótesis (escrita antes de la ejecución) | Resultado | Veredicto | Entrada, código |
|---|---|---|---|---|
e0 — ¿Puede el laboratorio ejecutar un comando sin tocar el verdadero ~/.claude? |
Un Claude Code cuyo directorio de configuración está vacío no tiene sesión iniciada, y se detiene antes de cualquier llamada al modelo, sin gastar nada | Not logged in · Please run /login, exit 1, 1 turno, 114 ms, 0 tokens de entrada y de salida, 0 USD, 0 archivos cambiados. Tope: 0.25 USD, 3 turnos |
Confirmada: el laboratorio está aislado, y no puede ir más lejos sin un inicio de sesión | 2026-09-22, lab/run.sh |
L3 — ¿Qué escribe /slashforge:setup en un repositorio sin .claude/, comparado con /init? |
Escribe CLAUDE.md y .claude/rules/, y se detiene en la oferta de Graphify (un sí/no) antes de aprovisionar nada |
e2: nada escrito. Graphify omitido sin preguntar (por debajo de su umbral del 70%); se detuvo en seis preguntas de aclaración. 6 turnos, 56 s, 0.27 USD. e2b, /init sobre el mismo clon: un CLAUDE.md de 50 líneas escrito de inmediato, sin preguntas, 9 turnos, 92 s, 0.32 USD |
Refutada: setup pregunta antes de escribir, y la puerta de Graphify nunca se activó | 2026-09-22, lab/run.sh |
L4 — ¿Hasta dónde llega /slashforge:code -quick en modo headless con un cambio pequeño? |
Se detiene en la puerta de la fase 3 (confirmar el plan) sin editar el repositorio, por debajo de 70,000 tokens, el extremo alto del rango del README para -quick |
e3: un plan escueto (un plannedWrites exportado, una prueba que lo compara con installFiles), y luego una parada, ningún archivo cambiado. Preguntó la fase 3 y la fase 4 (rama) en un solo mensaje. 6 turnos, 57 s, 0.25 USD; 1,720 tokens de entrada y de salida, 23,433 escritos en la caché, 158,847 leídos de ella |
Confirmada para la puerta y para «ninguna edición»; la parte de tokens depende de lo que se cuente: solo las lecturas de caché superan 70,000 | 2026-09-22 |
L5a — ¿Se queda /slashforge:investigate en solo lectura? |
No edita ningún archivo versionado y escribe un informe HTML bajo docs/slashforge/ |
e1 y e1b: ningún archivo cambiado en el repositorio, la causa raíz correcta, y ningún informe, porque construirlo necesita código node que el laboratorio rechaza. En e1, donde el laboratorio preaprobaba Write, el modelo escribió su generador de informes en %TEMP% en su lugar. e1: 15 turnos, 0.45 USD; e1b: detenida por el límite de turnos en 11, 0.38 USD |
Confirmada para el repositorio; la mitad del informe queda sin probar; y un Write preaprobado no se limita al repositorio |
2026-09-22 |
L5b — ¿Qué hace /slashforge:review-pr sin sesión en GitHub? |
Se detiene en su comprobación previa del paso 0 y pide gh auth login, como dice su archivo, sin ejecutar ningún otro comando |
e4: gh auth status falló, el comando se detuvo y le dijo al usuario que ejecutara gh auth login; nada leído ni escrito en GitHub. 4 turnos, 35 s, 0.17 USD |
Confirmada | 2026-09-22 |
e5 — Cuando un comando existe a la vez en ~/.claude y en el proyecto, ¿cuál se ejecuta? |
El personal, como dice la documentación de Claude Code (“personal over project”) | e5b: GLOBAL, 1 turno, 0.09 USD. e5, con un tope de 0.10 USD, se detuvo con error_max_budget_usd en 0.103 USD antes de devolver su respuesta |
Confirmada; y el tope funciona con un inicio de sesión por suscripción, comprobado después de cada llamada | 2026-09-22 |
2026-09-22 — Leer y ejecutar el instalador
Sección titulada «2026-09-22 — Leer y ejecutar el instalador»SlashForge 4.4.3 (tag v4.4.3, commit bd75a4f), Node.js 24.12.0 en local y 24.21.0 en CI, Windows 11. El instalador en main era el mismo archivo ese día.
El curso no deja que el instalador se acerque al verdadero ~/.claude. check.sh apunta HOME, y USERPROFILE en Windows, a out/home, pone SLASHFORGE_NO_UPDATE_CHECK=1 para que la comprobación de versión no llegue a npm, y ejecuta cada comando con stdin desde /dev/null, como hace la CI. Esa última elección revela un comportamiento propio: sin terminal, el instalador responde que sí a todo, desinstalación incluida.
El dry run fue la primera sorpresa. Conté sus líneas a mano y me salieron 23, lo cual era falso: ahora el recuento lo hace scripts/dry-run-vs-install.mjs, y dice 21 frente a 32. La causa está en el código y no en una actualización olvidada: la vista previa es un segundo camino dentro del instalador, y el real ganó assets en la 4.1.0 y skills en la 4.2.0 sin ella. Primero escribí que las nueve skills no se instalaban; sí se instalan, solo que no se anuncian — la segunda lista del script, en el dry run pero no escritos, está vacía.
La lección 2 llama a las funciones exportadas del instalador en lugar de describirlas, lo que es posible porque cargar install.js no lo ejecuta. De esa lección salieron dos mediciones: qué archivos difieren entre una instalación global y una de proyecto (nueve: ocho nombran una ruta, y meta.json), y los recuentos de líneas que muestran que los cuatro comandos son dispatchers de guías más largas.
La comprobación de plantilla rota copia el paquete, borra una línea description: y ejecuta la copia en su propio directorio personal: exit 1, y ningún archivo escrito.
2026-09-22 — El laboratorio de las lecciones 3 a 5, y dónde se detiene
Sección titulada «2026-09-22 — El laboratorio de las lecciones 3 a 5, y dónde se detiene»Versiones: Claude Code 2.1.280, Node.js 24.12.0 en local, SlashForge 4.4.3, Windows 11 con Git Bash.
Lecciones 1 y 2, repetidas. Exporté code/slashforge desde el commit publicado (cfa14ef) a una carpeta nueva, ejecuté npm ci y bash check.sh: 19 de 19 salidas coinciden, en 135 s incluida la instalación. La CI pasó en Linux, Windows y macOS para el mismo commit. Después, el verdadero ~/.claude no tenía carpeta commands/ ni setup/: nada de SlashForge.
El laboratorio. lab/prepare.sh <dir> crea 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 de <dir>. Clona el propio SlashForge en v4.4.3 (público, MIT, sin dependencias) en una rama lab, quita el remote y añade un hook pre-push que rechaza. Luego instala el kit de forma global en el directorio personal del laboratorio. Comprobé esa protección con un push a un repositorio bare local: lab: push refused, exit 1.
lab/run.sh <dir> <name> <max-usd> <max-turns> <prompt> ejecuta claude -p en el repositorio del laboratorio con --max-budget-usd, --max-turns y un timeout de 900 s. Acepta ediciones, solo permite git de solo lectura, ls y las pruebas, y rechaza git push, gh, curl, la web y los servidores MCP. Registra el código de salida, el tiempo real, los turnos, los tokens, el coste que calcula Claude Code, los permisos denegados y cuántas rutas cambiaron. Una ejecución headless termina en la primera pregunta que hace el workflow, así que una puerta de SlashForge termina la ejecución. Nunca se responde.
El experimento más pequeño, e0: /slashforge:investigate sobre el hallazgo del dry run de la lección 1, con un tope de 0.25 USD y 3 turnos. Claude Code respondió Not logged in · Please run /login en 114 ms, con 0 tokens y 0 USD, y el repositorio del laboratorio no cambió. Su resultado JSON informa "subtype": "success" con "is_error": true y "terminal_reason": "api_error", así que un script tiene que leer is_error y no subtype.
Dónde se detiene. Iniciar sesión en el laboratorio necesita a una persona. El inicio de sesión es un flujo en el navegador para la cuenta del autor, y copiar las credenciales reales al laboratorio sería leer ~/.claude, justo lo que este laboratorio existe para no hacer. Así que las lecciones 3 a 5 se detienen aquí, en el paso cero. Las puertas a las que habrían llegado los comandos se listan abajo, sacadas de sus archivos, no de una ejecución:
| Comando | Dónde espera a una persona |
|---|---|
/slashforge:setup |
la oferta de Graphify (sí/no), las preguntas de aclaración, y antes de sobrescribir un archivo que generó en una versión anterior |
/slashforge:code y -quick |
fase 3 confirmar el plan, fase 4 decisión de rama, fase 8 push y PR, fase 10 limpieza; -quick conserva las cuatro |
/slashforge:investigate |
solo cuando se llama sin un síntoma |
/slashforge:review-pr |
paso 0 (gh debe tener sesión iniciada, o se detiene), R1 elegir la PR, R5 antes de publicar nada |
Dos de ellas necesitan una autoridad que este laboratorio no tiene y que no se le debe dar: la fase 8 hace push y abre una pull request, y review-pr publica en GitHub.
Las propias pruebas de SlashForge, en el laboratorio. node --test sobre el clon salió con 0 pero tardó 523 s. No capturé el número de pruebas superadas, porque mi filtro esperaba líneas TAP y el reporter por defecto imprime otra cosa. Sospeché de la prueba de forge-open.sh, que ejecuta start bajo Git Bash. Ejecutada sola, pasa en 20 s, y primero concluí que no era la causa. Esa conclusión era errónea: aquí una prueba en verde no demuestra nada. test/install.test.js:527 llama al helper con /tmp/definitely-does-not-exist-slashforge.html, y en Windows forge-open.sh ejecuta start, se traga el error y devuelve 0. Así que la prueba queda en verde haga lo que haga start: es un falso positivo. Una captura de pantalla del autor muestra que muestra un cuadro de diálogo de error de Windows en el escritorio. Los 20 s tampoco descartan el helper como causa de los 523 s. No volví a ejecutar la prueba, porque abre una ventana. La causa de los 523 s queda por verificar.
2026-09-22 — Las lecciones 3 a 5, ejecutadas en el laboratorio
Sección titulada «2026-09-22 — Las lecciones 3 a 5, ejecutadas en el laboratorio»El autor inició sesión en el directorio de configuración propio del laboratorio con claude auth login (suscripción, no facturación por API), en su propia terminal: la página de inicio de sesión da un código para pegar, cosa que un proceso en segundo plano no puede hacer. claude auth status en el laboratorio dijo entonces "loggedIn": true, "authMethod": "claude.ai", y el verdadero ~/.claude no intervino.
Versiones: Claude Code 2.1.280, modelo claude-opus-5-5[1m] (el predeterminado; no se pasó --model), SlashForge 4.4.3 sobre su propio repositorio en v4.4.3. Seis ejecuciones, cada una con su tope, una a una:
| Ejecución | Prompt | Tope | Turnos | Tiempo | Coste | Se detuvo en |
|---|---|---|---|---|---|---|
| e1 | /slashforge:investigate sobre el hallazgo del dry run |
0.50 USD, 10 turnos | 15 | 76 s | 0.45 USD | el paso del informe, rechazado (ver abajo) |
| e2 | /slashforge:setup |
0.75 USD, 20 turnos | 6 | 56 s | 0.27 USD | seis preguntas de aclaración |
| e2b | /init |
0.50 USD, 20 turnos | 9 | 92 s | 0.32 USD | terminado: CLAUDE.md escrito |
| e3 | /slashforge:code -quick + la corrección del dry run |
0.75 USD, 20 turnos | 6 | 57 s | 0.25 USD | fase 3 y fase 4 juntas |
| e4 | /slashforge:review-pr |
0.25 USD, 5 turnos | 4 | 35 s | 0.17 USD | paso 0: gh sin sesión iniciada |
| e1b | e1 otra vez, con el laboratorio corregido | 0.50 USD, 10 turnos | 11 | 58 s | 0.38 USD | el límite de turnos |
Total: 1.83 USD. Ninguna ejecución alcanzó su tope en dólares. Después de e2b, el repositorio del laboratorio se restauró (su CLAUDE.md se guarda con los archivos de la ejecución); todas las demás ejecuciones lo dejaron sin cambios.
Lo que encontró la investigación. Ambas ejecuciones dieron la causa raíz que da la lección 1: el dry run construye su propia lista a partir de GUIDE_FILES y COMMAND_FILES, e installFiles escribe además ASSET_FILES y SKILL_FILES, 21 + 2 + 9 = 32. e1 añadió dos cosas que el curso no había escrito: que las guías se etiquetan copy aunque se renderizan (la lección 1 lo recoge), y que el dry run no menciona los REMOVED_GUIDE_FILES obsoletos que borra. Propuso la corrección que sugiere la lección 1, una única función de planificación compartida por los dos caminos, con una prueba que los compara.
Una escritura que salió del repositorio. En e1, lab/run.sh listaba Edit y Write entre las herramientas permitidas. Eso las preaprueba en todas partes, no solo en el directorio de trabajo, y el modelo lo aprovechó: con node rechazado para el informe, escribió un script de 4,175 bytes en %TEMP%\sf-splice.js y le dijo al usuario que lo ejecutara. El archivo se guarda con la ejecución, y el laboratorio está corregido. Edit y Write ya no se listan, así que acceptEdits solo acepta ediciones dentro del repositorio, y run.sh lista cualquier archivo que aparezca en la carpeta temporal durante una ejecución. e1b y e2 a e4 no escribieron nada fuera; el único archivo listado después de e2b era una imagen escrita por otro programa.
/init frente a /slashforge:setup. /init escribió un CLAUDE.md de 50 líneas de inmediato, y encontró por sí solo la desviación del README que recoge la tabla de QA de este curso (“Known drift: the README’s What gets installed table still shows commands/forge/”). Setup leyó más y no escribió nada: propuso cuatro agentes, preguntó por los hooks, los comandos, las reglas de release y la estructura, y dijo que escribiría CLAUDE.md al final. La oferta de Graphify, que la hipótesis esperaba como primera puerta, no apareció: la mayor parte del repositorio es Markdown y .astro, por debajo del umbral de lenguaje del 70% de Graphify, y en ese caso setup lo omite en silencio, como dice su archivo.
Las puertas. Cada comando se detuvo donde su archivo dice que decide una persona, y ninguno pasó de una. Una desviación: /slashforge:code -quick pidió el plan (fase 3) y la rama (fase 4) en el mismo mensaje, mientras que code.md dice “Do not combine phases”.
Límites. Una ejecución por comando, un repositorio, un modelo. Los costes los calcula Claude Code para la sesión de suscripción, no son importes facturados. La comparación de tokens de -quick con el README es aproximada, porque el README no dice si su rango cuenta la entrada en caché. El límite de turnos se comportó de forma distinta en dos ejecuciones: e1 informó 15 turnos con --max-turns 10 y terminó con normalidad, y e1b se detuvo en 11 con error_max_turns. La causa queda por verificar.
2026-09-22 — Lección 6: dos reglamentos, y qué copia se ejecuta
Sección titulada «2026-09-22 — Lección 6: dos reglamentos, y qué copia se ejecuta»La mayor parte de la lección 6 es lectura, y de ella salieron dos hallazgos. Las dos guías que el modelo lee durante setup no coinciden: forge-instructions.md lista las skills como .claude/skills/*.md bajo una regla de oro de 200 líneas, y forge-skills.md pide una carpeta con un SKILL.md de menos de 500 líneas. Y el paso de verificación al final de setup, wc -l CLAUDE.md .claude/**/*.md, no mira dentro de las carpetas de skills en el modo por defecto de bash. check.sh construye ahora un pequeño repositorio con un SKILL.md de 300 líneas y compara las dos listas de archivos (l06_verify_glob), así que la CI lo muestra en los tres sistemas; en zsh, donde ** es recursivo por defecto, la misma línea vería el archivo.
Una ejecución del modelo, para zanjar lo que significa una instalación de equipo. La hipótesis, escrita a partir de la documentación de Claude Code antes de la ejecución: con /lab:which a la vez en el commands/ personal del laboratorio y en el .claude/commands/ del repositorio, se ejecuta el personal. e5, con un tope de 0.10 USD, se detuvo con error_max_budget_usd en 0.103 USD: el tope funciona con un inicio de sesión por suscripción, y se comprueba después de la llamada, no antes. e5b, con 0.30 USD, respondió GLOBAL por 0.09 USD. Los dos archivos de prueba se guardan con la ejecución, y el laboratorio se restauró. Así que un compañero con una instalación global ejecuta su propia versión de /slashforge:code, no la que el equipo versionó.
Límite: el comportamiento de setup en una nueva ejecución — actualizar, preguntar o no tocar según la marca generated_by — se describe a partir de la guía, no se ha probado; probarlo implica ejecutar setup más allá de sus preguntas dos veces.
2026-09-26 — La respuesta del autor, y cómo comprobar una release
Sección titulada «2026-09-26 — La respuesta del autor, y cómo comprobar una release»Una respuesta atribuida al autor de SlashForge, Rajdeep Singh Ratan, se publicó en LinkedIn y se pegó en las notas de trabajo de este curso el 2026-09-26. El enlace permanente y la fecha de publicación del mensaje no se han comprobado; el enlace de arriba lleva al perfil del autor, no al mensaje. En resumen, el autor repasó los hallazgos de este diario, se mostró de acuerdo y anunció que orientarán las próximas releases, entre ellas un manifiesto compartido por el dry run y la instalación, y guías y comprobaciones coherentes entre sí.
Estado cuando se escribió esta entrada: reconocimiento del autor, correcciones anunciadas, ni corregidas ni vueltas a probar. Más tarde ese mismo día, este curso vio que la release 4.5.0 ya incluía las correcciones y la volvió a probar: ver la entrada siguiente. Nada de lo que sigue cambia un resultado medido. Cada fila sigue describiendo v4.4.3 en bd75a4f, y solo pasa a corregida después de ejecutar, sobre una release con nombre, la lista de comprobación que sigue.
| Lo que el autor reconoció | Dónde lo midió este diario |
|---|---|
| El dry run lista 21 archivos, la instalación escribe 32 | QA, primera fila (l01_dry_run_vs_install) |
| La vista previa dice que las guías se copian cuando se generan | QA, segunda fila (l02_global_vs_project) |
| El README quedó desactualizado tras el cambio de nombre | QA, tercera fila |
| Hay comentarios del instalador desactualizados | QA, cuarta fila (leído, solo comentarios) |
El sí automático no interactivo también cubre uninstall |
QA, quinta fila (l01_uninstall) |
| La validación de plantillas es más estricta que las reglas de Claude Code | QA, sexta fila (l02_installer_functions) |
| Dos guías se contradicen sobre la ubicación y la longitud de una skill | QA, fila de las dos guías (entrada de la lección 6) |
| La comprobación bash de 200 líneas no ve las skills anidadas | QA, fila del paso de verificación (l06_verify_glob) |
| Una prueba de Windows pasa pase lo que pase y abre un diálogo de error | Entrada del laboratorio y Por verificar |
Generar el informe con node en línea es difícil de autorizar sin riesgo |
Experimento L5a, y «Una escritura que salió del repositorio» en la entrada de las lecciones 3 a 5 |
| Cada comando cuesta dinero antes de su primer punto de control | Experimentos L3 a L5b: de 0,17 a 0,45 USD por ejecución, calculados por Claude Code, no facturados |
| No está claro si la entrada en caché cuenta en las cifras de tokens | Experimento L4: solo las lecturas de caché superan los 70 000 del README |
| Una copia global desactualizada gana en silencio al kit versionado en el proyecto | Experimento e5: GLOBAL |
Lista de comprobación de una release. Para ejecutar sobre la primera release que anuncie estas correcciones, antes de que ninguna fila cambie de estado:
- Nombrar la release: su tag y el SHA exacto del commit al que apunta, leídos en el repositorio, no en un changelog.
- Volver a ejecutar las mismas reproducciones (
check.sh, las comprobacionesl01,l02yl06) en ese commit, en cada sistema que la release declare: Linux, Windows y macOS. - Comparar la lista del dry run con los archivos que la instalación escribe de verdad, archivo por archivo, y anotar ambos códigos de salida.
- Mantener los controles negativos. Una comprobación que no encuentra nada en el commit viejo no prueba nada en el nuevo: ejecutar también cada comprobación en
bd75a4fy confirmar que allí sigue fallando. - Con una entrada estándar que no sea un terminal, comprobar que
uninstallya no borra archivos sin una confirmación u opción explícita, y que--yesestá documentado como que lo cubre si todavía lo hace. - Leer cómo define ahora el README el coste por comando y si la entrada en caché cuenta. Volver a ejecutar un comando con un tope en dólares para comparar.
- Volver a ejecutar e5 con una copia personal y una de proyecto, anotar cuál se ejecuta y si el kit ahora avisa.
- Actualizar cada fila de QA: corregido en
<tag>, vuelto a probar en<lista de SO>, o sigue abierto en<tag>. Mantener en la fila la medición original y su fecha.
Ninguna gestión de este curso ante el proyecto original: no se publicó, archivó ni envió nada.
2026-09-26 — Nueva prueba sobre SlashForge 4.5.0
Sección titulada «2026-09-26 — Nueva prueba sobre SlashForge 4.5.0»Comprobar el proyecto original antes de declarar nada abierto reveló una release que el curso no había visto: el tag v4.5.0 en 10d3d916b30323598515aa27aef43a8527e7e967, con fecha 2026-09-25. Su CHANGELOG anuncia una corrección para cada fila de la tabla QA sobre el instalador y las guías, y también para la prueba de Windows del asistente de apertura y los informes con node en línea. Añade un aviso cuando una instalación global oculta una de proyecto, y da crédito a este curso.
code/slashforge/retest/retest.sh instala una release dada en una carpeta desechable y vuelve a ejecutar check.sh contra lo esperado para 4.4.3. Se ejecutó en Windows 11 con Git Bash y Node 24.12.0:
| 4.4.3 (control negativo) | 4.5.0 | |
|---|---|---|
check.sh contra lo esperado para 4.4.3 |
exit 0, 20/20 | exit 1, 16 difieren: lo esperado es de 4.4.3 |
| Dry run contra instalación | 21 listados, 32 escritos, 11 que faltan | 34 y 34, no falta ninguno |
| Etiquetas del dry run | 16 copy, 4 render |
29 render, 4 copy |
uninstall sin terminal |
15 borrados, exit 0 | rechazado, exit 1 |
| YAML plegado, cierre con espacio final | ambos rechazados | ambos aceptados; 4 errores reales siguen rechazados |
Aviso de ocultación con --project |
ninguno | mostrado |
Plantillas con node -e ' en línea |
4 | 0 |
Paso 9 en tres repositorios desechables (verify-step9.sh) |
el glob no ve ningún archivo de skill | un SKILL.md de 600 líneas y un archivo anidado de 250 líneas señalados; un SKILL.md de 300 líneas pasa |
Leído, no ejecutado:
- el README y las guías ahora concuerdan;
- los tres comentarios desactualizados desaparecieron;
- el paquete npm 4.5.0 es idéntico al
bin/ytemplates/del tag, salvo los finales de línea; - la nueva prueba del asistente simula los abridores en Linux y macOS y termina enseguida en Windows. Windows ya no abre un diálogo, pero tampoco tiene ninguna aserción. Falso, corregido el 2026-10-09: la prueba antigua sigue ahí, junto a la nueva, y sigue lanzando
starten Windows (entrada).
El README ahora dice que sus rangos de tokens no separan las lecturas de caché de la entrada nueva: una aclaración, no una separación.
Veredicto: las ocho filas sobre el instalador y las guías están corregidas en 4.5.0, vueltas a probar en Windows. Cada fila conserva su medición de 4.4.3. No se volvió a probar:
- Linux, macOS ni WSL;
- ninguna ejecución con modelo sobre 4.5.0.
Las lecciones siguen describiendo 4.4.3, y la CI sigue fijándola. La lección 7 cuenta la historia y lista lo que sigue abierto.
2026-10-09 — SlashForge 5.2.1, revisado
Sección titulada «2026-10-09 — SlashForge 5.2.1, revisado»Tras la release 5.2.1, el autor pidió comentarios sobre el sitio de documentación e invitó a abrir issues. Las entradas del 2026-09-26 no lo vieron: el propio autor había abierto las issues #69 a #87 a partir de este diario, el 2026-09-25, cada una citando el curso. Doce, de #69 a #80, se cerraron como corregidas por 4.5.0; #81 se cerró como no prevista (es Claude Code, no el kit, quien nombra un comando); #82 se cerró el mismo día, y su corrección salió en 5.0.0 según el changelog; #83 a #87 siguen abiertas. Entretanto, el kit pasó a ocho comandos, llamados /slashforge-name, y una sola instalación sirve a Claude Code, Cursor y Codex.
Versiones: tag v5.2.1 en 7e0e26a, fechado el 2026-10-09; Windows 11, Git Bash, Node.js 24.12.0. El paquete npm es igual a bin/ y templates/ del tag, salvo los finales de línea. El instalador se ejecutó desde el paquete npm en un directorio personal desechable, sin terminal en stdin, como en check.sh:
| Comprobación | Resultado en 5.2.1 |
|---|---|
| Dry run frente a instalación | 133 anunciados, 133 escritos, ninguna diferencia en ningún sentido |
| Dónde van los archivos | 47 en ~/.claude y 86 en ~/.agents para Cursor y Codex. No hay ninguna opción para instalar para un solo host |
uninstall sin terminal |
Rechazado, exit 1. Con --yes, se conserva un archivo mío en setup/slashforge/ (#82) |
Un archivo mío dentro de una carpeta de skill del kit, en ~/.agents/skills/ |
Eliminado con la carpeta |
description: > YAML plegada, en una copia del paquete |
Aceptada, exit 0 |
| Comprobación de tamaño de setup (paso 9) en un repositorio desechable | Señala un SKILL.md de 600 líneas, una regla de 250 líneas y un comando mío de 210 líneas; ignora los archivos del kit; exit 1 |
Aviso de sombreado con --project |
Impreso, con un segundo aviso para ~/.agents |
| Mensaje final de la instalación | Seis comandos y -quick; status lista ocho |
disable-model-invocation en los 17 archivos de Claude Code |
Ninguno; los ocho comandos de Cursor y Codex lo llevan |
Las propias pruebas de SlashForge en Windows. node --test en v5.2.1 ejecutó 278 pruebas en 15.5 s: 269 superadas, 2 fallidas, 7 omitidas; la más lenta tardó 0.6 s. Era un clon con core.autocrlf=false. Con el valor por defecto de Git for Windows, core.autocrlf=true, las plantillas se extraen con finales de línea CRLF y fallan dos pruebas más, que comparan las plantillas renderizadas byte a byte y línea a línea (11.6 s, 267 superadas, 4 fallidas). Los cuatro fallos vienen de las pruebas, no del instalador: CRLF dos veces, barras invertidas de path.join comparadas con rutas documentadas con /, y fs.symlinkSync rechazado sin el modo de desarrollador. Las dos ejecuciones fijaban SSH_CONNECTION, por la razón del párrafo siguiente. Así que 5.2.1 no reproduce los 523 s. Su causa en 4.4.3 sigue sin conocerse, porque 4.4.3 no se volvió a ejecutar.
Una corrección. La nueva prueba del 2026-09-26 dice que Windows ya no abre un diálogo. Es falso. 4.5.0 añadió una prueba simulada que termina enseguida en Windows, pero conservó la antigua a su lado. test/install.test.js#L570 (línea 526 en v4.5.0) sigue lanzando el asistente sobre un archivo inexistente sin SSH_CONNECTION, lo que llama a start en Windows. Está leído, no ejecutado, porque la prueba abre el diálogo. La frase de la nueva prueba se mantiene, marcada; la tabla de QA tiene una fila.
El sitio, leído como texto y como árbol de accesibilidad, no como imagen: no se pudo tomar ninguna captura, porque el panel de wmux estaba oculto y Chromium headless se cayó. Los comentarios, para una respuesta privada al autor:
- La demostración Shipping a feature muestra una puerta, la fase 3, antes de PR opened; el README mantiene cuatro (plan, rama, PR, limpieza). La puerta de la rama y la del push con PR, una línea cada una, mostrarían lo que vende el kit.
- What it costs tiene seis fichas para ocho comandos, y omite la frase del README según la cual las cifras no separan las lecturas de caché de la entrada nueva. El experimento L4 muestra por qué importa esa frase: en 4.4.3,
-quickhasta su primera puerta usó 1,720 tokens nuevos de entrada y salida, y leyó 158,847 de la caché. - «It empowers people to do their finest work every single time» es la única afirmación de la página que nadie puede comprobar. El «Nothing ships that was not planned, gated, verified and reviewed» del README lo dice con el tono del resto de la página.
- «Ten phases from plan to merged PR»: el workflow abre la pull request, y es una persona quien la fusiona.
- Una pregunta más que un defecto: sin opción para elegir el host, un usuario de Claude Code recibe 133 archivos, 86 de ellos en
~/.agents.
Las issues del repositorio de SlashForge. El autor abrió #69 a #87 a partir de este diario. El 2026-10-09, por invitación del autor, este curso abrió #104 a #106 y añadió los tiempos en Windows a #83 en un comentario. El estado de cada issue el 2026-10-09, y lo que muestra la nueva comprobación de 5.2.1:
| Issue | Abierta por | Tema | Estado el 2026-10-09 | En 5.2.1 |
|---|---|---|---|---|
| #69 | el autor | El dry run anuncia 21 archivos, la instalación escribe 32 | cerrada, corregida en 4.5.0 | Se mantiene: 133 anunciados, 133 escritos |
| #70 | el autor | El dry run etiqueta copy las guías renderizadas |
cerrada, corregida en 4.5.0 | Se mantiene: guías render, recursos copy |
| #71 | el autor | El What gets installed del README muestra la disposición antigua | cerrada, corregida en 4.5.0 | Se mantiene, leído: ocho comandos y nueve skills por host |
| #72 | el autor | Comentarios del instalador describen código más antiguo | cerrada, corregida en 4.5.0 | Un nuevo comentario desfasado, «The four commands»: #106 |
| #73 | el autor | uninstall sin terminal quita el kit sin preguntar |
cerrada, corregida en 4.5.0 | Se mantiene: rechazado, exit 1 |
| #74 | el autor | La comprobación del frontmatter rechaza lo que Claude Code acepta | cerrada, corregida en 4.5.0 | Se mantiene: una descripción plegada y un cierre seguido de un espacio se aceptan los dos |
| #75 | el autor | La comprobación de 200 líneas de setup nunca cuenta un SKILL.md |
cerrada, corregida en 4.5.0 | Se mantiene: se señalan un SKILL.md de 600 líneas, una regla de 250 líneas y un comando de 210 líneas |
| #76 | el autor | Dos guías se contradicen sobre la disposición y la longitud de una skill | cerrada, corregida en 4.5.0 | Se mantiene, leído: <name>/SKILL.md, 200 líneas, 500 para un SKILL.md |
| #77 | el autor | La prueba de forge-open.sh no puede fallar y abre una ventana |
cerrada, corregida en 4.5.0 | A medias: la aserción antigua sigue ahí, #104 |
| #78 | el autor | Construir un informe requiere un node -e en línea |
cerrada, corregida en 4.5.0 | Se mantiene: 0 plantillas con node -e ' |
| #79 | el autor | Una instalación global sombrea sin avisar la del proyecto | cerrada, corregida en 4.5.0 | Se mantiene: el aviso se imprime |
| #80 | el autor | Las cifras de tokens del README no dicen si cuentan las lecturas de caché | cerrada, corregida en 4.5.0 | Se mantiene en el README; la sección de costes del sitio omite la frase |
| #81 | el autor | Claude Code ignora el campo name que exige el instalador |
cerrada, no prevista | — |
| #82 | el autor | uninstall borra setup/slashforge/ con los archivos del usuario |
cerrada; corrección en 5.0.0 | Se mantiene ahí; un archivo mío dentro de una carpeta de skill del kit en ~/.agents/skills/ se va con la carpeta |
| #83 | el autor | node --test tarda 523 s en Windows |
abierta | 15.5 s; cuatro fallos de Windows en las pruebas (comentario) |
| #84 | el autor | La prueba del asistente de apertura se salta Windows | abierta | Sigue omitida (#L1853) |
| #85 | el autor | Los puntos de control del workflow son instrucciones, no una restricción | abierta | No comprobado de nuevo: hace falta una ejecución con modelo |
| #86 | el autor | Una instalación de proyecto cuando Claude Code arranca en una subcarpeta | abierta | No comprobado de nuevo: hace falta una ejecución con modelo |
| #87 | el autor | La nueva ejecución de setup y las marcas generated_by |
abierta | No comprobado de nuevo: hace falta una ejecución con modelo |
| #104 | este curso | La aserción antigua del asistente de apertura sigue lanzando el abridor real | abierta | Leído en v4.5.0 y v5.2.1, no ejecutado |
| #105 | este curso | Los archivos de comando de Claude Code no llevan disable-model-invocation |
abierta | 0 de 17 archivos; la consecuencia sale de la documentación, no de una ejecución con modelo |
| #106 | este curso | Listas de comandos que se quedan en seis | abierta | El mensaje de instalación, un comentario, el sitio |
Límites: solo Windows. Ninguna ejecución con modelo en 5.x: nada aquí dice cuánto cuestan los comandos, si las puertas se sostienen ni si Claude Code lanza un comando por sí mismo.
2026-10-10 — SlashForge 5.2.1 en Linux, y los tiempos en Windows con carga
Sección titulada «2026-10-10 — SlashForge 5.2.1 en Linux, y los tiempos en Windows con carga»Las comprobaciones del 2026-10-09 venían de un script guardado fuera del curso. retest/recheck.sh las ejecuta ahora para una release 5.x dada. Se ejecutó el 2026-10-10 en Windows 11 con Git Bash, y en Linux: Ubuntu 26.04 en WSL2, kernel 6.18, con Node.js 24.12.0 de nodejs.org, con su SHA-256 comprobado. Las salidas son 5.2.1-windows-2026-10-10.txt y 5.2.1-linux-wsl-2026-10-10.txt.
El instalador se comporta igual en los dos sistemas, y como el 2026-10-09:
- 133 archivos anunciados y 133 escritos, 47 en
~/.claudey 86 en~/.agents; uninstallse rechaza sin terminal;- un archivo mío se conserva en
setup/slashforge/y se pierde dentro de una carpeta de skill del kit; - las dos variantes de frontmatter se aceptan, y la comprobación de tamaño señala los mismos tres archivos;
- el mensaje final sigue omitiendo
/slashforge-testy/slashforge-refactor(#106); - 0 de los 17 archivos de Claude Code llevan
disable-model-invocation, frente a 8 de las skills de Cursor y Codex (#105).
Quitar una línea de la lista anunciada hace que se señale un archivo no anunciado: esa comparación puede fallar.
Las propias pruebas de SlashForge, desde un clon del tag con finales de línea LF y con SSH_CONNECTION fijado:
| Sistema | Duración | Superadas | Fallidas | Omitidas | Prueba más lenta |
|---|---|---|---|---|---|
| Linux, WSL2, 2026-10-10 | 2.7 s | 271 | 0 | 7 | 0.12 s |
| Windows 11, 2026-10-09 | 15.5 s | 269 | 2 | 7 | 0.6 s |
| Windows 11, 2026-10-10, cuatro ejecuciones | 50.6 a 90.0 s | 269 | 2 | 7 | 5.7 a 14.0 s |
En Windows, la duración depende de la carga. El clon que tardó 15.5 s el 2026-10-09 tardó 50.6 s el 2026-10-10, con el procesador al 79 % cuando lo medí tras las ejecuciones. Cada vez, la prueba más lenta fue setup verify step fails on oversized files for cursor and codex, que lanza muchos procesos, y en la misma máquina a la misma hora la suite tardó 2.7 s en WSL2. La creación de procesos en Windows explicaría las dos cosas, pero es una hipótesis: ninguna ejecución contó procesos. Los 15.5 s publicados en el comentario sobre #83 son un punto de ese intervalo. Los dos fallos en Windows son los del 2026-10-09. En WSL también importa SSH_CONNECTION: WSLg fija DISPLAY, así que la aserción antigua del abridor (#104) llamaría a wslview o a explorer.exe.
5.3.0 y 5.3.1, publicadas por el autor la tarde del 2026-10-09, comprobadas al día siguiente con el mismo script en los dos sistemas: 5.3.1-windows-2026-10-10.txt, 5.3.1-linux-wsl-2026-10-10.txt.
- #106 está corregida en 5.3.1 (PR #111). El mensaje final nombra los ocho comandos, ningún comentario los cuenta ya, y la página de inicio tiene fichas para test y refactor.
- #104 se resuelve por eliminación. Según el changelog, 5.3.0 retiró la plantilla HTML de los informes y sus asistentes, entre ellos
slashforge-open.sh; env5.3.1el asistente y las pruebas que lo lanzaban ya no existen, y la suite ya no necesitaSSH_CONNECTION. La cerré el 2026-10-11, con un comentario que recoge estas comprobaciones. - #105 no cambia: ninguno de los 17 archivos de Claude Code lleva
disable-model-invocation. - La instalación escribe 127 archivos, 45 en
~/.claudey 82 en~/.agents, y el dry run anuncia los mismos 127. - La suite de SlashForge tiene 282 pruebas. En Linux, 275 superadas y 0 fallidas, en 2.5 s. En Windows, 273 superadas, con los mismos dos fallos, en 57.2 s con carga.
Límites: un solo Linux, en WSL2, y nada de macOS. Sigue sin haber ninguna ejecución con modelo en 5.x.
Por verificar
Sección titulada «Por verificar»- Volver a ejecutar
retest/retest.sh 4.5.0en Linux y macOS, y en WSL; solo se volvió a probar Windows 11. - Volver a ejecutar un comando con modelo sobre 4.5.0 (costes, puertas, qué copia se ejecuta) antes de afirmar nada sobre el comportamiento en ejecución tras las correcciones.
- Ejecutar la lista de comprobación de la entrada del 2026-09-26 sobre la primera release que anuncie las correcciones, antes de cambiar cualquier estado de QA.
- Por qué el
node --testde SlashForge tardó 523 s en 4.4.3 en Windows. 5.2.1 se ejecuta en 15.5 s (2026-10-09). 4.4.3 no se volvió a ejecutar: su prueba del abridor abre un cuadro de diálogo de error (ver la entrada del laboratorio), y 5.2.1 todavía tiene esa aserción (#104), así que cualquier ejecución de la suite en Windows debe fijarSSH_CONNECTION. - Si Claude Code lanza
/slashforge-codepor sí mismo cuando una petición coincide con su descripción, como permite su documentación: 5.2.1 no le ponedisable-model-invocation(#105). Hace falta una ejecución con modelo y con tope. - Las comprobaciones de 5.2.1 en macOS, y en un Linux que no sea WSL2.
- Por qué la suite de SlashForge tarda de 50 a 90 s en una máquina Windows cargada y 2.7 s en WSL2 en la misma máquina. La creación de procesos es una hipótesis, no una medida.
- Por qué e1 informó 15 turnos con
--max-turns 10y terminó con normalidad, cuando e1b se detuvo en 11. - Si el modelo encuentra
.claude/setup/slashforge/…cuando Claude Code se inicia en una subcarpeta de un repositorio con una instalación de proyecto (lección 2). - El coste de un workflow completo más allá de sus puertas. El laboratorio se detiene en la primera puerta por diseño; ir más lejos implica responder a las puertas, y eso lo decide el autor.
- Si una skill escrita como archivo en
commands/la elige alguna vez el modelo por sí mismo, o solo cuando una guía la nombra.
Preguntas abiertas
Sección titulada «Preguntas abiertas»- ¿Respeta la nueva ejecución de setup las marcas
generated_bycomo dice su guía: actualizar los archivos de la versión actual, preguntar por los más antiguos, no tocar los editados? - ¿Aceptaría upstream un dry run construido a partir del propio
installFiles, como el-WhatIfde PowerShell pasa por el mismoShouldProcessque la acción? No propuesto: nada sale de este repositorio sin la aprobación del autor.