CommunityProgramación y desarrollogithub.com

goal-miner

Convierte una idea de proyecto vaga en una Definición de Hecho verificable (GOAL.md) antes de escribir cualquier código, la modifica cuando el alcance cambia y verifica si el proyecto la cumple.

¿Qué es goal-miner?

Este skill, diseñado para agentes de IA como Claude Code o Cursor, transforma una idea de proyecto difusa en una Definición de Hecho (Definition of Done) detallada y verificable, almacenada en un archivo GOAL.md. Es útil al inicio de un proyecto, cuando el alcance cambia, o para verificar si el proyecto está completo. El agente primero investiga el contexto existente (README, configuraciones, pruebas) y, si es necesario, delega la investigación a un subagente especializado ('goal-researcher'). Luego, realiza un máximo de tres rondas de preguntas de opción múltiple al usuario para aclarar requisitos ambiguos, priorizando las decisiones más costosas de equivocarse. Finalmente, redacta el GOAL.md con 5-15 criterios de aceptación, cada uno con una cláusula 'verified by:', ejecuta un script de validación para garantizar que el archivo sea comprobable, y lo presenta al usuario para su aprobación. El skill soporta tres modos: 'create' (generar desde cero), 'amend' (modificar el existente) y 'verify' (verificar el estado actual contra los criterios), asegurando que nunca se escribe código de proyecto y que todo requisito está etiquetado con su fuente.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/GalacticChill/goal-miner/tree/main/skills/goal-miner

Installed? Explore more Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

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 como bash ${CLAUDE_SKILL_DIR}/scripts/check_goal.sh GOAL.md.

Guardarraíles (todos los modos)

  • Escribe solo GOAL.md y CLAUDE.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 entrada A-n).
  • Nunca le preguntes al usuario algo que el repositorio o su mensaje ya respondan.
  • Nunca sobrescribas un GOAL.md existente en modo crear, y nunca reescribas contenido existente de CLAUDE.md.

Elegir el modo

  1. Si la primera palabra de los argumentos es create, amend o verify, usa ese modo. El texto restante es la idea (create) o el cambio (amend).
  2. De lo contrario, infiere el modo:
    • No existe GOAL.md → create. Trata los argumentos o el mensaje del usuario como la idea.
    • GOAL.md existe y el usuario describe un cambio en el alcance, los requisitos o las restricciones → amend.
    • GOAL.md existe y el usuario pregunta si el trabajo está terminado o cumple el objetivo → verify.
    • GOAL.md existe y la intención no está clara → pregunta una vez con AskUserQuestion: amend / verify / cancel.
  3. Si el modo es create pero GOAL.md ya 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.md y docs/
  • 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-n con 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

  1. Lee templates/GOAL.template.md. Escribe GOAL.md a 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 …). Usa manual — <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 n e 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.
  2. Compuerta: ejecuta bash ${CLAUDE_SKILL_DIR}/scripts/check_goal.sh GOAL.md. Corrige cada FAIL y vuelve a ejecutar hasta que salga con 0. Menciona cualquier línea WARN al usuario. Estas correcciones son tuyas y no cuentan como revisión del usuario.
  3. Muestra al usuario el GOAL.md completo. Luego pregunta con AskUserQuestion: Aprobar (Recomendado) / Solicitar cambios (texto libre a través de "Otro").
  4. 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.
  5. 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).
  6. 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.sh sale con 0, lo que significa que cada CA es comprobable y cada elemento supuesto tiene un A-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

  1. Lee GOAL.md y CLAUDE.md. Reformula el cambio solicitado en una oración.
  2. 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.
  3. 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.
  4. Añade una entrada al Registro de cambios: - YYYY-MM-DD — Modificado: <qué cambió y por qué>; CA añadidos: …; eliminados: …; modificados: ….
  5. Ejecuta la compuerta. Muestra un breve resumen del diff. Obtén aprobación con la misma regla de una revisión que en create.
  6. 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.

  1. Lee GOAL.md y ejecuta la compuerta. Si la compuerta falla, repórtalo primero. El archivo de objetivos en sí no es verificable hasta que se corrija.

  2. 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.

  3. 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.

  4. 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.md existe 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.md no existe, créalo con solo esa línea.

Skills relacionados