Ir al contenido
angel.library

fernando-skills — desarrollo guiado por specs con /spec y /spec-impl

fernando-skills es un paquete pequeño de skills de Fernando Herrera, instructor de DevTalles. Trae dos skills que funcionan en pareja para aplicar spec-driven development con un agente de código:

SkillQué haceArgumento
/specDiseña el documento de la funcionalidad haciendo preguntas aclaratoriasTema corto (opcional)
/spec-implComprueba que la spec está aprobada y la implementa paso a paso<NN-slug>

Una skill es una carpeta con un SKILL.md que el agente carga para una tarea concreta (ver fundamentos de skills). Una spec es un documento Markdown que describe una funcionalidad antes de escribir código: objetivo, alcance, modelo de datos, plan de pasos y criterios de aceptación.

Si le pides a un agente “hazme un Arkanoid con niveles y power-ups”, va a improvisar decenas de decisiones de diseño sin que veas ninguna. El README del proyecto resume por qué con un LLM esto pesa más que con una persona:

  1. La velocidad de generación esconde el coste de cada decisión.
  2. Cada conversación empieza de cero: sin un documento, en la siguiente sesión el agente vuelve a improvisar, quizá en otra dirección.
  3. El contexto se llena rápido si tienes que repetir lo decidido en cada prompt.

La spec resuelve las tres: hace explícitas las decisiones, persiste entre sesiones en specs/ y se carga una vez como referencia. La spec es el artefacto principal; el código es la consecuencia.

  1. Describir el problema, no la solución.
  2. Planificar en modo plan: el agente propone sin editar archivos.
  3. Refinar con decisiones concretas (“saca X del alcance”, “los datos van en JSON”), dos o tres iteraciones.
  4. Guardar la spec en specs/NN-slug.md con estado Draft, releerla fuera del chat y cambiarla a Approved a mano.
  5. Ejecutar paso a paso, con una pausa después de cada paso del plan.
  6. Revisar el diff de cada paso, no 600 líneas mezcladas al final.

El hueco entre las dos skills es deliberado: cambiar el estado a Approved es un acto humano. El agente no puede aprobar su propio trabajo.

La vía recomendada usa el CLI de skills.sh y vale para Claude Code:

Ventana de terminal
pnpm dlx skills@latest add Klerith/fernando-skills

El asistente pregunta en qué agentes instalarlas. En alcance de proyecto (el predeterminado) la copia canónica queda en .agents/skills/, Claude Code la ve en .claude/skills/ (por enlace simbólico o copia) y el CLI anota el origen en skills-lock.json. Con -g se instalan en tu carpeta de usuario para todos los proyectos.

Para desinstalar:

Ventana de terminal
pnpm dlx skills@latest remove Klerith/fernando-skills
Ventana de terminal
git clone https://github.com/Klerith/fernando-skills ~/.fernando-skills
cd ~/tu-proyecto
~/.fernando-skills/scripts/install-to-agent.sh <agente>
AgenteQué escribe el script
claudeEnlaces de cada skill en .claude/skills/
cursorReglas .cursor/rules/<nombre>.mdc; se invocan con @spec, @spec-impl
codexUn bloque ## Skills en AGENTS.md y copias en .codex/skills/
antigravityCopias en .antigravity/skills/

Cursor y Codex no entienden argument-hint ni disable-model-invocation, así que el script quita esos campos y conserva el cuerpo: el flujo es el mismo, cambia cómo se dispara.

Ventana de terminal
# Por proyecto (versionado en git)
mkdir -p .claude/skills
cp -r skills/engineering/spec .claude/skills/
cp -r skills/engineering/spec-impl .claude/skills/

Para uso personal, la misma copia va en ~/.claude/skills/. En cualquier caso crea la carpeta de specs en la raíz:

Ventana de terminal
mkdir specs
Ventana de terminal
pnpm dlx skills list

En Claude Code, escribe / en una sesión nueva: deben aparecer /spec y /spec-impl. Ambas declaran disable-model-invocation: true, de modo que el agente no las lanza por su cuenta; solo corren cuando las invocas.

/spec niveles-y-records

/spec pasa por cuatro fases: lee la memoria del proyecto (CLAUDE.md, AGENTS.md, GEMINI.md o README.md, el primero que exista) y las specs previas; pregunta en bloques de 3 a 5 hasta que la funcionalidad está clara; desarrolla la spec sección por sección pidiendo confirmación; y la guarda como specs/03-niveles-y-records.md con estado Draft. No escribe código.

Relees el archivo en el editor y cambias el estado a Approved. Después:

/spec-impl 03-niveles-y-records

/spec-impl localiza la spec, verifica que el estado signifique “aprobado” (vale Approved, Aprobado o el equivalente en cualquier idioma) y si no lo está se detiene. Luego crea la rama spec-03-niveles-y-records, cambia a ella, muestra el resumen e implementa paso a paso con pausas.

Si la creación automática de ramas choca con tu flujo de Git:

specs/.spec-config.yml
AutoCreateBranch: false
EstadoSignificado
DraftLa generó /spec, nadie la ha releído
In reviewSe está revisando o iterando
ApprovedUna persona la leyó y la autorizó; es el único estado que acepta /spec-impl
ImplementedEl código existe y cumple los criterios de aceptación
ObsoleteLa reemplazó otra spec; no se borra, se referencia

La plantilla (skills/engineering/spec/template.md) gira alrededor de seis partes: objetivo en una frase, alcance explícito y lo que queda fuera, modelo de datos con nombres concretos, plan ordenado donde cada paso deja el sistema funcionando (si un paso pasa de 30–50 líneas, se parte), criterios de aceptación verificables con sí o no, y decisiones tomadas y descartadas con su motivo.

Escribe una spec cuando la tarea toca más de dos archivos, hay decisiones caras de revertir (esquemas, formatos, APIs), va a durar más de una sesión o define un contrato que otros artefactos reutilizarán.

Usa un prompt directo para un bug puntual, un refactor mecánico, un experimento exploratorio o una tarea que se entiende a la primera. La regla del README: si te tienta abrir el modo plan, probablemente lo necesitas; si planificar te aburre, probablemente no.

  • Skills de Matt Pocock: una colección más amplia de skills de ingeniería; fernando-skills se centra solo en el ciclo spec → implementación.
  • Spec Kit de GitHub y otros marcos similares cubren el mismo enfoque con más ceremonia y plantillas. fernando-skills apuesta por dos comandos y una carpeta.
  • find-skills sirve para buscar otras opciones en el catálogo de skills.sh.
  • La disciplina es tuya. Las skills no impiden saltarse la relectura; el método pierde su valor si apruebas sin leer.
  • Toca Git. /spec-impl crea ramas; revisa git status antes de lanzarlo con cambios sin commitear.
  • Contenido de terceros. Lo que instalas son instrucciones que el agente obedecerá: revisa los SKILL.md antes de commitearlos.
  • Proyecto joven. Unas 300 estrellas y versión v0.1.2 a octubre de 2026; puede cambiar.