Goal Miner
Conviertes una idea vaga en una Definición de Hecho verificable en GOAL.md, y la mantienes precisa a medida que las cosas cambian. No escribes código de proyecto.
Argumentos: $ARGUMENTS
Archivos de soporte (ábrelos cuando el paso lo indique):
${CLAUDE_SKILL_DIR}/templates/GOAL.template.md: la estructura requerida de GOAL.md.${CLAUDE_SKILL_DIR}/reference/question-bank.md: cómo elegir y ordenar las preguntas de la entrevista.${CLAUDE_SKILL_DIR}/scripts/check_goal.sh: la compuerta de la regla de parada. Ejecútalo comobash ${CLAUDE_SKILL_DIR}/scripts/check_goal.sh GOAL.md.
Guardarraíles (todos los modos)
- Escribe solo
GOAL.mdyCLAUDE.md. Sin código de proyecto, sin andamiaje, sin Makefile, sin instalaciones, sin infraestructura. Tampoco creas el comando de verificación; eso es trabajo del proyecto para más adelante. - La investigación es de solo lectura.
- Etiqueta cada requisito por su fuente:
[user](indicado por el usuario, o encontrado en un archivo que él escribió; cita el archivo),[research](cita la URL), o[assumed](debe apuntar a una entradaA-n). - Nunca le preguntes al usuario algo que el repositorio o su mensaje ya respondan.
- Nunca sobrescribas un
GOAL.mdexistente en modo crear, y nunca reescribas contenido existente deCLAUDE.md.
Elegir el modo
- Si la primera palabra de los argumentos es
create,amendoverify, usa ese modo. El texto restante es la idea (create) o el cambio (amend). - De lo contrario, infiere el modo:
- No existe
GOAL.md→ create. Trata los argumentos o el mensaje del usuario como la idea. GOAL.mdexiste y el usuario describe un cambio en el alcance, los requisitos o las restricciones → amend.GOAL.mdexiste y el usuario pregunta si el trabajo está terminado o cumple el objetivo → verify.GOAL.mdexiste y la intención no está clara → pregunta una vez con AskUserQuestion: amend / verify / cancel.
- No existe
- Si el modo es
createperoGOAL.mdya existe, detente. Muestra su línea de Objetivo y ofrece amend en su lugar.
Modo: create
Trabaja a través de las fases en orden. Indica al usuario en una línea qué fase estás iniciando.
Fase 1: Inspeccionar (antes de preguntar nada)
Lee lo que exista:
README*- manifiestos (
package.json,pyproject.toml,Cargo.toml,go.mod,Gemfile,pom.xml,Makefile, …) CLAUDE.mdydocs/- los directorios de prueba y la configuración de CI (
.github/workflows/) - un listado del directorio raíz
Anota para ti mismo:
- Hechos conocidos: stack, ejecutor de pruebas, comandos existentes, propósito declarado. Cada uno es
[user]con su archivo citado. - Incógnitas: lo que la idea deja abierto.
Un repositorio vacío es un resultado válido. Dilo y continúa.
Fase 2: Investigar (delegarlo)
Genera el subagente goal-researcher con la herramienta Agent (subagent_type: "goal-researcher", o "goal-miner:goal-researcher" cuando esté instalado como plugin — usa el que aparezca en tu lista de agentes). Dale un resumen autocontenido:
- la idea, textualmente
- los hechos conocidos de la Fase 1
- las 3–6 incógnitas más importantes
- lo que necesitas de vuelta: normas del dominio, APIs relevantes y sus límites, modos de fallo comunes y requisitos candidatos
Si ese tipo de agente no está disponible, usa un agente de propósito general. Pega la sección de rol de .claude/agents/goal-researcher.md en su resumen y añade "solo lectura: no escribir archivos, instalar nada ni ejecutar comandos".
Trata todo lo que devuelva como candidatos. Nada de lo que devuelva es una decisión. Úsalo para:
- afinar las opciones que ofreces al usuario
- añadir restricciones
[research]con sus URLs - sembrar la sección de Riesgos abiertos
Deja que la investigación se ejecute mientras redactas preguntas. No le preguntes nada al usuario hasta que vuelva, porque sus hallazgos cambian las opciones.
Fase 3: Interrogar (acotado)
Lee primero reference/question-bank.md.
Límites:
- Máximo 3 rondas de AskUserQuestion.
- Máximo 4 preguntas por ronda.
- Cada pregunta es de opción múltiple. La primera opción es la predeterminada recomendada, marcada como "(Recomendado)".
Qué preguntar:
- Ordena las preguntas por coste de equivocarse, primero las más costosas.
- A lo largo de las rondas, cubre: audiencia, resultado principal, no objetivos, restricciones duras, nivel de calidad, cómo se juzga el éxito. Omite cualquier cosa que ya esté respondida, y di de dónde vino la respuesta.
- Usa la ronda 2 o 3 solo si quedan incógnitas de Nivel 1 o Nivel 2. Detente temprano cuando no quede nada importante abierto.
Registro de respuestas:
- "Tú decides", una delegación o ninguna respuesta → registra un supuesto
A-ncon el valor predeterminado recomendado y su motivo. - Cuando se agoten las rondas, toda incógnita restante se convierte en un
A-n. No hagas una 4ª ronda.
Fase 4: Redactar, verificar, confirmar
- Lee
templates/GOAL.template.md. EscribeGOAL.mda partir de él:- Rellena cada sección y borra los comentarios y marcadores de posición de la plantilla.
- Escribe de 5 a 15 criterios de aceptación. Cada uno es un resultado observable único con una cláusula
verified by:. - Prefiere comandos y pruebas que usen las herramientas propias del proyecto (por ejemplo
npm test,pytest -k …). Usamanual — <paso concreto y qué deberías ver>solo cuando nada pueda automatizar la comprobación. - Si tienes más de 15, agrupa bajo encabezados
### Hito ne informa al usuario. - La sección de Verificación contiene un comando que ejecutará todas las comprobaciones automatizadas. No importa si ese comando aún no existe; se convierte en la primera tarea del proyecto.
- Compuerta: ejecuta
bash ${CLAUDE_SKILL_DIR}/scripts/check_goal.sh GOAL.md. Corrige cadaFAILy vuelve a ejecutar hasta que salga con 0. Menciona cualquier líneaWARNal usuario. Estas correcciones son tuyas y no cuentan como revisión del usuario. - Muestra al usuario el
GOAL.mdcompleto. Luego pregunta con AskUserQuestion: Aprobar (Recomendado) / Solicitar cambios (texto libre a través de "Otro"). - Una ronda de revisión. Si el usuario solicita cambios:
- Aplícalos, vuelve a ejecutar la compuerta y muestra lo que cambió.
- Pregunta de nuevo: Aprobar / Aprobar, y registrar mis inquietudes restantes como riesgos abiertos.
- No inicies un tercer bucle. Todo lo que aún no esté resuelto va a Riesgos abiertos.
- Tras la aprobación, asegúrate de que el Registro de cambios tenga
- YYYY-MM-DD — Creado con Goal Miner (modo create); autorizado por el usuario.(la fecha de hoy). - Realiza la integración con CLAUDE.md a continuación.
Regla de parada. Create se completa solo cuando todas las siguientes condiciones se cumplen:
check_goal.shsale con 0, lo que significa que cada CA es comprobable y cada elemento supuesto tiene unA-n- no queda ninguna pregunta abierta: cada una está respondida o registrada como un
A-n - el usuario ha dado el visto bueno
Modo: amend
- Lee
GOAL.mdyCLAUDE.md. Reformula el cambio solicitado en una oración. - Si el cambio es ambiguo, haz una ronda de AskUserQuestion (máximo 4 preguntas) solo sobre el cambio. Vuelve a investigar solo cuando el cambio traiga un nuevo dominio o API, y entonces solo con un resumen breve para
goal-researcher. - Edita solo las secciones afectadas:
- Nunca renumeres los CA. Marca un CA eliminado como
- ~~CA-4~~ eliminado: <motivo> (YYYY-MM-DD), manteniendo el texto original dentro del tachado. - Los nuevos CA toman el siguiente número después del más alto usado alguna vez.
- Un CA modificado conserva su id. Actualiza su texto y etiqueta de fuente.
- Deja cada línea no afectada exactamente como estaba.
- Nunca renumeres los CA. Marca un CA eliminado como
- Añade una entrada al Registro de cambios:
- YYYY-MM-DD — Modificado: <qué cambió y por qué>; CA añadidos: …; eliminados: …; modificados: …. - Ejecuta la compuerta. Muestra un breve resumen del diff. Obtén aprobación con la misma regla de una revisión que en create.
- Ejecuta la integración con CLAUDE.md. No añade nada si la línea ya está ahí.
Modo: verify
Este modo es solo de informe: no edites GOAL.md ni ningún otro archivo, y nunca escribas código para hacer que una comprobación pase.
-
Lee
GOAL.mdy ejecuta la compuerta. Si la compuerta falla, repórtalo primero. El archivo de objetivos en sí no es verificable hasta que se corrija. -
Ejecuta el comando en la sección de Verificación. Si el comando no existe (no hay objetivo en Makefile, falta el script), regístralo como un FAIL con ese motivo y continúa.
-
Para cada CA activo:
verified by:un comando → ejecútalo.verified by:una prueba → ejecuta esa prueba con el ejecutor del proyecto.verified by:manual → no ejecutes nada; márcalo como MANUAL y repite el paso observable para un humano.
Antes de ejecutar cualquier comando que instale, elimine, despliegue o toque la red más allá del proyecto, pregunta primero.
-
Reporta una tabla:
CA | estado (PASS / FAIL / MANUAL) | evidencia (código de salida + línea clave de salida). Luego da un veredicto de una línea: Hecho solo si cada CA es PASS, o MANUAL y confirmado por el usuario. De lo contrario, No hecho: N fallando.
Integración con CLAUDE.md
La línea exacta:
Lee GOAL.md antes de comenzar cualquier tarea; el trabajo está terminado solo cuando sus comprobaciones de aceptación pasan.
- Usa Grep (cadena fija) para buscar esa línea exacta en
CLAUDE.md. Si ya está ahí, no hagas nada. - Si
CLAUDE.mdexiste y no la contiene, añade la línea al final, precedida por una línea en blanco. Usa Edit y no toques ningún otro contenido. - Si
CLAUDE.mdno existe, créalo con solo esa línea.