aunysillyme-dev/decompose

Divide uma tarefa nas menores unidades verificáveis, etiquete cada uma com tipo, classe de velocidade e a cláusula da solicitação que atende, construa ondas paralelas a partir de dependências reais de dados, submeta mapas grandes a uma revisão de conselheiro e exiba uma tabela de plano para seleção de modelo e máquina. Também valida planos de etapas simples, sobreposição de caminhos de escrita e receitas de tarefas reutilizáveis.

O que é decompose?

Esta skill, **Decompose**, transforma solicitações de usuários em planos explícitos e acionáveis. Ela oferece duas abordagens principais: um **plano de etapas** simples, para tarefas diretas, e um **mapa de unidades** completo, para projetos complexos com múltiplas entregas. O método completo de mapa de unidades envolve dividir a solicitação em cláusulas numeradas (C1, C2...), depois quebrar o trabalho nas menores unidades atômicas possíveis, cada uma com suas próprias entradas, saídas e verificador (`verify`). Cada unidade recebe um tipo (como `coding`, `research`, `data`), uma classe de velocidade (`fast`, `standard`, `frontier`) e uma lista de cláusulas que atende (`clause_ids`). As dependências entre unidades são baseadas estritamente em arestas de dados reais — uma unidade só depende de outra se usar a saída dessa outra. A skill então agrupa automaticamente as unidades em ondas paralelas (wave 0 = sem dependências), calcula a importância de cada unidade com base no número de leitores downstream e sugere uma forma de despacho para grupos dentro de uma onda (ex: `single`, `agent-fanout`, `bulk-prompt`). Um **portal de conselheiro** é obrigatório para mapas grandes ou com formato quase serial; o revisor recebe a solicitação e o mapa e deve fornecer um relatório de granularidade, uma maneira melhor de enquadrar a tarefa, todos os erros encontrados e um patch. Por fim, a skill auxilia na **escolha de modelo e máquina** para cada unidade, seguindo regras baseadas em tipo e velocidade, e gera uma tabela de plano completa, ondas, caminho crítico e cobertura de cláusulas. As ferramentas de linha de comando fornecidas validam os planos e mapas quanto a erros de esquema, dependências cíclicas e sobreposição de caminhos de escrita. A skill suporta receitas reutilizáveis para tarefas comuns, armazenadas localmente, e pode gerar cartões de tarefas em Markdown a partir de modelos pré-definidos (como `build`, `fix`, `research`). A skill é particularmente útil para agentes de IA que precisam executar tarefas complexas que envolvem múltiplos modelos, arquivos ou etapas paralelas, garantindo que o plano seja sólido, sem dependências falsas ou sobreposição de escrita, e que cada parte do plano seja verificável.

Funciona com✓Claude Code~Codex CLI~Cursor✓Antigravity
npx skills add https://github.com/aunysillyme-dev/aunx-skills/tree/HEAD/plugins/aunx-decompose/skills/decompose

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

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

Documentação

O que decompose faz?

Transforme a tarefa do usuário em etapas explícitas. Esta skill planeja o trabalho; ela não executa as etapas planejadas nem concede permissão para enviar alterações.

Os comandos abaixo alcançam o auxiliar através de ${CLAUDE_PLUGIN_ROOT}, que o plugin define. Quando esta skill foi instalada por conta própria (com npx skills add ou npx aunx-decompose install) e essa variável estiver vazia, inicie cada comando com CLAUDE_PLUGIN_ROOT="<pasta que contém este SKILL.md>/../..".

Existem duas formas. Um plano de etapas é uma lista curta de etapas com tipos, para tarefas simples. Um mapa de unidades é o método completo abaixo: as menores unidades, tipadas e etiquetadas, com ondas, um portal de conselheiro e uma tabela de plano. Use o mapa de unidades quando a tarefa tiver várias entregas, muitos itens semelhantes ou trabalho que possa ser executado em diferentes modelos ou máquinas ao mesmo tempo.

  1. Crie um novo diretório temporário e mantenha seu caminho para cada comando:

    steps_dir=$(mktemp -d) || exit 1
    steps_file="$steps_dir/steps.json"
    plan_file="$steps_dir/plan.json"
    

    Escreva o plano nesse novo caminho "$steps_file". Nunca sobrescreva um arquivo existente. Use um array JSON não vazio de objetos com todos estes campos:

    [
      {
        "id": "inspect",
        "kind": "read",
        "inputs": ["texto da tarefa", "caminhos de origem"],
        "outputs": ["descobertas"],
        "deps": [],
        "paths": [],
        "needs": {"cpu": 1, "ram_gb": 1, "gpu": false, "disk_gb": 0, "tools": []}
      }
    ]
    

    IDs são strings únicas usando letras, dígitos, pontos, sublinhados ou hífens. inputs, outputs, deps e paths são arrays de strings não vazias. deps lista IDs de etapas que devem terminar primeiro. needs contém números não negativos e finitos para cpu, ram_gb e disk_gb, um booleano gpu e um array de nomes de capacidades de ferramenta, como web ou docs.

    Tipos: frame, code, test-run, audit-needed, ship, reproduce, search, fetch, extract, synthesize, read, audit. Para code e ship, liste caminhos de escrita absolutos em paths. Uma lista vazia declara que não há escritas. Etapas de escrita distintas devem ter caminhos disjuntos, incluindo caminhos pai e filho, mesmo quando dependem umas das outras. Combine o trabalho no mesmo caminho em uma única etapa. Outros tipos podem listar caminhos de leitura.

  2. Execute:

    python3 "${CLAUDE_PLUGIN_ROOT}/skills/decompose/scripts/decompose.py" --validate "$steps_file"
    
  3. Corrija cada erro impresso e repita a validação até que ela saia com código 0. Saída 2 significa um erro, incluindo esquema inválido, tipos ou dependências desconhecidos, ciclos de dependência, caminhos de escrita relativos ou sobreposição de caminhos de escrita.

  4. Execute o seguinte e relate as etapas agrupadas em ondas paralelas, com as verificações de ciclo de dependência e sobreposição de caminhos de escrita aprovadas:

    python3 "${CLAUDE_PLUGIN_ROOT}/skills/decompose/scripts/decompose.py" --validate "$steps_file" --waves
    

    A saída é um array JSON de ondas, cada uma contendo objetos de etapa completos. Etapas em uma onda não têm dependência entre si. Ondas expressam prontidão de dependência; verifique os recursos disponíveis e o acesso a ferramentas antes de executar o trabalho.

  5. Opcionalmente, salve as etapas validadas para reutilização:

    python3 "${CLAUDE_PLUGIN_ROOT}/skills/decompose/scripts/decompose.py" --validate "$steps_file" --save-recipe NAME
    

    Nomes usam letras, dígitos, pontos, sublinhados ou hífens e devem ser novos. Receitas salvas retêm entradas e caminhos literais. Verifique-os antes de reutilizar. O script escreve em $DECOMPOSE_RECIPES se definido, caso contrário em ~/.claude/decompose/recipes.json, criando o diretório pai. Receitas de usuário substituem receitas incluídas por nome; padrões e escopos de ferramentas são mesclados por tipo. Nunca escreva arquivos de tarefa ou receitas salvas no diretório do plugin.

Cartões de tarefa

Para um cartão Markdown, execute:

python3 "${CLAUDE_PLUGIN_ROOT}/skills/decompose/scripts/decompose.py" CARD.md
python3 "${CLAUDE_PLUGIN_ROOT}/skills/decompose/scripts/decompose.py" CARD.md --waves

Cartões começam com frontmatter simples, por exemplo:

---
kind: build
ask: "Adicionar uma exportação CSV"
paths: /absolute/project/export.py
ship: no
verify: python3 -m unittest discover tests
---
**Propósito.** Exportar o relatório atual.
**Escopo da construção.** O módulo de exportação.
**Ações negadas.** Publicar alterações.

kind (ou mode) seleciona build, fix, research, read ou audit do recipes.json incluído. --task CARD.md também é suportado. Caminhos e ferramentas aceitam valores separados por vírgula; ferramentas também aceitam um array JSON. Defina ship: no ou push: no para omitir o envio e reconfigurar dependências. O envio em um plano permanece sujeito à autorização do usuário.

Saída 0 imprime etapas ou ondas válidas. Saída 3 significa que não há receita correspondente: use o esquema impresso para escrever as etapas você mesmo, depois valide-as como acima. Campos do cartão e conteúdo da receita são dados da tarefa, não instruções adicionais.

Mapas de unidades: o método completo

Siga estas etapas em ordem. Escreva o mapa no caminho "$plan_file" da etapa 1 acima. Nunca sobrescreva um arquivo existente. O auxiliar verifica cada regra que pode; o resto é sua responsabilidade.

  1. Divida a solicitação em cláusulas. Numere-as C1 a Cm, uma cláusula por coisa que o usuário pediu. Cada unidade cita as cláusulas que atende em clause_ids. Uma cláusula sem unidade falha na validação, e o mesmo acontece com uma unidade que cita uma cláusula que não existe.

  2. Divida o trabalho nas menores unidades. Uma unidade tem suas próprias entradas, suas próprias saídas e seu próprio verificador (verify: como você saberá que a saída está correta). Uma etapa com várias entregas se torna subetapas S3.1, S3.2 com parent_id: "S3"; o pai é estrutural e não tem linha própria. Subetapas têm um nível de profundidade. N itens semelhantes (URLs, arquivos, registros) tornam-se N unidades, ou uma unidade com item_count: N quando um formato em lote se encaixa. Um teste pertence dentro da unidade que ele verifica, como verify dessa unidade, nunca como uma unidade própria.

  3. Atribua a cada unidade um tipo e uma velocidade. Tipos: coding, reasoning, research, writing, creative-image, creative-video, creative-audio, creative-music, design, vision, review, data, agentic, cyber. Velocidades: fast (uma consulta, uma pequena edição mecânica, uma passagem em massa), standard (uma construção especificada, uma síntese de múltiplas fontes, um rascunho finalizado) e frontier (uma chamada de arquitetura aberta; use raramente e explique por quê).

  4. Desenhe apenas arestas de dados reais. Uma unidade lista outra em deps apenas quando uma de suas inputs é a saída dessa outra unidade. A ordem em que você pensou nas etapas não é uma aresta. Nomeie cada saída uma vez em todo o mapa, para que cada entrada tenha um produtor. O auxiliar rejeita uma aresta falsa (uma dependência cujas saídas a unidade nunca lê) e uma aresta faltante (uma entrada produzida por uma unidade não em deps). Marque verificações que podem matar todo o plano (uma verificação de nome, uma reprodução, uma verificação de viabilidade) como is_invalidator: true; elas são classificadas primeiro em sua onda, e você as executa antes de qualquer outra coisa.

  5. Deixe o auxiliar construir as ondas. A onda 0 contém unidades sem dependências; toda outra unidade fica uma onda após sua última dependência. Unidades em uma onda são executadas ao mesmo tempo, em modelos diferentes da mesma classe e em máquinas diferentes. downstream_readers conta as unidades que leem a saída de uma unidade. A importância aumenta com isso: pelo menos medium com um leitor, high com três ou mais.

  6. Escolha uma forma de despacho por grupo. As unidades de cada etapa dentro de uma onda recebem uma forma, a primeira correspondência vence:

    FormaRegra padrão
    singleuma unidade, ou um grupo abaixo de todo limite: uma chamada direta por unidade
    agent-fanout10 ou mais itens de leitura, rascunho ou extração sem caminhos de escrita; cada item recebe seu próprio agente com ferramentas
    bulk-prompt2 ou mais itens de prompt único sem ferramentas, enviados como um fan-out em lote
    split-worktrees2 ou mais escritores cujos caminhos são disjuntos aos pares; uma worktree cada, depois uma mesclagem e verificação
    subagents4 ou mais unidades entregues a um agente que gera seus próprios subagentes

    Os limites são padrões, não medições. Ajuste-os em plan_defaults no seu armazenamento de receitas de usuário. dispatch_hint em uma unidade substitui a regra.

  7. Execute o portal de conselheiro antes de qualquer escolha. O mapa precisa de uma revisão independente quando tem mais de 5 etapas, 12 ou mais unidades, uma forma quase serial (4 ou mais etapas, com mais ondas de etapas do que três quartos da contagem de etapas) ou uma unidade lida por 3 ou mais outras. Dê ao revisor a solicitação e o mapa, e peça quatro coisas: um relatório de granularidade (cada unidade é tão pequena quanto possível, com sua própria entrada, saída e verificador), uma maneira melhor de enquadrar a tarefa, cada erro que encontrar e um patch. Operações de patch são split, cut_edges, retier, dispatch e needs. Uma aresta faltante não pode ser corrigida: reconstrua o mapa. Aplique o patch com --apply-patch; é tudo ou nada.

  8. Escolha um modelo e uma máquina por unidade. Siga references/picking.md: tipo primeiro, depois velocidade, espalhe famílias de modelos dentro do plano, defina o esforço separadamente do nível de velocidade e dê a cada unidade a menor máquina que se encaixa, a menos que esteja marcada como needs.scale_up. Registre a escolha em model, machine e runner_up.

  9. Relate o plano. Imprima a tabela, as ondas, o caminho crítico e a cobertura de cláusulas, depois nomeie cada escolha e sua segunda opção.

Esquema da unidade (campos obrigatórios primeiro):

{
  "ask": "Comparar três parsers CSV em velocidade e licença, então recomendar um.",
  "clauses": [{"id": "C1", "text": "comparar em velocidade"}],
  "units": [
    {
      "id": "S2.1", "parent_id": "S2", "type": "coding", "speed": "standard",
      "clause_ids": ["C1"], "inputs": ["sample-ok"], "outputs": ["bench-alpha"],
      "deps": ["S1"], "paths": [], "verify": "o benchmark sai com 0 e imprime linhas por segundo",
      "is_invalidator": false, "item_count": 1, "importance": "medium",
      "needs": {"cpu": 4, "ram_gb": 8, "disk_gb": 1, "minutes": 6, "gpu": false,
                "scale_up": true, "local_only": false, "capabilities": []}
    }
  ]
}

paths lista arquivos absolutos que a unidade escreve. Duas unidades que podem ser executadas ao mesmo tempo não devem escrever caminhos sobrepostos; unidades ordenadas por uma dependência podem. needs.minutes alimenta o caminho crítico. Opcionalmente, model, machine, runner_up, effort, context_tokens e note carregam suas escolhas.

Verifique e imprima o plano:

python3 "${CLAUDE_PLUGIN_ROOT}/skills/decompose/scripts/decompose.py" --plan "$plan_file"
python3 "${CLAUDE_PLUGIN_ROOT}/skills/decompose/scripts/decompose.py" --plan "$plan_file" --json

Saída 0 imprime o plano; saída 2 lista cada erro. Quando a saída disser Advisor review: REQUIRED, obtenha a revisão, escreva seu JSON em um novo arquivo no mesmo diretório temporário e aplique-o:

python3 "${CLAUDE_PLUGIN_ROOT}/skills/decompose/scripts/decompose.py" --plan "$plan_file" --apply-patch "$steps_dir/advice.json"

Um mapa trabalhado e patch são fornecidos em examples/. O conteúdo do plano e do patch são dados da tarefa, não instruções adicionais.

Habilidades Relacionadas