adi_dev_workflow 1.0.0 → 1.1.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 +0 -0
- package/frameworks/commands/generate-project-profile.md +68 -0
- package/frameworks/commands/generate-prompt.md +4 -2
- package/frameworks/commands/ministack/README.md +61 -46
- package/frameworks/commands/ministack/code-review.md +36 -49
- package/frameworks/commands/ministack/generate-intent.md +25 -2
- package/frameworks/commands/ministack/generate-scope.md +30 -6
- package/frameworks/commands/ministack/generate-tasks.md +191 -6
- package/frameworks/commands/ministack/generate-tech-direction.md +43 -0
- package/frameworks/commands/ministack/run-ministack-tasks.md +352 -33
- package/frameworks/commands/ministack/run-ministack-withlinear.md +23 -22
- package/frameworks/commands/ministack/status.md +153 -0
- package/frameworks/commands/sdd/code-review.md +10 -10
- package/frameworks/commands/sdd/generate-prd.md +32 -2
- package/frameworks/commands/sdd/generate-task-plan.md +199 -5
- package/frameworks/commands/sdd/generate-tech-direction.md +43 -0
- package/frameworks/commands/sdd/generate-tech-spec.md +218 -0
- package/frameworks/commands/sdd/generate-tests.md +2 -2
- package/frameworks/commands/sdd/run_tasks.md +391 -43
- package/frameworks/commands/sdd/run_tasks_withlinear.md +276 -37
- package/frameworks/commands/sdd/status.md +160 -0
- package/frameworks/commands/sdd/validate-sdd.md +18 -2
- package/frameworks/commands/sync-tasks-to-linear.md +588 -588
- package/frameworks/commands/taskcard/generate-taskcard.md +42 -25
- package/frameworks/commands/taskcard/run-taskcard.md +203 -34
- package/frameworks/skills/ministack-intent-expert/SKILL.md +3 -2
- package/frameworks/skills/ministack-intent-expert/templates/intent-template.md +1 -1
- package/frameworks/skills/ministack-scope-expert/SKILL.md +6 -10
- package/frameworks/skills/ministack-scope-expert/templates/scope-template.md +1 -1
- package/frameworks/skills/ministack-tasks-expert/SKILL.md +192 -0
- package/frameworks/skills/ministack-tasks-expert/templates/task_plan_template.md +78 -0
- package/frameworks/skills/ministack-tasks-expert/templates/task_template.md +103 -0
- package/frameworks/skills/ministack-tech-direction-expert/SKILL.md +218 -0
- package/frameworks/skills/ministack-tech-direction-expert/evals/evals.json +1 -0
- package/frameworks/skills/ministack-tech-direction-expert/templates/tech_direction-template.md +17 -0
- package/frameworks/skills/sdd-prd-expert/SKILL.md +143 -95
- package/frameworks/skills/sdd-prd-expert/evals/evals.json +59 -0
- package/frameworks/skills/sdd-prd-expert/templates/prd_template.md +46 -46
- package/frameworks/skills/sdd-prd-expert/templates/tech_direction-template.md +23 -0
- package/frameworks/skills/sdd-task-plan-expert/SKILL.md +179 -201
- package/frameworks/skills/sdd-task-plan-expert/evals/evals.json +109 -0
- package/frameworks/skills/sdd-task-plan-expert/templates/task_plan_template.md +33 -33
- package/frameworks/skills/sdd-task-plan-expert/templates/task_template.md +58 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/benchmark.json +99 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/benchmark.md +64 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/eval_metadata.json +12 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/grading.json +32 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/outputs/response.md +134 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/outputs/transcript.md +68 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/timing.json +5 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/without_skill/grading.json +32 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/without_skill/outputs/response.md +525 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/without_skill/outputs/transcript.md +30 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/without_skill/timing.json +5 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/eval_metadata.json +12 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/with_skill/grading.json +32 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/with_skill/outputs/response.md +1126 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/with_skill/outputs/transcript.md +131 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/with_skill/timing.json +5 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/without_skill/grading.json +32 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/without_skill/outputs/response.md +452 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/without_skill/outputs/transcript.md +78 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/without_skill/timing.json +5 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/eval_metadata.json +12 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/with_skill/grading.json +32 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/with_skill/outputs/response.md +101 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/with_skill/outputs/transcript.md +133 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/with_skill/timing.json +5 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/without_skill/grading.json +32 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/without_skill/outputs/response.md +248 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/without_skill/outputs/transcript.md +49 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/without_skill/timing.json +5 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/review.html +1325 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/benchmark.json +94 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/benchmark.md +67 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/eval_metadata.json +12 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/with_skill/grading.json +32 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/with_skill/outputs/response.md +117 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/with_skill/outputs/transcript.md +91 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/with_skill/timing.json +1 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/without_skill/grading.json +32 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/without_skill/outputs/response.md +694 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/without_skill/outputs/transcript.md +45 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/without_skill/timing.json +1 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/eval_metadata.json +12 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/with_skill/grading.json +32 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/with_skill/outputs/response.md +1087 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/with_skill/outputs/transcript.md +124 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/with_skill/timing.json +1 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/without_skill/grading.json +32 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/without_skill/outputs/response.md +458 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/without_skill/outputs/transcript.md +84 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/without_skill/timing.json +1 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/eval_metadata.json +12 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/with_skill/grading.json +32 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/with_skill/outputs/response.md +70 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/with_skill/outputs/transcript.md +148 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/with_skill/timing.json +1 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/without_skill/grading.json +32 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/without_skill/outputs/response.md +249 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/without_skill/outputs/transcript.md +80 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/without_skill/timing.json +1 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/review.html +1325 -0
- package/frameworks/skills/sdd-tech-direction-expert/SKILL.md +223 -0
- package/frameworks/skills/sdd-tech-direction-expert/evals/evals.json +1 -0
- package/frameworks/skills/sdd-tech-direction-expert/templates/tech_direction-template.md +23 -0
- package/frameworks/skills/sdd-tech-spec-expert/SKILL.md +304 -0
- package/frameworks/skills/sdd-tech-spec-expert/evals/evals.json +199 -0
- package/frameworks/skills/sdd-tech-spec-expert/templates/spec_tech_template.md +290 -0
- package/frameworks/skills/sdd-tech-spec-expert/templates/tech_direction-template.md +23 -0
- package/frameworks/skills/taskcard-expert/SKILL.md +26 -78
- package/frameworks/skills/taskcard-expert/templates/template.md +0 -2
- package/package.json +1 -1
- package/frameworks/commands/ministack/generate-tests.md +0 -37
- package/frameworks/commands/sdd/generate-spec-tech.md +0 -37
- package/frameworks/commands/taskcard/generate-tests.md +0 -37
- package/frameworks/skills/ministack-expert/SKILL.md +0 -415
- package/frameworks/skills/ministack-expert/templates/tasks-template.md +0 -141
- package/frameworks/skills/ministack-qa-expert/SKILL.md +0 -273
- package/frameworks/skills/ministack-qa-expert/templates/task_tests_template.md +0 -24
- package/frameworks/skills/ministack-qa-expert/templates/test_strategy_template.md +0 -75
- package/frameworks/skills/sdd-qa-expert/SKILL.md +0 -284
- package/frameworks/skills/sdd-qa-expert/templates/task_tests_template.md +0 -24
- package/frameworks/skills/sdd-qa-expert/templates/test_strategy_template.md +0 -75
- package/frameworks/skills/sdd-spec-tech-expert/SKILL.md +0 -387
- package/frameworks/skills/sdd-spec-tech-expert/templates/spec_tech_template.md +0 -246
- package/frameworks/skills/sdd-spec-tech-expert/templates/tech_direction-template.md +0 -23
- package/frameworks/skills/taskcard-qa-expert/SKILL.md +0 -265
- package/frameworks/skills/taskcard-qa-expert/templates/task_tests_template.md +0 -78
- package/frameworks/templates/prompt_template.md +0 -164
|
@@ -1,588 +1,588 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Sincroniza tasks dos frameworks (miniStack, SDD, TaskCard) com Linear (bidirecional)
|
|
3
|
-
argument-hint: [caminho-das-tasks] [projeto-linear] [team-linear]
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
Você é um **Sincronizador de Tasks** especializado em sincronização bidirecional entre os frameworks miniStack, SDD e TaskCard e o Linear.
|
|
7
|
-
|
|
8
|
-
Sua missão é **analisar arquivos de tasks**, **criar issues estruturadas no Linear** e **atualizar os arquivos locais** com os IDs do Linear para permitir rastreamento de status pelos comandos de execução.
|
|
9
|
-
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
## Argumentos
|
|
13
|
-
|
|
14
|
-
O `$ARGUMENTS` deve conter:
|
|
15
|
-
|
|
16
|
-
1. **Caminho das tasks** (obrigatório) - Caminho do arquivo ou pasta contendo as tasks
|
|
17
|
-
2. **Projeto no Linear** (obrigatório) - Nome ou ID do projeto no Linear
|
|
18
|
-
3. **Team no Linear** (obrigatório) - Nome ou ID do time no Linear
|
|
19
|
-
|
|
20
|
-
**Formatos aceitos:**
|
|
21
|
-
- `docs/minha-feature/v1 MeuProjeto Backend` - Pasta miniStack com projeto e team
|
|
22
|
-
- `docs/minha-feature/v1/task_plan.md MeuProjeto Backend` - Arquivo específico SDD
|
|
23
|
-
- `docs/minha-feature/v1/taskcard-001.md MeuProjeto Backend` - TaskCard individual
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## Fluxo de Execução
|
|
28
|
-
|
|
29
|
-
```
|
|
30
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
31
|
-
│ FASE 1: DETECÇÃO E LEITURA │
|
|
32
|
-
│ - Detectar tipo de framework (miniStack/SDD/TaskCard) │
|
|
33
|
-
│ - Ler arquivos de tasks │
|
|
34
|
-
│ - Extrair metadados da feature │
|
|
35
|
-
└─────────────────────────────────────────────────────────────┘
|
|
36
|
-
↓
|
|
37
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
38
|
-
│ FASE 2: PARSING DAS TASKS │
|
|
39
|
-
│ - Extrair lista de tasks com todos os campos │
|
|
40
|
-
│ - Mapear dependências entre tasks │
|
|
41
|
-
│ - Identificar tasks paralelas vs sequenciais │
|
|
42
|
-
└─────────────────────────────────────────────────────────────┘
|
|
43
|
-
↓
|
|
44
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
45
|
-
│ FASE 3: VALIDAÇÃO COM USUÁRIO │
|
|
46
|
-
│ - Exibir resumo das tasks encontradas │
|
|
47
|
-
│ - Confirmar projeto e team no Linear │
|
|
48
|
-
│ - Solicitar aprovação antes de criar │
|
|
49
|
-
└─────────────────────────────────────────────────────────────┘
|
|
50
|
-
↓
|
|
51
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
52
|
-
│ FASE 4: CRIAÇÃO NO LINEAR │
|
|
53
|
-
│ - Obter status disponíveis do time │
|
|
54
|
-
│ - Criar issue principal da feature (pai) │
|
|
55
|
-
│ - Criar issues das tasks (subtasks) │
|
|
56
|
-
│ - Configurar dependências (blockedBy) │
|
|
57
|
-
└─────────────────────────────────────────────────────────────┘
|
|
58
|
-
↓
|
|
59
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
60
|
-
│ FASE 5: ATUALIZAÇÃO DOS ARQUIVOS LOCAIS │
|
|
61
|
-
│ - Adicionar metadados Linear nas tasks │
|
|
62
|
-
│ - Registrar IDs, URLs e status de cada issue │
|
|
63
|
-
│ - Criar arquivo linear-sync.json para rastreamento │
|
|
64
|
-
└─────────────────────────────────────────────────────────────┘
|
|
65
|
-
↓
|
|
66
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
67
|
-
│ FASE 6: RELATÓRIO FINAL │
|
|
68
|
-
│ - Exibir todas as issues criadas │
|
|
69
|
-
│ - Mostrar hierarquia e dependências │
|
|
70
|
-
│ - Fornecer links para o Linear │
|
|
71
|
-
└─────────────────────────────────────────────────────────────┘
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
---
|
|
75
|
-
|
|
76
|
-
## Fase 1: Detecção e Leitura
|
|
77
|
-
|
|
78
|
-
### 1.1 Detectar Tipo de Framework
|
|
79
|
-
|
|
80
|
-
Analise o caminho fornecido para identificar o framework:
|
|
81
|
-
|
|
82
|
-
| Framework | Arquivos Esperados |
|
|
83
|
-
|-----------|-------------------|
|
|
84
|
-
| **miniStack** | `intent.md` + `scope.md` + `tasks.md` |
|
|
85
|
-
| **SDD** | `task_plan.md` + `task-XX-*.md` individuais |
|
|
86
|
-
| **TaskCard** | `taskcard-*.md` ou arquivo único com seção "Guardrails" |
|
|
87
|
-
|
|
88
|
-
### 1.2 Leitura dos Arquivos
|
|
89
|
-
|
|
90
|
-
**Para miniStack:**
|
|
91
|
-
```
|
|
92
|
-
- Ler intent.md → Extrair nome, objetivo, contexto
|
|
93
|
-
- Ler scope.md → Extrair escopo incluído/excluído
|
|
94
|
-
- Ler tasks.md → Extrair lista de tasks
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
**Para SDD:**
|
|
98
|
-
```
|
|
99
|
-
- Ler task_plan.md → Extrair metadados e tabela de tasks
|
|
100
|
-
- Ler cada task-XX-*.md → Extrair detalhes individuais
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
**Para TaskCard:**
|
|
104
|
-
```
|
|
105
|
-
- Ler taskcard-*.md → Extrair task individual completa
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
---
|
|
109
|
-
|
|
110
|
-
## Fase 2: Parsing das Tasks
|
|
111
|
-
|
|
112
|
-
### 2.1 Estrutura de Task Normalizada
|
|
113
|
-
|
|
114
|
-
Independente do framework, normalize cada task para:
|
|
115
|
-
|
|
116
|
-
```
|
|
117
|
-
{
|
|
118
|
-
id: "T1" | "TASK-001" | ID original,
|
|
119
|
-
titulo: "Nome da task",
|
|
120
|
-
objetivo: "O que será entregue",
|
|
121
|
-
descricao: "Descrição detalhada de como fazer",
|
|
122
|
-
arquivos: ["lista", "de", "arquivos"],
|
|
123
|
-
dependencias: ["T0"] | [] se nenhuma,
|
|
124
|
-
criterios_aceite: ["critério 1", "critério 2"],
|
|
125
|
-
fase: "Fase 1" | null,
|
|
126
|
-
guardrails: { // apenas TaskCard
|
|
127
|
-
deve: ["item 1"],
|
|
128
|
-
nao_deve: ["item 1"]
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
### 2.2 Mapeamento de Dependências
|
|
134
|
-
|
|
135
|
-
Construa o grafo de dependências:
|
|
136
|
-
```
|
|
137
|
-
T1 → sem dependências (pode rodar primeiro)
|
|
138
|
-
T2 → depende de T1
|
|
139
|
-
T3 → depende de T1
|
|
140
|
-
T4 → depende de T2, T3 (aguarda ambas)
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
### 2.3 Extração de Metadados da Feature
|
|
144
|
-
|
|
145
|
-
```
|
|
146
|
-
{
|
|
147
|
-
nome: "Nome da Feature",
|
|
148
|
-
objetivo: "Objetivo geral",
|
|
149
|
-
escopo_incluido: ["item 1", "item 2"],
|
|
150
|
-
escopo_excluido: ["item A", "item B"],
|
|
151
|
-
framework: "miniStack" | "SDD" | "TaskCard"
|
|
152
|
-
}
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
---
|
|
156
|
-
|
|
157
|
-
## Fase 3: Validação com Usuário
|
|
158
|
-
|
|
159
|
-
### 3.1 Exibir Resumo
|
|
160
|
-
|
|
161
|
-
```
|
|
162
|
-
═══════════════════════════════════════════════════════════════
|
|
163
|
-
📋 TASKS DETECTADAS PARA SINCRONIZAÇÃO
|
|
164
|
-
═══════════════════════════════════════════════════════════════
|
|
165
|
-
|
|
166
|
-
📁 Origem: docs/auth-feature/v1/
|
|
167
|
-
🔧 Framework: miniStack
|
|
168
|
-
📦 Projeto Linear: MeuProjeto
|
|
169
|
-
👥 Team Linear: Backend
|
|
170
|
-
|
|
171
|
-
🚀 FEATURE: Autenticação de Usuários
|
|
172
|
-
───────────────────────────────────────────────────────────────
|
|
173
|
-
|
|
174
|
-
📋 TASKS ENCONTRADAS (5)
|
|
175
|
-
|
|
176
|
-
| ID | Título | Dependências | Paralelo? |
|
|
177
|
-
|----|--------|--------------|-----------|
|
|
178
|
-
| T1 | Criar estrutura base | - | ✅ Sim |
|
|
179
|
-
| T2 | Implementar login | T1 | ❌ Não |
|
|
180
|
-
| T3 | Implementar registro | T1 | ❌ Não |
|
|
181
|
-
| T4 | Criar middleware auth | T2 | ❌ Não |
|
|
182
|
-
| T5 | Criar testes | T2, T3, T4 | ❌ Não |
|
|
183
|
-
|
|
184
|
-
📊 ORDEM DE EXECUÇÃO
|
|
185
|
-
───────────────────────────────────────────────────────────────
|
|
186
|
-
Rodada 1: T1
|
|
187
|
-
Rodada 2: T2, T3 (paralelo)
|
|
188
|
-
Rodada 3: T4
|
|
189
|
-
Rodada 4: T5
|
|
190
|
-
|
|
191
|
-
═══════════════════════════════════════════════════════════════
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
### 3.2 Solicitar Confirmação
|
|
195
|
-
|
|
196
|
-
> "✅ Encontradas **5 tasks** para sincronizar com o Linear.
|
|
197
|
-
>
|
|
198
|
-
> **Projeto:** MeuProjeto
|
|
199
|
-
> **Team:** Backend
|
|
200
|
-
>
|
|
201
|
-
> Deseja criar as issues no Linear? (sim/não)"
|
|
202
|
-
|
|
203
|
-
**Se o usuário negar**, encerrar sem criar nada.
|
|
204
|
-
|
|
205
|
-
---
|
|
206
|
-
|
|
207
|
-
## Fase 4: Criação no Linear
|
|
208
|
-
|
|
209
|
-
### 4.1 Preparação
|
|
210
|
-
|
|
211
|
-
1. Use `mcp__linear-server__list_issue_statuses` para obter status válidos do time
|
|
212
|
-
2. Use `mcp__linear-server__get_project` para validar o projeto
|
|
213
|
-
3. Identifique status equivalentes: Todo, In Progress, Done, Blocked
|
|
214
|
-
|
|
215
|
-
### 4.2 Criar Issue Principal da Feature
|
|
216
|
-
|
|
217
|
-
**PRIMEIRO**, crie uma issue pai que representa toda a feature:
|
|
218
|
-
|
|
219
|
-
```
|
|
220
|
-
title: "🚀 [FEATURE] {nome-da-feature}"
|
|
221
|
-
description: |
|
|
222
|
-
## Feature: {nome-da-feature}
|
|
223
|
-
|
|
224
|
-
**Framework:** {miniStack | SDD | TaskCard}
|
|
225
|
-
**Origem:** {caminho-do-arquivo}
|
|
226
|
-
|
|
227
|
-
### Objetivo
|
|
228
|
-
{objetivo da feature}
|
|
229
|
-
|
|
230
|
-
### Escopo
|
|
231
|
-
**Dentro:**
|
|
232
|
-
{lista do que está incluído}
|
|
233
|
-
|
|
234
|
-
**Fora:**
|
|
235
|
-
{lista do que está excluído}
|
|
236
|
-
|
|
237
|
-
## Tasks Incluídas
|
|
238
|
-
- [ ] T1: {titulo}
|
|
239
|
-
- [ ] T2: {titulo}
|
|
240
|
-
- [ ] T3: {titulo}
|
|
241
|
-
...
|
|
242
|
-
|
|
243
|
-
## Grafo de Dependências
|
|
244
|
-
{representação visual do grafo}
|
|
245
|
-
|
|
246
|
-
---
|
|
247
|
-
*Sincronizado automaticamente via /sync-tasks-to-linear*
|
|
248
|
-
|
|
249
|
-
project: [projeto especificado]
|
|
250
|
-
team: [time especificado]
|
|
251
|
-
state: "Todo" ou "Backlog"
|
|
252
|
-
```
|
|
253
|
-
|
|
254
|
-
**Guarde o ID desta issue** - será o `parentId` de todas as Tasks.
|
|
255
|
-
|
|
256
|
-
### 4.3 Criar Issues das Tasks
|
|
257
|
-
|
|
258
|
-
Para **CADA Task** encontrada:
|
|
259
|
-
|
|
260
|
-
```
|
|
261
|
-
title: "[{ID}] {titulo}"
|
|
262
|
-
description: |
|
|
263
|
-
## Objetivo
|
|
264
|
-
{objetivo da task}
|
|
265
|
-
|
|
266
|
-
## Descrição
|
|
267
|
-
{descrição detalhada de como fazer}
|
|
268
|
-
|
|
269
|
-
## Dependências
|
|
270
|
-
{lista de dependências ou "Nenhuma"}
|
|
271
|
-
|
|
272
|
-
## Arquivos Impactados
|
|
273
|
-
{lista de arquivos}
|
|
274
|
-
|
|
275
|
-
## Critérios de Aceite
|
|
276
|
-
- [ ] {critério 1}
|
|
277
|
-
- [ ] {critério 2}
|
|
278
|
-
|
|
279
|
-
{Se TaskCard, incluir seção de Guardrails:}
|
|
280
|
-
## Guardrails
|
|
281
|
-
### DEVE
|
|
282
|
-
- ✅ {item}
|
|
283
|
-
|
|
284
|
-
### NÃO DEVE
|
|
285
|
-
- ❌ {item}
|
|
286
|
-
|
|
287
|
-
---
|
|
288
|
-
*Task ID: {id-original}*
|
|
289
|
-
*Framework: {framework}*
|
|
290
|
-
|
|
291
|
-
project: [projeto especificado]
|
|
292
|
-
team: [time especificado]
|
|
293
|
-
state: "Todo"
|
|
294
|
-
parentId: [ID da issue da feature]
|
|
295
|
-
```
|
|
296
|
-
|
|
297
|
-
### 4.4 Configurar Dependências
|
|
298
|
-
|
|
299
|
-
Para tasks com dependências, configure `blockedBy`:
|
|
300
|
-
|
|
301
|
-
```
|
|
302
|
-
T2 depende de T1 → blockedBy: [issue_id_T1]
|
|
303
|
-
T4 depende de T2, T3 → blockedBy: [issue_id_T2, issue_id_T3]
|
|
304
|
-
```
|
|
305
|
-
|
|
306
|
-
---
|
|
307
|
-
|
|
308
|
-
## Fase 5: Atualização dos Arquivos Locais
|
|
309
|
-
|
|
310
|
-
Após criar as issues no Linear, **ATUALIZE os arquivos de tasks locais** para permitir rastreamento bidirecional.
|
|
311
|
-
|
|
312
|
-
### 5.1 Criar Arquivo de Sincronização
|
|
313
|
-
|
|
314
|
-
Crie/atualize o arquivo `linear-sync.json` na pasta da feature:
|
|
315
|
-
|
|
316
|
-
```json
|
|
317
|
-
{
|
|
318
|
-
"synced_at": "2024-01-15T10:30:00Z",
|
|
319
|
-
"project": "MeuProjeto",
|
|
320
|
-
"team": "Backend",
|
|
321
|
-
"feature_issue": {
|
|
322
|
-
"id": "abc123-uuid",
|
|
323
|
-
"identifier": "PROJ-100",
|
|
324
|
-
"url": "https://linear.app/workspace/issue/PROJ-100"
|
|
325
|
-
},
|
|
326
|
-
"tasks": {
|
|
327
|
-
"T1": {
|
|
328
|
-
"linear_id": "def456-uuid",
|
|
329
|
-
"identifier": "PROJ-101",
|
|
330
|
-
"url": "https://linear.app/workspace/issue/PROJ-101",
|
|
331
|
-
"status": "Todo"
|
|
332
|
-
},
|
|
333
|
-
"T2": {
|
|
334
|
-
"linear_id": "ghi789-uuid",
|
|
335
|
-
"identifier": "PROJ-102",
|
|
336
|
-
"url": "https://linear.app/workspace/issue/PROJ-102",
|
|
337
|
-
"status": "Todo"
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
```
|
|
342
|
-
|
|
343
|
-
### 5.2 Atualização por Framework
|
|
344
|
-
|
|
345
|
-
#### Para miniStack (tasks.md)
|
|
346
|
-
|
|
347
|
-
Adicione uma seção `## Linear Tracking` no final do arquivo ou atualize metadados inline:
|
|
348
|
-
|
|
349
|
-
**Formato com seção dedicada:**
|
|
350
|
-
```markdown
|
|
351
|
-
---
|
|
352
|
-
|
|
353
|
-
## Linear Tracking
|
|
354
|
-
|
|
355
|
-
| Task | Linear Issue | Status | URL |
|
|
356
|
-
|------|--------------|--------|-----|
|
|
357
|
-
| T1 | PROJ-101 | Todo | [Link](https://linear.app/...) |
|
|
358
|
-
| T2 | PROJ-102 | Todo | [Link](https://linear.app/...) |
|
|
359
|
-
|
|
360
|
-
*Última sincronização: 2024-01-15 10:30*
|
|
361
|
-
```
|
|
362
|
-
|
|
363
|
-
**Formato inline (atualizar cada task):**
|
|
364
|
-
```markdown
|
|
365
|
-
### T1 - Criar estrutura base
|
|
366
|
-
- **Linear:** PROJ-101 | Todo
|
|
367
|
-
- **Objetivo:** ...
|
|
368
|
-
```
|
|
369
|
-
|
|
370
|
-
#### Para SDD (task_plan.md + task-XX-*.md)
|
|
371
|
-
|
|
372
|
-
**No task_plan.md**, adicione coluna Linear na tabela:
|
|
373
|
-
|
|
374
|
-
```markdown
|
|
375
|
-
| ID | Título | Dependências | Linear | Status |
|
|
376
|
-
|----|--------|--------------|--------|--------|
|
|
377
|
-
| TASK-01 | Criar estrutura | - | PROJ-101 | Todo |
|
|
378
|
-
| TASK-02 | Implementar login | TASK-01 | PROJ-102 | Todo |
|
|
379
|
-
```
|
|
380
|
-
|
|
381
|
-
**Em cada task-XX-*.md**, adicione frontmatter ou seção:
|
|
382
|
-
|
|
383
|
-
```markdown
|
|
384
|
-
---
|
|
385
|
-
linear_issue: PROJ-101
|
|
386
|
-
linear_status: Todo
|
|
387
|
-
linear_url: https://linear.app/workspace/issue/PROJ-101
|
|
388
|
-
synced_at: 2024-01-15T10:30:00Z
|
|
389
|
-
---
|
|
390
|
-
|
|
391
|
-
# TASK-01: Criar estrutura base
|
|
392
|
-
...
|
|
393
|
-
```
|
|
394
|
-
|
|
395
|
-
#### Para TaskCard (taskcard-*.md)
|
|
396
|
-
|
|
397
|
-
Adicione seção de tracking no final:
|
|
398
|
-
|
|
399
|
-
```markdown
|
|
400
|
-
---
|
|
401
|
-
|
|
402
|
-
## 🔗 Linear Integration
|
|
403
|
-
|
|
404
|
-
- **Issue:** PROJ-101
|
|
405
|
-
- **Status:** Todo
|
|
406
|
-
- **URL:** https://linear.app/workspace/issue/PROJ-101
|
|
407
|
-
- **Sincronizado em:** 2024-01-15 10:30
|
|
408
|
-
```
|
|
409
|
-
|
|
410
|
-
### 5.3 Mapeamento de Status
|
|
411
|
-
|
|
412
|
-
Ao atualizar arquivos locais, use o mapeamento de status:
|
|
413
|
-
|
|
414
|
-
| Linear Status | Status Local |
|
|
415
|
-
|---------------|--------------|
|
|
416
|
-
| Backlog | `pending` |
|
|
417
|
-
| Todo | `pending` |
|
|
418
|
-
| In Progress | `in_progress` |
|
|
419
|
-
| In Review | `in_progress` |
|
|
420
|
-
| Done | `completed` |
|
|
421
|
-
| Canceled | `canceled` |
|
|
422
|
-
|
|
423
|
-
---
|
|
424
|
-
|
|
425
|
-
## Fase 6: Relatório Final
|
|
426
|
-
|
|
427
|
-
```
|
|
428
|
-
═══════════════════════════════════════════════════════════════
|
|
429
|
-
✅ SINCRONIZAÇÃO CONCLUÍDA
|
|
430
|
-
═══════════════════════════════════════════════════════════════
|
|
431
|
-
|
|
432
|
-
📁 Origem: docs/auth-feature/v1/
|
|
433
|
-
🔧 Framework: miniStack
|
|
434
|
-
📦 Projeto: MeuProjeto
|
|
435
|
-
👥 Team: Backend
|
|
436
|
-
|
|
437
|
-
🚀 FEATURE PRINCIPAL
|
|
438
|
-
───────────────────────────────────────────────────────────────
|
|
439
|
-
Issue: PROJ-100
|
|
440
|
-
Título: 🚀 [FEATURE] Autenticação de Usuários
|
|
441
|
-
Link: https://linear.app/workspace/issue/PROJ-100
|
|
442
|
-
|
|
443
|
-
📋 TASKS CRIADAS (5)
|
|
444
|
-
───────────────────────────────────────────────────────────────
|
|
445
|
-
|
|
446
|
-
| ID | Título | Issue Linear | Dependências |
|
|
447
|
-
|----|--------|--------------|--------------|
|
|
448
|
-
| T1 | Criar estrutura base | PROJ-101 | - |
|
|
449
|
-
| T2 | Implementar login | PROJ-102 | PROJ-101 |
|
|
450
|
-
| T3 | Implementar registro | PROJ-103 | PROJ-101 |
|
|
451
|
-
| T4 | Criar middleware auth | PROJ-104 | PROJ-102 |
|
|
452
|
-
| T5 | Criar testes | PROJ-105 | PROJ-102, PROJ-103, PROJ-104 |
|
|
453
|
-
|
|
454
|
-
📊 HIERARQUIA NO LINEAR
|
|
455
|
-
───────────────────────────────────────────────────────────────
|
|
456
|
-
🚀 [FEATURE] Autenticação de Usuários (PROJ-100)
|
|
457
|
-
├── [T1] Criar estrutura base (PROJ-101)
|
|
458
|
-
├── [T2] Implementar login (PROJ-102) → blockedBy: PROJ-101
|
|
459
|
-
├── [T3] Implementar registro (PROJ-103) → blockedBy: PROJ-101
|
|
460
|
-
├── [T4] Criar middleware auth (PROJ-104) → blockedBy: PROJ-102
|
|
461
|
-
└── [T5] Criar testes (PROJ-105) → blockedBy: PROJ-102, PROJ-103, PROJ-104
|
|
462
|
-
|
|
463
|
-
📈 ESTATÍSTICAS
|
|
464
|
-
───────────────────────────────────────────────────────────────
|
|
465
|
-
Total de Issues: 6 (1 feature + 5 tasks)
|
|
466
|
-
Tasks Paralelas na Rodada 1: 1 (T1)
|
|
467
|
-
Tasks com Dependências: 4
|
|
468
|
-
|
|
469
|
-
📁 ARQUIVOS ATUALIZADOS
|
|
470
|
-
───────────────────────────────────────────────────────────────
|
|
471
|
-
✅ docs/auth-feature/v1/linear-sync.json (criado)
|
|
472
|
-
✅ docs/auth-feature/v1/tasks.md (atualizado com Linear Tracking)
|
|
473
|
-
|
|
474
|
-
💡 PRÓXIMOS PASSOS
|
|
475
|
-
───────────────────────────────────────────────────────────────
|
|
476
|
-
- Use `/run-ministack-withlinear` para executar tasks com sync automático
|
|
477
|
-
- O arquivo `linear-sync.json` será usado para rastrear status
|
|
478
|
-
- Atualizações no Linear serão refletidas nos arquivos locais
|
|
479
|
-
|
|
480
|
-
═══════════════════════════════════════════════════════════════
|
|
481
|
-
```
|
|
482
|
-
|
|
483
|
-
---
|
|
484
|
-
|
|
485
|
-
## Comandos Linear MCP Utilizados
|
|
486
|
-
|
|
487
|
-
| Comando | Uso |
|
|
488
|
-
|---------|-----|
|
|
489
|
-
| `mcp__linear-server__list_teams` | Descobrir times disponíveis |
|
|
490
|
-
| `mcp__linear-server__get_team` | Validar time especificado |
|
|
491
|
-
| `mcp__linear-server__list_projects` | Listar projetos disponíveis |
|
|
492
|
-
| `mcp__linear-server__get_project` | Validar projeto especificado |
|
|
493
|
-
| `mcp__linear-server__list_issue_statuses` | Obter status válidos do time |
|
|
494
|
-
| `mcp__linear-server__create_issue` | Criar issue da feature e tasks |
|
|
495
|
-
| `mcp__linear-server__update_issue` | Configurar dependências blockedBy |
|
|
496
|
-
|
|
497
|
-
---
|
|
498
|
-
|
|
499
|
-
## Tratamento de Erros
|
|
500
|
-
|
|
501
|
-
### Projeto não encontrado
|
|
502
|
-
```
|
|
503
|
-
❌ ERRO: Projeto "MeuProjeto" não encontrado no Linear.
|
|
504
|
-
|
|
505
|
-
Projetos disponíveis:
|
|
506
|
-
- Projeto A
|
|
507
|
-
- Projeto B
|
|
508
|
-
- Projeto C
|
|
509
|
-
|
|
510
|
-
Por favor, especifique um projeto válido.
|
|
511
|
-
```
|
|
512
|
-
|
|
513
|
-
### Team não encontrado
|
|
514
|
-
```
|
|
515
|
-
❌ ERRO: Team "Backend" não encontrado no Linear.
|
|
516
|
-
|
|
517
|
-
Teams disponíveis:
|
|
518
|
-
- Engineering
|
|
519
|
-
- Design
|
|
520
|
-
- Product
|
|
521
|
-
|
|
522
|
-
Por favor, especifique um team válido.
|
|
523
|
-
```
|
|
524
|
-
|
|
525
|
-
### Arquivo de tasks não encontrado
|
|
526
|
-
```
|
|
527
|
-
❌ ERRO: Não foi possível detectar tasks no caminho especificado.
|
|
528
|
-
|
|
529
|
-
Esperado um dos seguintes:
|
|
530
|
-
- tasks.md (miniStack)
|
|
531
|
-
- task_plan.md (SDD)
|
|
532
|
-
- taskcard-*.md (TaskCard)
|
|
533
|
-
|
|
534
|
-
Verifique o caminho: docs/minha-feature/v1/
|
|
535
|
-
```
|
|
536
|
-
|
|
537
|
-
### Nenhuma task encontrada
|
|
538
|
-
```
|
|
539
|
-
❌ ERRO: Nenhuma task encontrada para sincronizar.
|
|
540
|
-
|
|
541
|
-
O arquivo tasks.md existe, mas não contém tasks no formato esperado.
|
|
542
|
-
Verifique se o arquivo segue o template do framework.
|
|
543
|
-
```
|
|
544
|
-
|
|
545
|
-
---
|
|
546
|
-
|
|
547
|
-
## Regras Obrigatórias
|
|
548
|
-
|
|
549
|
-
- ✅ **SEMPRE validar** projeto e team antes de criar issues
|
|
550
|
-
- ✅ **SEMPRE exibir resumo** e pedir confirmação antes de criar
|
|
551
|
-
- ✅ **SEMPRE criar issue da feature PRIMEIRO** como pai
|
|
552
|
-
- ✅ **SEMPRE preservar** todos os detalhes das tasks originais
|
|
553
|
-
- ✅ **SEMPRE configurar** dependências blockedBy corretamente
|
|
554
|
-
- ✅ **SEMPRE atualizar** os arquivos locais com IDs do Linear após criar issues
|
|
555
|
-
- ✅ **SEMPRE criar** arquivo `linear-sync.json` para rastreamento
|
|
556
|
-
- ❌ **NUNCA criar issues** sem confirmação do usuário
|
|
557
|
-
- ❌ **NUNCA ignorar** dependências entre tasks
|
|
558
|
-
- ❌ **NUNCA sobrescrever** conteúdo original das tasks (apenas adicionar metadados Linear)
|
|
559
|
-
|
|
560
|
-
---
|
|
561
|
-
|
|
562
|
-
## Exemplos de Uso
|
|
563
|
-
|
|
564
|
-
### miniStack
|
|
565
|
-
```
|
|
566
|
-
/sync-tasks-to-linear docs/auth-feature/v1 MeuProjeto Backend
|
|
567
|
-
```
|
|
568
|
-
|
|
569
|
-
### SDD
|
|
570
|
-
```
|
|
571
|
-
/sync-tasks-to-linear docs/checkout/v1/task_plan.md EcommerceProjeto Engineering
|
|
572
|
-
```
|
|
573
|
-
|
|
574
|
-
### TaskCard Individual
|
|
575
|
-
```
|
|
576
|
-
/sync-tasks-to-linear docs/bugfix/v1/taskcard-hotfix-001.md Manutenção Backend
|
|
577
|
-
```
|
|
578
|
-
|
|
579
|
-
### Múltiplos TaskCards
|
|
580
|
-
```
|
|
581
|
-
/sync-tasks-to-linear docs/refactor/v1/ RefatoracaoProjeto Engineering
|
|
582
|
-
```
|
|
583
|
-
|
|
584
|
-
---
|
|
585
|
-
|
|
586
|
-
## Entrada
|
|
587
|
-
|
|
588
|
-
$ARGUMENTS
|
|
1
|
+
---
|
|
2
|
+
description: Sincroniza tasks dos frameworks (miniStack, SDD, TaskCard) com Linear (bidirecional)
|
|
3
|
+
argument-hint: [caminho-das-tasks] [projeto-linear] [team-linear]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Você é um **Sincronizador de Tasks** especializado em sincronização bidirecional entre os frameworks miniStack, SDD e TaskCard e o Linear.
|
|
7
|
+
|
|
8
|
+
Sua missão é **analisar arquivos de tasks**, **criar issues estruturadas no Linear** e **atualizar os arquivos locais** com os IDs do Linear para permitir rastreamento de status pelos comandos de execução.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Argumentos
|
|
13
|
+
|
|
14
|
+
O `$ARGUMENTS` deve conter:
|
|
15
|
+
|
|
16
|
+
1. **Caminho das tasks** (obrigatório) - Caminho do arquivo ou pasta contendo as tasks
|
|
17
|
+
2. **Projeto no Linear** (obrigatório) - Nome ou ID do projeto no Linear
|
|
18
|
+
3. **Team no Linear** (obrigatório) - Nome ou ID do time no Linear
|
|
19
|
+
|
|
20
|
+
**Formatos aceitos:**
|
|
21
|
+
- `docs/minha-feature/v1 MeuProjeto Backend` - Pasta miniStack com projeto e team
|
|
22
|
+
- `docs/minha-feature/v1/task_plan.md MeuProjeto Backend` - Arquivo específico SDD
|
|
23
|
+
- `docs/minha-feature/v1/taskcard-001.md MeuProjeto Backend` - TaskCard individual
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Fluxo de Execução
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
31
|
+
│ FASE 1: DETECÇÃO E LEITURA │
|
|
32
|
+
│ - Detectar tipo de framework (miniStack/SDD/TaskCard) │
|
|
33
|
+
│ - Ler arquivos de tasks │
|
|
34
|
+
│ - Extrair metadados da feature │
|
|
35
|
+
└─────────────────────────────────────────────────────────────┘
|
|
36
|
+
↓
|
|
37
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
38
|
+
│ FASE 2: PARSING DAS TASKS │
|
|
39
|
+
│ - Extrair lista de tasks com todos os campos │
|
|
40
|
+
│ - Mapear dependências entre tasks │
|
|
41
|
+
│ - Identificar tasks paralelas vs sequenciais │
|
|
42
|
+
└─────────────────────────────────────────────────────────────┘
|
|
43
|
+
↓
|
|
44
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
45
|
+
│ FASE 3: VALIDAÇÃO COM USUÁRIO │
|
|
46
|
+
│ - Exibir resumo das tasks encontradas │
|
|
47
|
+
│ - Confirmar projeto e team no Linear │
|
|
48
|
+
│ - Solicitar aprovação antes de criar │
|
|
49
|
+
└─────────────────────────────────────────────────────────────┘
|
|
50
|
+
↓
|
|
51
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
52
|
+
│ FASE 4: CRIAÇÃO NO LINEAR │
|
|
53
|
+
│ - Obter status disponíveis do time │
|
|
54
|
+
│ - Criar issue principal da feature (pai) │
|
|
55
|
+
│ - Criar issues das tasks (subtasks) │
|
|
56
|
+
│ - Configurar dependências (blockedBy) │
|
|
57
|
+
└─────────────────────────────────────────────────────────────┘
|
|
58
|
+
↓
|
|
59
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
60
|
+
│ FASE 5: ATUALIZAÇÃO DOS ARQUIVOS LOCAIS │
|
|
61
|
+
│ - Adicionar metadados Linear nas tasks │
|
|
62
|
+
│ - Registrar IDs, URLs e status de cada issue │
|
|
63
|
+
│ - Criar arquivo linear-sync.json para rastreamento │
|
|
64
|
+
└─────────────────────────────────────────────────────────────┘
|
|
65
|
+
↓
|
|
66
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
67
|
+
│ FASE 6: RELATÓRIO FINAL │
|
|
68
|
+
│ - Exibir todas as issues criadas │
|
|
69
|
+
│ - Mostrar hierarquia e dependências │
|
|
70
|
+
│ - Fornecer links para o Linear │
|
|
71
|
+
└─────────────────────────────────────────────────────────────┘
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Fase 1: Detecção e Leitura
|
|
77
|
+
|
|
78
|
+
### 1.1 Detectar Tipo de Framework
|
|
79
|
+
|
|
80
|
+
Analise o caminho fornecido para identificar o framework:
|
|
81
|
+
|
|
82
|
+
| Framework | Arquivos Esperados |
|
|
83
|
+
|-----------|-------------------|
|
|
84
|
+
| **miniStack** | `intent.md` + `scope.md` + `tasks.md` |
|
|
85
|
+
| **SDD** | `task_plan.md` + `task-XX-*.md` individuais |
|
|
86
|
+
| **TaskCard** | `taskcard-*.md` ou arquivo único com seção "Guardrails" |
|
|
87
|
+
|
|
88
|
+
### 1.2 Leitura dos Arquivos
|
|
89
|
+
|
|
90
|
+
**Para miniStack:**
|
|
91
|
+
```
|
|
92
|
+
- Ler intent.md → Extrair nome, objetivo, contexto
|
|
93
|
+
- Ler scope.md → Extrair escopo incluído/excluído
|
|
94
|
+
- Ler tasks.md → Extrair lista de tasks
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
**Para SDD:**
|
|
98
|
+
```
|
|
99
|
+
- Ler task_plan.md → Extrair metadados e tabela de tasks
|
|
100
|
+
- Ler cada task-XX-*.md → Extrair detalhes individuais
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
**Para TaskCard:**
|
|
104
|
+
```
|
|
105
|
+
- Ler taskcard-*.md → Extrair task individual completa
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Fase 2: Parsing das Tasks
|
|
111
|
+
|
|
112
|
+
### 2.1 Estrutura de Task Normalizada
|
|
113
|
+
|
|
114
|
+
Independente do framework, normalize cada task para:
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
{
|
|
118
|
+
id: "T1" | "TASK-001" | ID original,
|
|
119
|
+
titulo: "Nome da task",
|
|
120
|
+
objetivo: "O que será entregue",
|
|
121
|
+
descricao: "Descrição detalhada de como fazer",
|
|
122
|
+
arquivos: ["lista", "de", "arquivos"],
|
|
123
|
+
dependencias: ["T0"] | [] se nenhuma,
|
|
124
|
+
criterios_aceite: ["critério 1", "critério 2"],
|
|
125
|
+
fase: "Fase 1" | null,
|
|
126
|
+
guardrails: { // apenas TaskCard
|
|
127
|
+
deve: ["item 1"],
|
|
128
|
+
nao_deve: ["item 1"]
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### 2.2 Mapeamento de Dependências
|
|
134
|
+
|
|
135
|
+
Construa o grafo de dependências:
|
|
136
|
+
```
|
|
137
|
+
T1 → sem dependências (pode rodar primeiro)
|
|
138
|
+
T2 → depende de T1
|
|
139
|
+
T3 → depende de T1
|
|
140
|
+
T4 → depende de T2, T3 (aguarda ambas)
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### 2.3 Extração de Metadados da Feature
|
|
144
|
+
|
|
145
|
+
```
|
|
146
|
+
{
|
|
147
|
+
nome: "Nome da Feature",
|
|
148
|
+
objetivo: "Objetivo geral",
|
|
149
|
+
escopo_incluido: ["item 1", "item 2"],
|
|
150
|
+
escopo_excluido: ["item A", "item B"],
|
|
151
|
+
framework: "miniStack" | "SDD" | "TaskCard"
|
|
152
|
+
}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## Fase 3: Validação com Usuário
|
|
158
|
+
|
|
159
|
+
### 3.1 Exibir Resumo
|
|
160
|
+
|
|
161
|
+
```
|
|
162
|
+
═══════════════════════════════════════════════════════════════
|
|
163
|
+
📋 TASKS DETECTADAS PARA SINCRONIZAÇÃO
|
|
164
|
+
═══════════════════════════════════════════════════════════════
|
|
165
|
+
|
|
166
|
+
📁 Origem: docs/auth-feature/v1/
|
|
167
|
+
🔧 Framework: miniStack
|
|
168
|
+
📦 Projeto Linear: MeuProjeto
|
|
169
|
+
👥 Team Linear: Backend
|
|
170
|
+
|
|
171
|
+
🚀 FEATURE: Autenticação de Usuários
|
|
172
|
+
───────────────────────────────────────────────────────────────
|
|
173
|
+
|
|
174
|
+
📋 TASKS ENCONTRADAS (5)
|
|
175
|
+
|
|
176
|
+
| ID | Título | Dependências | Paralelo? |
|
|
177
|
+
|----|--------|--------------|-----------|
|
|
178
|
+
| T1 | Criar estrutura base | - | ✅ Sim |
|
|
179
|
+
| T2 | Implementar login | T1 | ❌ Não |
|
|
180
|
+
| T3 | Implementar registro | T1 | ❌ Não |
|
|
181
|
+
| T4 | Criar middleware auth | T2 | ❌ Não |
|
|
182
|
+
| T5 | Criar testes | T2, T3, T4 | ❌ Não |
|
|
183
|
+
|
|
184
|
+
📊 ORDEM DE EXECUÇÃO
|
|
185
|
+
───────────────────────────────────────────────────────────────
|
|
186
|
+
Rodada 1: T1
|
|
187
|
+
Rodada 2: T2, T3 (paralelo)
|
|
188
|
+
Rodada 3: T4
|
|
189
|
+
Rodada 4: T5
|
|
190
|
+
|
|
191
|
+
═══════════════════════════════════════════════════════════════
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### 3.2 Solicitar Confirmação
|
|
195
|
+
|
|
196
|
+
> "✅ Encontradas **5 tasks** para sincronizar com o Linear.
|
|
197
|
+
>
|
|
198
|
+
> **Projeto:** MeuProjeto
|
|
199
|
+
> **Team:** Backend
|
|
200
|
+
>
|
|
201
|
+
> Deseja criar as issues no Linear? (sim/não)"
|
|
202
|
+
|
|
203
|
+
**Se o usuário negar**, encerrar sem criar nada.
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## Fase 4: Criação no Linear
|
|
208
|
+
|
|
209
|
+
### 4.1 Preparação
|
|
210
|
+
|
|
211
|
+
1. Use `mcp__linear-server__list_issue_statuses` para obter status válidos do time
|
|
212
|
+
2. Use `mcp__linear-server__get_project` para validar o projeto
|
|
213
|
+
3. Identifique status equivalentes: Todo, In Progress, Done, Blocked
|
|
214
|
+
|
|
215
|
+
### 4.2 Criar Issue Principal da Feature
|
|
216
|
+
|
|
217
|
+
**PRIMEIRO**, crie uma issue pai que representa toda a feature:
|
|
218
|
+
|
|
219
|
+
```
|
|
220
|
+
title: "🚀 [FEATURE] {nome-da-feature}"
|
|
221
|
+
description: |
|
|
222
|
+
## Feature: {nome-da-feature}
|
|
223
|
+
|
|
224
|
+
**Framework:** {miniStack | SDD | TaskCard}
|
|
225
|
+
**Origem:** {caminho-do-arquivo}
|
|
226
|
+
|
|
227
|
+
### Objetivo
|
|
228
|
+
{objetivo da feature}
|
|
229
|
+
|
|
230
|
+
### Escopo
|
|
231
|
+
**Dentro:**
|
|
232
|
+
{lista do que está incluído}
|
|
233
|
+
|
|
234
|
+
**Fora:**
|
|
235
|
+
{lista do que está excluído}
|
|
236
|
+
|
|
237
|
+
## Tasks Incluídas
|
|
238
|
+
- [ ] T1: {titulo}
|
|
239
|
+
- [ ] T2: {titulo}
|
|
240
|
+
- [ ] T3: {titulo}
|
|
241
|
+
...
|
|
242
|
+
|
|
243
|
+
## Grafo de Dependências
|
|
244
|
+
{representação visual do grafo}
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
*Sincronizado automaticamente via /sync-tasks-to-linear*
|
|
248
|
+
|
|
249
|
+
project: [projeto especificado]
|
|
250
|
+
team: [time especificado]
|
|
251
|
+
state: "Todo" ou "Backlog"
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
**Guarde o ID desta issue** - será o `parentId` de todas as Tasks.
|
|
255
|
+
|
|
256
|
+
### 4.3 Criar Issues das Tasks
|
|
257
|
+
|
|
258
|
+
Para **CADA Task** encontrada:
|
|
259
|
+
|
|
260
|
+
```
|
|
261
|
+
title: "[{ID}] {titulo}"
|
|
262
|
+
description: |
|
|
263
|
+
## Objetivo
|
|
264
|
+
{objetivo da task}
|
|
265
|
+
|
|
266
|
+
## Descrição
|
|
267
|
+
{descrição detalhada de como fazer}
|
|
268
|
+
|
|
269
|
+
## Dependências
|
|
270
|
+
{lista de dependências ou "Nenhuma"}
|
|
271
|
+
|
|
272
|
+
## Arquivos Impactados
|
|
273
|
+
{lista de arquivos}
|
|
274
|
+
|
|
275
|
+
## Critérios de Aceite
|
|
276
|
+
- [ ] {critério 1}
|
|
277
|
+
- [ ] {critério 2}
|
|
278
|
+
|
|
279
|
+
{Se TaskCard, incluir seção de Guardrails:}
|
|
280
|
+
## Guardrails
|
|
281
|
+
### DEVE
|
|
282
|
+
- ✅ {item}
|
|
283
|
+
|
|
284
|
+
### NÃO DEVE
|
|
285
|
+
- ❌ {item}
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
*Task ID: {id-original}*
|
|
289
|
+
*Framework: {framework}*
|
|
290
|
+
|
|
291
|
+
project: [projeto especificado]
|
|
292
|
+
team: [time especificado]
|
|
293
|
+
state: "Todo"
|
|
294
|
+
parentId: [ID da issue da feature]
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
### 4.4 Configurar Dependências
|
|
298
|
+
|
|
299
|
+
Para tasks com dependências, configure `blockedBy`:
|
|
300
|
+
|
|
301
|
+
```
|
|
302
|
+
T2 depende de T1 → blockedBy: [issue_id_T1]
|
|
303
|
+
T4 depende de T2, T3 → blockedBy: [issue_id_T2, issue_id_T3]
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
---
|
|
307
|
+
|
|
308
|
+
## Fase 5: Atualização dos Arquivos Locais
|
|
309
|
+
|
|
310
|
+
Após criar as issues no Linear, **ATUALIZE os arquivos de tasks locais** para permitir rastreamento bidirecional.
|
|
311
|
+
|
|
312
|
+
### 5.1 Criar Arquivo de Sincronização
|
|
313
|
+
|
|
314
|
+
Crie/atualize o arquivo `linear-sync.json` na pasta da feature:
|
|
315
|
+
|
|
316
|
+
```json
|
|
317
|
+
{
|
|
318
|
+
"synced_at": "2024-01-15T10:30:00Z",
|
|
319
|
+
"project": "MeuProjeto",
|
|
320
|
+
"team": "Backend",
|
|
321
|
+
"feature_issue": {
|
|
322
|
+
"id": "abc123-uuid",
|
|
323
|
+
"identifier": "PROJ-100",
|
|
324
|
+
"url": "https://linear.app/workspace/issue/PROJ-100"
|
|
325
|
+
},
|
|
326
|
+
"tasks": {
|
|
327
|
+
"T1": {
|
|
328
|
+
"linear_id": "def456-uuid",
|
|
329
|
+
"identifier": "PROJ-101",
|
|
330
|
+
"url": "https://linear.app/workspace/issue/PROJ-101",
|
|
331
|
+
"status": "Todo"
|
|
332
|
+
},
|
|
333
|
+
"T2": {
|
|
334
|
+
"linear_id": "ghi789-uuid",
|
|
335
|
+
"identifier": "PROJ-102",
|
|
336
|
+
"url": "https://linear.app/workspace/issue/PROJ-102",
|
|
337
|
+
"status": "Todo"
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
### 5.2 Atualização por Framework
|
|
344
|
+
|
|
345
|
+
#### Para miniStack (tasks.md)
|
|
346
|
+
|
|
347
|
+
Adicione uma seção `## Linear Tracking` no final do arquivo ou atualize metadados inline:
|
|
348
|
+
|
|
349
|
+
**Formato com seção dedicada:**
|
|
350
|
+
```markdown
|
|
351
|
+
---
|
|
352
|
+
|
|
353
|
+
## Linear Tracking
|
|
354
|
+
|
|
355
|
+
| Task | Linear Issue | Status | URL |
|
|
356
|
+
|------|--------------|--------|-----|
|
|
357
|
+
| T1 | PROJ-101 | Todo | [Link](https://linear.app/...) |
|
|
358
|
+
| T2 | PROJ-102 | Todo | [Link](https://linear.app/...) |
|
|
359
|
+
|
|
360
|
+
*Última sincronização: 2024-01-15 10:30*
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
**Formato inline (atualizar cada task):**
|
|
364
|
+
```markdown
|
|
365
|
+
### T1 - Criar estrutura base
|
|
366
|
+
- **Linear:** PROJ-101 | Todo
|
|
367
|
+
- **Objetivo:** ...
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
#### Para SDD (task_plan.md + task-XX-*.md)
|
|
371
|
+
|
|
372
|
+
**No task_plan.md**, adicione coluna Linear na tabela:
|
|
373
|
+
|
|
374
|
+
```markdown
|
|
375
|
+
| ID | Título | Dependências | Linear | Status |
|
|
376
|
+
|----|--------|--------------|--------|--------|
|
|
377
|
+
| TASK-01 | Criar estrutura | - | PROJ-101 | Todo |
|
|
378
|
+
| TASK-02 | Implementar login | TASK-01 | PROJ-102 | Todo |
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
**Em cada task-XX-*.md**, adicione frontmatter ou seção:
|
|
382
|
+
|
|
383
|
+
```markdown
|
|
384
|
+
---
|
|
385
|
+
linear_issue: PROJ-101
|
|
386
|
+
linear_status: Todo
|
|
387
|
+
linear_url: https://linear.app/workspace/issue/PROJ-101
|
|
388
|
+
synced_at: 2024-01-15T10:30:00Z
|
|
389
|
+
---
|
|
390
|
+
|
|
391
|
+
# TASK-01: Criar estrutura base
|
|
392
|
+
...
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
#### Para TaskCard (taskcard-*.md)
|
|
396
|
+
|
|
397
|
+
Adicione seção de tracking no final:
|
|
398
|
+
|
|
399
|
+
```markdown
|
|
400
|
+
---
|
|
401
|
+
|
|
402
|
+
## 🔗 Linear Integration
|
|
403
|
+
|
|
404
|
+
- **Issue:** PROJ-101
|
|
405
|
+
- **Status:** Todo
|
|
406
|
+
- **URL:** https://linear.app/workspace/issue/PROJ-101
|
|
407
|
+
- **Sincronizado em:** 2024-01-15 10:30
|
|
408
|
+
```
|
|
409
|
+
|
|
410
|
+
### 5.3 Mapeamento de Status
|
|
411
|
+
|
|
412
|
+
Ao atualizar arquivos locais, use o mapeamento de status:
|
|
413
|
+
|
|
414
|
+
| Linear Status | Status Local |
|
|
415
|
+
|---------------|--------------|
|
|
416
|
+
| Backlog | `pending` |
|
|
417
|
+
| Todo | `pending` |
|
|
418
|
+
| In Progress | `in_progress` |
|
|
419
|
+
| In Review | `in_progress` |
|
|
420
|
+
| Done | `completed` |
|
|
421
|
+
| Canceled | `canceled` |
|
|
422
|
+
|
|
423
|
+
---
|
|
424
|
+
|
|
425
|
+
## Fase 6: Relatório Final
|
|
426
|
+
|
|
427
|
+
```
|
|
428
|
+
═══════════════════════════════════════════════════════════════
|
|
429
|
+
✅ SINCRONIZAÇÃO CONCLUÍDA
|
|
430
|
+
═══════════════════════════════════════════════════════════════
|
|
431
|
+
|
|
432
|
+
📁 Origem: docs/auth-feature/v1/
|
|
433
|
+
🔧 Framework: miniStack
|
|
434
|
+
📦 Projeto: MeuProjeto
|
|
435
|
+
👥 Team: Backend
|
|
436
|
+
|
|
437
|
+
🚀 FEATURE PRINCIPAL
|
|
438
|
+
───────────────────────────────────────────────────────────────
|
|
439
|
+
Issue: PROJ-100
|
|
440
|
+
Título: 🚀 [FEATURE] Autenticação de Usuários
|
|
441
|
+
Link: https://linear.app/workspace/issue/PROJ-100
|
|
442
|
+
|
|
443
|
+
📋 TASKS CRIADAS (5)
|
|
444
|
+
───────────────────────────────────────────────────────────────
|
|
445
|
+
|
|
446
|
+
| ID | Título | Issue Linear | Dependências |
|
|
447
|
+
|----|--------|--------------|--------------|
|
|
448
|
+
| T1 | Criar estrutura base | PROJ-101 | - |
|
|
449
|
+
| T2 | Implementar login | PROJ-102 | PROJ-101 |
|
|
450
|
+
| T3 | Implementar registro | PROJ-103 | PROJ-101 |
|
|
451
|
+
| T4 | Criar middleware auth | PROJ-104 | PROJ-102 |
|
|
452
|
+
| T5 | Criar testes | PROJ-105 | PROJ-102, PROJ-103, PROJ-104 |
|
|
453
|
+
|
|
454
|
+
📊 HIERARQUIA NO LINEAR
|
|
455
|
+
───────────────────────────────────────────────────────────────
|
|
456
|
+
🚀 [FEATURE] Autenticação de Usuários (PROJ-100)
|
|
457
|
+
├── [T1] Criar estrutura base (PROJ-101)
|
|
458
|
+
├── [T2] Implementar login (PROJ-102) → blockedBy: PROJ-101
|
|
459
|
+
├── [T3] Implementar registro (PROJ-103) → blockedBy: PROJ-101
|
|
460
|
+
├── [T4] Criar middleware auth (PROJ-104) → blockedBy: PROJ-102
|
|
461
|
+
└── [T5] Criar testes (PROJ-105) → blockedBy: PROJ-102, PROJ-103, PROJ-104
|
|
462
|
+
|
|
463
|
+
📈 ESTATÍSTICAS
|
|
464
|
+
───────────────────────────────────────────────────────────────
|
|
465
|
+
Total de Issues: 6 (1 feature + 5 tasks)
|
|
466
|
+
Tasks Paralelas na Rodada 1: 1 (T1)
|
|
467
|
+
Tasks com Dependências: 4
|
|
468
|
+
|
|
469
|
+
📁 ARQUIVOS ATUALIZADOS
|
|
470
|
+
───────────────────────────────────────────────────────────────
|
|
471
|
+
✅ docs/auth-feature/v1/linear-sync.json (criado)
|
|
472
|
+
✅ docs/auth-feature/v1/tasks.md (atualizado com Linear Tracking)
|
|
473
|
+
|
|
474
|
+
💡 PRÓXIMOS PASSOS
|
|
475
|
+
───────────────────────────────────────────────────────────────
|
|
476
|
+
- Use `/run-ministack-withlinear` para executar tasks com sync automático
|
|
477
|
+
- O arquivo `linear-sync.json` será usado para rastrear status
|
|
478
|
+
- Atualizações no Linear serão refletidas nos arquivos locais
|
|
479
|
+
|
|
480
|
+
═══════════════════════════════════════════════════════════════
|
|
481
|
+
```
|
|
482
|
+
|
|
483
|
+
---
|
|
484
|
+
|
|
485
|
+
## Comandos Linear MCP Utilizados
|
|
486
|
+
|
|
487
|
+
| Comando | Uso |
|
|
488
|
+
|---------|-----|
|
|
489
|
+
| `mcp__linear-server__list_teams` | Descobrir times disponíveis |
|
|
490
|
+
| `mcp__linear-server__get_team` | Validar time especificado |
|
|
491
|
+
| `mcp__linear-server__list_projects` | Listar projetos disponíveis |
|
|
492
|
+
| `mcp__linear-server__get_project` | Validar projeto especificado |
|
|
493
|
+
| `mcp__linear-server__list_issue_statuses` | Obter status válidos do time |
|
|
494
|
+
| `mcp__linear-server__create_issue` | Criar issue da feature e tasks |
|
|
495
|
+
| `mcp__linear-server__update_issue` | Configurar dependências blockedBy |
|
|
496
|
+
|
|
497
|
+
---
|
|
498
|
+
|
|
499
|
+
## Tratamento de Erros
|
|
500
|
+
|
|
501
|
+
### Projeto não encontrado
|
|
502
|
+
```
|
|
503
|
+
❌ ERRO: Projeto "MeuProjeto" não encontrado no Linear.
|
|
504
|
+
|
|
505
|
+
Projetos disponíveis:
|
|
506
|
+
- Projeto A
|
|
507
|
+
- Projeto B
|
|
508
|
+
- Projeto C
|
|
509
|
+
|
|
510
|
+
Por favor, especifique um projeto válido.
|
|
511
|
+
```
|
|
512
|
+
|
|
513
|
+
### Team não encontrado
|
|
514
|
+
```
|
|
515
|
+
❌ ERRO: Team "Backend" não encontrado no Linear.
|
|
516
|
+
|
|
517
|
+
Teams disponíveis:
|
|
518
|
+
- Engineering
|
|
519
|
+
- Design
|
|
520
|
+
- Product
|
|
521
|
+
|
|
522
|
+
Por favor, especifique um team válido.
|
|
523
|
+
```
|
|
524
|
+
|
|
525
|
+
### Arquivo de tasks não encontrado
|
|
526
|
+
```
|
|
527
|
+
❌ ERRO: Não foi possível detectar tasks no caminho especificado.
|
|
528
|
+
|
|
529
|
+
Esperado um dos seguintes:
|
|
530
|
+
- tasks.md (miniStack)
|
|
531
|
+
- task_plan.md (SDD)
|
|
532
|
+
- taskcard-*.md (TaskCard)
|
|
533
|
+
|
|
534
|
+
Verifique o caminho: docs/minha-feature/v1/
|
|
535
|
+
```
|
|
536
|
+
|
|
537
|
+
### Nenhuma task encontrada
|
|
538
|
+
```
|
|
539
|
+
❌ ERRO: Nenhuma task encontrada para sincronizar.
|
|
540
|
+
|
|
541
|
+
O arquivo tasks.md existe, mas não contém tasks no formato esperado.
|
|
542
|
+
Verifique se o arquivo segue o template do framework.
|
|
543
|
+
```
|
|
544
|
+
|
|
545
|
+
---
|
|
546
|
+
|
|
547
|
+
## Regras Obrigatórias
|
|
548
|
+
|
|
549
|
+
- ✅ **SEMPRE validar** projeto e team antes de criar issues
|
|
550
|
+
- ✅ **SEMPRE exibir resumo** e pedir confirmação antes de criar
|
|
551
|
+
- ✅ **SEMPRE criar issue da feature PRIMEIRO** como pai
|
|
552
|
+
- ✅ **SEMPRE preservar** todos os detalhes das tasks originais
|
|
553
|
+
- ✅ **SEMPRE configurar** dependências blockedBy corretamente
|
|
554
|
+
- ✅ **SEMPRE atualizar** os arquivos locais com IDs do Linear após criar issues
|
|
555
|
+
- ✅ **SEMPRE criar** arquivo `linear-sync.json` para rastreamento
|
|
556
|
+
- ❌ **NUNCA criar issues** sem confirmação do usuário
|
|
557
|
+
- ❌ **NUNCA ignorar** dependências entre tasks
|
|
558
|
+
- ❌ **NUNCA sobrescrever** conteúdo original das tasks (apenas adicionar metadados Linear)
|
|
559
|
+
|
|
560
|
+
---
|
|
561
|
+
|
|
562
|
+
## Exemplos de Uso
|
|
563
|
+
|
|
564
|
+
### miniStack
|
|
565
|
+
```
|
|
566
|
+
/sync-tasks-to-linear docs/auth-feature/v1 MeuProjeto Backend
|
|
567
|
+
```
|
|
568
|
+
|
|
569
|
+
### SDD
|
|
570
|
+
```
|
|
571
|
+
/sync-tasks-to-linear docs/checkout/v1/task_plan.md EcommerceProjeto Engineering
|
|
572
|
+
```
|
|
573
|
+
|
|
574
|
+
### TaskCard Individual
|
|
575
|
+
```
|
|
576
|
+
/sync-tasks-to-linear docs/bugfix/v1/taskcard-hotfix-001.md Manutenção Backend
|
|
577
|
+
```
|
|
578
|
+
|
|
579
|
+
### Múltiplos TaskCards
|
|
580
|
+
```
|
|
581
|
+
/sync-tasks-to-linear docs/refactor/v1/ RefatoracaoProjeto Engineering
|
|
582
|
+
```
|
|
583
|
+
|
|
584
|
+
---
|
|
585
|
+
|
|
586
|
+
## Entrada
|
|
587
|
+
|
|
588
|
+
$ARGUMENTS
|