/checklist: lista de tarefas do projeto

Instala no diretório atual o que falta para a lista de tarefas e a exibe em um chat dedicado, sem sobrescrever nada.

O que é checklist: lista de tarefas do projeto?

Esta skill, chamada `/checklist`, cria e gerencia uma checklist de progresso diretamente no chat do seu assistente (como Claude Code, Cursor ou Codex). Ela verifica se o projeto possui quatro componentes essenciais: um arquivo de registro (`documenti/lavori.yaml`), um script de status (`strumenti-locali/avanzamento/stato.mjs`), um bloco de regras no `CLAUDE.md` e as entradas adequadas no `.git/info/exclude`. Se algum estiver faltando, a skill instala apenas os itens ausentes sem tocar no que já existe. Após a instalação, ela abre um novo chat dedicado à checklist e executa automaticamente o script de status para exibir o progresso do projeto. É ideal para desenvolvedores que desejam manter o acompanhamento de tarefas centralizado e automatizado, funcionando com ou sem git. A skill suporta sessões destacáveis (detach) em plataformas que permitem gerenciamento de sessões, como Claude Code.

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

Installed? Explore more Produtividade e Colaboração skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

/checklist: a checklist de progresso no projeto

/checklist instala no diretório atual o que falta para a checklist e a exibe em um chat dedicado. Não sobrescreve nem altera nada do que já existe.

Como funciona:

  • O diretório do projeto é o diretório atual. Todos os comandos partem dele.
  • <base> é o "Diretório base" impresso no topo desta skill. Os modelos estão em <base>/modelos/.
  • Cada caminho nos comandos deve estar entre aspas: a base e o diretório do projeto podem conter espaços.
  • Execute as etapas em ordem, sem pedir confirmações, exceto quando a etapa o exigir.
  • Cada grep usa -a: no Claude Code o grep pode tratar como binário um arquivo não UTF-8 e não encontrar linhas que existem.

Etapa 1: verificações preliminares

  1. Execute command -v node. Se não imprimir nada, escreva uma linha ("É necessário Node.js 18 ou superior: instale e execute /checklist") e pare.
  2. Execute git rev-parse --path-format=absolute --git-dir e git rev-parse --path-format=absolute --git-common-dir. Se derem dois resultados diferentes, você está em um worktree secundário: escreva uma linha ("Você está em um worktree: o registro desapareceria com ele. Execute /checklist a partir da pasta principal do projeto") e pare. Se ambos os comandos falharem, não há git: prossiga.
  3. Execute pwd -P e (cd ~ && pwd -P). Se derem o mesmo resultado, você está na pasta home: escreva uma linha ("Você está na pasta home: o bloco no CLAUDE.md valeria para todos os projetos. Execute /checklist na pasta do projeto") e pare.

A etapa termina quando o node existe e a pasta não é nem um worktree secundário nem a pasta home.

Etapa 2: verificação das quatro peças

Não escreva nada. Anote para cada uma se existe ou falta:

  • o registro: existe documentos/trabalhos.yaml;
  • o script: existe ferramentas-locais/andamento/status.mjs;
  • o bloco: grep -aqx '## Checklist de progresso' CLAUDE.md tem sucesso (se CLAUDE.md não existir, o bloco falta);
  • as linhas de exclusão, apenas com git (git rev-parse --is-inside-work-tree imprime true): o arquivo impresso por git rev-parse --git-path info/exclude contém as linhas exatas **/documentos/trabalhos.yaml e **/ferramentas-locais/andamento/. São apenas os arquivos da skill: as outras pastas documentos/ do projeto permanecem visíveis ao git. Verifique cada uma com grep -aqxF '**/documentos/trabalhos.yaml' "<arquivo exclude>" e grep -aqxF '**/ferramentas-locais/andamento/' "<arquivo exclude>". Se o arquivo não existir, faltam ambas.

A etapa termina quando você sabe quais peças faltam.

Etapa 3: nome do projeto

  1. Se o bloco existe no CLAUDE.md, o nome é o que segue "Atualize a checklist de " até a aspa de fechamento », na primeira ocorrência. Comando: grep -ao 'Atualize a checklist de [^»]*' CLAUDE.md | head -1, sem o prefixo. Se o nome existir, não faça perguntas. Se o comando não imprimir nada ou o nome ficar vazio (linha modificada pelo usuário), vá para o ponto 2.
  2. Caso contrário, faça uma pergunta com AskUserQuestion. Primeira opção, recomendada: o nome da pasta. Segunda opção: uma variante, ou seja, o título # do README se existir e for diferente do nome da pasta, senão o nome da pasta com maiúsculas ou espaços diferentes. O usuário sempre pode escrever outro nome.
  3. Se não puder fazer perguntas (por exemplo, em modo não interativo), use o nome da pasta e escreva uma linha informando.

A etapa termina quando você tem o nome, que aqui abaixo se chama <PROJETO>.

Etapa 4: instalação do que falta

Faça apenas o que a etapa 2 encontrou faltando. Nunca sobrescreva nem modifique o que já existe.

  1. Registro. Se faltar: mkdir -p documentos e [ -e documentos/trabalhos.yaml ] || sed "s/<HOJE>/$(date +%F)/g" "<base>/modelos/trabalhos.yaml" > documentos/trabalhos.yaml (a guarda protege um registro existente mesmo que a etapa 2 tenha errado). Se porém o script já existir, o projeto pode ter sua própria checklist que lê outro registro (por exemplo trabalhos.json): primeiro pergunte com AskUserQuestion se deve criar documentos/trabalhos.yaml. Primeira opção, recomendada: não criá-lo. Se a resposta for não, ou se não puder fazer perguntas, não crie, escreva uma linha informando e pule também as linhas de exclusão (ponto 4), que esconderiam do git os arquivos da checklist do projeto.
  2. Script. Se faltar: mkdir -p ferramentas-locais/andamento e cp -n "<base>/modelos/status.mjs" ferramentas-locais/andamento/status.mjs.
  3. Bloco no CLAUDE.md. Se faltar:
    • leia <base>/modelos/claude-md.md e substitua cada <PROJETO> pelo nome;
    • execute mktemp -d e escreva o bloco já substituído, com a ferramenta de escrita de arquivos, em <tmp>/bloco.md (<tmp> é a pasta impressa);
    • se CLAUDE.md existir e não estiver vazio, prepare a cauda com estes dois comandos (não leia nem reescreva o arquivo): if [ -s CLAUDE.md ] && [ -n "$(tail -c1 CLAUDE.md)" ]; then printf '\n' >> CLAUDE.md; fi (adiciona a quebra de linha final se faltar) if [ -s CLAUDE.md ] && [ -n "$(tail -n1 CLAUDE.md)" ]; then printf '\n' >> CLAUDE.md; fi (adiciona a linha vazia se a última linha não estiver vazia)
    • anexe o bloco: cat "<tmp>/bloco.md" >> CLAUDE.md (cria o arquivo se não existir). O texto do usuário nunca é reescrito.
    • Não use sed: o nome pode conter / ou &.
  4. Linhas de exclusão, apenas com git. Seja <exclude> o caminho impresso por git rev-parse --git-path info/exclude.
    • mkdir -p "$(dirname "<exclude>")".
    • Adicione a quebra de linha final se faltar: if [ -s "<exclude>" ] && [ -n "$(tail -c1 "<exclude>")" ]; then printf '\n' >> "<exclude>"; fi.
    • Para cada linha que falta entre **/documentos/trabalhos.yaml e **/ferramentas-locais/andamento/: printf '%s\n' '**/documentos/trabalhos.yaml' >> "<exclude>" (ou '**/ferramentas-locais/andamento/').
  5. Sem git, escreva uma linha de aviso: "Aqui não há git: a linha do repositório no widget ficará vazia".

A etapa termina quando cada peça faltante foi criada. Se não faltava nada, a etapa termina imediatamente.

Etapa 5: abertura do chat da checklist

Faça isso tanto após uma instalação quanto quando já estava tudo pronto.

  1. Se mcp__ccd_session__start_session e mcp__ccd_session_mgmt__detach_session estiverem entre as ferramentas diferidas, carregue-as com ToolSearch.
  2. Chame start_session com:
    • initiation: user_asked
    • context: fresh
    • use_worktree: false
    • effort: low (o chat executa um script e compõe um widget: não exige o esforço da sessão de onde parte)
    • title: "Checklist: "
    • prompt: "Execute node ferramentas-locais/andamento/status.mjs e mostre a checklist conforme o CLAUDE.md"
    • background: "Checklist de progresso do projeto : o script é ferramentas-locais/andamento/status.mjs. O CLAUDE.md do projeto informa qual é o registro, como mostrar a checklist e quando atualizar o registro."
  3. Imediatamente após, chame detach_session com o id retornado: é um chat principal, não uma sub-chat.
  4. Se start_session faltar (CLI) ou recusar: execute node ferramentas-locais/andamento/status.mjs e mostre a checklist neste chat, conforme <base>/modelos/claude-md.md: com show_widget, ou em tabela markdown se show_widget faltar.
  5. Se start_session funcionar mas o desacoplamento faltar ou recusar, escreva uma linha: "Desacople-o da barra lateral com Detach to top level".
  6. Cada execução abre um novo chat: não procure chats anteriores.

A etapa termina quando o chat está aberto e desacoplado, ou a checklist foi mostrada neste chat.

Etapa 6: mensagem final

Escreva duas ou três linhas:

  • o que você adicionou, ou "Já estava tudo pronto";
  • os avisos, se houver;
  • onde encontrar o chat da checklist.

Escreva também que para adicionar ou fechar trabalhos basta falar no chat: a regra no CLAUDE.md faz atualizar o registro.

A etapa termina quando a mensagem é escrita.

Habilidades Relacionadas