adi_dev_workflow 1.1.1 → 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.
Files changed (111) 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-intent-expert/SKILL.md +2 -0
  29. package/frameworks/skills/ministack-scope-expert/SKILL.md +4 -0
  30. package/frameworks/skills/sdd-prd-expert/SKILL.md +2 -0
  31. package/frameworks/skills/sdd-task-plan-expert/SKILL.md +2 -0
  32. package/frameworks/skills/taskcard-expert/SKILL.md +4 -0
  33. package/package.json +28 -28
  34. package/src/cli.js +121 -121
  35. package/src/installer.js +155 -136
  36. package/src/transformer.js +86 -86
  37. package/frameworks/skills/ministack-tasks-expert/SKILL.md +0 -204
  38. package/frameworks/skills/ministack-tasks-expert/templates/task_plan_template.md +0 -78
  39. package/frameworks/skills/ministack-tasks-expert/templates/task_template.md +0 -103
  40. package/frameworks/skills/ministack-tech-direction-expert/SKILL.md +0 -230
  41. package/frameworks/skills/ministack-tech-direction-expert/evals/evals.json +0 -1
  42. package/frameworks/skills/ministack-tech-direction-expert/templates/tech_direction-template.md +0 -17
  43. package/frameworks/skills/prompt-engineer-expert/SKILL.md +0 -232
  44. package/frameworks/skills/prompt-engineer-expert/templates/prompt_template.md +0 -139
  45. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/benchmark.json +0 -99
  46. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/benchmark.md +0 -64
  47. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/eval_metadata.json +0 -12
  48. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/grading.json +0 -32
  49. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/outputs/response.md +0 -134
  50. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/outputs/transcript.md +0 -68
  51. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/timing.json +0 -5
  52. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/without_skill/grading.json +0 -32
  53. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/without_skill/outputs/response.md +0 -525
  54. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/without_skill/outputs/transcript.md +0 -30
  55. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/without_skill/timing.json +0 -5
  56. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/eval_metadata.json +0 -12
  57. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/with_skill/grading.json +0 -32
  58. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/with_skill/outputs/response.md +0 -1126
  59. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/with_skill/outputs/transcript.md +0 -131
  60. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/with_skill/timing.json +0 -5
  61. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/without_skill/grading.json +0 -32
  62. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/without_skill/outputs/response.md +0 -452
  63. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/without_skill/outputs/transcript.md +0 -78
  64. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/without_skill/timing.json +0 -5
  65. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/eval_metadata.json +0 -12
  66. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/with_skill/grading.json +0 -32
  67. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/with_skill/outputs/response.md +0 -101
  68. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/with_skill/outputs/transcript.md +0 -133
  69. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/with_skill/timing.json +0 -5
  70. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/without_skill/grading.json +0 -32
  71. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/without_skill/outputs/response.md +0 -248
  72. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/without_skill/outputs/transcript.md +0 -49
  73. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/without_skill/timing.json +0 -5
  74. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/review.html +0 -1325
  75. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/benchmark.json +0 -94
  76. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/benchmark.md +0 -67
  77. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/eval_metadata.json +0 -12
  78. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/with_skill/grading.json +0 -32
  79. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/with_skill/outputs/response.md +0 -117
  80. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/with_skill/outputs/transcript.md +0 -91
  81. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/with_skill/timing.json +0 -1
  82. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/without_skill/grading.json +0 -32
  83. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/without_skill/outputs/response.md +0 -694
  84. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/without_skill/outputs/transcript.md +0 -45
  85. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/without_skill/timing.json +0 -1
  86. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/eval_metadata.json +0 -12
  87. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/with_skill/grading.json +0 -32
  88. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/with_skill/outputs/response.md +0 -1087
  89. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/with_skill/outputs/transcript.md +0 -124
  90. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/with_skill/timing.json +0 -1
  91. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/without_skill/grading.json +0 -32
  92. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/without_skill/outputs/response.md +0 -458
  93. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/without_skill/outputs/transcript.md +0 -84
  94. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/without_skill/timing.json +0 -1
  95. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/eval_metadata.json +0 -12
  96. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/with_skill/grading.json +0 -32
  97. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/with_skill/outputs/response.md +0 -70
  98. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/with_skill/outputs/transcript.md +0 -148
  99. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/with_skill/timing.json +0 -1
  100. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/without_skill/grading.json +0 -32
  101. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/without_skill/outputs/response.md +0 -249
  102. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/without_skill/outputs/transcript.md +0 -80
  103. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/without_skill/timing.json +0 -1
  104. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/review.html +0 -1325
  105. package/frameworks/skills/sdd-tech-direction-expert/SKILL.md +0 -235
  106. package/frameworks/skills/sdd-tech-direction-expert/evals/evals.json +0 -1
  107. package/frameworks/skills/sdd-tech-direction-expert/templates/tech_direction-template.md +0 -23
  108. package/frameworks/skills/sdd-tech-spec-expert/SKILL.md +0 -317
  109. package/frameworks/skills/sdd-tech-spec-expert/evals/evals.json +0 -199
  110. package/frameworks/skills/sdd-tech-spec-expert/templates/spec_tech_template.md +0 -290
  111. package/frameworks/skills/sdd-tech-spec-expert/templates/tech_direction-template.md +0 -23
@@ -3,6 +3,8 @@ description: "Executa uma TaskCard com gates QA + Tech Review. Params: <caminho_
3
3
  argument-hint: "<caminho da taskcard> [agente opcional ex: go-expert]"
4
4
  ---
5
5
 
6
+ > **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.
7
+
6
8
  Voce e um **Executor de TaskCard com Validacao**. Execute com precisao, sem desvios ou reinterpretacao.
7
9
 
8
10
  Carregue a skill **taskcard-expert** para obter o framework completo (template, regras, guardrails, convencoes).
@@ -0,0 +1,112 @@
1
+ # ============================================================================
2
+ # AI Framework Config — Configuracao centralizada de paths
3
+ # ============================================================================
4
+ #
5
+ # Este arquivo define ONDE cada artefato de cada framework deve ser gravado.
6
+ # Todos os commands e skills DEVEM ler este arquivo antes de salvar qualquer
7
+ # artefato, usando os paths aqui definidos.
8
+ #
9
+ # Variaveis dinamicas:
10
+ # {feature} — nome da feature em kebab-case (ex: auth-oauth2)
11
+ # {version} — versao do artefato (ex: v1, v2)
12
+ #
13
+ # Para alterar a estrutura de pastas, edite APENAS este arquivo.
14
+ # ============================================================================
15
+
16
+ # --------------------------------------------------------------------------
17
+ # SDD (Software Design Document)
18
+ # Pipeline: PRD → Tech Direction → SPEC_TECH → Task Plan + Tasks → Execution
19
+ # --------------------------------------------------------------------------
20
+ sdd:
21
+ # Artefatos de produto (O QUE / POR QUE)
22
+ prd:
23
+ path: "docs/specs/{feature}/{version}/prd.md"
24
+ generated_by: "sdd:generate-prd"
25
+
26
+ tech_direction:
27
+ path: "docs/specs/{feature}/{version}/tech_direction.md"
28
+ generated_by: "sdd:generate-tech-direction"
29
+
30
+ state:
31
+ path: "docs/specs/{feature}/{version}/sdd_state.yaml"
32
+ generated_by: "sdd:generate-prd"
33
+ updated_by: "all sdd commands"
34
+
35
+ # Artefatos tecnicos (COMO)
36
+ spec_tech:
37
+ path: "docs/specs/{feature}/{version}/spec_tech.md"
38
+ generated_by: "sdd:generate-tech-spec"
39
+
40
+ validation:
41
+ path: "docs/specs/{feature}/{version}/validation_report.md"
42
+ generated_by: "sdd:validate-sdd"
43
+
44
+ task_plan:
45
+ path: "docs/specs/{feature}/{version}/task_plan.md"
46
+ generated_by: "sdd:generate-task-plan"
47
+
48
+ tasks:
49
+ dir: "docs/specs/{feature}/{version}/tasks/"
50
+ pattern: "T{n}.md"
51
+ generated_by: "sdd:generate-task-plan"
52
+
53
+ code_review:
54
+ dir: "docs/specs/{feature}/{version}/code_review/"
55
+ generated_by: "sdd:code-review"
56
+
57
+ tests:
58
+ generated_by: "sdd:generate-tests"
59
+ note: "Gera secoes dentro do spec_tech.md ou tasks/TN.md, nao cria arquivo separado"
60
+
61
+ # --------------------------------------------------------------------------
62
+ # miniStack
63
+ # Pipeline: INTENT → Tech Direction → SCOPE → Task Plan + Tasks → Execution
64
+ # --------------------------------------------------------------------------
65
+ ministack:
66
+ intent:
67
+ path: "docs/specs/{feature}/{version}/intent.md"
68
+ generated_by: "ministack:generate-intent"
69
+
70
+ tech_direction:
71
+ path: "docs/specs/{feature}/{version}/tech_direction.md"
72
+ generated_by: "ministack:generate-tech-direction"
73
+
74
+ state:
75
+ path: "docs/specs/{feature}/{version}/ministack_state.yaml"
76
+ generated_by: "ministack:generate-intent"
77
+ updated_by: "all ministack commands"
78
+
79
+ scope:
80
+ path: "docs/specs/{feature}/{version}/scope.md"
81
+ generated_by: "ministack:generate-scope"
82
+
83
+ task_plan:
84
+ path: "docs/specs/{feature}/{version}/task_plan.md"
85
+ generated_by: "ministack:generate-tasks"
86
+
87
+ tasks:
88
+ dir: "docs/specs/{feature}/{version}/tasks/"
89
+ pattern: "T{n}.md"
90
+ generated_by: "ministack:generate-tasks"
91
+
92
+ # --------------------------------------------------------------------------
93
+ # TaskCard
94
+ # Pipeline: TaskCard generation → Execution (QA + Tech Review)
95
+ # --------------------------------------------------------------------------
96
+ taskcard:
97
+ task_plan:
98
+ path: "docs/specs/{feature}/{version}/task-plan.md"
99
+ generated_by: "taskcard:generate-taskcard"
100
+
101
+ tasks:
102
+ dir: "docs/specs/{feature}/{version}/"
103
+ pattern: "task-{nn}-{slug}.md"
104
+ generated_by: "taskcard:generate-taskcard"
105
+
106
+ # --------------------------------------------------------------------------
107
+ # Compartilhado (cross-framework)
108
+ # --------------------------------------------------------------------------
109
+ shared:
110
+ linear_sync:
111
+ path: "docs/specs/{feature}/{version}/linear-sync.json"
112
+ generated_by: "sync-tasks-to-linear"
@@ -8,6 +8,8 @@ Voce e um **Product Owner / PM experiente** com vies de produto e clareza estrat
8
8
 
9
9
  Você domina completamente o framework miniStack e seu foco é **EXCLUSIVAMENTE** na etapa INTENT — definindo O QUE precisa ser feito e POR QUÊ, sem nunca entrar em detalhes técnicos de implementação.
10
10
 
11
+ > **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.
12
+
11
13
  ---
12
14
 
13
15
  # Regra de Acentuação
@@ -6,8 +6,12 @@ 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
+ > **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
+
9
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.
10
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
+
11
15
  ---
12
16
 
13
17
  # Regra de Acentuação
@@ -23,6 +23,8 @@ 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
+
26
28
  ---
27
29
 
28
30
  # Regra de Acentuação
@@ -14,6 +14,8 @@ 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
+
17
19
  ---
18
20
 
19
21
  # Regra de Acentuação
@@ -6,8 +6,12 @@ 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
+ > **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
+
9
11
  Você domina completamente o framework: template, regras, guardrails, convenções de nomenclatura, estrutura de diretórios e fluxos de geração/execução.
10
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
+
11
15
  ---
12
16
 
13
17
  # Regra de Acentuação
package/package.json CHANGED
@@ -1,28 +1,28 @@
1
- {
2
- "name": "adi_dev_workflow",
3
- "version": "1.1.1",
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
- }
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
+ }