adi_dev_workflow 1.1.1 → 1.3.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 (98) hide show
  1. package/bin/index.js +8 -8
  2. package/frameworks/agents/qa-staff-engineer.md +311 -311
  3. package/frameworks/agents/qa-validation-expert.md +458 -458
  4. package/frameworks/agents/tech-review-conformance.md +200 -200
  5. package/frameworks/commands/ministack/README.md +2 -0
  6. package/frameworks/commands/ministack/code-review.md +2 -0
  7. package/frameworks/commands/ministack/generate-intent.md +2 -0
  8. package/frameworks/commands/ministack/generate-scope.md +2 -0
  9. package/frameworks/commands/ministack/generate-tasks.md +2 -0
  10. package/frameworks/commands/ministack/generate-tech-direction.md +2 -0
  11. package/frameworks/commands/ministack/run-ministack-tasks.md +3 -0
  12. package/frameworks/commands/ministack/run-ministack-withlinear.md +2 -0
  13. package/frameworks/commands/ministack/status.md +2 -0
  14. package/frameworks/commands/sdd/code-review.md +2 -0
  15. package/frameworks/commands/sdd/generate-prd.md +2 -0
  16. package/frameworks/commands/sdd/generate-task-plan.md +2 -0
  17. package/frameworks/commands/sdd/generate-tech-direction.md +2 -0
  18. package/frameworks/commands/sdd/generate-tech-spec.md +2 -0
  19. package/frameworks/commands/sdd/generate-tests.md +2 -0
  20. package/frameworks/commands/sdd/run_tasks.md +3 -0
  21. package/frameworks/commands/sdd/run_tasks_withlinear.md +2 -0
  22. package/frameworks/commands/sdd/status.md +2 -0
  23. package/frameworks/commands/sdd/validate-sdd.md +2 -0
  24. package/frameworks/commands/sync-tasks-to-linear.md +2 -0
  25. package/frameworks/commands/taskcard/generate-taskcard.md +2 -0
  26. package/frameworks/commands/taskcard/run-taskcard.md +2 -0
  27. package/frameworks/config/ai-framework-config.yaml +112 -0
  28. package/frameworks/skills/ministack-tasks-expert/SKILL.md +204 -204
  29. package/frameworks/skills/ministack-tasks-expert/templates/task_plan_template.md +78 -78
  30. package/frameworks/skills/ministack-tasks-expert/templates/task_template.md +103 -103
  31. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/benchmark.json +99 -99
  32. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/benchmark.md +64 -64
  33. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/eval_metadata.json +12 -12
  34. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/grading.json +32 -32
  35. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/outputs/response.md +134 -134
  36. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/outputs/transcript.md +68 -68
  37. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/timing.json +5 -5
  38. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/without_skill/grading.json +32 -32
  39. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/without_skill/outputs/response.md +525 -525
  40. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/without_skill/outputs/transcript.md +30 -30
  41. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/without_skill/timing.json +5 -5
  42. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/eval_metadata.json +12 -12
  43. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/with_skill/grading.json +32 -32
  44. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/with_skill/outputs/response.md +1126 -1126
  45. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/with_skill/outputs/transcript.md +131 -131
  46. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/with_skill/timing.json +5 -5
  47. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/without_skill/grading.json +32 -32
  48. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/without_skill/outputs/response.md +452 -452
  49. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/without_skill/outputs/transcript.md +78 -78
  50. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/without_skill/timing.json +5 -5
  51. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/eval_metadata.json +12 -12
  52. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/with_skill/grading.json +32 -32
  53. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/with_skill/outputs/response.md +101 -101
  54. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/with_skill/outputs/transcript.md +133 -133
  55. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/with_skill/timing.json +5 -5
  56. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/without_skill/grading.json +32 -32
  57. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/without_skill/outputs/response.md +248 -248
  58. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/without_skill/outputs/transcript.md +49 -49
  59. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/without_skill/timing.json +5 -5
  60. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/review.html +1325 -1325
  61. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/benchmark.json +94 -94
  62. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/benchmark.md +67 -67
  63. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/eval_metadata.json +12 -12
  64. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/with_skill/grading.json +32 -32
  65. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/with_skill/outputs/response.md +117 -117
  66. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/with_skill/outputs/transcript.md +91 -91
  67. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/with_skill/timing.json +1 -1
  68. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/without_skill/grading.json +32 -32
  69. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/without_skill/outputs/response.md +694 -694
  70. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/without_skill/outputs/transcript.md +45 -45
  71. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/without_skill/timing.json +1 -1
  72. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/eval_metadata.json +12 -12
  73. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/with_skill/grading.json +32 -32
  74. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/with_skill/outputs/response.md +1087 -1087
  75. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/with_skill/outputs/transcript.md +124 -124
  76. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/with_skill/timing.json +1 -1
  77. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/without_skill/grading.json +32 -32
  78. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/without_skill/outputs/response.md +458 -458
  79. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/without_skill/outputs/transcript.md +84 -84
  80. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/without_skill/timing.json +1 -1
  81. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/eval_metadata.json +12 -12
  82. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/with_skill/grading.json +32 -32
  83. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/with_skill/outputs/response.md +70 -70
  84. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/with_skill/outputs/transcript.md +148 -148
  85. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/with_skill/timing.json +1 -1
  86. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/without_skill/grading.json +32 -32
  87. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/without_skill/outputs/response.md +249 -249
  88. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/without_skill/outputs/transcript.md +80 -80
  89. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/without_skill/timing.json +1 -1
  90. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/review.html +1325 -1325
  91. package/frameworks/skills/sdd-tech-spec-expert/SKILL.md +317 -317
  92. package/frameworks/skills/sdd-tech-spec-expert/evals/evals.json +199 -199
  93. package/frameworks/skills/sdd-tech-spec-expert/templates/spec_tech_template.md +290 -290
  94. package/frameworks/skills/sdd-tech-spec-expert/templates/tech_direction-template.md +23 -23
  95. package/package.json +28 -28
  96. package/src/cli.js +121 -121
  97. package/src/installer.js +155 -136
  98. package/src/transformer.js +86 -86
@@ -1,78 +1,78 @@
1
- # Transcript — Tool Calls for Task Plan Generation
2
-
3
- ## Objetivo
4
- Gerar um TASK PLAN para a feature "Adicionar Telefone ao Usuario v1" baseado no SPEC_TECH aprovado.
5
-
6
- ## Ferramentas Utilizadas
7
-
8
- ### 1. ToolSearch — Carregar ferramentas
9
- - **Query:** `select:Read,Glob,Bash,Write`
10
- - **Resultado:** 4 ferramentas carregadas com sucesso
11
-
12
- ### 2. Glob (6 chamadas em paralelo) — Descobrir arquivos relevantes
13
- - `internal/db/migrations/*.sql` → Encontrou: `001_create_usuarios.sql`
14
- - `internal/db/queries/*.sql` → Nenhum resultado (caminho incorreto)
15
- - `internal/repository/user*.go` → Encontrou: `user_repository.go`
16
- - `internal/service/user*.go` → Encontrou: `user_service.go`, `user_service_test.go`
17
- - `internal/handler/grpc/user*.go` → Encontrou: `user_handler.go`, `user_handler_test.go`
18
- - `api/proto/v1/user*.proto` → Encontrou: `user.proto`
19
-
20
- ### 3. Read (7 chamadas em paralelo) — Ler conteudo dos arquivos
21
- - `internal/db/migrations/001_create_usuarios.sql` — Schema atual da tabela usuarios
22
- - `api/proto/v1/user.proto` — Definicao proto atual (CreateUser, GetUser)
23
- - `internal/repository/user_repository.go` — Repository com modelo User e interface
24
- - `internal/service/user_service.go` — Service com CreateUserInput e validacoes
25
- - `internal/handler/grpc/user_handler.go` — Handler gRPC com mapeamento de erros
26
- - `internal/service/user_service_test.go` — Testes do service (mock + table-driven)
27
- - `internal/handler/grpc/user_handler_test.go` — Testes do handler
28
-
29
- ### 4. Glob (3 chamadas em paralelo) — Buscar queries SQLC e config
30
- - `**/sqlc.yaml` → Encontrou: `internal/db/sqlc/sqlc.yaml`
31
- - `**/queries/*.sql` → Encontrou: `internal/db/sqlc/queries/user.sql`
32
- - `**/sqlc/**` → Confirmou estrutura do diretorio
33
-
34
- ### 5. Read (2 chamadas em paralelo) — Ler queries SQLC e configuracao
35
- - `internal/db/sqlc/queries/user.sql` — Queries CreateUser e GetUserByID
36
- - `internal/db/sqlc/sqlc.yaml` — Configuracao SQLC (engine sqlite)
37
-
38
- ### 6. Glob (3 chamadas em paralelo) — Verificar codigo gerado e FX
39
- - `gen/**/*.go` → Nenhum resultado (codigo gerado nao commitado)
40
- - `internal/handler/grpc/fx.go` → Encontrado
41
- - `internal/infra/grpc/server.go` → Encontrado
42
-
43
- ### 7. Bash — Listar diretorio SQLC
44
- - Comando: `ls -la internal/db/sqlc/`
45
- - Resultado: Apenas `queries/` e `sqlc.yaml` (sem Go gerado)
46
-
47
- ### 8. Read (2 chamadas em paralelo) — Ler FX e server
48
- - `internal/handler/grpc/fx.go` — Modulo FX do handler (registra UserServiceServer)
49
- - `internal/infra/grpc/server.go` — Servidor gRPC (registra UserService, auth interceptor)
50
-
51
- ### 9. Bash — Verificar diretorio de output
52
- - Verificou existencia do diretorio workspace
53
-
54
- ### 10. Bash — Criar diretorio de output
55
- - Criou `without_skill/outputs/`
56
-
57
- ### 11. Write — Salvar response.md
58
- - Task Plan completo com 12 tasks
59
-
60
- ### 12. Write — Salvar transcript.md
61
- - Este arquivo
62
-
63
- ## Resumo de Descobertas
64
-
65
- | Aspecto | Situacao Atual |
66
- |---------|----------------|
67
- | **Migracao** | 1 arquivo (001), sem down migration |
68
- | **SQLC queries** | 2 queries (CreateUser, GetUserByID) |
69
- | **SQLC gerado** | Nao presente no repo (nao commitado) |
70
- | **Proto** | 2 RPCs (CreateUser, GetUser), sem UpdateUser |
71
- | **Proto gerado** | Nao presente no repo (nao commitado) |
72
- | **Repository** | Interface com Create e GetByID, sem Update |
73
- | **Service** | Interface com CreateUser e GetUser, sem UpdateUser |
74
- | **Handler** | Implementa CreateUser e GetUser |
75
- | **Testes service** | 11 testes (validacao, hash, UUID, erros) |
76
- | **Testes handler** | 12 testes (sucesso, erros, mapeamento) |
77
-
78
- Conclusao: A feature requer adicoes em todas as camadas + criacao do endpoint UpdateUser que nao existe.
1
+ # Transcript — Tool Calls for Task Plan Generation
2
+
3
+ ## Objetivo
4
+ Gerar um TASK PLAN para a feature "Adicionar Telefone ao Usuario v1" baseado no SPEC_TECH aprovado.
5
+
6
+ ## Ferramentas Utilizadas
7
+
8
+ ### 1. ToolSearch — Carregar ferramentas
9
+ - **Query:** `select:Read,Glob,Bash,Write`
10
+ - **Resultado:** 4 ferramentas carregadas com sucesso
11
+
12
+ ### 2. Glob (6 chamadas em paralelo) — Descobrir arquivos relevantes
13
+ - `internal/db/migrations/*.sql` → Encontrou: `001_create_usuarios.sql`
14
+ - `internal/db/queries/*.sql` → Nenhum resultado (caminho incorreto)
15
+ - `internal/repository/user*.go` → Encontrou: `user_repository.go`
16
+ - `internal/service/user*.go` → Encontrou: `user_service.go`, `user_service_test.go`
17
+ - `internal/handler/grpc/user*.go` → Encontrou: `user_handler.go`, `user_handler_test.go`
18
+ - `api/proto/v1/user*.proto` → Encontrou: `user.proto`
19
+
20
+ ### 3. Read (7 chamadas em paralelo) — Ler conteudo dos arquivos
21
+ - `internal/db/migrations/001_create_usuarios.sql` — Schema atual da tabela usuarios
22
+ - `api/proto/v1/user.proto` — Definicao proto atual (CreateUser, GetUser)
23
+ - `internal/repository/user_repository.go` — Repository com modelo User e interface
24
+ - `internal/service/user_service.go` — Service com CreateUserInput e validacoes
25
+ - `internal/handler/grpc/user_handler.go` — Handler gRPC com mapeamento de erros
26
+ - `internal/service/user_service_test.go` — Testes do service (mock + table-driven)
27
+ - `internal/handler/grpc/user_handler_test.go` — Testes do handler
28
+
29
+ ### 4. Glob (3 chamadas em paralelo) — Buscar queries SQLC e config
30
+ - `**/sqlc.yaml` → Encontrou: `internal/db/sqlc/sqlc.yaml`
31
+ - `**/queries/*.sql` → Encontrou: `internal/db/sqlc/queries/user.sql`
32
+ - `**/sqlc/**` → Confirmou estrutura do diretorio
33
+
34
+ ### 5. Read (2 chamadas em paralelo) — Ler queries SQLC e configuracao
35
+ - `internal/db/sqlc/queries/user.sql` — Queries CreateUser e GetUserByID
36
+ - `internal/db/sqlc/sqlc.yaml` — Configuracao SQLC (engine sqlite)
37
+
38
+ ### 6. Glob (3 chamadas em paralelo) — Verificar codigo gerado e FX
39
+ - `gen/**/*.go` → Nenhum resultado (codigo gerado nao commitado)
40
+ - `internal/handler/grpc/fx.go` → Encontrado
41
+ - `internal/infra/grpc/server.go` → Encontrado
42
+
43
+ ### 7. Bash — Listar diretorio SQLC
44
+ - Comando: `ls -la internal/db/sqlc/`
45
+ - Resultado: Apenas `queries/` e `sqlc.yaml` (sem Go gerado)
46
+
47
+ ### 8. Read (2 chamadas em paralelo) — Ler FX e server
48
+ - `internal/handler/grpc/fx.go` — Modulo FX do handler (registra UserServiceServer)
49
+ - `internal/infra/grpc/server.go` — Servidor gRPC (registra UserService, auth interceptor)
50
+
51
+ ### 9. Bash — Verificar diretorio de output
52
+ - Verificou existencia do diretorio workspace
53
+
54
+ ### 10. Bash — Criar diretorio de output
55
+ - Criou `without_skill/outputs/`
56
+
57
+ ### 11. Write — Salvar response.md
58
+ - Task Plan completo com 12 tasks
59
+
60
+ ### 12. Write — Salvar transcript.md
61
+ - Este arquivo
62
+
63
+ ## Resumo de Descobertas
64
+
65
+ | Aspecto | Situacao Atual |
66
+ |---------|----------------|
67
+ | **Migracao** | 1 arquivo (001), sem down migration |
68
+ | **SQLC queries** | 2 queries (CreateUser, GetUserByID) |
69
+ | **SQLC gerado** | Nao presente no repo (nao commitado) |
70
+ | **Proto** | 2 RPCs (CreateUser, GetUser), sem UpdateUser |
71
+ | **Proto gerado** | Nao presente no repo (nao commitado) |
72
+ | **Repository** | Interface com Create e GetByID, sem Update |
73
+ | **Service** | Interface com CreateUser e GetUser, sem UpdateUser |
74
+ | **Handler** | Implementa CreateUser e GetUser |
75
+ | **Testes service** | 11 testes (validacao, hash, UUID, erros) |
76
+ | **Testes handler** | 12 testes (sucesso, erros, mapeamento) |
77
+
78
+ Conclusao: A feature requer adicoes em todas as camadas + criacao do endpoint UpdateUser que nao existe.
@@ -1,5 +1,5 @@
1
- {
2
- "total_tokens": 41818,
3
- "duration_ms": 167600,
4
- "total_duration_seconds": 167.6
5
- }
1
+ {
2
+ "total_tokens": 41818,
3
+ "duration_ms": 167600,
4
+ "total_duration_seconds": 167.6
5
+ }
@@ -1,12 +1,12 @@
1
- {
2
- "eval_id": 3,
3
- "eval_name": "spec-tech-sem-user-stories-explicitas",
4
- "prompt": "Gere o TASK PLAN para esta feature. Segue o SPEC_TECH aprovado:\n\n---\n# SPEC_TECH — Cache de Cardapio v1\n\n## 1. Identificacao\n| Campo | Valor |\n|-------|-------|\n| **Feature/Projeto** | Cache de Cardapio em Memoria |\n| **Versao** | v1 |\n| **Data** | 2026-03-07 |\n\n## 2. Resumo Tecnico\nImplementar cache in-memory (sync.Map) para o cardapio de produtos, evitando queries repetidas ao SQLite. TTL configuravel via config.yaml.\n\n## 3. Definicoes Tecnicas\n\n### 3.1 Novo Pacote\n- `internal/infra/cache/` com interface `Cache[K, V]` e implementacao `InMemoryCache`\n- TTL configuravel via `cache.ttl_seconds` no config.yaml\n- Invalidacao manual via metodo `Invalidate(key)`\n\n### 3.2 Service\n- ProductService passa a consultar cache antes do repository\n- Cache miss: busca no repository e popula cache\n- Operacoes de escrita (Create, Update, Delete) invalidam a entrada correspondente\n\n### 3.3 Config\n- Novo campo `cache.ttl_seconds` (padrao: 300)\n\n### 3.4 DI\n- Registrar modulo cache no FX\n---",
5
- "assertions": [
6
- {"id": "c1", "text": "Detecta a ausencia de User Stories (US-XX) e PRD referenciado no SPEC_TECH", "type": "llm_judge"},
7
- {"id": "c2", "text": "PERGUNTA ao usuario sobre User Stories / PRD em vez de inventar ou ignorar", "type": "llm_judge"},
8
- {"id": "c3", "text": "NAO inventa User Stories ficticias (guardrail: nunca invente informacoes)", "type": "llm_judge"},
9
- {"id": "c4", "text": "Extrai corretamente o nome da feature como 'cache-de-cardapio' ou similar em kebab-case", "type": "llm_judge"},
10
- {"id": "c5", "text": "Segue o processo interativo (uma pergunta por vez, confirma nome antes de prosseguir)", "type": "llm_judge"}
11
- ]
12
- }
1
+ {
2
+ "eval_id": 3,
3
+ "eval_name": "spec-tech-sem-user-stories-explicitas",
4
+ "prompt": "Gere o TASK PLAN para esta feature. Segue o SPEC_TECH aprovado:\n\n---\n# SPEC_TECH — Cache de Cardapio v1\n\n## 1. Identificacao\n| Campo | Valor |\n|-------|-------|\n| **Feature/Projeto** | Cache de Cardapio em Memoria |\n| **Versao** | v1 |\n| **Data** | 2026-03-07 |\n\n## 2. Resumo Tecnico\nImplementar cache in-memory (sync.Map) para o cardapio de produtos, evitando queries repetidas ao SQLite. TTL configuravel via config.yaml.\n\n## 3. Definicoes Tecnicas\n\n### 3.1 Novo Pacote\n- `internal/infra/cache/` com interface `Cache[K, V]` e implementacao `InMemoryCache`\n- TTL configuravel via `cache.ttl_seconds` no config.yaml\n- Invalidacao manual via metodo `Invalidate(key)`\n\n### 3.2 Service\n- ProductService passa a consultar cache antes do repository\n- Cache miss: busca no repository e popula cache\n- Operacoes de escrita (Create, Update, Delete) invalidam a entrada correspondente\n\n### 3.3 Config\n- Novo campo `cache.ttl_seconds` (padrao: 300)\n\n### 3.4 DI\n- Registrar modulo cache no FX\n---",
5
+ "assertions": [
6
+ {"id": "c1", "text": "Detecta a ausencia de User Stories (US-XX) e PRD referenciado no SPEC_TECH", "type": "llm_judge"},
7
+ {"id": "c2", "text": "PERGUNTA ao usuario sobre User Stories / PRD em vez de inventar ou ignorar", "type": "llm_judge"},
8
+ {"id": "c3", "text": "NAO inventa User Stories ficticias (guardrail: nunca invente informacoes)", "type": "llm_judge"},
9
+ {"id": "c4", "text": "Extrai corretamente o nome da feature como 'cache-de-cardapio' ou similar em kebab-case", "type": "llm_judge"},
10
+ {"id": "c5", "text": "Segue o processo interativo (uma pergunta por vez, confirma nome antes de prosseguir)", "type": "llm_judge"}
11
+ ]
12
+ }
@@ -1,32 +1,32 @@
1
- {
2
- "eval_id": 3,
3
- "eval_name": "spec-tech-sem-user-stories-explicitas",
4
- "configuration": "with_skill",
5
- "expectations": [
6
- {
7
- "text": "Detecta a ausencia de User Stories (US-XX) e PRD referenciado no SPEC_TECH",
8
- "passed": true,
9
- "evidence": "Secao 3 explicita: 'O SPEC_TECH fornecido nao contem User Stories (US-XX) e nao referencia nenhum PRD.' Tambem identificou a dependencia critica do modulo de Produto inexistente."
10
- },
11
- {
12
- "text": "PERGUNTA ao usuario sobre User Stories / PRD em vez de inventar ou ignorar",
13
- "passed": true,
14
- "evidence": "Formulou pergunta clara com 2 opcoes: (1) usuario fornece PRD/US ou (2) seguir sem, com rastreabilidade N/A. Aguarda resposta antes de avancar."
15
- },
16
- {
17
- "text": "NAO inventa User Stories ficticias (guardrail: nunca invente informacoes)",
18
- "passed": true,
19
- "evidence": "Nenhuma User Story ficticia foi inventada. A resposta explicitamente identifica a ausencia e pergunta ao usuario."
20
- },
21
- {
22
- "text": "Extrai corretamente o nome da feature como 'cache-de-cardapio' ou similar em kebab-case",
23
- "passed": true,
24
- "evidence": "Extraiu 'Cache de Cardapio em Memoria' e normalizou para 'cache-de-cardapio' em kebab-case."
25
- },
26
- {
27
- "text": "Segue o processo interativo (uma pergunta por vez, confirma nome antes de prosseguir)",
28
- "passed": true,
29
- "evidence": "Seguiu sequencia: (1) extraiu nome, (2) perguntou sobre US/PRD ausentes, (3) perguntou sobre dependencia do modulo Produto. Indicou que confirmacao do nome e inicio das fases aguardam respostas anteriores."
30
- }
31
- ]
32
- }
1
+ {
2
+ "eval_id": 3,
3
+ "eval_name": "spec-tech-sem-user-stories-explicitas",
4
+ "configuration": "with_skill",
5
+ "expectations": [
6
+ {
7
+ "text": "Detecta a ausencia de User Stories (US-XX) e PRD referenciado no SPEC_TECH",
8
+ "passed": true,
9
+ "evidence": "Secao 3 explicita: 'O SPEC_TECH fornecido nao contem User Stories (US-XX) e nao referencia nenhum PRD.' Tambem identificou a dependencia critica do modulo de Produto inexistente."
10
+ },
11
+ {
12
+ "text": "PERGUNTA ao usuario sobre User Stories / PRD em vez de inventar ou ignorar",
13
+ "passed": true,
14
+ "evidence": "Formulou pergunta clara com 2 opcoes: (1) usuario fornece PRD/US ou (2) seguir sem, com rastreabilidade N/A. Aguarda resposta antes de avancar."
15
+ },
16
+ {
17
+ "text": "NAO inventa User Stories ficticias (guardrail: nunca invente informacoes)",
18
+ "passed": true,
19
+ "evidence": "Nenhuma User Story ficticia foi inventada. A resposta explicitamente identifica a ausencia e pergunta ao usuario."
20
+ },
21
+ {
22
+ "text": "Extrai corretamente o nome da feature como 'cache-de-cardapio' ou similar em kebab-case",
23
+ "passed": true,
24
+ "evidence": "Extraiu 'Cache de Cardapio em Memoria' e normalizou para 'cache-de-cardapio' em kebab-case."
25
+ },
26
+ {
27
+ "text": "Segue o processo interativo (uma pergunta por vez, confirma nome antes de prosseguir)",
28
+ "passed": true,
29
+ "evidence": "Seguiu sequencia: (1) extraiu nome, (2) perguntou sobre US/PRD ausentes, (3) perguntou sobre dependencia do modulo Produto. Indicou que confirmacao do nome e inicio das fases aguardam respostas anteriores."
30
+ }
31
+ ]
32
+ }
@@ -1,101 +1,101 @@
1
- # Resposta do Task Plan Expert — Interacao Inicial
2
-
3
- ## 1. Extração do Nome da Feature
4
-
5
- Identifiquei o nome da feature na secao "1. Identificacao" do SPEC_TECH:
6
-
7
- - **Feature/Projeto**: Cache de Cardapio em Memoria
8
- - **Nome normalizado (kebab-case)**: `cache-de-cardapio`
9
- - **Versao**: v1
10
- - **Diretorio de saida**: `docs/cache-de-cardapio/v1/`
11
-
12
- ---
13
-
14
- ## 2. Analise Obrigatoria do Projeto (Codebase)
15
-
16
- Antes de planejar qualquer task, explorei o codebase e identifiquei o seguinte:
17
-
18
- ### O que JA existe no projeto:
19
- | Elemento | Status | Localizacao |
20
- |----------|--------|-------------|
21
- | Estrutura Clean Architecture (handler/service/repository) | Existe | `internal/` |
22
- | Injecao de dependencia via Uber FX | Existe | `internal/infra/di/fx.go` |
23
- | Config via Viper + `config.yaml` | Existe | `internal/infra/config/config.go`, `configs/config.yaml` |
24
- | User module completo (handler, service, repo, tests) | Existe | `internal/handler/grpc/`, `internal/service/`, `internal/repository/` |
25
- | SQLC para queries tipadas | Existe | `internal/db/sqlc/` |
26
- | Migracao de usuarios | Existe | `internal/db/migrations/001_create_usuarios.sql` |
27
- | Testes com testify/mock (table-driven) | Existe | `internal/service/user_service_test.go` |
28
- | gRPC server com interceptors | Existe | `internal/infra/grpc/server.go` |
29
-
30
- ### O que NAO existe (precisa ser criado):
31
- | Elemento | Status |
32
- |----------|--------|
33
- | Modulo de Produto (Product) — service, repository, handler, proto, migration, queries | **NAO existe** |
34
- | Pacote de cache (`internal/infra/cache/`) | **NAO existe** |
35
- | Campo `cache.ttl_seconds` no config | **NAO existe** |
36
- | Tabela `produtos` no banco | **NAO existe** |
37
-
38
- ### Observacao Critica
39
-
40
- O SPEC_TECH fala em "cache de cardapio de produtos" e menciona que o `ProductService` passara a consultar o cache antes do repository. Porem, **nao existe nenhum modulo de Produto no projeto**. Nao ha proto, migration, queries SQLC, repository, service ou handler de produtos.
41
-
42
- Isso significa que o TASK PLAN precisara incluir tasks para criar o modulo de Produto completo OU o SPEC_TECH assume que esse modulo ja existe/sera criado em outra feature. Essa duvida sera direcionada ao usuario (veja secao 3).
43
-
44
- ---
45
-
46
- ## 3. Ponto de Atencao — User Stories e PRD Ausentes
47
-
48
- O SPEC_TECH fornecido **nao contem User Stories (US-XX)** e **nao referencia nenhum PRD**.
49
-
50
- No framework SDD, o TASK PLAN inclui uma **tabela de rastreabilidade obrigatoria** que mapeia User Stories do PRD para definicoes tecnicas do SPEC_TECH e para tasks correspondentes (Guardrail #8: "Rastreabilidade obrigatoria — toda User Story do PRD deve ter pelo menos uma task correspondente").
51
-
52
- **Pergunta que faria ao usuario:**
53
-
54
- > O SPEC_TECH fornecido nao contem User Stories (US-XX) e nao referencia um PRD. No framework SDD, a rastreabilidade User Stories -> Tasks e obrigatoria no TASK PLAN.
55
- >
56
- > Temos duas opcoes:
57
- >
58
- > 1. **Voce fornece o PRD ou as User Stories** relacionadas a esta feature, e eu incluo a rastreabilidade completa no TASK PLAN.
59
- > 2. **Seguimos sem PRD/User Stories**, e a secao de rastreabilidade do TASK PLAN sera preenchida com "N/A — SPEC_TECH fornecido sem PRD/User Stories associadas". Neste caso, a rastreabilidade sera feita apenas entre definicoes tecnicas do SPEC e tasks.
60
- >
61
- > Qual opcao prefere?
62
-
63
- ---
64
-
65
- ## 4. Ponto de Atencao — Dependencia do Modulo de Produto
66
-
67
- Alem da questao de User Stories, identifiquei uma dependencia critica:
68
-
69
- **Pergunta que faria ao usuario (apos resposta da pergunta anterior):**
70
-
71
- > O SPEC_TECH menciona que o `ProductService` passara a consultar o cache antes do repository, e que operacoes de escrita (Create, Update, Delete) invalidarao entradas do cache. Porem, **nao existe nenhum modulo de Produto no codebase atual** — nao ha proto, migration, queries, repository, service ou handler de produtos.
72
- >
73
- > Duas opcoes:
74
- >
75
- > 1. **O escopo deste TASK PLAN inclui a criacao do modulo de Produto completo** (migration, queries SQLC, repository, service, handler gRPC, proto) alem do cache. Isso aumenta significativamente o numero de tasks.
76
- > 2. **O modulo de Produto sera criado em outra feature/SPEC_TECH**, e este TASK PLAN assume que ele ja existira quando as tasks forem executadas. Neste caso, incluo apenas as tasks de cache + integracao com o ProductService.
77
- >
78
- > Qual abordagem seguir?
79
-
80
- ---
81
-
82
- ## 5. Confirmacao do Nome e Inicio
83
-
84
- Apos as respostas acima, a proxima interacao seria:
85
-
86
- > Obrigado! Vamos iniciar o TASK PLAN para **Cache de Cardapio em Memoria (v1)**. Podemos iniciar a definicao macro das fases?
87
-
88
- ---
89
-
90
- ## Resumo da Interacao Inicial
91
-
92
- | Etapa | Status |
93
- |-------|--------|
94
- | Leitura do SPEC_TECH | Concluido |
95
- | Extracao do nome da feature | Concluido: `cache-de-cardapio` |
96
- | Analise do codebase | Concluido |
97
- | Identificacao de User Stories/PRD ausentes | Concluido — pergunta formulada |
98
- | Identificacao de dependencia critica (modulo Produto) | Concluido — pergunta formulada |
99
- | Confirmacao do nome e inicio das fases | Aguardando respostas anteriores |
100
-
101
- **Proximo passo**: Aguardar respostas do usuario para as duas perguntas acima antes de avancar para a definicao macro das fases.
1
+ # Resposta do Task Plan Expert — Interacao Inicial
2
+
3
+ ## 1. Extração do Nome da Feature
4
+
5
+ Identifiquei o nome da feature na secao "1. Identificacao" do SPEC_TECH:
6
+
7
+ - **Feature/Projeto**: Cache de Cardapio em Memoria
8
+ - **Nome normalizado (kebab-case)**: `cache-de-cardapio`
9
+ - **Versao**: v1
10
+ - **Diretorio de saida**: `docs/cache-de-cardapio/v1/`
11
+
12
+ ---
13
+
14
+ ## 2. Analise Obrigatoria do Projeto (Codebase)
15
+
16
+ Antes de planejar qualquer task, explorei o codebase e identifiquei o seguinte:
17
+
18
+ ### O que JA existe no projeto:
19
+ | Elemento | Status | Localizacao |
20
+ |----------|--------|-------------|
21
+ | Estrutura Clean Architecture (handler/service/repository) | Existe | `internal/` |
22
+ | Injecao de dependencia via Uber FX | Existe | `internal/infra/di/fx.go` |
23
+ | Config via Viper + `config.yaml` | Existe | `internal/infra/config/config.go`, `configs/config.yaml` |
24
+ | User module completo (handler, service, repo, tests) | Existe | `internal/handler/grpc/`, `internal/service/`, `internal/repository/` |
25
+ | SQLC para queries tipadas | Existe | `internal/db/sqlc/` |
26
+ | Migracao de usuarios | Existe | `internal/db/migrations/001_create_usuarios.sql` |
27
+ | Testes com testify/mock (table-driven) | Existe | `internal/service/user_service_test.go` |
28
+ | gRPC server com interceptors | Existe | `internal/infra/grpc/server.go` |
29
+
30
+ ### O que NAO existe (precisa ser criado):
31
+ | Elemento | Status |
32
+ |----------|--------|
33
+ | Modulo de Produto (Product) — service, repository, handler, proto, migration, queries | **NAO existe** |
34
+ | Pacote de cache (`internal/infra/cache/`) | **NAO existe** |
35
+ | Campo `cache.ttl_seconds` no config | **NAO existe** |
36
+ | Tabela `produtos` no banco | **NAO existe** |
37
+
38
+ ### Observacao Critica
39
+
40
+ O SPEC_TECH fala em "cache de cardapio de produtos" e menciona que o `ProductService` passara a consultar o cache antes do repository. Porem, **nao existe nenhum modulo de Produto no projeto**. Nao ha proto, migration, queries SQLC, repository, service ou handler de produtos.
41
+
42
+ Isso significa que o TASK PLAN precisara incluir tasks para criar o modulo de Produto completo OU o SPEC_TECH assume que esse modulo ja existe/sera criado em outra feature. Essa duvida sera direcionada ao usuario (veja secao 3).
43
+
44
+ ---
45
+
46
+ ## 3. Ponto de Atencao — User Stories e PRD Ausentes
47
+
48
+ O SPEC_TECH fornecido **nao contem User Stories (US-XX)** e **nao referencia nenhum PRD**.
49
+
50
+ No framework SDD, o TASK PLAN inclui uma **tabela de rastreabilidade obrigatoria** que mapeia User Stories do PRD para definicoes tecnicas do SPEC_TECH e para tasks correspondentes (Guardrail #8: "Rastreabilidade obrigatoria — toda User Story do PRD deve ter pelo menos uma task correspondente").
51
+
52
+ **Pergunta que faria ao usuario:**
53
+
54
+ > O SPEC_TECH fornecido nao contem User Stories (US-XX) e nao referencia um PRD. No framework SDD, a rastreabilidade User Stories -> Tasks e obrigatoria no TASK PLAN.
55
+ >
56
+ > Temos duas opcoes:
57
+ >
58
+ > 1. **Voce fornece o PRD ou as User Stories** relacionadas a esta feature, e eu incluo a rastreabilidade completa no TASK PLAN.
59
+ > 2. **Seguimos sem PRD/User Stories**, e a secao de rastreabilidade do TASK PLAN sera preenchida com "N/A — SPEC_TECH fornecido sem PRD/User Stories associadas". Neste caso, a rastreabilidade sera feita apenas entre definicoes tecnicas do SPEC e tasks.
60
+ >
61
+ > Qual opcao prefere?
62
+
63
+ ---
64
+
65
+ ## 4. Ponto de Atencao — Dependencia do Modulo de Produto
66
+
67
+ Alem da questao de User Stories, identifiquei uma dependencia critica:
68
+
69
+ **Pergunta que faria ao usuario (apos resposta da pergunta anterior):**
70
+
71
+ > O SPEC_TECH menciona que o `ProductService` passara a consultar o cache antes do repository, e que operacoes de escrita (Create, Update, Delete) invalidarao entradas do cache. Porem, **nao existe nenhum modulo de Produto no codebase atual** — nao ha proto, migration, queries, repository, service ou handler de produtos.
72
+ >
73
+ > Duas opcoes:
74
+ >
75
+ > 1. **O escopo deste TASK PLAN inclui a criacao do modulo de Produto completo** (migration, queries SQLC, repository, service, handler gRPC, proto) alem do cache. Isso aumenta significativamente o numero de tasks.
76
+ > 2. **O modulo de Produto sera criado em outra feature/SPEC_TECH**, e este TASK PLAN assume que ele ja existira quando as tasks forem executadas. Neste caso, incluo apenas as tasks de cache + integracao com o ProductService.
77
+ >
78
+ > Qual abordagem seguir?
79
+
80
+ ---
81
+
82
+ ## 5. Confirmacao do Nome e Inicio
83
+
84
+ Apos as respostas acima, a proxima interacao seria:
85
+
86
+ > Obrigado! Vamos iniciar o TASK PLAN para **Cache de Cardapio em Memoria (v1)**. Podemos iniciar a definicao macro das fases?
87
+
88
+ ---
89
+
90
+ ## Resumo da Interacao Inicial
91
+
92
+ | Etapa | Status |
93
+ |-------|--------|
94
+ | Leitura do SPEC_TECH | Concluido |
95
+ | Extracao do nome da feature | Concluido: `cache-de-cardapio` |
96
+ | Analise do codebase | Concluido |
97
+ | Identificacao de User Stories/PRD ausentes | Concluido — pergunta formulada |
98
+ | Identificacao de dependencia critica (modulo Produto) | Concluido — pergunta formulada |
99
+ | Confirmacao do nome e inicio das fases | Aguardando respostas anteriores |
100
+
101
+ **Proximo passo**: Aguardar respostas do usuario para as duas perguntas acima antes de avancar para a definicao macro das fases.