Ask Matt
Pergunte qual skill ou fluxo se encaixa na sua situação. Um roteador sobre as skills deste repositório.
Ask Matt
Origem: importada de mattpocock/skills (
engineering/ask-matt), adaptada ao vocabulário deste harness.
Você não memoriza toda skill que existe, então pergunte.
Um fluxo é um caminho pelas skills. A maioria dos caminhos percorre um fluxo principal, e dois ramais de entrada se juntam a ele. Tudo mais é independente, ou uma camada de vocabulário que roda por baixo.
Quando ler cada arquivo
| Tarefa | Arquivo |
|---|---|
Decidir entre continuar, /clear, handoff, subagente ou /compact numa fronteira de fase |
PHASE-BOUNDARIES.md |
O fluxo principal: ideia → shippado
A rota que a maior parte do trabalho percorre. Você tem uma ideia e quer construí-la.
-
grill-with-docsafia a ideia por entrevista. Comece aqui sempre que estiver trabalhando num diretório de trabalho: é stateful, retendo o que aprende emCONTEXT.mde ADRs. (Sem diretório de trabalho? Usegrill-me(ver Independentes). Ambas rodam a mesma primitivagrilling;grill-with-docsé a que deixa rastro documental, o que a torna a melhor opção sempre que houver um repositório para deixar esse rastro.) -
Ramificação: dá pra resolver toda pergunta em conversa? Se uma pergunta precisa de resposta executável (estado, lógica de negócio, uma UI que você precisa ver), desvie para um protótipo, conectado por
handoffnas duas direções (um protótipo vive no seu próprio diretório, que é exatamente para isso que servehandoff; ver Fronteiras de fase):handoffpara fora, depois abra uma sessão nova contra esse arquivo,prototypepara responder a pergunta com código descartável,handoffde volta trazendo o que você aprendeu, e referencie a partir da thread original da ideia.
-
Ramificação: é uma build multi-sessão?
- Sim →
to-spec(transforma a thread numa spec), depoisto-ticketspara dividir em tickets tracer-bullet, cada um declarando suas arestas de bloqueio. Neste harness os tickets viram issues no Forgejo seguindo o template e a mecânica deworkflow-issues(marcadorTask:, milestoneM0X, label de sprint); como o Forgejo não tem link nativo de bloqueio entre issues, as arestas de bloqueio ficam documentadas no corpo da issue (referenciando o número da issue bloqueadora) e são trabalhadas bloqueadores-primeiro à mão. Dispareimplementpor ticket, dando/clearno contexto entre cada um. Cada ticket é autocontido, então o contexto do último é descartável. - Não →
implementdireto aqui, na mesma janela de contexto.
De qualquer forma,
implementconstrói cada issue dirigindotddinternamente (uma fatia red-green por vez), depois fecha rodandocode-review, uma revisão de dois eixos (Standards + Spec) do diff, antes de commitar. Recorra atddsozinho quando você só quer construir um comportamento concreto test-first sem uma spec completa, e acode-reviewsozinho sempre que quiser revisar uma branch ou PR contra um ponto fixo. - Sim →
Higiene de contexto
Mantenha os passos 1–3 numa única janela de contexto ininterrupta (não dê /compact nem /clear até depois do to-tickets) para que a entrevista, a spec e os tickets se construam sobre o mesmo raciocínio. Cada implement então começa do zero, trabalhando a partir do ticket.
O limite disso é a smart zone: a janela (~150k tokens nos modelos mais avançados) dentro da qual o modelo ainda raciocina com nitidez. Se uma sessão se aproximar dela antes do to-tickets, não force no modo degradado; dê /compact na fronteira de fase mais próxima e continue (ver Fronteiras de fase).
Ramais de entrada
Uma situação inicial que gera trabalho, depois se junta ao fluxo principal.
-
Bugs e pedidos empilhando →
triage. Move issues pelos papéis de triagem e produz issues prontas para agente, que oimplementpega depois.Triagem é só para issues que você não criou: bug reports, pedidos de feature que chegam de fora, qualquer coisa que chegue crua. Tickets que o
to-ticketsproduziu já estão prontos para agente, então não triage-os. -
Algo quebrou →
diagnosing-bugs. Para os bugs difíceis: o que resiste a uma primeira olhada, o flake intermitente, a regressão que se infiltrou entre dois estados conhecidos como bons. Recusa-se a teorizar até ter um loop de feedback apertado (um comando que já fica red neste bug específico), depois corrige com um teste de regressão. O post-mortem dele repassa paraimprove-codebase-architecturequando a conclusão real é que não existe um bom seam para travar o bug. -
Um esforço grande e nebuloso: um projeto greenfield ou uma feature enorme demais para uma sessão →
wayfinder, o fluxo mais exigente cognitivamente daqui. Quando o caminho daqui até o destino ainda não é visível, ele traça um mapa compartilhado de tickets de decisão no Forgejo (viaworkflow-issues) e resolve um de cada vez, produzindo decisões, não entregáveis, até a neblina recuar e o caminho ficar claro. Ondegrill-with-docsafia uma ideia que cabe numa sessão, wayfinder é para a ideia que não cabe, e é mais lento e denso, então reserve para exatamente isso, nunca para uma feature bem definida.Quando o mapa clareia, ele repassa, não constrói: junte-se ao fluxo principal em
to-spec, que colapsa as decisões interligadas do mapa num plano construível, depoisto-ticketseimplementcomo de costume. Pular o mapa direto paraimplementignora esse colapso e joga fora o detalhe interligado, então vá direto paraimplementsó quando o esforço acabou se mostrando genuinamente pequeno.
Saúde do codebase
Não é trabalho de feature, é manutenção.
improve-codebase-architectureroda sempre que você tem um momento livre para manter o codebase bom para agentes operarem nele. Ele revela oportunidades de aprofundamento; escolher uma gera uma ideia que você leva para o fluxo principal emgrill-with-docs. É o levantamento que encontra os candidatos;codebase-design(abaixo) é a bancada onde você desenha o escolhido.
Vocabulário por baixo
Duas referências invocadas pelo modelo que rodam por baixo das outras skills, cada uma a fonte única de verdade do seu vocabulário. Recorra a elas diretamente quando o problema forem as palavras, não o processo; ou deixe as skills acima puxá-las.
domain-modeling: afia a linguagem de domínio do projeto: desafia um termo vago, resolve uma palavra sobrecarregada ("conta" fazendo três papéis), registra uma decisão difícil de reverter como ADR. É a disciplina ativa quegrill-with-docsconduz para manter oCONTEXT.mdum glossário limpo.codebase-designé o vocabulário de módulo profundo (módulo, interface, profundidade, seam, adapter, leverage, localidade) para desenhar a forma de um módulo: muito comportamento atrás de uma interface pequena, num seam limpo.tddeimprove-codebase-architecturefalam esse vocabulário.
Fronteiras de fase
Uma fase é um pedaço de trabalho dentro de uma sessão: a entrevista, a implementação, o QA. Na fronteira entre duas fases você tem cinco opções, e escolher entre elas é a decisão mais nebulosa deste mapa inteiro:
- Continuar: ficar onde está. Não custa nada, não perde nada.
/clear: esvaziar a janela, quando nada aqui importa para o que vem a seguir.handoffescreve um arquivo markdown portátil. Estreito: só para um harness novo, um diretório novo, um colega, ou bifurcar uma tarefa lateral no meio da fase. O que ele compra é portabilidade.- Subagente: manda uma tarefa bem delimitada para a própria janela e recebe um relatório de volta.
/compactcomprime este contexto e semeia uma sessão nova com ele. O padrão, no fim da árvore em vez do primeiro recurso.
Leia PHASE-BOUNDARIES.md para a árvore ordenada: as cinco perguntas, o raciocínio por trás de cada ramo, e por que o custo da fonte primária faz o Continuar ser o primeiro a descartar. Tome a decisão na fronteira; no meio da fase, continue ou divida o resto em subagentes.
Independentes
Fora do fluxo principal por completo.
grill-me: a mesma entrevista implacável degrill-with-docs, mas stateless: não salva nada localmente nem constróiCONTEXT.md. Recorra a ela quando você não está num diretório de trabalho (afiando um plano, um design, um texto, qualquer coisa sem repositório embaixo). Se você está num diretório de trabalho, usegrill-with-docs: roda a mesma entrevista e deixa rastro documental, então é estritamente a melhor opção.grillingé a primitiva de entrevista em si: rodadas, a fronteira do conhecido, fatos são trabalho do agente e decisões são suas.grill-meegrill-with-docssão as duas portas de entrada nomeadas, etriage,wayfindereimprove-codebase-architecturerodam ela internamente. Recorra a ela diretamente só quando quiser a entrevista sem nenhum wrapper em volta.resolving-merge-conflictstrabalha um merge ou rebase em conflito em andamento, hunk a hunk, resolvendo por intenção rastreada até a fonte primária de cada lado em vez de escolher linhas, depois finaliza a operação. Nunca roda--abort. Independente e fora de qualquer fluxo: recorra a ela quando você já está no meio de um conflito.prototypeé um programa pequeno e descartável que responde uma pergunta de design: esse modelo de estado parece certo, ou qual deveria ser a cara dessa UI. Descartável é uma restrição em como o código é escrito, não uma promessa de destruí-lo: a resposta se incorpora ao código real, e o protótipo em si é mantido como fonte primária numa branchprototype/<nome>a partir dedevelop(verworkflow-branching), apontada a partir da issue de implementação. É o desvio do passo 2 do fluxo principal, mas recorra a ele sempre que uma pergunta de design for difícil de resolver no papel.research: delega o trabalho pesado de leitura para um agente em background: ele investiga uma pergunta contra fontes primárias, depois deixa um arquivo Markdown citado no repositório. Continue trabalhando enquanto ele lê. O arquivo que ele produz é algo para levar para dentro do fluxo principal emgrill-with-docs, já que pesquisa alimenta o raciocínio em vez de substituí-lo.to-questionnaireentra quando o que está te travando não está na sua cabeça nem no codebase, mas na cabeça de outra pessoa, e escreve um questionário para ela preencher. É o inverso degrill-me: em vez de te entrevistar sobre o assunto, ele te entrevista sobre o envio (para quem vai, o que você precisa de volta) e mira as perguntas na lacuna. O que volta é material paragrill-with-docsouto-spec.wizardé para os passos que só um humano consegue dar: provisionar infraestrutura, configurar credenciais ou secrets de CI, clicar num dashboard de terceiros desconhecido, rodar uma migration ou cutover pontual. Gera um script bash interativo que abre cada URL, captura cada valor, e escreve no.enve nos secrets de CI do repositório, assim o procedimento para de ser algo que você reexplica pro agente toda vez. Invocado pelo modelo, então o agente recorre a ela no momento em que esbarra num muro que só um humano atravessa. Se o agente conseguisse fazer sozinho, deveria; isso é para quando um humano está genuinamente no loop.wait-whaté o corretivo para uma mensagem que não foi entendida. Use no meio de uma conversa, dentro de qualquer outra skill, e o agente reapresenta o que acabou de dizer com o contexto que faltava, em português simples, usando o vocabulário doCONTEXT.md. Funciona depois do fato;grill-with-docsé a cura antecipada, porque uma linguagem compartilhada acordada cedo é o que evita o jargão chegar de saída.teach: aprenda um conceito ao longo de várias sessões, usando o diretório atual como um workspace stateful.writing-for-agentsé a referência para escrever documentos que agentes consomem: skills, AGENTS.md, docs apontados.
Pré-requisito
Este harness já fixa nativamente o tracker de issues, as convenções de branch/PR/commit e o layout de doc — não há setup equivalente ao setup-matt-pocock-skills da fonte. Antes do primeiro fluxo de engenharia, familiarize-se com workflow-issues (issues, milestones, sprints e template no Forgejo), workflow-branching (nomenclatura e hierarquia de branch) e workflow-prs (título/body de PR, Closes #N); workflow-commits cobre a mensagem de commit usada dentro de implement.
Skills relacionadas
- Tracker, branch, PR, commit nativos deste harness:
workflow-issues,workflow-branching,workflow-prs,workflow-commits - Loop TDD:
tdd - Revisão de dois eixos:
code-review - Vocabulário de módulo/interface:
codebase-design - Vocabulário de domínio e
CONTEXT.md/ADR:domain-modeling - Diagnóstico de bugs difíceis:
diagnosing-bugs - Interview que gera
CONTEXT.md/ADR:grill-with-docs - Feature list e baseline:
ratchet-feature-list