adi_dev_workflow 1.0.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 -0
- package/frameworks/commands/generate-prompt.md +98 -0
- package/frameworks/commands/ministack/README.md +151 -0
- package/frameworks/commands/ministack/code-review.md +67 -0
- package/frameworks/commands/ministack/generate-intent.md +20 -0
- package/frameworks/commands/ministack/generate-scope.md +37 -0
- package/frameworks/commands/ministack/generate-tasks.md +25 -0
- package/frameworks/commands/ministack/generate-tests.md +37 -0
- package/frameworks/commands/ministack/run-ministack-tasks.md +55 -0
- package/frameworks/commands/ministack/run-ministack-withlinear.md +94 -0
- package/frameworks/commands/sdd/code-review.md +499 -0
- package/frameworks/commands/sdd/generate-prd.md +23 -0
- package/frameworks/commands/sdd/generate-spec-tech.md +37 -0
- package/frameworks/commands/sdd/generate-task-plan.md +27 -0
- package/frameworks/commands/sdd/generate-tests.md +37 -0
- package/frameworks/commands/sdd/run_tasks.md +166 -0
- package/frameworks/commands/sdd/run_tasks_withlinear.md +519 -0
- package/frameworks/commands/sdd/validate-sdd.md +179 -0
- package/frameworks/commands/sync-tasks-to-linear.md +588 -0
- package/frameworks/commands/taskcard/generate-taskcard.md +25 -0
- package/frameworks/commands/taskcard/generate-tests.md +37 -0
- package/frameworks/commands/taskcard/run-taskcard.md +34 -0
- package/frameworks/skills/ministack-expert/SKILL.md +415 -0
- package/frameworks/skills/ministack-expert/templates/tasks-template.md +141 -0
- package/frameworks/skills/ministack-intent-expert/SKILL.md +160 -0
- package/frameworks/skills/ministack-intent-expert/templates/intent-template.md +45 -0
- package/frameworks/skills/ministack-qa-expert/SKILL.md +273 -0
- package/frameworks/skills/ministack-qa-expert/templates/task_tests_template.md +24 -0
- package/frameworks/skills/ministack-qa-expert/templates/test_strategy_template.md +75 -0
- package/frameworks/skills/ministack-scope-expert/SKILL.md +171 -0
- package/frameworks/skills/ministack-scope-expert/templates/scope-template.md +85 -0
- package/frameworks/skills/ministack-scope-expert/templates/tech_direction-template.md +17 -0
- package/frameworks/skills/sdd-prd-expert/SKILL.md +236 -0
- package/frameworks/skills/sdd-prd-expert/templates/prd_template.md +126 -0
- package/frameworks/skills/sdd-qa-expert/SKILL.md +284 -0
- package/frameworks/skills/sdd-qa-expert/templates/task_tests_template.md +24 -0
- package/frameworks/skills/sdd-qa-expert/templates/test_strategy_template.md +75 -0
- package/frameworks/skills/sdd-spec-tech-expert/SKILL.md +387 -0
- package/frameworks/skills/sdd-spec-tech-expert/templates/spec_tech_template.md +246 -0
- package/frameworks/skills/sdd-spec-tech-expert/templates/tech_direction-template.md +23 -0
- package/frameworks/skills/sdd-task-plan-expert/SKILL.md +353 -0
- package/frameworks/skills/sdd-task-plan-expert/templates/task_plan_template.md +83 -0
- package/frameworks/skills/sdd-task-plan-expert/templates/task_template.md +89 -0
- package/frameworks/skills/taskcard-expert/SKILL.md +308 -0
- package/frameworks/skills/taskcard-expert/templates/template.md +134 -0
- package/frameworks/skills/taskcard-qa-expert/SKILL.md +265 -0
- package/frameworks/skills/taskcard-qa-expert/templates/task_tests_template.md +78 -0
- package/frameworks/templates/prompt_template.md +164 -0
- package/package.json +28 -0
- package/src/cli.js +121 -0
- package/src/installer.js +136 -0
- package/src/transformer.js +86 -0
|
@@ -0,0 +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
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Gera uma TaskCard individual clara e executável para uma task específica
|
|
3
|
+
argument-hint: [contexto da tarefa ou Intent + Scope]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Seu papel: **Gerador de TaskCard**. Voce NAO executa — apenas gera o documento.
|
|
7
|
+
|
|
8
|
+
Carregue a skill **taskcard-expert** para obter o framework completo (template, regras, guardrails, convencoes).
|
|
9
|
+
Toda a inteligencia do framework esta centralizada nessa skill — siga-a integralmente.
|
|
10
|
+
|
|
11
|
+
## Instrucoes
|
|
12
|
+
|
|
13
|
+
1. Leia o contexto fornecido pelo usuario
|
|
14
|
+
2. Identifique lacunas — faca **uma pergunta por vez** ate ter tudo
|
|
15
|
+
- **Claude Code**: use a ferramenta `AskUserQuestion` para fazer as perguntas. Ofereça opcoes concretas baseadas na analise do codebase (o usuario sempre pode escolher "Other" para texto livre)
|
|
16
|
+
3. Preencha o **template oficial** (todas as 11 secoes) conforme a skill taskcard-expert
|
|
17
|
+
4. Salve imediatamente em `docs/<nome-feature>/task-<numero>-<slug>.md` — **NAO peca aprovacao antes de salvar**
|
|
18
|
+
5. Apresente um **resumo curto** do que foi criado (ID, nome, arquivos gerados, escopo resumido)
|
|
19
|
+
6. Se trabalho for grande, quebre em multiplas (gere apenas a primeira)
|
|
20
|
+
7. Se multiplas TaskCards, pergunte se quer gerar a proxima
|
|
21
|
+
8. Ao final de todas, ofereca criar `task-plan.md` com ordem e dependencias
|
|
22
|
+
|
|
23
|
+
## Entrada
|
|
24
|
+
|
|
25
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Gera/enriquece a secao 10 (Testes) de uma TaskCard com rigor de QA Senior / SDET
|
|
3
|
+
argument-hint: [caminho da TaskCard individual — ex: docs/feature/v1/task-01-slug.md]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Use a skill **taskcard-qa-expert** para gerar/enriquecer a secao 10 (Testes) da TaskCard.
|
|
7
|
+
|
|
8
|
+
## Contexto
|
|
9
|
+
|
|
10
|
+
Voce deve atuar como um **QA Engineer Senior / SDET** e seguir todo o processo definido na skill taskcard-qa-expert para gerar testes com qualidade profissional.
|
|
11
|
+
|
|
12
|
+
## Modo de Uso
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
/taskcard:generate-tests docs/nome-feature/v1/task-01-slug.md
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Gera a secao 10 completa da TaskCard (10.1 a 10.6):
|
|
19
|
+
- 10.1 Testes Existentes a Modificar
|
|
20
|
+
- 10.2 Testes a Criar (unitarios, integracao, e2e)
|
|
21
|
+
- 10.3 Cenarios Obrigatorios
|
|
22
|
+
- 10.4 Padroes de Teste
|
|
23
|
+
- 10.5 Cenarios de Erro
|
|
24
|
+
- 10.6 Rastreabilidade: Aceite Tecnico -> Testes
|
|
25
|
+
|
|
26
|
+
## Regras Adicionais
|
|
27
|
+
|
|
28
|
+
- **Claude Code**: use a ferramenta `AskUserQuestion` para esclarecer duvidas com o usuario
|
|
29
|
+
- **NUNCA** gere testes genericos — cada teste deve ter cenario especifico e verificavel
|
|
30
|
+
- **SEMPRE** pesquise padroes de teste existentes no projeto antes de gerar
|
|
31
|
+
- **SEMPRE** mapeie criterios de Aceite Tecnico (secao 9) para testes (secao 10.6)
|
|
32
|
+
- **SEMPRE** considere cenarios de erro, boundary values e edge cases
|
|
33
|
+
- Todo fluxo de sucesso deve ter **pelo menos 2 cenarios de falha** correspondentes
|
|
34
|
+
|
|
35
|
+
## Entrada
|
|
36
|
+
|
|
37
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Executa uma TaskCard aprovada com precisão seguindo guardrails definidos
|
|
3
|
+
argument-hint: [caminho da taskcard] [agente opcional ex: go-backend-implementer]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Seu papel: **Executor de TaskCard**. Execute com precisao, sem desvios ou reinterpretacao.
|
|
7
|
+
|
|
8
|
+
Carregue a skill **taskcard-expert** para obter o framework completo (template, regras, guardrails, convencoes).
|
|
9
|
+
Toda a inteligencia do framework esta centralizada nessa skill — siga-a integralmente.
|
|
10
|
+
|
|
11
|
+
## Argumentos
|
|
12
|
+
|
|
13
|
+
- `$0` — Caminho da TaskCard (obrigatorio)
|
|
14
|
+
- `$1` — Agente executor opcional (subagent_type para ferramenta Task)
|
|
15
|
+
|
|
16
|
+
Agentes disponiveis em `.claude/agents/`.
|
|
17
|
+
|
|
18
|
+
## Instrucoes
|
|
19
|
+
|
|
20
|
+
1. Leia a TaskCard completa no caminho `$0`
|
|
21
|
+
2. Leia os arquivos da secao 8.1 (existentes/referencia) para contexto
|
|
22
|
+
3. Valide secoes 3-9 preenchidas e dependencias satisfeitas
|
|
23
|
+
4. Execute os **Passos Sugeridos** (secao 7) na ordem
|
|
24
|
+
5. A cada passo, valide guardrails DEVE e NAO DEVE (secao 6)
|
|
25
|
+
6. Se guardrail for violado ou algo conflitar: **PARE e avise**
|
|
26
|
+
- **Claude Code**: use a ferramenta `AskUserQuestion` para apresentar o bloqueio e opcoes de resolucao ao usuario
|
|
27
|
+
7. Valide aceite tecnico (secao 9) ao final
|
|
28
|
+
8. Produza relatorio de execucao no formato padrao da skill
|
|
29
|
+
|
|
30
|
+
Se agente `$1` for especificado, delegue a execucao via ferramenta Task com `subagent_type: $1`.
|
|
31
|
+
|
|
32
|
+
## Entrada
|
|
33
|
+
|
|
34
|
+
$ARGUMENTS
|