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,84 +1,84 @@
1
- # Transcript — Task Plan Generation (without_skill)
2
-
3
- ## Ferramentas Utilizadas
4
-
5
- ### 1. Bash — Listar migracoes existentes
6
- ```
7
- ls "H:/repos/flutter_experience/04_2026/cb_vakinhaburger_2025/vakinha-api-review/internal/db/migrations/"
8
- ```
9
- **Resultado:** `001_create_usuarios.sql`, `002_add_endereco_usuarios.sql`
10
-
11
- ### 2. Bash — Listar queries SQLC
12
- ```
13
- ls "H:/repos/flutter_experience/04_2026/cb_vakinhaburger_2025/vakinha-api-review/internal/db/queries/"
14
- ```
15
- **Resultado:** Diretorio nao existe nesse caminho (queries estao em `internal/db/sqlc/queries/`)
16
-
17
- ### 3. Bash — Listar arquivos repository, service, handler, proto
18
- ```
19
- ls para cada diretorio
20
- ```
21
- **Resultado (parcial, outros cancelados por erro no queries):**
22
- - `api/proto/v1/`: `user.proto`
23
- - `internal/repository/`: `user_repository.go`, `user_repository_integration_test.go`
24
- - `internal/service/`: `user_service.go`, `user_service_test.go`
25
- - `internal/handler/grpc/`: `fx.go`, `user_handler.go`, `user_handler_test.go`
26
-
27
- ### 4. Bash — Encontrar todos os arquivos Go e SQL no internal
28
- ```
29
- find "H:/repos/.../internal" -type f -name "*.go" -o -name "*.sql" | head -60
30
- ```
31
- **Resultado:** Lista completa de 24 arquivos no projeto.
32
-
33
- ### 5. Read — Migracao 001
34
- **Arquivo:** `internal/db/migrations/001_create_usuarios.sql`
35
- **Conteudo:** CREATE TABLE usuarios com colunas id, nome, email, senha_hash, data_criacao, data_atualizacao.
36
-
37
- ### 6. Read — Migracao 002
38
- **Arquivo:** `internal/db/migrations/002_add_endereco_usuarios.sql`
39
- **Conteudo:** `ALTER TABLE usuarios ADD COLUMN endereco TEXT NOT NULL DEFAULT '';`
40
-
41
- ### 7. Read — Queries SQLC
42
- **Arquivo:** `internal/db/sqlc/queries/user.sql`
43
- **Conteudo:** 4 queries: CreateUser, GetUserByID, GetUserByEmail, UpdateUser. Todas com colunas em portugues.
44
-
45
- ### 8. Read — Repository
46
- **Arquivo:** `internal/repository/user_repository.go`
47
- **Conteudo:** Struct User (ID, Name, Email, PasswordHash, Address, CreatedAt, UpdatedAt), interface UserRepository, implementacao sqlcUserRepository, funcao toUser para mapeamento.
48
-
49
- ### 9. Read — Service
50
- **Arquivo:** `internal/service/user_service.go`
51
- **Conteudo:** CreateUserInput, UpdateUserInput (com campos opcionais via ponteiro), UserService interface, implementacao com validacoes, login, JWT, etc.
52
-
53
- ### 10. Read — Handler gRPC
54
- **Arquivo:** `internal/handler/grpc/user_handler.go`
55
- **Conteudo:** UserHandler com CreateUser, Login, GetUserLogged, UpdateUser. Funcoes auxiliares domainUserToProto e mapServiceError.
56
-
57
- ### 11. Read — Proto
58
- **Arquivo:** `api/proto/v1/user.proto`
59
- **Conteudo:** Mensagens User, CreateUserRequest/Response, LoginRequest/Response, GetUserLoggedRequest/Response, UpdateUserRequest/Response, servico UserService.
60
-
61
- ### 12. Read — Service Tests
62
- **Arquivo:** `internal/service/user_service_test.go`
63
- **Conteudo:** MockUserRepository, testes table-driven e individuais para CreateUser, Login, GetUserLogged, UpdateUser. Padrao testify/mock.
64
-
65
- ### 13. Read — Handler Tests
66
- **Arquivo:** `internal/handler/grpc/user_handler_test.go`
67
- **Conteudo:** MockUserService, testes para todos os handlers, TestMapServiceError_AllErrors, TestDomainUserToProto.
68
-
69
- ### 14. Glob — Encontrar sqlc.yaml
70
- ```
71
- pattern: **/sqlc.yaml
72
- ```
73
- **Resultado:** `internal/db/sqlc/sqlc.yaml`
74
-
75
- ### 15. Bash — Criar diretorio de output
76
- ```
77
- mkdir -p ".../without_skill/outputs"
78
- ```
79
-
80
- ### 16. Write — response.md
81
- Gerado o Task Plan completo com 7 tasks.
82
-
83
- ### 17. Write — transcript.md
84
- Este arquivo.
1
+ # Transcript — Task Plan Generation (without_skill)
2
+
3
+ ## Ferramentas Utilizadas
4
+
5
+ ### 1. Bash — Listar migracoes existentes
6
+ ```
7
+ ls "H:/repos/flutter_experience/04_2026/cb_vakinhaburger_2025/vakinha-api-review/internal/db/migrations/"
8
+ ```
9
+ **Resultado:** `001_create_usuarios.sql`, `002_add_endereco_usuarios.sql`
10
+
11
+ ### 2. Bash — Listar queries SQLC
12
+ ```
13
+ ls "H:/repos/flutter_experience/04_2026/cb_vakinhaburger_2025/vakinha-api-review/internal/db/queries/"
14
+ ```
15
+ **Resultado:** Diretorio nao existe nesse caminho (queries estao em `internal/db/sqlc/queries/`)
16
+
17
+ ### 3. Bash — Listar arquivos repository, service, handler, proto
18
+ ```
19
+ ls para cada diretorio
20
+ ```
21
+ **Resultado (parcial, outros cancelados por erro no queries):**
22
+ - `api/proto/v1/`: `user.proto`
23
+ - `internal/repository/`: `user_repository.go`, `user_repository_integration_test.go`
24
+ - `internal/service/`: `user_service.go`, `user_service_test.go`
25
+ - `internal/handler/grpc/`: `fx.go`, `user_handler.go`, `user_handler_test.go`
26
+
27
+ ### 4. Bash — Encontrar todos os arquivos Go e SQL no internal
28
+ ```
29
+ find "H:/repos/.../internal" -type f -name "*.go" -o -name "*.sql" | head -60
30
+ ```
31
+ **Resultado:** Lista completa de 24 arquivos no projeto.
32
+
33
+ ### 5. Read — Migracao 001
34
+ **Arquivo:** `internal/db/migrations/001_create_usuarios.sql`
35
+ **Conteudo:** CREATE TABLE usuarios com colunas id, nome, email, senha_hash, data_criacao, data_atualizacao.
36
+
37
+ ### 6. Read — Migracao 002
38
+ **Arquivo:** `internal/db/migrations/002_add_endereco_usuarios.sql`
39
+ **Conteudo:** `ALTER TABLE usuarios ADD COLUMN endereco TEXT NOT NULL DEFAULT '';`
40
+
41
+ ### 7. Read — Queries SQLC
42
+ **Arquivo:** `internal/db/sqlc/queries/user.sql`
43
+ **Conteudo:** 4 queries: CreateUser, GetUserByID, GetUserByEmail, UpdateUser. Todas com colunas em portugues.
44
+
45
+ ### 8. Read — Repository
46
+ **Arquivo:** `internal/repository/user_repository.go`
47
+ **Conteudo:** Struct User (ID, Name, Email, PasswordHash, Address, CreatedAt, UpdatedAt), interface UserRepository, implementacao sqlcUserRepository, funcao toUser para mapeamento.
48
+
49
+ ### 9. Read — Service
50
+ **Arquivo:** `internal/service/user_service.go`
51
+ **Conteudo:** CreateUserInput, UpdateUserInput (com campos opcionais via ponteiro), UserService interface, implementacao com validacoes, login, JWT, etc.
52
+
53
+ ### 10. Read — Handler gRPC
54
+ **Arquivo:** `internal/handler/grpc/user_handler.go`
55
+ **Conteudo:** UserHandler com CreateUser, Login, GetUserLogged, UpdateUser. Funcoes auxiliares domainUserToProto e mapServiceError.
56
+
57
+ ### 11. Read — Proto
58
+ **Arquivo:** `api/proto/v1/user.proto`
59
+ **Conteudo:** Mensagens User, CreateUserRequest/Response, LoginRequest/Response, GetUserLoggedRequest/Response, UpdateUserRequest/Response, servico UserService.
60
+
61
+ ### 12. Read — Service Tests
62
+ **Arquivo:** `internal/service/user_service_test.go`
63
+ **Conteudo:** MockUserRepository, testes table-driven e individuais para CreateUser, Login, GetUserLogged, UpdateUser. Padrao testify/mock.
64
+
65
+ ### 13. Read — Handler Tests
66
+ **Arquivo:** `internal/handler/grpc/user_handler_test.go`
67
+ **Conteudo:** MockUserService, testes para todos os handlers, TestMapServiceError_AllErrors, TestDomainUserToProto.
68
+
69
+ ### 14. Glob — Encontrar sqlc.yaml
70
+ ```
71
+ pattern: **/sqlc.yaml
72
+ ```
73
+ **Resultado:** `internal/db/sqlc/sqlc.yaml`
74
+
75
+ ### 15. Bash — Criar diretorio de output
76
+ ```
77
+ mkdir -p ".../without_skill/outputs"
78
+ ```
79
+
80
+ ### 16. Write — response.md
81
+ Gerado o Task Plan completo com 7 tasks.
82
+
83
+ ### 17. Write — transcript.md
84
+ Este arquivo.
@@ -1 +1 @@
1
- {"total_tokens": 61206, "duration_ms": 143285, "total_duration_seconds": 143.3}
1
+ {"total_tokens": 61206, "duration_ms": 143285, "total_duration_seconds": 143.3}
@@ -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": "Explicitamente diz 'O SPEC_TECH fornecido nao contem User Stories (US-XX) e nao referencia nenhum PRD' na secao 'Problema Identificado'."
10
- },
11
- {
12
- "text": "PERGUNTA ao usuario sobre User Stories / PRD em vez de inventar ou ignorar",
13
- "passed": true,
14
- "evidence": "Faz pergunta com 3 opcoes (A: fornecer PRD, B: criar sem rastreabilidade, C: definir US simplificadas) e aguarda resposta."
15
- },
16
- {
17
- "text": "NAO inventa User Stories ficticias (guardrail: nunca invente informacoes)",
18
- "passed": true,
19
- "evidence": "Nenhuma User Story ficticia foi criada. Apenas identificou a ausencia e perguntou ao usuario como proceder."
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-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": "Apresentou o nome extraido e fez UMA pergunta (sobre US/PRD + ProductService) aguardando resposta antes de prosseguir."
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": "Explicitamente diz 'O SPEC_TECH fornecido nao contem User Stories (US-XX) e nao referencia nenhum PRD' na secao 'Problema Identificado'."
10
+ },
11
+ {
12
+ "text": "PERGUNTA ao usuario sobre User Stories / PRD em vez de inventar ou ignorar",
13
+ "passed": true,
14
+ "evidence": "Faz pergunta com 3 opcoes (A: fornecer PRD, B: criar sem rastreabilidade, C: definir US simplificadas) e aguarda resposta."
15
+ },
16
+ {
17
+ "text": "NAO inventa User Stories ficticias (guardrail: nunca invente informacoes)",
18
+ "passed": true,
19
+ "evidence": "Nenhuma User Story ficticia foi criada. Apenas identificou a ausencia e perguntou ao usuario como proceder."
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-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": "Apresentou o nome extraido e fez UMA pergunta (sobre US/PRD + ProductService) aguardando resposta antes de prosseguir."
30
+ }
31
+ ]
32
+ }
@@ -1,70 +1,70 @@
1
- # Resposta do sdd-task-plan-expert
2
-
3
- ## Nome da Feature Extraido
4
-
5
- Da secao "1. Identificacao" do SPEC_TECH, campo "Feature/Projeto": **Cache de Cardapio em Memoria**
6
-
7
- Nome em kebab-case para diretorio: `cache-cardapio`
8
-
9
- ---
10
-
11
- ## Analise Obrigatoria do Projeto (Resultados)
12
-
13
- ### Passo 1: Rules lidas
14
-
15
- Li todos os arquivos de regras do projeto:
16
- - `CLAUDE.md` (raiz)
17
- - `.claude/rules/code-conventions.md` — codigo em ingles, banco/logs/erros em portugues
18
- - `.claude/rules/database.md` — SQLite WAL, migracoes imutaveis, nomenclatura em portugues
19
- - `.claude/rules/fx-di.md` — Uber FX, modulos exportados via `var Module = fx.Module(...)`
20
- - `.claude/rules/grpc.md` — handlers, mapeamento de erros, registro no server.go
21
- - `.claude/rules/protobuf.md` — Buf, convencao de go_package
22
- - `.claude/rules/repository.md` — interface + implementacao nao exportada, construtor recebe `*sql.DB`, mapeamento portugues->ingles
23
- - `.claude/rules/service.md` — interface + implementacao nao exportada, erros exportados em portugues, logging com zap
24
- - `.claude/rules/sqlc.md` — queries em `internal/db/queries/`, codigo gerado em `internal/db/sqlc/` (nao editar)
25
-
26
- ### Passo 2: Codebase explorado
27
-
28
- **Descobertas criticas para o planejamento:**
29
-
30
- 1. **NAO existe ProductService, ProductRepository, nem nenhum codigo de produto/cardapio no projeto.** O unico modulo implementado e o de User (service, repository, handler, migrations, queries).
31
-
32
- 2. **NAO existe `internal/infra/cache/`** — o pacote de cache precisa ser criado do zero.
33
-
34
- 3. **NAO existe campo `cache` no `configs/config.yaml`** nem na struct `Config` (`internal/infra/config/config.go`). Atualmente a struct tem apenas: `GRPCHost`, `GRPCPort`, `DatabasePath`, `JWTSecret`, `JWTExpirationHours`, `LogLevel`.
35
-
36
- 4. **Padroes estabelecidos identificados:**
37
- - FX modules: cada pacote exporta `var Module = fx.Module("nome", ...)`
38
- - DI composition: `internal/infra/di/fx.go` lista todos os modulos
39
- - Service pattern: interface publica + implementacao nao exportada + construtor `NewXxxService(repo, cfg, logger)`
40
- - Repository pattern: interface publica + implementacao nao exportada + construtor `NewXxxRepository(db *sql.DB)`
41
- - Testes: table-driven com testify/mock, mock definido no mesmo arquivo de teste
42
- - Config: Viper com env prefix `APP_`, override via variaveis de ambiente
43
-
44
- 5. **Tabelas existentes no banco:** `usuarios` (migracoes 001, 002). Nenhuma tabela `produtos`.
45
-
46
- ---
47
-
48
- ## Problema Identificado: SPEC_TECH sem User Stories e sem PRD
49
-
50
- Antes de prosseguir, preciso levantar uma questao importante.
51
-
52
- O SPEC_TECH fornecido **nao contem User Stories (US-XX)** e **nao referencia nenhum PRD**. No framework SDD, o TASK PLAN exige uma tabela de rastreabilidade mapeando User Stories do PRD para Tasks. Alem disso, o guardrail #8 do skill diz: "Rastreabilidade obrigatoria — toda User Story do PRD deve ter pelo menos uma task correspondente."
53
-
54
- Alem disso, o SPEC_TECH menciona que "ProductService passa a consultar cache antes do repository", mas **nao existe nenhum ProductService no projeto atual**. O cache seria aplicado sobre um servico que ainda nao foi implementado.
55
-
56
- ### Pergunta que eu faria ao usuario:
57
-
58
- > **Pergunta:** Identifiquei duas questoes no SPEC_TECH que precisam de esclarecimento antes de iniciarmos o TASK PLAN:
59
- >
60
- > 1. **Ausencia de User Stories e PRD:** O SPEC_TECH nao contem User Stories (US-XX) nem referencia um PRD. O framework SDD exige rastreabilidade US -> Tasks no TASK PLAN. Como deseja proceder?
61
- > - **Opcao A:** Voce fornece o PRD com as User Stories para que eu faca a rastreabilidade completa.
62
- > - **Opcao B:** Criamos o TASK PLAN sem a tabela de rastreabilidade US -> Tasks, marcando a secao como "N/A — SPEC_TECH sem PRD/User Stories associados". As tasks serao derivadas diretamente das Definicoes Tecnicas do SPEC_TECH.
63
- > - **Opcao C:** Definimos User Stories simplificadas agora, antes de iniciar o planejamento.
64
- >
65
- > 2. **ProductService inexistente:** O SPEC_TECH assume que existe um `ProductService` que "passa a consultar cache antes do repository", mas nao existe nenhum codigo de produto no projeto (nem service, nem repository, nem migration, nem queries). O escopo deste TASK PLAN deve:
66
- > - **Opcao A:** Incluir a criacao completa do modulo de produtos (migration, queries, repository, service, handler, proto) ALEM do cache — tornando o TASK PLAN significativamente maior.
67
- > - **Opcao B:** Limitar-se apenas a infraestrutura de cache generica (`Cache[K, V]`, config, modulo FX), sem integrar com ProductService, deixando a integracao para quando o modulo de produtos existir.
68
- > - **Opcao C:** Voce tem outro SPEC_TECH ou feature de produtos ja planejada que deve ser executada antes?
69
- >
70
- > Aguardo sua resposta para prosseguir.
1
+ # Resposta do sdd-task-plan-expert
2
+
3
+ ## Nome da Feature Extraido
4
+
5
+ Da secao "1. Identificacao" do SPEC_TECH, campo "Feature/Projeto": **Cache de Cardapio em Memoria**
6
+
7
+ Nome em kebab-case para diretorio: `cache-cardapio`
8
+
9
+ ---
10
+
11
+ ## Analise Obrigatoria do Projeto (Resultados)
12
+
13
+ ### Passo 1: Rules lidas
14
+
15
+ Li todos os arquivos de regras do projeto:
16
+ - `CLAUDE.md` (raiz)
17
+ - `.claude/rules/code-conventions.md` — codigo em ingles, banco/logs/erros em portugues
18
+ - `.claude/rules/database.md` — SQLite WAL, migracoes imutaveis, nomenclatura em portugues
19
+ - `.claude/rules/fx-di.md` — Uber FX, modulos exportados via `var Module = fx.Module(...)`
20
+ - `.claude/rules/grpc.md` — handlers, mapeamento de erros, registro no server.go
21
+ - `.claude/rules/protobuf.md` — Buf, convencao de go_package
22
+ - `.claude/rules/repository.md` — interface + implementacao nao exportada, construtor recebe `*sql.DB`, mapeamento portugues->ingles
23
+ - `.claude/rules/service.md` — interface + implementacao nao exportada, erros exportados em portugues, logging com zap
24
+ - `.claude/rules/sqlc.md` — queries em `internal/db/queries/`, codigo gerado em `internal/db/sqlc/` (nao editar)
25
+
26
+ ### Passo 2: Codebase explorado
27
+
28
+ **Descobertas criticas para o planejamento:**
29
+
30
+ 1. **NAO existe ProductService, ProductRepository, nem nenhum codigo de produto/cardapio no projeto.** O unico modulo implementado e o de User (service, repository, handler, migrations, queries).
31
+
32
+ 2. **NAO existe `internal/infra/cache/`** — o pacote de cache precisa ser criado do zero.
33
+
34
+ 3. **NAO existe campo `cache` no `configs/config.yaml`** nem na struct `Config` (`internal/infra/config/config.go`). Atualmente a struct tem apenas: `GRPCHost`, `GRPCPort`, `DatabasePath`, `JWTSecret`, `JWTExpirationHours`, `LogLevel`.
35
+
36
+ 4. **Padroes estabelecidos identificados:**
37
+ - FX modules: cada pacote exporta `var Module = fx.Module("nome", ...)`
38
+ - DI composition: `internal/infra/di/fx.go` lista todos os modulos
39
+ - Service pattern: interface publica + implementacao nao exportada + construtor `NewXxxService(repo, cfg, logger)`
40
+ - Repository pattern: interface publica + implementacao nao exportada + construtor `NewXxxRepository(db *sql.DB)`
41
+ - Testes: table-driven com testify/mock, mock definido no mesmo arquivo de teste
42
+ - Config: Viper com env prefix `APP_`, override via variaveis de ambiente
43
+
44
+ 5. **Tabelas existentes no banco:** `usuarios` (migracoes 001, 002). Nenhuma tabela `produtos`.
45
+
46
+ ---
47
+
48
+ ## Problema Identificado: SPEC_TECH sem User Stories e sem PRD
49
+
50
+ Antes de prosseguir, preciso levantar uma questao importante.
51
+
52
+ O SPEC_TECH fornecido **nao contem User Stories (US-XX)** e **nao referencia nenhum PRD**. No framework SDD, o TASK PLAN exige uma tabela de rastreabilidade mapeando User Stories do PRD para Tasks. Alem disso, o guardrail #8 do skill diz: "Rastreabilidade obrigatoria — toda User Story do PRD deve ter pelo menos uma task correspondente."
53
+
54
+ Alem disso, o SPEC_TECH menciona que "ProductService passa a consultar cache antes do repository", mas **nao existe nenhum ProductService no projeto atual**. O cache seria aplicado sobre um servico que ainda nao foi implementado.
55
+
56
+ ### Pergunta que eu faria ao usuario:
57
+
58
+ > **Pergunta:** Identifiquei duas questoes no SPEC_TECH que precisam de esclarecimento antes de iniciarmos o TASK PLAN:
59
+ >
60
+ > 1. **Ausencia de User Stories e PRD:** O SPEC_TECH nao contem User Stories (US-XX) nem referencia um PRD. O framework SDD exige rastreabilidade US -> Tasks no TASK PLAN. Como deseja proceder?
61
+ > - **Opcao A:** Voce fornece o PRD com as User Stories para que eu faca a rastreabilidade completa.
62
+ > - **Opcao B:** Criamos o TASK PLAN sem a tabela de rastreabilidade US -> Tasks, marcando a secao como "N/A — SPEC_TECH sem PRD/User Stories associados". As tasks serao derivadas diretamente das Definicoes Tecnicas do SPEC_TECH.
63
+ > - **Opcao C:** Definimos User Stories simplificadas agora, antes de iniciar o planejamento.
64
+ >
65
+ > 2. **ProductService inexistente:** O SPEC_TECH assume que existe um `ProductService` que "passa a consultar cache antes do repository", mas nao existe nenhum codigo de produto no projeto (nem service, nem repository, nem migration, nem queries). O escopo deste TASK PLAN deve:
66
+ > - **Opcao A:** Incluir a criacao completa do modulo de produtos (migration, queries, repository, service, handler, proto) ALEM do cache — tornando o TASK PLAN significativamente maior.
67
+ > - **Opcao B:** Limitar-se apenas a infraestrutura de cache generica (`Cache[K, V]`, config, modulo FX), sem integrar com ProductService, deixando a integracao para quando o modulo de produtos existir.
68
+ > - **Opcao C:** Voce tem outro SPEC_TECH ou feature de produtos ja planejada que deve ser executada antes?
69
+ >
70
+ > Aguardo sua resposta para prosseguir.