Wolftux/checklist

/checklist instala en la carpeta actual lo que falta para la checklist, y la muestra en un chat dedicado. No sobrescribe ni cambia nada de lo que ya existe.

¿Qué es checklist?

Este skill instala y muestra una checklist de progreso en cualquier proyecto, ya sea que uses Claude Code, Cursor, Codex u otro agente con soporte de reglas. Cuando el usuario ejecuta `/checklist` o pide instalar la checklist, el skill verifica que Node.js esté disponible, que no estés en un worktree secundario ni en la carpeta home. Luego detecta qué piezas faltan: el archivo de registro `documenti/lavori.yaml`, el script `strumenti-locali/avanzamento/stato.mjs`, el bloque en `CLAUDE.md` (con el placeholder `<PROYECTO>` reemplazado), y las líneas de exclusión en `.git/info/exclude` si hay git. Instala solo lo que falta sin sobrescribir nada existente, preguntando al usuario cuando es necesario (por ejemplo, si el proyecto ya tiene su propia checklist). Finalmente abre una nueva sesión de chat titulada «Checklist: <PROYECTO>» y la desacopla para que sea independiente, o si no es posible, ejecuta el script y muestra la checklist en el chat actual usando un widget o tabla markdown. El skill también advierte si no hay git o si hay algún otro problema, y recuerda que para agregar o cerrar tareas solo hay que decirlo en el chat, gracias a la regla en `CLAUDE.md`.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Wolftux/checklist/tree/HEAD/plugins/checklist/checklist

Installed? Explore more Productividad y colaboración skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

Preguntar en tu IA favorita

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

Documentación


name: checklist description: Checklist de progreso en chat para cualquier proyecto. Instala lo que falta (registro documenti/lavori.yaml, script strumenti-locali/avanzamento/stato.mjs, regla en CLAUDE.md, líneas en .git/info/exclude) y abre el chat «Checklist: nombre del proyecto» con el widget. Úsalo cuando el usuario escriba /checklist o pida instalar la checklist en un proyecto. Para mostrar la checklist en un proyecto que ya la tiene, basta la regla de su CLAUDE.md.

/checklist: la checklist de progreso en el proyecto

/checklist instala en la carpeta actual lo que falta para la checklist, y la muestra en un chat dedicado. No sobrescribe ni cambia nada de lo que ya existe.

Cómo trabajas:

  • La carpeta del proyecto es la carpeta actual. Todos los comandos parten de allí.
  • <base> es la «Directorio base» impresa al inicio de este skill. Los modelos están en <base>/modelos/.
  • Cada ruta en los comandos va entre comillas: la base y la carpeta del proyecto pueden contener espacios.
  • Ejecuta los pasos en orden, sin pedir confirmaciones, salvo donde el paso lo indique.
  • Cada grep usa -a: en Claude Code grep puede tratar como binario un archivo no UTF-8 y no encontrar líneas que existen.

Paso 1: comprobaciones preliminares

  1. Ejecuta command -v node. Si no imprime nada, escribe una línea («Se requiere Node.js 18 o superior: instálalo y vuelve a ejecutar /checklist») y detente.
  2. Ejecuta git rev-parse --path-format=absolute --git-dir y git rev-parse --path-format=absolute --git-common-dir. Si dan dos resultados diferentes, estás en un worktree secundario: escribe una línea («Estás en un worktree: el registro desaparecería con él. Ejecuta /checklist desde la carpeta principal del proyecto») y detente. Si ambos comandos fallan, no hay git: continúa.
  3. Ejecuta pwd -P y (cd ~ && pwd -P). Si dan el mismo resultado, estás en la carpeta home: escribe una línea («Estás en la carpeta home: el bloque en CLAUDE.md aplicaría a todos los proyectos. Ejecuta /checklist en la carpeta del proyecto») y detente.

El paso termina cuando node está presente y la carpeta no es ni un worktree secundario ni la carpeta home.

Paso 2: comprobación de las cuatro piezas

No escribas nada. Anota para cada una si existe o falta:

  • el registro: existe documenti/lavori.yaml;
  • el script: existe strumenti-locali/avanzamento/stato.mjs;
  • el bloque: grep -aqx '## Checklist de progreso' CLAUDE.md tiene éxito (si CLAUDE.md no existe, el bloque falta);
  • las líneas de exclusión, solo con git (git rev-parse --is-inside-work-tree imprime true): el archivo impreso por git rev-parse --git-path info/exclude contiene las líneas exactas **/documenti/lavori.yaml y **/strumenti-locali/avanzamento/. Son solo los archivos del skill: las demás carpetas documenti/ del proyecto siguen visibles para git. Comprueba cada una con grep -aqxF '**/documenti/lavori.yaml' "<archivo exclude>" y grep -aqxF '**/strumenti-locali/avanzamento/' "<archivo exclude>". Si el archivo no existe, faltan ambas.

El paso termina cuando sabes qué piezas faltan.

Paso 3: nombre del proyecto

  1. Si el bloque existe en CLAUDE.md, el nombre es lo que sigue a «Actualiza la checklist de » hasta la comilla de cierre », en la primera ocurrencia. Comando: grep -ao 'Actualiza la checklist de [^»]*' CLAUDE.md | head -1, sin el prefijo. Si el nombre existe, no hagas preguntas. Si el comando no imprime nada o el nombre queda vacío (línea modificada por el usuario), pasa al punto 2.
  2. Si no, haz una pregunta con AskUserQuestion. Primera opción, recomendada: el nombre de la carpeta. Segunda opción: una variante, es decir, el título # del README si existe y es diferente del nombre de la carpeta; si no, el nombre de la carpeta con mayúsculas o espacios diferentes. El usuario siempre puede escribir otro nombre.
  3. Si no puedes hacer preguntas (por ejemplo, en modo no interactivo), usa el nombre de la carpeta y escribe una línea que lo indique.

El paso termina cuando tienes el nombre, que aquí se llama <PROYECTO>.

Paso 4: instalación de lo que falta

Haz solo lo que el paso 2 encontró faltante. Nunca sobrescribas ni modifiques lo que existe.

  1. Registro. Si falta: mkdir -p documenti y [ -e documenti/lavori.yaml ] || sed "s/<HOY>/$(date +%F)/g" "<base>/modelos/lavori.yaml" > documenti/lavori.yaml (la guardia protege un registro existente incluso si el paso 2 se equivocó). Sin embargo, si el script ya existe, el proyecto puede tener su propia checklist que lee otro registro (por ejemplo, lavori.json): primero pregunta con AskUserQuestion si crear documenti/lavori.yaml. Primera opción, recomendada: no crearlo. Si la respuesta es no, o si no puedes hacer preguntas, no lo crees, escribe una línea que lo indique y salta también las líneas de exclusión (punto 4), que ocultarían a git los archivos de la checklist del proyecto.
  2. Script. Si falta: mkdir -p strumenti-locali/avanzamento y cp -n "<base>/modelos/stato.mjs" strumenti-locali/avanzamento/stato.mjs.
  3. Bloque en CLAUDE.md. Si falta:
    • lee <base>/modelos/claude-md.md y reemplaza cada <PROYECTO> con el nombre;
    • ejecuta mktemp -d y escribe el bloque ya reemplazado, con la herramienta de escritura de archivos, en <tmp>/bloque.md (<tmp> es la carpeta impresa);
    • si CLAUDE.md existe y no está vacío, prepara la cola con estos dos comandos (no leas ni reescribas el archivo): if [ -s CLAUDE.md ] && [ -n "$(tail -c1 CLAUDE.md)" ]; then printf '\n' >> CLAUDE.md; fi (añade el salto de línea final si falta) if [ -s CLAUDE.md ] && [ -n "$(tail -n1 CLAUDE.md)" ]; then printf '\n' >> CLAUDE.md; fi (añade la línea vacía si la última línea no está vacía)
    • añade el bloque: cat "<tmp>/bloque.md" >> CLAUDE.md (crea el archivo si no existe). El texto del usuario nunca se reescribe.
    • No uses sed: el nombre puede contener / o &.
  4. Líneas de exclusión, solo con git. Sea <exclude> la ruta impresa por git rev-parse --git-path info/exclude.
    • mkdir -p "$(dirname "<exclude>")".
    • Añade el salto de línea final si falta: if [ -s "<exclude>" ] && [ -n "$(tail -c1 "<exclude>")" ]; then printf '\n' >> "<exclude>"; fi.
    • Para cada línea que falte entre **/documenti/lavori.yaml y **/strumenti-locali/avanzamento/: printf '%s\n' '**/documenti/lavori.yaml' >> "<exclude>" (o '**/strumenti-locali/avanzamento/').
  5. Sin git, escribe una línea de advertencia: «Aquí no hay git: la línea del repositorio en el widget quedará vacía».

El paso termina cuando cada pieza faltante ha sido creada. Si no faltaba nada, el paso termina de inmediato.

Paso 5: apertura del chat de la checklist

Hazlo tanto después de una instalación como cuando ya estaba todo.

  1. Si mcp__ccd_session__start_session y mcp__ccd_session_mgmt__detach_session están entre las herramientas diferidas, cárgalas con ToolSearch.
  2. Llama a start_session con:
    • initiation: user_asked
    • context: fresh
    • use_worktree: false
    • effort: low (el chat ejecuta un script y compone un widget: no se necesita el esfuerzo de la sesión desde la que parte)
    • title: «Checklist: »
    • prompt: «Ejecuta node strumenti-locali/avanzamento/stato.mjs y muestra la checklist como dice el CLAUDE.md»
    • background: «Checklist de progreso del proyecto : el script es strumenti-locali/avanzamento/stato.mjs. El CLAUDE.md del proyecto dice cuál es el registro, cómo mostrar la checklist y cuándo actualizar el registro.»
  3. Inmediatamente después llama a detach_session con el id devuelto: es un chat principal, no un subchat.
  4. Si start_session falta (CLI) o rechaza: ejecuta node strumenti-locali/avanzamento/stato.mjs y muestra la checklist en este chat, como dice <base>/modelos/claude-md.md: con show_widget, o en una tabla markdown si show_widget falta.
  5. Si start_session tiene éxito pero el desacople falta o rechaza, escribe una línea: «Desacóplalo desde la barra lateral con Detach to top level».
  6. Cada lanzamiento abre un chat nuevo: no busques chats anteriores.

El paso termina cuando el chat está abierto y desacoplado, o la checklist se ha mostrado en este chat.

Paso 6: mensaje final

Escribe dos o tres líneas:

  • qué agregaste, o «Ya estaba todo»;
  • las advertencias, si las hay;
  • dónde encontrar el chat de la checklist.

Escribe también que para agregar o cerrar tareas basta decirlo en el chat: la regla en CLAUDE.md se encarga de actualizar el registro.

El paso termina cuando el mensaje está escrito.

Skills relacionados