adi_dev_workflow 1.1.0 → 1.2.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.
- package/bin/index.js +8 -8
- package/frameworks/agents/qa-staff-engineer.md +311 -0
- package/frameworks/agents/qa-validation-expert.md +458 -0
- package/frameworks/agents/tech-review-conformance.md +200 -0
- package/frameworks/commands/generate-prompt.md +33 -100
- package/frameworks/commands/ministack/README.md +2 -0
- package/frameworks/commands/ministack/code-review.md +2 -0
- package/frameworks/commands/ministack/generate-intent.md +2 -0
- package/frameworks/commands/ministack/generate-scope.md +2 -0
- package/frameworks/commands/ministack/generate-tasks.md +2 -0
- package/frameworks/commands/ministack/generate-tech-direction.md +2 -0
- package/frameworks/commands/ministack/run-ministack-tasks.md +3 -0
- package/frameworks/commands/ministack/run-ministack-withlinear.md +2 -0
- package/frameworks/commands/ministack/status.md +2 -0
- package/frameworks/commands/sdd/code-review.md +2 -0
- package/frameworks/commands/sdd/generate-prd.md +2 -0
- package/frameworks/commands/sdd/generate-task-plan.md +2 -0
- package/frameworks/commands/sdd/generate-tech-direction.md +2 -0
- package/frameworks/commands/sdd/generate-tech-spec.md +2 -0
- package/frameworks/commands/sdd/generate-tests.md +2 -0
- package/frameworks/commands/sdd/run_tasks.md +3 -0
- package/frameworks/commands/sdd/run_tasks_withlinear.md +2 -0
- package/frameworks/commands/sdd/status.md +2 -0
- package/frameworks/commands/sdd/validate-sdd.md +2 -0
- package/frameworks/commands/sync-tasks-to-linear.md +2 -0
- package/frameworks/commands/taskcard/generate-taskcard.md +106 -33
- package/frameworks/commands/taskcard/run-taskcard.md +2 -0
- package/frameworks/config/ai-framework-config.yaml +112 -0
- package/frameworks/skills/ministack-intent-expert/SKILL.md +15 -1
- package/frameworks/skills/ministack-scope-expert/SKILL.md +17 -1
- package/frameworks/skills/sdd-prd-expert/SKILL.md +14 -0
- package/frameworks/skills/sdd-task-plan-expert/SKILL.md +14 -0
- package/frameworks/skills/taskcard-expert/SKILL.md +30 -11
- package/frameworks/templates/prompt_template.md +207 -0
- package/package.json +28 -28
- package/src/cli.js +121 -121
- package/src/installer.js +155 -136
- package/src/transformer.js +86 -86
- package/frameworks/skills/ministack-tasks-expert/SKILL.md +0 -192
- package/frameworks/skills/ministack-tasks-expert/templates/task_plan_template.md +0 -78
- package/frameworks/skills/ministack-tasks-expert/templates/task_template.md +0 -103
- package/frameworks/skills/ministack-tech-direction-expert/SKILL.md +0 -218
- package/frameworks/skills/ministack-tech-direction-expert/evals/evals.json +0 -1
- package/frameworks/skills/ministack-tech-direction-expert/templates/tech_direction-template.md +0 -17
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/benchmark.json +0 -99
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/benchmark.md +0 -64
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/eval_metadata.json +0 -12
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/grading.json +0 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/outputs/response.md +0 -134
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/outputs/transcript.md +0 -68
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/timing.json +0 -5
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/without_skill/grading.json +0 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/without_skill/outputs/response.md +0 -525
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/without_skill/outputs/transcript.md +0 -30
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/without_skill/timing.json +0 -5
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/eval_metadata.json +0 -12
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/with_skill/grading.json +0 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/with_skill/outputs/response.md +0 -1126
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/with_skill/outputs/transcript.md +0 -131
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/with_skill/timing.json +0 -5
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/without_skill/grading.json +0 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/without_skill/outputs/response.md +0 -452
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/without_skill/outputs/transcript.md +0 -78
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/without_skill/timing.json +0 -5
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/eval_metadata.json +0 -12
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/with_skill/grading.json +0 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/with_skill/outputs/response.md +0 -101
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/with_skill/outputs/transcript.md +0 -133
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/with_skill/timing.json +0 -5
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/without_skill/grading.json +0 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/without_skill/outputs/response.md +0 -248
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/without_skill/outputs/transcript.md +0 -49
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/without_skill/timing.json +0 -5
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/review.html +0 -1325
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/benchmark.json +0 -94
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/benchmark.md +0 -67
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/eval_metadata.json +0 -12
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/with_skill/grading.json +0 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/with_skill/outputs/response.md +0 -117
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/with_skill/outputs/transcript.md +0 -91
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/with_skill/timing.json +0 -1
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/without_skill/grading.json +0 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/without_skill/outputs/response.md +0 -694
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/without_skill/outputs/transcript.md +0 -45
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/without_skill/timing.json +0 -1
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/eval_metadata.json +0 -12
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/with_skill/grading.json +0 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/with_skill/outputs/response.md +0 -1087
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/with_skill/outputs/transcript.md +0 -124
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/with_skill/timing.json +0 -1
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/without_skill/grading.json +0 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/without_skill/outputs/response.md +0 -458
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/without_skill/outputs/transcript.md +0 -84
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/without_skill/timing.json +0 -1
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/eval_metadata.json +0 -12
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/with_skill/grading.json +0 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/with_skill/outputs/response.md +0 -70
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/with_skill/outputs/transcript.md +0 -148
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/with_skill/timing.json +0 -1
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/without_skill/grading.json +0 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/without_skill/outputs/response.md +0 -249
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/without_skill/outputs/transcript.md +0 -80
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/without_skill/timing.json +0 -1
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/review.html +0 -1325
- package/frameworks/skills/sdd-tech-direction-expert/SKILL.md +0 -223
- package/frameworks/skills/sdd-tech-direction-expert/evals/evals.json +0 -1
- package/frameworks/skills/sdd-tech-direction-expert/templates/tech_direction-template.md +0 -23
- package/frameworks/skills/sdd-tech-spec-expert/SKILL.md +0 -304
- package/frameworks/skills/sdd-tech-spec-expert/evals/evals.json +0 -199
- package/frameworks/skills/sdd-tech-spec-expert/templates/spec_tech_template.md +0 -290
- package/frameworks/skills/sdd-tech-spec-expert/templates/tech_direction-template.md +0 -23
|
@@ -6,7 +6,23 @@ argument-hint: [INTENT aprovada + detalhes tecnicos]
|
|
|
6
6
|
|
|
7
7
|
Voce e um **Arquiteto de Software Senior** que transforma INTENTs em especificacoes tecnicas concretas.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
> **Paths**: Leia `.claude/config/ai-framework-config.yaml` secao `ministack` antes de salvar artefatos. Os paths abaixo sao exemplos — o path real vem do config.
|
|
10
|
+
|
|
11
|
+
Você domina completamente o framework miniStack e seu foco é **EXCLUSIVAMENTE** na etapa SCOPE — definindo COMO a feature será implementada, com limites claros do que está dentro e fora do escopo.
|
|
12
|
+
|
|
13
|
+
> **Paths**: Leia `.claude/config/ai-framework-config.yaml` secao `ministack` antes de salvar artefatos. Os paths abaixo sao exemplos — o path real vem do config.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Regra de Acentuação
|
|
18
|
+
|
|
19
|
+
Todo artefato gerado por esta skill é um documento em português brasileiro. Todo conteúdo textual (títulos, descrições, instruções, regras, mensagens) deve usar acentuação correta do pt-BR:
|
|
20
|
+
|
|
21
|
+
- Títulos e seções: `Descrição`, `Restrições`, `Instruções`, `Validação`, `Configuração`
|
|
22
|
+
- Corpo do texto: `não`, `é`, `está`, `será`, `também`, `através`, `após`, `até`, `único`
|
|
23
|
+
- Termos técnicos em português: `autenticação`, `paginação`, `migração`, `funcionalidade`
|
|
24
|
+
|
|
25
|
+
Apenas nomes de código (funções, variáveis, structs, pacotes) permanecem sem acento por serem em inglês.
|
|
10
26
|
|
|
11
27
|
---
|
|
12
28
|
|
|
@@ -23,6 +23,20 @@ Foco: **O QUÊ** e **POR QUÊ**. Questões de COMO → registrar como Premissa/R
|
|
|
23
23
|
|
|
24
24
|
Estilo: Objetivo. Estruturado. Sem redundância.
|
|
25
25
|
|
|
26
|
+
> **Paths**: Leia `.claude/config/ai-framework-config.yaml` secao `sdd` antes de salvar artefatos. Os paths abaixo sao exemplos — o path real vem do config.
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
# Regra de Acentuação
|
|
31
|
+
|
|
32
|
+
Todo artefato gerado por esta skill é um documento em português brasileiro. Todo conteúdo textual (títulos, descrições, instruções, regras, mensagens) deve usar acentuação correta do pt-BR:
|
|
33
|
+
|
|
34
|
+
- Títulos e seções: `Descrição`, `Restrições`, `Instruções`, `Validação`, `Configuração`
|
|
35
|
+
- Corpo do texto: `não`, `é`, `está`, `será`, `também`, `através`, `após`, `até`, `único`
|
|
36
|
+
- Termos técnicos em português: `autenticação`, `paginação`, `migração`, `funcionalidade`
|
|
37
|
+
|
|
38
|
+
Apenas nomes de código (funções, variáveis, structs, pacotes) permanecem sem acento por serem em inglês.
|
|
39
|
+
|
|
26
40
|
---
|
|
27
41
|
|
|
28
42
|
# Framework SDD — Etapa PRD
|
|
@@ -14,6 +14,20 @@ Sua missão é transformar um SPEC_TECH aprovado em:
|
|
|
14
14
|
|
|
15
15
|
Seu foco é **EXCLUSIVAMENTE** no **COMO executar** — decomposição técnica de engenharia. Você transforma especificações técnicas em planos de execução granulares, sem ambiguidade, prontos para serem executados por desenvolvedores ou agentes de IA.
|
|
16
16
|
|
|
17
|
+
> **Paths**: Leia `.claude/config/ai-framework-config.yaml` secao `sdd` antes de salvar artefatos. Os paths abaixo sao exemplos — o path real vem do config.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# Regra de Acentuação
|
|
22
|
+
|
|
23
|
+
Todo artefato gerado por esta skill é um documento em português brasileiro. Todo conteúdo textual (títulos, descrições, instruções, regras, mensagens) deve usar acentuação correta do pt-BR:
|
|
24
|
+
|
|
25
|
+
- Títulos e seções: `Descrição`, `Restrições`, `Instruções`, `Validação`, `Configuração`
|
|
26
|
+
- Corpo do texto: `não`, `é`, `está`, `será`, `também`, `através`, `após`, `até`, `único`
|
|
27
|
+
- Termos técnicos em português: `autenticação`, `paginação`, `migração`, `funcionalidade`
|
|
28
|
+
|
|
29
|
+
Apenas nomes de código (funções, variáveis, structs, pacotes) permanecem sem acento por serem em inglês.
|
|
30
|
+
|
|
17
31
|
---
|
|
18
32
|
|
|
19
33
|
# Framework SDD — Etapa TASK PLAN
|
|
@@ -6,7 +6,23 @@ argument-hint: [pergunta, contexto ou caminho da taskcard]
|
|
|
6
6
|
|
|
7
7
|
Voce e um **Especialista no Framework TaskCard** — o sistema de planejamento e execucao de tasks deste projeto.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
> **Paths**: Leia `.claude/config/ai-framework-config.yaml` secao `taskcard` antes de salvar artefatos. Os paths abaixo sao exemplos — o path real vem do config.
|
|
10
|
+
|
|
11
|
+
Você domina completamente o framework: template, regras, guardrails, convenções de nomenclatura, estrutura de diretórios e fluxos de geração/execução.
|
|
12
|
+
|
|
13
|
+
> **Paths**: Leia `.claude/config/ai-framework-config.yaml` secao `taskcard` antes de salvar artefatos. Os paths abaixo sao exemplos — o path real vem do config.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Regra de Acentuação
|
|
18
|
+
|
|
19
|
+
Todo artefato gerado por esta skill é um documento em português brasileiro. Todo conteúdo textual (títulos, descrições, instruções, regras, mensagens) deve usar acentuação correta do pt-BR:
|
|
20
|
+
|
|
21
|
+
- Títulos e seções: `Descrição`, `Restrições`, `Instruções`, `Validação`, `Configuração`
|
|
22
|
+
- Corpo do texto: `não`, `é`, `está`, `será`, `também`, `através`, `após`, `até`, `único`
|
|
23
|
+
- Termos técnicos em português: `autenticação`, `paginação`, `migração`, `funcionalidade`
|
|
24
|
+
|
|
25
|
+
Apenas nomes de código (funções, variáveis, structs, pacotes) permanecem sem acento por serem em inglês.
|
|
10
26
|
|
|
11
27
|
---
|
|
12
28
|
|
|
@@ -60,15 +76,18 @@ Se `project-profile.md` NAO existir, execute `/generate-project-profile` antes d
|
|
|
60
76
|
|
|
61
77
|
---
|
|
62
78
|
|
|
63
|
-
##
|
|
79
|
+
## Seção 10 (Testes): Delegação ao qa-staff-engineer
|
|
80
|
+
|
|
81
|
+
A seção 10 (Testes) NÃO é preenchida diretamente pelo gerador da TaskCard. O fluxo é:
|
|
82
|
+
|
|
83
|
+
1. O orquestrador (`generate-taskcard`) dispara o agente `qa-staff-engineer` (modo GERAR_TESTES)
|
|
84
|
+
2. O agente retorna um **JSON estruturado** com casos de teste, rastreabilidade e padrões detectados
|
|
85
|
+
3. O orquestrador **transforma o JSON** no formato do template oficial (subseções 10.1 a 10.6) e edita o arquivo
|
|
64
86
|
|
|
65
|
-
|
|
66
|
-
- Analisa o codebase, testes existentes e padroes do projeto
|
|
67
|
-
- Mapeia criterios de aceite (secao 9) para testes
|
|
68
|
-
- Preenche as subsecoes 10.1 a 10.6 diretamente no arquivo da TaskCard
|
|
87
|
+
O agente QA é compartilhado entre processos (SDD, miniStack, TaskCard) e sempre retorna JSON — a adaptação ao formato do template é responsabilidade do orquestrador.
|
|
69
88
|
|
|
70
|
-
> **Nunca gere uma TaskCard sem disparar o qa-staff-engineer para
|
|
71
|
-
> Salve o arquivo com
|
|
89
|
+
> **Nunca gere uma TaskCard sem disparar o qa-staff-engineer para a seção 10.**
|
|
90
|
+
> Salve o arquivo com seções 1-9 e 11 primeiro, depois dispare o agente e formate o resultado.
|
|
72
91
|
|
|
73
92
|
---
|
|
74
93
|
|
|
@@ -178,9 +197,9 @@ Contexto do usuario
|
|
|
178
197
|
-> Preencher template (secoes 1-9 e 11)
|
|
179
198
|
-> Remover todos os comentarios <!-- LLM-ONLY: ... --> do conteudo antes de salvar
|
|
180
199
|
-> Salvar em docs/<feature>/vN/ (GERAR ARQUIVOS IMEDIATAMENTE, SEM PEDIR APROVACAO)
|
|
181
|
-
->
|
|
182
|
-
|
|
183
|
-
|
|
200
|
+
-> Disparar qa-staff-engineer (modo GERAR_TESTES) → recebe JSON
|
|
201
|
+
-> Transformar JSON no formato do template (subseções 10.1 a 10.6)
|
|
202
|
+
-> Editar arquivo da TaskCard com a seção 10 formatada
|
|
184
203
|
-> Se multiplas: gerar task-plan.md
|
|
185
204
|
-> Apresentar resumo curto do que foi criado (arquivos gerados, IDs, nomes)
|
|
186
205
|
```
|
|
@@ -0,0 +1,207 @@
|
|
|
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
|
+
## 9. 📂 Arquivos Envolvidos *(opcional)*
|
|
156
|
+
|
|
157
|
+
[Liste os arquivos que devem ser criados, modificados ou consultados durante a tarefa]
|
|
158
|
+
|
|
159
|
+
**Arquivos a criar:**
|
|
160
|
+
- [Ex: `internal/service/order_service.go` — lógica de negócio de pedidos]
|
|
161
|
+
- [Ex: `internal/handler/grpc/order_handler.go` — handler gRPC de pedidos]
|
|
162
|
+
|
|
163
|
+
**Arquivos a modificar:**
|
|
164
|
+
- [Ex: `internal/infra/di/fx.go` — registrar novos módulos no DI]
|
|
165
|
+
- [Ex: `api/proto/v1/order.proto` — definir mensagens e RPCs de pedidos]
|
|
166
|
+
|
|
167
|
+
**Arquivos de referência (consultar, não alterar):**
|
|
168
|
+
- [Ex: `internal/service/user_service.go` — seguir mesmo padrão de implementação]
|
|
169
|
+
- [Ex: `internal/handler/grpc/user_handler.go` — referência de como mapear DTOs]
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## 10. 🧪 Testes de Unidade *(opcional)*
|
|
174
|
+
|
|
175
|
+
[Defina expectativas sobre testes que devem acompanhar a implementação]
|
|
176
|
+
|
|
177
|
+
**Escopo dos testes:**
|
|
178
|
+
- [Ex: Testar apenas a camada de service]
|
|
179
|
+
- [Ex: Cobrir fluxos de sucesso e erro]
|
|
180
|
+
- [Ex: Incluir testes de integração com banco real]
|
|
181
|
+
|
|
182
|
+
**Cenários obrigatórios:**
|
|
183
|
+
- [Ex: Criação com dados válidos → sucesso]
|
|
184
|
+
- [Ex: Criação com email duplicado → erro de conflito]
|
|
185
|
+
- [Ex: Busca por ID inexistente → erro not found]
|
|
186
|
+
- [Ex: Atualização sem permissão → erro de autorização]
|
|
187
|
+
|
|
188
|
+
**Padrão de testes:**
|
|
189
|
+
- [Ex: Table-driven tests com `testify`]
|
|
190
|
+
- [Ex: Mocks para dependências externas]
|
|
191
|
+
- [Ex: Nomenclatura: `TestNomeDoService_MetodoTestado_Cenario`]
|
|
192
|
+
|
|
193
|
+
**Arquivo de referência:**
|
|
194
|
+
- [Ex: `internal/service/user_service_test.go` — seguir mesmo padrão]
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## 💡 Dicas de Uso
|
|
199
|
+
|
|
200
|
+
* ✅ **Mínimo obrigatório:** Seções 1–6 (Contexto + Objetivo + Instruções + DEVE/NÃO DEVE + Formato + Persona)
|
|
201
|
+
* ⭐ **Para 6 estrelas:** Adicione seções 7–10 (Critérios de Aceite + Exemplos + Arquivos + Testes)
|
|
202
|
+
* 🎯 **Seja específico:** Quanto mais detalhes relevantes, melhor a resposta
|
|
203
|
+
* 🎭 **Use DEVE/NÃO DEVE:** Esta seção é crucial para evitar comportamentos indesejados
|
|
204
|
+
* 🔄 **Itere:** Ajuste o prompt baseado nos resultados obtidos
|
|
205
|
+
* 📏 **Balanceie:** Detalhes suficientes sem ser verboso demais
|
|
206
|
+
|
|
207
|
+
---
|
package/package.json
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "adi_dev_workflow",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Install SDD, miniStack and TaskCard development frameworks for Claude Code and Cursor",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"bin": {
|
|
7
|
-
"adi_dev_workflow": "
|
|
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
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "adi_dev_workflow",
|
|
3
|
+
"version": "1.2.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
CHANGED
|
@@ -1,121 +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
|
-
}
|
|
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 + ${summary.agents} agents + ${summary.config} config 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
|
+
}
|