jumibot/flujo_tareas

Ciclo de vida das tarefas de um projeto sob a Software Factory (SF) e sua fila, .sf/peticoes.json — estados (na fila, em andamento, em observação, descartada), passos, ramos feature/NN-nome, subagentes, teste e fechamento por squash no develop, descarte, reversão, reabertura, exclusão, fusão e separação, histórico por tarefa e cópias da fila — com o CLI tools/cola.py. Use-o sempre que for necessário mexer na fila — anotar uma solicitação ou um bug, colocar uma tarefa em andamento ou deixá-la na fila, criar seu ramo, adicionar ou marcar passos, lançar ou recolher um subagente, deixá-la pronta para testar, fechá-la, passá-la para observação ou devolvê-la a ela, fechá-la ou revertê-la em observação, descartá-la, reabri-la, excluí-la, fundir ou separar tarefas, ou recuperar uma fila quebrada.

O que é flujo_tareas?

Esta skill, `flujo_tareas`, gerencia todo o ciclo de vida das tarefas dentro de uma Software Factory (SF). Ela define como mover tarefas entre estados (na fila, em andamento, em observação, descartada) usando um CLI especializado (`cola.py`), garantindo que todas as operações sejam rastreadas, seguras e consistentes. A skill é útil para desenvolvedores e subagentes que precisam interagir com a fila de tarefas sem violar as regras do processo, como criar tarefas, atribuir ramos Git, gerenciar passos, recolher subagentes ou fechar ciclos. Ela suporta múltiplas plataformas (bash, zsh, PowerShell) e opera com bloqueio de fila, cópias de segurança e registro de histórico. O fluxo respeita restrições importantes: apenas o principal (usuário humano) escreve na fila, subagentes apenas consultam, e operações como fechamento, descarte ou reabertura exigem aprovação do proprietário. O CLI aplica automaticamente condições de estado, ramo e git, e em caso de falha, desfaz a operação e informa o problema para resolução manual.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jumibot/SoftwareFactory/tree/main/plugins/sf/skills/flujo_tareas

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

Fluxo de tarefas

A regra de cada mudança de estado está em references/estados.md: um cartão por mudança, com quando, quem, que autorização pede, o que faz no repositório e sua ordem. Este arquivo diz como usá-la.

Como a fila é alterada

Toda escrita na fila passa pelo CLI, nunca manualmente:

python -I -X utf8 "$HOME/.claude/sf/cola.py" [--raiz CAMINHO] [--quem proprietario|principal] [--via cli|painel] [--json] <ordem> …
  • Sempre esse comando, igual em bash, zsh e PowerShell, em qualquer projeto; também os subagentes. Se o mod disser ao iniciar a sessão que nesta máquina o Python é lançado com outro nome (no macOS, python3), use esse em vez de python, aqui e em todo comando Python da SF («O comando Python é o interpretador detectado», 236); a tarefa cola.py encargo também informa. Nunca o tools/cola.py de uma pasta (na SF, plugins/sf/tools/cola.py muda com o ramo ativo): o que vale é o do plugin carregado. Ao carregar, o painel copia seu cola.py para ~/.claude/sf/cola-<sessao>.py e o executa («O painel executa uma cópia do cola.py feita ao carregar», 136); ~/.claude/sf/cola.py é um lançador que passa a ordem para essa cópia, via CLAUDE_CODE_SESSION_ID: Claude e o painel usam o mesmo (tarefa 252). Sem a cópia, sai com 2 e avisa: /reload-plugins a refaz.
  • --raiz: a pasta do projeto, por padrão a atual. Para testar, o caminho de uma cópia da fila.
  • --quem: principal por padrão; proprietario quando a mudança é uma decisão dele (seu OK para fechar).
  • Sai com 0 se fizer a mudança, 1 se não fizer (diz por que e não mexe em nada) e 2 se a ordem estiver mal escrita; choques, que só consulta, com 3 se houver choques. cola.py <ordem> -h mostra o uso de cada uma.

O que o CLI faz em cada escrita: bloqueia a fila (.sf/peticoes.lock), salva antes uma cópia em .sf/copias/ (as últimas 50), anota a mudança no histórico da tarefa e, se a tarefa sair da fila, a move com seu histórico para .sf/histórico.jsonl. Os números não são reutilizados.

Regras que o CLI não aplica

O CLI aplica as condições de cada mudança (estado de partida, ramo, passos, git). Quando e como usá-lo na conversa (o menu ao anotar, colocar em andamento, lançar e recolher subagentes, propor testar e fechar, sugerir fusões e redescrições, as tarefas de documentos, o que fazer livre) está na skill sf:orquestracao. Aqui fica o que diz respeito à fila em si:

  • Apenas o principal escreve na fila. Um subagente não executa ordens que escrevem; ele informa no seu relatório e o principal as executa.
  • Toda solicitação é feita sob uma tarefa em andamento; sem ela, não se começa a trabalhar. Reorganizar a fila (fundir, separar, redescrever, adicionar passos, alterar tipos) não precisa dela («Orquestração com um subagente vivo por tarefa», 149).
  • O OK do proprietário: fechar, para-observacao, reobservar e descartar o esperam; para-fila de uma em andamento também, só sem trabalho: com commits próprios em seu ramo (ou no auxiliar de seu subagente) não volta para a fila; fecha-se, passa-se para observação ou descarta-se («Uma tarefa em andamento com ramo não volta para a fila», 170). Com o ramo vazio ou já removido, para-fila o apaga e recolhe o subagente vazio (275).
  • Tipo ao criar (criar --tipo): deliberar, documentar, projetar, implementar, especificar, corrigir ou investigar; se mudar, tipo N T.
  • Choques antes de em-andamento: choques N, com --arquivos e os previstos, deduzidos da descrição, se ainda não tiver ramo. Não ao lançar subagentes de tarefas já em andamento («Prever choques ao colocar uma tarefa em andamento», 130).
  • Ramo antes do primeiro ativo (ramo), avisando. Para um subagente, o principal o cria sem ativar e o anota antes de lançá-lo (ramo --sem-ativar, subagente); o subagente trabalha em um ramo auxiliar a partir dele e o principal o traz com git merge --ff-only. O subagente nunca ativa o ramo da tarefa em seu worktree: assim a T e a C funcionam com o worktree configurado («Orquestração com um subagente vivo por tarefa», 149).
  • Recolhimento do subagente: o CLI o faz, com os worktrees e ramos anotados com subagente (--worktree aceita caminho relativo ao projeto), em toda ordem que deixa a tarefa sem ele: fechar, para-observacao, descartar, excluir, para-proposta, reverter, limpar, reabrir e, nas absorvidas, fundir (só se seu auxiliar já está no ramo que fica; o que permanece conserva o seu). Sem forçar: um worktree com mudanças não commitadas, um auxiliar com commits que não entraram no develop ou um não integrado ao fundir permanecem, e avisa-se. descartar e limpar, em contrapartida, removem tudo, também o auxiliar com commits que não entraram e o worktree com mudanças não commitadas: o descarte descarta tudo (189). fechar e para-observacao recusam-se antes se um auxiliar tiver commits não trazidos para o ramo da tarefa, e dizem como trazê-los. reabrir, ao contrário, limpa tudo, também com mudanças não commitadas e sem avisar: um worktree antigo nunca é reutilizado. Histórico: recolhido ou recolhido-com-avisos. O principal apenas interrompe o subagente e atende os avisos («cola.py recolhe o subagente ao deixar a tarefa sem ele», 169).
  • A assinatura dos commits («A assinatura do commit de fechamento é configurável; sem configurar, sem linha», 238): o squash de fechar e para-observacao, o commit de decisao e o da versão RELEASE levam a linha de coautor de .sf/projeto.json (na própria SF, que não tem esse arquivo, a sua: Co-Authored-By: Claude Opus 5.5 <[email protected]>). fechar, para-observacao, decisao e tarefa aceitam --coautor "…", que sobrescreve a configurada. Sem nenhuma, os commits vão sem linha de coautoria, e a tarefa informa assim ao subagente.
  • Decisões do proprietário: decisao "Título" --arquivo CAMINHO|--texto T [--numero NNN] [--coautor "Co-Authored-By: …"] [--push] não mexe na fila. Dá o próximo número de docs/decisoes/ no develop e o nome NNN-AAAA-MM-DD-titulo.md (com --numero, reescreve essa sem mudar o nome); escreve o arquivo (o texto, com # Título na frente se não o tiver; se o tiver, deve coincidir), refaz o README.md e faz o commit «Decisão NNN: Título» no develop, também com outro ramo ativo, sem alterá-lo nem mexer em sua cópia de trabalho, como para-proposta (tarefa 273). Não o faz se develop estiver em outro worktree ou, sendo o ativo, docs/decisoes/ tiver mudanças não commitadas. Com develop ativo, refaz também README.html. --push sobe develop; informa o número e o hash. Sem git ou sem develop, apenas escreve os arquivos e avisa (tarefa 283).
  • Fundir e separar são escritas pelo proprietário (/sf_fundir, /sf_split no painel); o principal, com fundir, apenas duas tarefas de atualizar o mesmo documento («Uma tarefa por documento a atualizar», 142).

Ordens por momento

MomentoOrdens
Criação e iníciocriar, choques, em-andamento, para-fila, ramo
Durante o trabalhopasso adicionar, passo marcar, passo remover, renomear, tipo, subagente, relatorio
Testepronto, verificado, testar
Fechamentofechar, para-observacao
Em observaçãoobservando, continuar, fechar, reobservar e, se der errado, reverter
Desfazerdescartar, limpar, reverter, reabrir, excluir, restaurar, para-proposta
Juntar e separarfundir, dividir
Consulta e cópiaslistar, ver, copias, recuperar
Fora da filadecisao

Todo fechamento (fechar, para-observacao), com ramo ou sem ele, também uma proposta, exige o passo «Fechar a tarefa» e nenhum outro pendente exceto «Ativar ramo para poder testar». Os dois passos de fechamento são colocados pelo cola.py ao entrar a tarefa em andamento (criar --em-andamento, em-andamento, reabrir, testar desde a fila, restaurar, fundir), uma vez e no final, e não são removidos nem alterados no texto; uma tarefa em andamento que não os tiver os recebe ao carregar a fila. Um passo de trabalho novo deixa novamente pendente «Ativar ramo para poder testar», se estava feito: é preciso testar novamente. As ajudas de teste (passo adicionar N "texto" --teste) vão entre os dois passos de fechamento; nenhum fechamento as exige, deixando-as como estão, e adicioná-las não retorna «Ativar ramo» a pendente («Ajudas de teste: após ativar o ramo e não obrigatórias para fechar», 184). pronto apenas guarda o que testar («Os passos de fechamento, desde que a tarefa entra em andamento», 174). testar integra develop no ramo (merge; com choques, desfaz e não ativa; com commits da sub-NN não trazidos, nem integra nem ativa), ativa-o, ou o deixa se já estiver, e marca feito «Ativar ramo para poder testar», e fechar também: o OK do proprietário é fechar (172, 121). Os passos são numerados a partir de 1, como o n de cada um em ver. O que sai da fila leva em .sf/histórico.jsonl o estado com que saiu (fechada, excluída, absorvida, descartada e, de antes de reverter excluir ou deixar pendente (134), revertida), e ver o mostra.

Reverter pede o destino: reverter N --excluir tira da fila sem rastro, como a E; reverter N --pendente devolve a Pendentes, na fila e reaberta, sem ramo. Nunca fica em Fechadas com R («Reverter exclui a tarefa ou a deixa pendente», 134). Se o proprietário não disser, perguntar qual.

Quando uma ordem falha por git (choques no squash ou no revert, mudanças não commitadas, o ramo em outro worktree), o CLI desfaz e informa o que acontece; o principal resolve e repete a ordem. Um push falho não impede o fechamento: fica no histórico (push-falho) e repete-se o push manualmente.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

jumibot/documento_fundacional

Crea o revisa el documento fundacional de un proyecto o de un producto — su presentación formal, más formal que el documento de visión y sin historia conductora — con la necesidad documentada, la tesis de desarrollo, qué es el producto, los escenarios de uso, las evidencias con lo que respaldan y lo que no, qué debe demostrar el piloto y las fuentes. Para el autor y para compartir con colaboradores, socios o financiadores. Úsala cuando pidan un documento fundacional, una presentación o justificación formal del proyecto, un manifiesto, un dossier o un caso de desarrollo, o convertir uno existente (PDF, HTML) a este formato. Genera .md → .html con el generador y los recursos comunes de crear_documentos (portada sobria, secciones plegables, tarjetas, fichas con buscador, referencias) y el tema de la identidad del proyecto; se imprime en A4.

jumibot/informe_deliberativa

Crea o pone al día el informe de una tarea deliberativa de la Software Factory (investigar, deliberar, diseñar) — con la estructura fija de resumen, el análisis, lo decidido, lo que queda por decidir partido en bloques, las separaciones propuestas y las tareas que salen — y con las preguntas como fichas con opciones, recomendación destacada y estado (abierta, decidida, separada), al día con cada respuesta del propietario. Cada vuelta sube la versión, respalda la anterior en _respaldo/ y regenera el HTML. Úsala cuando una tarea deliberativa escriba o actualice su informe, cuando haya que registrar en él una respuesta, una decisión o una separación, o al pasar un informe antiguo a este formato. Usa el generador y los recursos comunes de crear_documentos.

Habilidades Relacionadas