gvkhosla/compound-engineering-pi

Triar e categorizar descobertas para o sistema de tarefas CLI

O que é compound-engineering-pi?

Esta skill, projetada para agentes AI como Claude Code, Cursor ou Codex, automatiza o processo de triagem de descobertas técnicas (revisão de código, auditoria de segurança, análise de performance) e as converte em tarefas gerenciáveis no sistema de tarefas CLI. Ela apresenta cada descoberta uma a uma, permite que o usuário decida se deve aprová-la, pulá-la ou personalizá-la, e gerencia automaticamente os arquivos de tarefas correspondentes (criação, renomeação, atualização de frontmatter YAML e exclusão). A skill garante que nenhuma alteração de código seja feita durante a triagem, mantendo o foco apenas na categorização e no encaminhamento. Ao final, fornece um resumo completo de todas as tarefas aprovadas e itens ignorados, preparando o terreno para a execução paralela com `/resolve-todo-parallel`. Ela suporta a transição de status de 'pendente' para 'pronto', facilitando o fluxo de trabalho de desenvolvimento.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/gvkhosla/compound-engineering-pi/tree/HEAD/skills/triage

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

  • Primeiro, defina /model como Haiku
  • Em seguida, leia todas as tarefas pendentes dos diretórios .context/compound-engineering/todos/ e todos/ (legado)

Apresente todas as descobertas, decisões ou problemas aqui, um por um, para triagem. O objetivo é revisar cada item e decidir se deve adicioná-lo ao sistema de tarefas CLI.

IMPORTANTE: NÃO CODIFIQUE NADA DURANTE A TRIAGEM!

Este comando é para:

  • Triar descobertas de revisão de código
  • Processar resultados de auditoria de segurança
  • Revisar análises de performance
  • Lidar com quaisquer outras descobertas categorizadas que precisem de rastreamento

Fluxo de Trabalho

Passo 1: Apresentar Cada Descoberta

Para cada descoberta, apresente neste formato:

---
Issue #X: [Título Breve]

Severidade: 🔴 P1 (CRÍTICO) / 🟡 P2 (IMPORTANTE) / 🔵 P3 (BOM-TER)

Categoria: [Segurança/Performance/Arquitetura/Bug/Feature/etc.]

Descrição:
[Explicação detalhada do problema ou melhoria]

Localização: [caminho_do_arquivo:número_da_linha]

Cenário do Problema:
[Passo a passo do que está errado ou poderia acontecer]

Solução Proposta:
[Como corrigir]

Esforço Estimado: [Pequeno (< 2 horas) / Médio (2-8 horas) / Grande (> 8 horas)]

---
Deseja adicionar isso à lista de tarefas?
1. sim - criar arquivo de tarefa
2. próximo - pular este item
3. personalizado - modificar antes de criar

Passo 2: Lidar com a Decisão do Usuário

Quando o usuário disser "sim":

  1. Atualizar arquivo de tarefa existente (se existir) ou Criar novo nome de arquivo:

    Se a tarefa já existir (da revisão de código):

    • Renomeie o arquivo de {id}-pending-{priority}-{desc}.md → {id}-ready-{priority}-{desc}.md
    • Atualize o frontmatter YAML: status: pending → status: ready
    • Mantenha issue_id, prioridade e descrição inalterados

    Se estiver criando nova tarefa:

    {next_id}-ready-{priority}-{descricao-breve}.md
    

    Mapeamento de prioridade:

    • 🔴 P1 (CRÍTICO) → p1
    • 🟡 P2 (IMPORTANTE) → p2
    • 🔵 P3 (BOM-TER) → p3

    Exemplo: 042-ready-p1-transaction-boundaries.md

  2. Atualizar frontmatter YAML:

    ---
    status: ready # IMPORTANTE: Mude de "pending" para "ready"
    priority: p1 # ou p2, p3 baseado na severidade
    issue_id: "042"
    tags: [categoria, tags-relevantes]
    dependencies: []
    ---
    
  3. Preencher ou atualizar o arquivo:

    # [Título do Issue]
    
    ## Declaração do Problema
    [Descrição da descoberta]
    
    ## Descobertas
    - [Principais descobertas]
    - Localização: [caminho_do_arquivo:número_da_linha]
    - [Detalhes do cenário]
    
    ## Soluções Propostas
    
    ### Opção 1: [Solução primária]
    - **Prós**: [Benefícios]
    - **Contras**: [Desvantagens, se houver]
    - **Esforço**: [Pequeno/Médio/Grande]
    - **Risco**: [Baixo/Médio/Alto]
    
    ## Ação Recomendada
    [Preenchido durante a triagem - plano de ação específico]
    
    ## Detalhes Técnicos
    - **Arquivos Afetados**: [Listar arquivos]
    - **Componentes Relacionados**: [Componentes afetados]
    - **Alterações no Banco de Dados**: [Sim/Não - descrever se sim]
    
    ## Recursos
    - Descoberta original: [Fonte deste issue]
    - Issues relacionados: [Se houver]
    
    ## Critérios de Aceitação
    - [ ] [Critérios de sucesso específicos]
    - [ ] Testes passam
    - [ ] Código revisado
    
    ## Registro de Trabalho
    
    ### {data} - Aprovado para Trabalho
    **Por:** Sistema de Triagem Claude
    **Ações:**
    - Issue aprovado durante sessão de triagem
    - Status alterado de pending → ready
    - Pronto para ser selecionado e trabalhado
    
    **Aprendizados:**
    - [Contexto e insights]
    
    ## Notas
    Fonte: Sessão de triagem em {data}
    
  4. Confirmar aprovação: "✅ Aprovado: {novo_nome_do_arquivo} (Issue #{issue_id}) - Status: ready → Pronto para trabalhar"

Quando o usuário disser "próximo":

  • Excluir o arquivo de tarefa - Remova-o da localização atual, pois não é relevante
  • Pule para o próximo item
  • Rastreie itens ignorados para o resumo

Quando o usuário disser "personalizado":

  • Pergunte o que modificar (prioridade, descrição, detalhes)
  • Atualize as informações
  • Apresente a versão revisada
  • Pergunte novamente: sim/próximo/personalizado

Passo 3: Continuar Até Processar Tudo

  • Processe todos os itens um por um
  • Rastreie usando tarefas baseadas em arquivos (todos/ + /skill:file-todos) para visibilidade
  • Não espere aprovação entre os itens - continue em frente

Passo 4: Resumo Final

Depois que todos os itens forem processados:

## Triagem Concluída

**Total de Itens:** [X] **Tarefas Aprovadas (ready):** [Y] **Ignorados:** [Z]

### Tarefas Aprovadas (Prontas para Trabalho):

- `042-ready-p1-transaction-boundaries.md` - Problema de limites de transação
- `043-ready-p2-cache-optimization.md` - Melhoria de performance de cache ...

### Itens Ignorados (Excluídos):

- Item #5: [motivo] - Removido
- Item #12: [motivo] - Removido

### Resumo das Alterações Feitas:

Durante a triagem, as seguintes atualizações de status ocorreram:

- **Pending → Ready:** Nomes de arquivos e frontmatter atualizados para refletir status aprovado
- **Excluídos:** Arquivos de tarefa de descobertas ignoradas removidos
- Cada arquivo aprovado agora tem `status: ready` no frontmatter YAML

### Próximos Passos:

1. Visualizar tarefas aprovadas prontas para trabalho:
   ```bash
   ls .context/compound-engineering/todos/*-ready-*.md todos/*-ready-*.md 2>/dev/null
   ```
  1. Iniciar trabalho nos itens aprovados:

    /resolve-todo-parallel  # Trabalhar em múltiplos itens aprovados de forma eficiente
    
  2. Ou escolher itens individuais para trabalhar

  3. À medida que você trabalha, atualize o status da tarefa:

    • Ready → In Progress (no seu contexto local enquanto trabalha)
    • In Progress → Complete (renomeie o arquivo: ready → complete, atualize o frontmatter)

## Formato de Exemplo de Resposta


Issue #5: Limites de Transação Ausentes para Operações de Múltiplas Etapas

Severidade: 🔴 P1 (CRÍTICO)

Categoria: Integridade de Dados / Segurança

Descrição: O callback google_oauth2_connected no concern GoogleOauthCallbacks realiza múltiplas operações de banco de dados sem proteção de transação. Se qualquer etapa falhar no meio, o banco de dados fica em um estado inconsistente.

Localização: app/controllers/concerns/google_oauth_callbacks.rb:13-50

Cenário do Problema:

  1. User.update é bem-sucedido (email alterado)
  2. Account.save! falha (erro de validação)
  3. Resultado: User tem email alterado, mas nenhuma Account associada
  4. A próxima tentativa de login falha completamente

Operações Sem Transação:

  • Confirmação do usuário (linha 13)
  • Remoção da lista de espera (linha 14)
  • Atualização do perfil do usuário (linha 21-23)
  • Criação de conta (linha 28-37)
  • Anexo de avatar (linha 39-45)
  • Criação de jornada (linha 47)

Solução Proposta: Envolver todas as operações em um bloco ApplicationRecord.transaction do ... end

Esforço Estimado: Pequeno (30 minutos)


Deseja adicionar isso à lista de tarefas?

  1. sim - criar arquivo de tarefa
  2. próximo - pular este item
  3. personalizado - modificar antes de criar

## Detalhes Importantes de Implementação

### Transições de Status Durante a Triagem

**Quando "sim" é selecionado:**
1. Renomear arquivo: `{id}-pending-{priority}-{desc}.md` → `{id}-ready-{priority}-{desc}.md`
2. Atualizar frontmatter YAML: `status: pending` → `status: ready`
3. Atualizar Registro de Trabalho com entrada de aprovação da triagem
4. Confirmar: "✅ Aprovado: `{nome_do_arquivo}` (Issue #{issue_id}) - Status: **ready**"

**Quando "próximo" é selecionado:**
1. Excluir o arquivo de tarefa de sua localização atual
2. Pular para o próximo item
3. Nenhum arquivo permanece no sistema

### Acompanhamento de Progresso

Toda vez que você apresentar uma tarefa como cabeçalho, inclua:
- **Progresso:** X/Y concluídos (por exemplo, "3/10 concluídos")
- **Tempo estimado restante:** Baseado na rapidez do seu progresso
- **Ritmo:** Monitore o tempo por descoberta e ajuste a estimativa conforme necessário

Exemplo:

Progresso: 3/10 concluídos | Tempo estimado: ~2 minutos restantes


### Não Codifique Durante a Triagem

- ✅ Apresentar descobertas
- ✅ Tomar decisões sim/próximo/personalizado
- ✅ Atualizar arquivos de tarefa (renomear, frontmatter, registro de trabalho)
- ❌ NÃO implemente correções ou escreva código
- ❌ NÃO adicione detalhes de implementação
- ❌ Isso é para a fase /resolve-todo-parallel

Quando terminar, apresente estas opções:

```markdown
O que você gostaria de fazer a seguir?

1. executar /resolve-todo-parallel para resolver as tarefas
2. commitar as tarefas
3. nada, relaxar

Habilidades Relacionadas