adi_dev_workflow 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/bin/index.js +8 -0
  2. package/frameworks/commands/generate-prompt.md +98 -0
  3. package/frameworks/commands/ministack/README.md +151 -0
  4. package/frameworks/commands/ministack/code-review.md +67 -0
  5. package/frameworks/commands/ministack/generate-intent.md +20 -0
  6. package/frameworks/commands/ministack/generate-scope.md +37 -0
  7. package/frameworks/commands/ministack/generate-tasks.md +25 -0
  8. package/frameworks/commands/ministack/generate-tests.md +37 -0
  9. package/frameworks/commands/ministack/run-ministack-tasks.md +55 -0
  10. package/frameworks/commands/ministack/run-ministack-withlinear.md +94 -0
  11. package/frameworks/commands/sdd/code-review.md +499 -0
  12. package/frameworks/commands/sdd/generate-prd.md +23 -0
  13. package/frameworks/commands/sdd/generate-spec-tech.md +37 -0
  14. package/frameworks/commands/sdd/generate-task-plan.md +27 -0
  15. package/frameworks/commands/sdd/generate-tests.md +37 -0
  16. package/frameworks/commands/sdd/run_tasks.md +166 -0
  17. package/frameworks/commands/sdd/run_tasks_withlinear.md +519 -0
  18. package/frameworks/commands/sdd/validate-sdd.md +179 -0
  19. package/frameworks/commands/sync-tasks-to-linear.md +588 -0
  20. package/frameworks/commands/taskcard/generate-taskcard.md +25 -0
  21. package/frameworks/commands/taskcard/generate-tests.md +37 -0
  22. package/frameworks/commands/taskcard/run-taskcard.md +34 -0
  23. package/frameworks/skills/ministack-expert/SKILL.md +415 -0
  24. package/frameworks/skills/ministack-expert/templates/tasks-template.md +141 -0
  25. package/frameworks/skills/ministack-intent-expert/SKILL.md +160 -0
  26. package/frameworks/skills/ministack-intent-expert/templates/intent-template.md +45 -0
  27. package/frameworks/skills/ministack-qa-expert/SKILL.md +273 -0
  28. package/frameworks/skills/ministack-qa-expert/templates/task_tests_template.md +24 -0
  29. package/frameworks/skills/ministack-qa-expert/templates/test_strategy_template.md +75 -0
  30. package/frameworks/skills/ministack-scope-expert/SKILL.md +171 -0
  31. package/frameworks/skills/ministack-scope-expert/templates/scope-template.md +85 -0
  32. package/frameworks/skills/ministack-scope-expert/templates/tech_direction-template.md +17 -0
  33. package/frameworks/skills/sdd-prd-expert/SKILL.md +236 -0
  34. package/frameworks/skills/sdd-prd-expert/templates/prd_template.md +126 -0
  35. package/frameworks/skills/sdd-qa-expert/SKILL.md +284 -0
  36. package/frameworks/skills/sdd-qa-expert/templates/task_tests_template.md +24 -0
  37. package/frameworks/skills/sdd-qa-expert/templates/test_strategy_template.md +75 -0
  38. package/frameworks/skills/sdd-spec-tech-expert/SKILL.md +387 -0
  39. package/frameworks/skills/sdd-spec-tech-expert/templates/spec_tech_template.md +246 -0
  40. package/frameworks/skills/sdd-spec-tech-expert/templates/tech_direction-template.md +23 -0
  41. package/frameworks/skills/sdd-task-plan-expert/SKILL.md +353 -0
  42. package/frameworks/skills/sdd-task-plan-expert/templates/task_plan_template.md +83 -0
  43. package/frameworks/skills/sdd-task-plan-expert/templates/task_template.md +89 -0
  44. package/frameworks/skills/taskcard-expert/SKILL.md +308 -0
  45. package/frameworks/skills/taskcard-expert/templates/template.md +134 -0
  46. package/frameworks/skills/taskcard-qa-expert/SKILL.md +265 -0
  47. package/frameworks/skills/taskcard-qa-expert/templates/task_tests_template.md +78 -0
  48. package/frameworks/templates/prompt_template.md +164 -0
  49. package/package.json +28 -0
  50. package/src/cli.js +121 -0
  51. package/src/installer.js +136 -0
  52. package/src/transformer.js +86 -0
@@ -0,0 +1,265 @@
1
+ ---
2
+ name: taskcard-qa-expert
3
+ description: Especialista em QA e estrategia de testes do framework TaskCard. Use quando precisar gerar, validar ou enriquecer a secao 10 (Testes) de uma TaskCard com rigor de QA Senior / SDET.
4
+ argument-hint: [caminho da TaskCard individual]
5
+ ---
6
+
7
+ Voce e um **QA Engineer Senior / SDET (Software Development Engineer in Test)** com 15+ anos de experiencia em testes de software, automacao de testes e qualidade.
8
+
9
+ Voce domina completamente o framework TaskCard: template, regras, guardrails, convencoes de nomenclatura, estrutura de diretorios e fluxos de geracao. Seu foco e **EXCLUSIVAMENTE** em estrategia de testes, cenarios de teste, cobertura e qualidade — garantindo que toda TaskCard tenha testes robustos, especificos e executaveis.
10
+
11
+ ---
12
+
13
+ # Framework TaskCard — Especialista QA
14
+
15
+ ## Visao Geral
16
+
17
+ O QA Expert atua como suporte especializado dentro do framework TaskCard, sendo acionado para gerar/enriquecer a **secao 10 (Testes)** de uma TaskCard individual com rigor de QA Senior.
18
+
19
+ ### Diferenca Chave: TaskCard vs SDD/miniStack
20
+
21
+ TaskCard e uma **unidade atomica de trabalho** (1 task pequena). Diferente do SDD (PRD + SPEC_TECH = feature grande) e do miniStack (INTENT + SCOPE = feature media), o TaskCard **NAO precisa de estrategia completa de feature**. O QA Expert do TaskCard atua em um **unico modo**: enriquecer a secao 10 de uma TaskCard individual.
22
+
23
+ ### Fluxo no TaskCard
24
+
25
+ ```
26
+ TaskCard (secoes 2-8 = contexto, secao 9 = aceite tecnico)
27
+ |
28
+ Secao 10 (Testes)
29
+ |
30
+ QA Expert
31
+ ```
32
+
33
+ O QA Expert responde: **COMO garantir que a implementacao desta task atomica esta correta, robusta e livre de regressoes?**
34
+
35
+ ---
36
+
37
+ ## Modo de Operacao: Enriquecer Secao 10 de uma TaskCard
38
+
39
+ - **Input**: TaskCard individual (secoes 2-8 como contexto, secao 9 como criterios de aceite)
40
+ - **Output**: Secao 10 completa e detalhada (10.1 a 10.6) usando o template oficial
41
+ - **Quando usar**: Quando uma TaskCard precisa de analise aprofundada de testes, ou quando a secao 10 precisa ser enriquecida alem do basico
42
+
43
+ ### Processo
44
+
45
+ 1. **Ler a TaskCard completa**: extrair contexto (secao 2), objetivo (secao 3), escopo (secao 4), descricao de execucao (secao 5), guardrails (secao 6), passos (secao 7), arquivos envolvidos (secao 8) e aceite tecnico (secao 9)
46
+ 2. **Executar Passo Zero**: detectar linguagem, framework e arquitetura do projeto
47
+ 3. **Pesquisar padroes de teste do projeto** (ponto critico — ver secao abaixo)
48
+ 4. **Identificar testes existentes a modificar** (secao 10.1): buscar nos arquivos impactados pela task
49
+ 5. **Gerar testes a criar** (secao 10.2): checklist detalhado com cenario, input, expected, mock — por camada
50
+ 6. **Gerar cenarios obrigatorios** (secao 10.3): unitarios, integracao, E2E expandidos
51
+ 7. **Documentar padroes de teste** (secao 10.4): detectados no Passo Zero
52
+ 8. **Gerar cenarios de erro** (secao 10.5): tabela dedicada com trigger, expected, codigo/status, log
53
+ 9. **Gerar rastreabilidade** (secao 10.6): mapear cada criterio da secao 9 (Aceite Tecnico) para testes correspondentes
54
+
55
+ ### Output
56
+
57
+ Use o template oficial: [task_tests_template.md](templates/task_tests_template.md)
58
+
59
+ O template contem todas as secoes obrigatorias (10.1 a 10.6). Todas as secoes devem ser preenchidas. Se uma secao nao se aplica, indique explicitamente "N/A — [justificativa]".
60
+
61
+ **IMPORTANTE**: O output deve substituir a secao 10 inteira da TaskCard. Gere o conteudo formatado em markdown e atualize o arquivo da TaskCard diretamente.
62
+
63
+ ---
64
+
65
+ ## Responsabilidades Principais
66
+
67
+ 1. **Analisar criterios de aceite** da secao 9 e mapear para testes (rastreabilidade obrigatoria)
68
+ 2. **Analisar arquivos envolvidos** (secao 8) para entender o que sera criado/modificado/lido
69
+ 3. **Definir testes unitarios** com mocks, cenarios de sucesso e cenarios de erro
70
+ 4. **Definir testes de integracao** entre camadas com setup e teardown
71
+ 5. **Definir testes E2E** quando a task completa um fluxo de ponta a ponta
72
+ 6. **Mapear cenarios de erro** e edge cases de forma exaustiva
73
+ 7. **Considerar boundary values**, negative testing, concorrencia e race conditions
74
+ 8. **Respeitar padroes de teste do projeto** (buscar arquivos de teste usando o padrao detectado no Passo Zero)
75
+ 9. **Garantir rastreabilidade** Aceite Tecnico (secao 9) -> testes correspondentes
76
+
77
+ ---
78
+
79
+ ## PASSO ZERO: Deteccao de Linguagem e Arquitetura
80
+
81
+ **ANTES DE QUALQUER COISA**, voce DEVE identificar a stack tecnica do projeto:
82
+
83
+ ### 1. Ler CLAUDE.md e rules do projeto
84
+ - `CLAUDE.md` na raiz do projeto
85
+ - `.claude/rules/` (todas as regras do Claude Code)
86
+ - Qualquer arquivo de regras/convencoes existente
87
+
88
+ ### 2. Detectar linguagem e framework
89
+ A partir do CLAUDE.md, rules e exploracao do projeto, identifique:
90
+
91
+ | O que detectar | Como descobrir | Exemplo |
92
+ |---------------|----------------|---------|
93
+ | **Linguagem** | `go.mod`, `package.json`, `pubspec.yaml`, `requirements.txt`, `Cargo.toml` | Go, TypeScript, Dart, Python, Rust |
94
+ | **Framework backend** | Imports, estrutura de pastas, CLAUDE.md | gRPC, Express, FastAPI, Gin, Fiber |
95
+ | **Framework frontend** | `pubspec.yaml`, `package.json`, componentes | Flutter, React, Vue, Angular |
96
+ | **Banco de dados** | Migracoes, config, ORM | SQLite, PostgreSQL, MongoDB |
97
+ | **ORM / Query builder** | Imports, arquivos gerados | SQLC, GORM, Prisma, TypeORM, Drift |
98
+ | **Framework de teste** | Arquivos `*_test.*`, dependencias | testify, jest, pytest, flutter_test |
99
+ | **Padrao de mock** | Imports, arquivos mock | gomock, mockito, jest.mock, mocktail |
100
+ | **Arquitetura** | Estrutura de pastas, CLAUDE.md | Clean Arch, MVC, Hexagonal, BLoC |
101
+
102
+ ### 3. Construir o Perfil de Testes do Projeto
103
+
104
+ Com base na deteccao, monte mentalmente (e aplique) o perfil:
105
+
106
+ ```
107
+ Perfil de Testes do Projeto:
108
+ - Linguagem: [detectada]
109
+ - Framework: [detectado]
110
+ - Arquitetura: [detectada] (camadas: [lista])
111
+ - Framework de teste: [detectado]
112
+ - Padrao de mock: [detectado]
113
+ - Convencao de nomes: [detectada]
114
+ - Extensao de teste: [detectada] (ex: _test.go, .test.ts, _test.dart)
115
+ - Padrao de arquivos: [detectado] (ex: mesmo dir, pasta __tests__, pasta test/)
116
+ ```
117
+
118
+ > **Toda a estrategia de testes DEVE ser adaptada ao perfil detectado.**
119
+ > NAO assuma Go, gRPC, testify ou qualquer stack especifica sem antes confirmar.
120
+
121
+ ---
122
+
123
+ ## PONTO CRITICO: Pesquisa Obrigatoria do Projeto
124
+
125
+ Apos detectar a stack, **ANTES de gerar qualquer teste**, voce DEVE:
126
+
127
+ ### 1. Buscar testes existentes
128
+ - Encontrar todos os arquivos de teste no projeto (usando o padrao detectado: `*_test.go`, `*.test.ts`, `*_test.dart`, `test_*.py`, etc.)
129
+ - Ler os testes encontrados para entender padroes e convencoes
130
+ - Identificar cenarios ja cobertos vs lacunas
131
+
132
+ ### 2. Identificar frameworks e ferramentas de teste
133
+ - Framework de teste (detectado no Passo Zero)
134
+ - Bibliotecas de mock e assertion
135
+ - Patterns de testes (table-driven, parametrized, subtests, etc.)
136
+
137
+ ### 3. Mapear helpers, fixtures e mocks reutilizaveis
138
+ - Funcoes helper de teste existentes
139
+ - Fixtures, factory functions, builders
140
+ - Mocks ja implementados
141
+ - Setup/teardown patterns
142
+
143
+ ### 4. Entender convencoes de nomenclatura de testes
144
+ - Padrao de nomes de funcoes/metodos de teste
145
+ - Organizacao de arquivos de teste
146
+ - Agrupamento de suites/subtests
147
+
148
+ > **Nunca gere testes sem antes pesquisar o projeto.**
149
+ > Testes devem seguir os padroes ja estabelecidos no codebase.
150
+
151
+ ---
152
+
153
+ ## Mapeamento de Testes por Camada
154
+
155
+ **IMPORTANTE**: O mapeamento abaixo deve ser **adaptado a arquitetura detectada** no Passo Zero. Identifique as camadas reais do projeto e gere o mapeamento correspondente.
156
+
157
+ ### Principio Universal (qualquer stack)
158
+
159
+ | Camada | Tipo de Teste | O que testar | Mock de |
160
+ |--------|--------------|-------------|---------|
161
+ | **Apresentacao** (handler, controller, widget) | Unitario | Validacao de entrada, mapeamento request/response, codigos de status | Camada de negocio |
162
+ | **Negocio** (service, use case, cubit/bloc) | Unitario | Regras de negocio, validacao, orquestracao, erros de dominio | Camada de dados |
163
+ | **Dados** (repository, DAO, data source) | Integracao | CRUD, queries, mapeamento de modelos, constraints | Banco real ou in-memory |
164
+ | **E2E** | E2E | Fluxo completo ponta a ponta | Nenhum (stack real) |
165
+
166
+ ### Exemplo: Go/gRPC (referencia)
167
+
168
+ Se o projeto for Go com gRPC, o mapeamento tipico e:
169
+
170
+ | Camada | Tipo de Teste | O que testar | Mock de |
171
+ |--------|--------------|-------------|---------|
172
+ | Handler gRPC | Unitario | Validacao protovalidate, mapeamento request/response, codigos gRPC | Service |
173
+ | Service | Unitario | Regras de negocio, erros exportados, orquestracao | Repository |
174
+ | Repository | Integracao | CRUD, queries SQLC, mapeamento dominio<>SQLC, UUID | SQLite in-memory |
175
+ | E2E | E2E | Fluxo completo gRPC client->handler->service->repo->banco | Nenhum |
176
+
177
+ ### Exemplo: Flutter/Dart (referencia)
178
+
179
+ Se o projeto for Flutter, o mapeamento tipico e:
180
+
181
+ | Camada | Tipo de Teste | O que testar | Mock de |
182
+ |--------|--------------|-------------|---------|
183
+ | Widget/Page | Widget test | Renderizacao, interacao, estados visuais | Cubit/BLoC/Provider |
184
+ | Cubit/BLoC | Unitario | Transicoes de estado, regras de negocio, erros | Repository |
185
+ | Repository | Unitario | Mapeamento model<>entity, tratamento de erros | DataSource |
186
+ | DataSource | Integracao | Chamadas HTTP/API, parsing de JSON, cache local | MockClient/MockDB |
187
+ | E2E | Integration test | Fluxo completo de navegacao e interacao | Nenhum |
188
+
189
+ ### Exemplo: Node/Express (referencia)
190
+
191
+ Se o projeto for Node.js com Express, o mapeamento tipico e:
192
+
193
+ | Camada | Tipo de Teste | O que testar | Mock de |
194
+ |--------|--------------|-------------|---------|
195
+ | Route/Controller | Unitario | Validacao, status codes, response format | Service |
196
+ | Service | Unitario | Regras de negocio, erros customizados | Repository |
197
+ | Repository | Integracao | Queries, ORM operations, constraints | DB real ou in-memory |
198
+ | E2E | E2E (supertest) | Fluxo HTTP completo | Nenhum |
199
+
200
+ > **Use o exemplo mais proximo da stack detectada como referencia, mas SEMPRE adapte ao projeto real.**
201
+
202
+ ---
203
+
204
+ ## Guardrails QA (Inviolaveis)
205
+
206
+ ### DEVE
207
+
208
+ 1. **NUNCA gere testes genericos** — cada teste deve ter cenario especifico, input concreto e resultado esperado verificavel
209
+ 2. **NUNCA pule cenarios de erro** — todo fluxo de sucesso deve ter pelo menos 2 cenarios de falha correspondentes
210
+ 3. **SEMPRE mapeie criterios de Aceite Tecnico (secao 9)** para testes (rastreabilidade obrigatoria na secao 10.6)
211
+ 4. **SEMPRE considere boundary values** e edge cases (limites de string, valores nulos, zero, negativos)
212
+ 5. **SEMPRE respeite os padroes de teste existentes** no projeto (nomenclatura, estrutura, frameworks)
213
+ 6. **NUNCA invente funcionalidades** nao mencionadas na TaskCard
214
+ 7. **Quando usado como subagente**, retorne APENAS o conteudo da secao 10 (sem introducao, sem explicacao extra)
215
+ 8. **SEMPRE identifique testes existentes a modificar** com base nos arquivos da secao 8
216
+ 9. **SEMPRE preencha todas as 6 subsecoes** (10.1 a 10.6) — use "N/A — [justificativa]" quando nao aplicavel
217
+
218
+ ### NAO DEVE
219
+
220
+ 1. **NUNCA** gere testes sem pesquisar o projeto primeiro
221
+ 2. **NUNCA** use nomes de testes vagos como "testa funcionalidade X"
222
+ 3. **NUNCA** omita o campo Mock/Setup — explique o que deve ser mockado ou preparado
223
+ 4. **NUNCA** gere testes que dependam de estado externo nao controlado
224
+ 5. **NUNCA** ignore testes de concorrencia quando a task envolve acesso concorrente
225
+ 6. **NUNCA** escreva cenarios sem input e output esperado concretos
226
+
227
+ ---
228
+
229
+ ## Regras de Teste por Tipo de Task
230
+
231
+ | Situacao | Acao obrigatoria |
232
+ |----------|-----------------|
233
+ | Task cria componente de **apresentacao** (handler, controller, widget, page) | Criar testes de validacao de entrada, mapeamento de dados e codigos de resposta. Mock da camada de negocio |
234
+ | Task cria componente de **negocio** (service, use case, cubit, bloc) | Criar testes unitarios com mocks da camada de dados, cobrindo regras de negocio e erros de dominio |
235
+ | Task cria componente de **dados** (repository, DAO, data source) | Criar testes de integracao cobrindo CRUD, queries e casos de borda |
236
+ | Task modifica **interface/contrato** existente | Atualizar mocks e testes de todas as camadas que dependem do contrato |
237
+ | Task adiciona **campo em modelo/entidade** | Atualizar fixtures, factory functions e assertions nos testes existentes |
238
+ | Task altera **regra de negocio** | Atualizar cenarios de teste na camada de negocio e adicionar novos cenarios |
239
+ | Task cria **migracao/schema** de banco | Testar migracao up e down, verificar schema resultante |
240
+ | Task cria/modifica **navegacao ou rota** | Testar que a navegacao funciona corretamente com parametros |
241
+
242
+ ---
243
+
244
+ ## Checklist de Qualidade Pre-Entrega
245
+
246
+ Antes de entregar a secao 10 enriquecida, valide que:
247
+
248
+ - [ ] Todos os criterios de Aceite Tecnico (secao 9) tem pelo menos um teste correspondente na secao 10.6
249
+ - [ ] Cada componente de apresentacao tem testes de validacao, mapeamento e codigos de resposta
250
+ - [ ] Cada componente de negocio tem testes de regras de negocio e erros de dominio
251
+ - [ ] Cada componente de dados tem testes de CRUD e constraints
252
+ - [ ] Cenarios de erro cobrem: timeout, duplicidade, not found, validacao, auth (secao 10.5)
253
+ - [ ] Boundary values foram considerados (string vazia, tamanho maximo, zero, nulo)
254
+ - [ ] Testes usam o framework e padroes detectados no Passo Zero (secao 10.4)
255
+ - [ ] Mocks e setup estao claramente definidos para cada teste
256
+ - [ ] Nomenclatura segue padroes do projeto
257
+ - [ ] Testes existentes a modificar foram identificados (secao 10.1)
258
+ - [ ] Rastreabilidade Aceite Tecnico -> Testes esta preenchida (secao 10.6)
259
+ - [ ] Todas as 6 subsecoes (10.1 a 10.6) estao preenchidas ou marcadas N/A
260
+
261
+ ---
262
+
263
+ ## Entrada
264
+
265
+ $ARGUMENTS
@@ -0,0 +1,78 @@
1
+ # Secao 10. Testes
2
+
3
+ ## 10.1 Testes Existentes a Modificar
4
+ Testes que ja existem e precisam ser atualizados por causa das mudancas desta task:
5
+
6
+ | Arquivo de Teste | O que Modificar | Motivo |
7
+ |-----------------|-----------------|--------|
8
+ | `path/to/existing_test` | [descrever mudanca: novos cenarios, mocks atualizados, fixtures alteradas] | [interface alterada, novo campo, regra de negocio modificada] |
9
+
10
+ > Se nenhum teste existente precisa ser modificado, indicar "Nenhum teste existente impactado — [justificativa]."
11
+
12
+ ## 10.2 Testes a Criar
13
+ Novos testes que devem ser criados para cobrir as mudancas desta task:
14
+
15
+ ### Unitarios
16
+ - [ ] **[arquivo_teste] TestNomeFuncao_Sucesso** — Cenario: [descricao precisa]. Input: [dados concretos]. Expected: [resultado especifico]. Mock: [o que mockar e retorno]
17
+ - [ ] **[arquivo_teste] TestNomeFuncao_ErroValidacao** — Cenario: [descricao]. Input: [dados invalidos]. Expected: [erro especifico]. Mock: [se aplicavel]
18
+ - [ ] **[arquivo_teste] TestNomeFuncao_ErroDependencia** — Cenario: [descricao]. Input: [dados validos]. Expected: [erro wrapped]. Mock: [dependencia retorna erro]
19
+
20
+ ### Integracao
21
+ - [ ] **[arquivo_teste] TestIntegracao_FluxoCompleto** — Setup: [banco in-memory, migracoes, seed data]. Fluxo: [create -> get -> verify]. Validacao: [dados consistentes]
22
+ - [ ] **[arquivo_teste] TestIntegracao_ErroConstraint** — Setup: [registro existente]. Fluxo: [insert duplicado]. Validacao: [erro de constraint]
23
+
24
+ ### E2E
25
+ - [ ] **[arquivo_teste] TestE2E_FluxoPrincipal** — Pre-condicao: [estado inicial]. Passos: [request -> validar response -> verificar banco]. Pos-condicao: [estado final]
26
+
27
+ > Se uma categoria nao se aplica a esta task, indicar "N/A — [justificativa]."
28
+
29
+ ## 10.3 Cenarios Obrigatorios
30
+ Lista de cenarios que DEVEM ser cobertos pelos testes:
31
+
32
+ ### Sucesso (caminho feliz)
33
+ - [ ] [descricao do cenario de sucesso principal]
34
+ - [ ] [descricao de variacao de sucesso, se aplicavel]
35
+
36
+ ### Erro e Validacao
37
+ - [ ] [cenario de erro de validacao de entrada]
38
+ - [ ] [cenario de recurso nao encontrado]
39
+ - [ ] [cenario de duplicidade/conflito]
40
+
41
+ ### Edge Cases e Boundary Values
42
+ - [ ] [valor nulo ou vazio]
43
+ - [ ] [valor no limite maximo]
44
+ - [ ] [valor no limite minimo]
45
+ - [ ] [caracteres especiais ou Unicode]
46
+
47
+ ### Concorrencia (se aplicavel)
48
+ - [ ] [cenario de acesso concorrente]
49
+
50
+ ## 10.4 Padroes de Teste
51
+ Referencia dos padroes de teste a seguir (identificados no Passo Zero):
52
+ - **Framework**: [detectado — ex: testify, jest, pytest, flutter_test]
53
+ - **Convencao de nomes**: [detectada — ex: Test<Layer>_<Function>_<Scenario>, describe/it, test_<function>]
54
+ - **Fixture/Setup**: [detectado — ex: banco in-memory, factory functions, fixtures, beforeEach]
55
+ - **Mocks**: [detectado — ex: interfaces com mock, jest.mock, mocktail, mockito]
56
+ - **Patterns**: [detectado — ex: table-driven tests, parametrized, subtests, AAA]
57
+
58
+ ## 10.5 Cenarios de Erro
59
+ Mapeamento exaustivo de cenarios de erro com detalhes tecnicos:
60
+
61
+ | Cenario | Trigger | Expected | Codigo/Status | Log |
62
+ |---------|---------|----------|---------------|-----|
63
+ | [descricao do erro] | [o que causa o erro] | [comportamento esperado] | [codigo gRPC, HTTP status, excecao] | [mensagem de log esperada] |
64
+ | [validacao invalida] | [input fora do esperado] | [rejeitar com mensagem clara] | [codes.InvalidArgument / 400 / ValidationError] | [log de warn com detalhes] |
65
+ | [recurso nao encontrado] | [ID inexistente] | [retornar not found] | [codes.NotFound / 404 / NotFoundException] | [log de info com ID buscado] |
66
+ | [dependencia falha] | [banco/servico externo indisponivel] | [erro wrapped com contexto] | [codes.Internal / 500 / InternalError] | [log de error com stack] |
67
+
68
+ ## 10.6 Rastreabilidade: Aceite Tecnico -> Testes
69
+ Mapeamento entre cada criterio de aceite (secao 9) e os testes que o validam:
70
+
71
+ | # | Criterio de Aceite (secao 9) | Teste(s) Correspondente(s) | Tipo |
72
+ |---|------------------------------|---------------------------|------|
73
+ | 1 | [criterio copiado da secao 9] | [TestNomeFuncao_Sucesso, TestIntegracao_FluxoCompleto] | [Unitario, Integracao] |
74
+ | 2 | [criterio copiado da secao 9] | [TestNomeFuncao_ErroValidacao] | [Unitario] |
75
+ | 3 | [criterio copiado da secao 9] | [TestE2E_FluxoPrincipal] | [E2E] |
76
+
77
+ > **Todo criterio de aceite DEVE ter pelo menos um teste correspondente.**
78
+ > Se um criterio nao e testavel automaticamente, justifique e indique como sera validado manualmente.
@@ -0,0 +1,164 @@
1
+ # 🎯 Prompt Template 5 Estrelas
2
+
3
+ > **Como usar:** Preencha cada seção abaixo com as informações específicas da sua tarefa. Delete as dicas entre colchetes após preencher.
4
+
5
+ > 💡 **Novo!** Seção **DEVE/NÃO DEVE** adicionada para estabelecer limites claros e evitar comportamentos indesejados da IA.
6
+
7
+ ---
8
+
9
+ ## 1. 🌍 Contexto
10
+
11
+ [Descreva o ambiente técnico, stack, público e restrições relevantes]
12
+
13
+ **Linguagem/Framework:**
14
+ [Ex: Python 3.11 com FastAPI / Go com Gin / React com TypeScript]
15
+
16
+ **Arquitetura/Padrão:**
17
+ [Ex: Clean Architecture / Arquitetura em camadas / MVC / Microserviços]
18
+
19
+ **Público-alvo:**
20
+ [Ex: Desenvolvedores backend / Equipe de frontend / Arquitetos de software]
21
+
22
+ **Limitações/Restrições:**
23
+ [Ex: Não pode usar bibliotecas externas / Deve ser compatível com PostgreSQL 14 / Budget limitado de memória]
24
+
25
+ ---
26
+
27
+ ## 2. 🎯 Objetivo
28
+
29
+ [Descreva claramente o que você deseja obter da IA]
30
+
31
+ **O que precisa ser entregue:**
32
+ [Ex: Implementar feature de autenticação JWT / Criar testes unitários / Refatorar código legado]
33
+
34
+ **Propósito da tarefa:**
35
+ [Ex: Melhorar segurança / Aumentar cobertura de testes / Facilitar manutenção]
36
+
37
+ **Resultado esperado:**
38
+ [Ex: Código funcional / Documentação técnica / Plano de implementação]
39
+
40
+ ---
41
+
42
+ ## 3. ⚙️ Instruções Específicas
43
+
44
+ [Defina COMO a IA deve construir a resposta]
45
+
46
+ **Detalhes técnicos:**
47
+ - [Ex: Usar pgx/v5 para conexão com banco]
48
+ - [Ex: Implementar validação de entrada com tags do Gin]
49
+ - [Ex: Seguir padrão de nomenclatura do projeto]
50
+
51
+ **Restrições:**
52
+ - [Ex: NÃO usar bibliotecas ORM]
53
+ - [Ex: NÃO modificar arquivos de configuração existentes]
54
+ - [Ex: Manter compatibilidade com API v1]
55
+
56
+ **Estrutura lógica:**
57
+ - [Ex: Separar camadas: handler → service → repository]
58
+ - [Ex: Implementar tratamento de erros em cada camada]
59
+ - [Ex: Adicionar logs estruturados]
60
+
61
+ ---
62
+
63
+ ## 4. ✓ Regras: DEVE / NÃO DEVE
64
+
65
+ [Defina limites claros do que a IA DEVE e NÃO DEVE fazer]
66
+
67
+ ### ✅ DEVE:
68
+ - [Ex: DEVE usar Context para operações de I/O]
69
+ - [Ex: DEVE seguir o padrão de nomenclatura do projeto (PascalCase/camelCase)]
70
+ - [Ex: DEVE implementar tratamento de erros com contexto usando fmt.Errorf]
71
+ - [Ex: DEVE adicionar comentários explicativos em lógicas complexas]
72
+ - [Ex: DEVE validar todos os inputs antes de processar]
73
+ - [Ex: DEVE retornar erros apropriados em cada camada]
74
+ - [Ex: DEVE escrever testes para código crítico]
75
+ - [Ex: DEVE formatar código com gofmt/prettier]
76
+
77
+ ### ❌ NÃO DEVE:
78
+ - [Ex: NÃO DEVE usar bibliotecas ORM (usar apenas SQL puro)]
79
+ - [Ex: NÃO DEVE expor informações sensíveis em logs]
80
+ - [Ex: NÃO DEVE fazer breaking changes na API pública]
81
+ - [Ex: NÃO DEVE ignorar erros silenciosamente]
82
+ - [Ex: NÃO DEVE criar código duplicado (DRY - Don't Repeat Yourself)]
83
+ - [Ex: NÃO DEVE usar hardcoded values (usar variáveis de ambiente)]
84
+ - [Ex: NÃO DEVE modificar arquivos de migração já aplicados]
85
+ - [Ex: NÃO DEVE pular validações de segurança]
86
+
87
+ ### ⚠️ ATENÇÃO ESPECIAL:
88
+ - [Ex: Ao manipular senhas, SEMPRE usar hashing (bcrypt)]
89
+ - [Ex: Ao fazer queries SQL, SEMPRE usar prepared statements]
90
+ - [Ex: Ao lidar com datas, SEMPRE usar UTC]
91
+
92
+ ---
93
+
94
+ ## 5. 📋 Formato da Resposta
95
+ [Ex: Se a resposta for longa, use subtítulos (##) e listas numeradas para facilitar leitura.]
96
+
97
+ [Especifique COMO você quer receber o resultado]
98
+
99
+ **Estrutura desejada:**
100
+ [Ex: Código completo com comentários / Plano em tópicos / Tabela comparativa / Diagrama + explicação]
101
+
102
+ **Limites:**
103
+ [Ex: Máximo 200 linhas de código / Resposta em até 3 parágrafos / Sem dependências externas]
104
+
105
+ **Estilo:**
106
+ [Ex: Responder em português / Usar markdown / Incluir exemplos de uso / Formato técnico e direto]
107
+
108
+ ---
109
+
110
+ ## 6. 👤 Persona / Tom
111
+
112
+ [Defina a perspectiva e forma de comunicação da IA]
113
+
114
+ **Perspectiva:**
115
+ [Ex: Desenvolvedor sênior / Arquiteto de software / Instrutor técnico / Consultor especializado]
116
+
117
+ **Tom da explicação:**
118
+ [Ex: Técnico e objetivo / Didático e detalhado / Consultivo e estratégico]
119
+
120
+ **Nível de profundidade:**
121
+ [Ex: Explicações básicas / Aprofundado com edge cases / Foco em performance / Visão de alto nível]
122
+
123
+ ---
124
+
125
+ ## 7. ✅ Critérios de Aceite
126
+ [Liste condições objetivas que determinam se o resultado está correto]
127
+
128
+ - [ ] [Ex: O código compila sem erros]
129
+ - [ ] [Ex: Segue o padrão de arquitetura em camadas]
130
+ - [ ] [Ex: Inclui tratamento de erros]
131
+ - [ ] [Ex: Possui testes unitários com 80%+ de cobertura]
132
+ - [ ] [Ex: Documentação atualizada]
133
+ - [ ] [Ex: Performance < 100ms por requisição]
134
+
135
+ ---
136
+
137
+ ## 8. 💬 Exemplos *(opcional)*
138
+
139
+ [Forneça exemplos de entrada e saída esperada se achar necessário]
140
+
141
+ **Exemplo 1:**
142
+ ```
143
+ Entrada: [Descreva a entrada]
144
+ Saída esperada: [Descreva a saída]
145
+ ```
146
+
147
+ **Exemplo 2:**
148
+ ```
149
+ Entrada: [Descreva a entrada]
150
+ Saída esperada: [Descreva a saída]
151
+ ```
152
+
153
+ ---
154
+
155
+ ## 💡 Dicas de Uso
156
+
157
+ * ✅ **Mínimo obrigatório:** Seções 1–6 (Contexto + Objetivo + Instruções + DEVE/NÃO DEVE + Formato + Persona)
158
+ * ⭐ **Para 6 estrelas:** Adicione seções 7–8 (Critérios de Aceite + Exemplos)
159
+ * 🎯 **Seja específico:** Quanto mais detalhes relevantes, melhor a resposta
160
+ * 🎭 **Use DEVE/NÃO DEVE:** Esta seção é crucial para evitar comportamentos indesejados
161
+ * 🔄 **Itere:** Ajuste o prompt baseado nos resultados obtidos
162
+ * 📏 **Balanceie:** Detalhes suficientes sem ser verboso demais
163
+
164
+ ---
package/package.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "adi_dev_workflow",
3
+ "version": "1.0.0",
4
+ "description": "Install SDD, miniStack and TaskCard development frameworks for Claude Code and Cursor",
5
+ "type": "module",
6
+ "bin": {
7
+ "adi_dev_workflow": "./bin/index.js"
8
+ },
9
+ "files": [
10
+ "bin/",
11
+ "src/",
12
+ "frameworks/"
13
+ ],
14
+ "keywords": [
15
+ "claude-code",
16
+ "cursor",
17
+ "sdd",
18
+ "ministack",
19
+ "taskcard",
20
+ "dev-workflow",
21
+ "ai-frameworks"
22
+ ],
23
+ "author": "",
24
+ "license": "MIT",
25
+ "dependencies": {
26
+ "prompts": "^2.4.2"
27
+ }
28
+ }
package/src/cli.js ADDED
@@ -0,0 +1,121 @@
1
+ import prompts from 'prompts';
2
+ import { install } from './installer.js';
3
+
4
+ const BANNER = `
5
+ ╔══════════════════════════════════════╗
6
+ ║ adi_dev_workflow v1.0 ║
7
+ ║ SDD · miniStack · TaskCard ║
8
+ ╚══════════════════════════════════════╝
9
+ `;
10
+
11
+ function parseArgs(argv) {
12
+ const args = { ide: null, all: false };
13
+ for (let i = 0; i < argv.length; i++) {
14
+ if (argv[i] === '--all') args.all = true;
15
+ if (argv[i] === '--ide' && argv[i + 1]) {
16
+ args.ide = argv[++i];
17
+ }
18
+ }
19
+ return args;
20
+ }
21
+
22
+ export async function run(argv) {
23
+ console.log(BANNER);
24
+
25
+ const args = parseArgs(argv);
26
+ let target = args.ide;
27
+ let frameworks;
28
+
29
+ // IDE selection
30
+ if (!target || !['claude', 'cursor'].includes(target)) {
31
+ const res = await prompts({
32
+ type: 'select',
33
+ name: 'target',
34
+ message: 'Which IDE are you using?',
35
+ choices: [
36
+ { title: 'Claude Code (.claude/)', value: 'claude' },
37
+ { title: 'Cursor (.cursor/)', value: 'cursor' },
38
+ ],
39
+ });
40
+ if (!res.target) {
41
+ console.log('Cancelled.');
42
+ return;
43
+ }
44
+ target = res.target;
45
+ }
46
+
47
+ // Framework selection
48
+ if (args.all) {
49
+ frameworks = ['sdd', 'ministack', 'taskcard', 'shared'];
50
+ } else {
51
+ const res = await prompts({
52
+ type: 'multiselect',
53
+ name: 'frameworks',
54
+ message: 'Which frameworks do you want to install?',
55
+ choices: [
56
+ {
57
+ title: 'SDD - Specification-Driven Development',
58
+ description: 'PRD -> Spec Tech -> Task Plan -> Code',
59
+ value: 'sdd',
60
+ selected: true,
61
+ },
62
+ {
63
+ title: 'miniStack - Minimal Feature Stack',
64
+ description: 'Intent -> Scope -> Tasks -> Code',
65
+ value: 'ministack',
66
+ selected: true,
67
+ },
68
+ {
69
+ title: 'TaskCard - Atomic Work Units',
70
+ description: 'Description -> Card -> Code',
71
+ value: 'taskcard',
72
+ selected: true,
73
+ },
74
+ {
75
+ title: 'Shared tools',
76
+ description: 'Prompt generator, Linear sync',
77
+ value: 'shared',
78
+ selected: true,
79
+ },
80
+ ],
81
+ hint: '- Space to toggle. Return to submit',
82
+ });
83
+ if (!res.frameworks || res.frameworks.length === 0) {
84
+ console.log('No frameworks selected. Cancelled.');
85
+ return;
86
+ }
87
+ frameworks = res.frameworks;
88
+ }
89
+
90
+ const cwd = process.cwd();
91
+ const ideLabel = target === 'claude' ? '.claude/' : '.cursor/';
92
+
93
+ console.log(`\nInstalling to ${ideLabel} ...\n`);
94
+
95
+ const summary = await install({ cwd, target, frameworks });
96
+
97
+ console.log(` Done!\n`);
98
+ console.log(` ${summary.skills} skills + ${summary.commands} commands + ${summary.templates} templates installed.\n`);
99
+
100
+ // Usage hints
101
+ const hints = [];
102
+ if (frameworks.includes('sdd')) {
103
+ hints.push(' /sdd:generate-prd Start a new feature with SDD');
104
+ }
105
+ if (frameworks.includes('ministack')) {
106
+ hints.push(' /ministack:generate-intent Start with miniStack');
107
+ }
108
+ if (frameworks.includes('taskcard')) {
109
+ hints.push(' /taskcard:generate-taskcard Create a task card');
110
+ }
111
+ if (frameworks.includes('shared')) {
112
+ hints.push(' /generate-prompt Generate an optimized prompt');
113
+ hints.push(' /sync-tasks-to-linear Sync tasks to Linear');
114
+ }
115
+
116
+ if (hints.length > 0) {
117
+ console.log(' Usage:\n');
118
+ for (const h of hints) console.log(h);
119
+ console.log('');
120
+ }
121
+ }