Este skill pega o contexto da conversa atual e o entendimento do código-fonte e produz uma especificação técnica. NÃO entreviste o usuário; apenas sintetize o que você já sabe.
O sistema de issues e o vocabulário de labels de triagem devem ter sido fornecidos a você. Se não, peça ao usuário para executar /setup-matt-pocock-skills.
Processo
-
Explore o repositório para entender o estado atual do código-fonte, se ainda não o fez. Use o glossário de domínio do projeto ao longo da especificação e respeite qualquer ADR na área que você está tocando.
-
Esboce as costuras (seams) nas quais você vai testar a funcionalidade. Costuras existentes devem ser preferidas em relação a novas. Use a costura mais alta possível. Se novas costuras forem necessárias, proponha-as no ponto mais alto possível. Quanto menos costuras houver no código, melhor — o número ideal é uma.
Verifique com o usuário se essas costuras correspondem às expectativas dele.
- Escreva a especificação usando o template abaixo e, em seguida, publique-a no sistema de issues do projeto. Aplique o rótulo de triagem
ready-for-agent— não é necessária triagem adicional.
Declaração do Problema
O problema que o usuário está enfrentando, da perspectiva do usuário.
Solução
A solução para o problema, da perspectiva do usuário.
Histórias de Usuário
Uma lista LONGA e numerada de histórias de usuário. Cada história deve estar no formato:
- Como , quero , para que <benefício>
<exemplo-de-história-de-usuário>
- Como cliente de banco móvel, quero ver o saldo nas minhas contas, para que eu possa tomar decisões mais informadas sobre meus gastos </exemplo-de-história-de-usuário>
Esta lista de histórias de usuário deve ser extremamente abrangente e cobrir todos os aspectos da funcionalidade.
Decisões de Implementação
Uma lista de decisões de implementação que foram tomadas. Isso pode incluir:
- Os módulos que serão construídos/modificados
- As interfaces desses módulos que serão modificadas
- Esclarecimentos técnicos do desenvolvedor
- Decisões arquiteturais
- Mudanças no esquema
- Contratos de API
- Interações específicas
Não inclua caminhos de arquivo específicos ou trechos de código. Eles podem ficar desatualizados muito rapidamente.
Exceção: se um protótipo produziu um trecho que codifica uma decisão com mais precisão do que a prosa (máquina de estados, reducer, esquema, formato de tipo), inclua-o na decisão relevante e observe brevemente que veio de um protótipo. Apare apenas as partes ricas em decisão, não uma demonstração funcional, apenas as partes importantes.
Decisões de Teste
Uma lista de decisões de teste que foram tomadas. Inclua:
- Uma descrição do que constitui um bom teste (testar apenas comportamento externo, não detalhes de implementação)
- Quais módulos serão testados
- Exemplos anteriores para os testes (ou seja, tipos semelhantes de testes no código-fonte)
Fora do Escopo
Uma descrição das coisas que estão fora do escopo desta especificação.
Notas Adicionais
Quaisquer notas adicionais sobre a funcionalidade.