@qubiit/lmagent 2.5.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/.editorconfig +18 -0
- package/AGENTS.md +169 -0
- package/CLAUDE.md +122 -0
- package/CONTRIBUTING.md +90 -0
- package/LICENSE +21 -0
- package/README.md +195 -0
- package/config/commands.yaml +194 -0
- package/config/levels.yaml +135 -0
- package/config/models.yaml +192 -0
- package/config/settings.yaml +405 -0
- package/config/tools-extended.yaml +534 -0
- package/config/tools.yaml +437 -0
- package/docs/assets/logo.png +0 -0
- package/docs/commands.md +132 -0
- package/docs/customization-guide.md +445 -0
- package/docs/getting-started.md +154 -0
- package/docs/how-to-start.md +242 -0
- package/docs/navigation-index.md +227 -0
- package/docs/usage-guide.md +113 -0
- package/install.js +1044 -0
- package/package.json +35 -0
- package/pyproject.toml +182 -0
- package/rules/_bootstrap.md +138 -0
- package/rules/agents-ia.md +607 -0
- package/rules/api-design.md +337 -0
- package/rules/automations-n8n.md +646 -0
- package/rules/code-style.md +570 -0
- package/rules/documentation.md +98 -0
- package/rules/security.md +316 -0
- package/rules/stack.md +395 -0
- package/rules/testing.md +326 -0
- package/rules/workflow.md +353 -0
- package/scripts/create_skill.js +300 -0
- package/scripts/validate_skills.js +283 -0
- package/skills/ai-agent-engineer/SKILL.md +394 -0
- package/skills/ai-agent-engineer/references/agent-patterns.md +149 -0
- package/skills/api-designer/SKILL.md +429 -0
- package/skills/api-designer/references/api-standards.md +13 -0
- package/skills/architect/SKILL.md +285 -0
- package/skills/architect/references/c4-model.md +133 -0
- package/skills/automation-engineer/SKILL.md +352 -0
- package/skills/automation-engineer/references/n8n-patterns.md +127 -0
- package/skills/backend-engineer/SKILL.md +261 -0
- package/skills/backend-engineer/assets/fastapi-project-structure.yaml +74 -0
- package/skills/backend-engineer/references/debugging-guide.md +174 -0
- package/skills/backend-engineer/references/design-patterns.md +208 -0
- package/skills/backend-engineer/scripts/scaffold_backend.py +313 -0
- package/skills/bmad-methodology/SKILL.md +202 -0
- package/skills/bmad-methodology/references/scale-adaptive-levels.md +141 -0
- package/skills/browser-agent/SKILL.md +502 -0
- package/skills/browser-agent/scripts/playwright_setup.ts +16 -0
- package/skills/code-reviewer/SKILL.md +306 -0
- package/skills/code-reviewer/references/code-review-checklist.md +16 -0
- package/skills/data-engineer/SKILL.md +474 -0
- package/skills/data-engineer/assets/pg-monitoring-queries.sql +154 -0
- package/skills/data-engineer/references/index-strategy.md +128 -0
- package/skills/data-engineer/scripts/backup_postgres.py +221 -0
- package/skills/devops-engineer/SKILL.md +547 -0
- package/skills/devops-engineer/references/ci-cd-patterns.md +265 -0
- package/skills/devops-engineer/scripts/docker_healthcheck.py +125 -0
- package/skills/document-generator/SKILL.md +746 -0
- package/skills/document-generator/references/pdf-generation.md +22 -0
- package/skills/frontend-engineer/SKILL.md +532 -0
- package/skills/frontend-engineer/references/accessibility-guide.md +146 -0
- package/skills/frontend-engineer/scripts/audit_bundle.py +144 -0
- package/skills/git-workflow/SKILL.md +374 -0
- package/skills/git-workflow/references/git-flow.md +25 -0
- package/skills/mcp-builder/SKILL.md +471 -0
- package/skills/mcp-builder/references/mcp-server-guide.md +23 -0
- package/skills/mobile-engineer/SKILL.md +502 -0
- package/skills/mobile-engineer/references/platform-guidelines.md +160 -0
- package/skills/orchestrator/SKILL.md +246 -0
- package/skills/orchestrator/references/methodology-routing.md +117 -0
- package/skills/orchestrator/references/persona-mapping.md +85 -0
- package/skills/orchestrator/references/routing-logic.md +110 -0
- package/skills/performance-engineer/SKILL.md +549 -0
- package/skills/performance-engineer/references/caching-patterns.md +181 -0
- package/skills/performance-engineer/scripts/profile_endpoint.py +170 -0
- package/skills/product-manager/SKILL.md +488 -0
- package/skills/product-manager/references/prioritization-frameworks.md +126 -0
- package/skills/prompt-engineer/SKILL.md +433 -0
- package/skills/prompt-engineer/references/prompt-patterns.md +158 -0
- package/skills/qa-engineer/SKILL.md +441 -0
- package/skills/qa-engineer/references/testing-strategy.md +166 -0
- package/skills/qa-engineer/scripts/run_coverage.py +147 -0
- package/skills/scrum-master/SKILL.md +225 -0
- package/skills/scrum-master/references/sprint-ceremonies.md +159 -0
- package/skills/security-analyst/SKILL.md +390 -0
- package/skills/security-analyst/references/owasp-top10.md +188 -0
- package/skills/security-analyst/scripts/audit_security.py +242 -0
- package/skills/seo-auditor/SKILL.md +523 -0
- package/skills/seo-auditor/references/seo-checklist.md +17 -0
- package/skills/spec-driven-dev/SKILL.md +342 -0
- package/skills/spec-driven-dev/references/phase-gates.md +107 -0
- package/skills/supabase-expert/SKILL.md +602 -0
- package/skills/supabase-expert/references/supabase-patterns.md +19 -0
- package/skills/swe-agent/SKILL.md +311 -0
- package/skills/swe-agent/references/trajectory-format.md +134 -0
- package/skills/systematic-debugger/SKILL.md +512 -0
- package/skills/systematic-debugger/references/debugging-guide.md +12 -0
- package/skills/tech-lead/SKILL.md +409 -0
- package/skills/tech-lead/references/code-review-checklist.md +111 -0
- package/skills/technical-writer/SKILL.md +631 -0
- package/skills/technical-writer/references/doc-templates.md +218 -0
- package/skills/testing-strategist/SKILL.md +476 -0
- package/skills/testing-strategist/references/testing-pyramid.md +16 -0
- package/skills/ux-ui-designer/SKILL.md +419 -0
- package/skills/ux-ui-designer/references/design-system-foundation.md +168 -0
- package/skills_overview.txt +94 -0
- package/templates/PROJECT_KICKOFF.md +284 -0
- package/templates/SKILL_TEMPLATE.md +131 -0
- package/templates/USAGE.md +95 -0
- package/templates/agent-python/README.md +71 -0
- package/templates/agent-python/agent.py +272 -0
- package/templates/agent-python/config.yaml +76 -0
- package/templates/agent-python/prompts/system.md +109 -0
- package/templates/agent-python/requirements.txt +7 -0
- package/templates/automation-n8n/README.md +14 -0
- package/templates/automation-n8n/webhook-handler.json +57 -0
- package/templates/backend-node/Dockerfile +12 -0
- package/templates/backend-node/README.md +15 -0
- package/templates/backend-node/package.json +30 -0
- package/templates/backend-node/src/index.ts +19 -0
- package/templates/backend-node/src/routes.ts +7 -0
- package/templates/backend-node/tsconfig.json +22 -0
- package/templates/backend-python/Dockerfile +11 -0
- package/templates/backend-python/README.md +78 -0
- package/templates/backend-python/app/core/config.py +12 -0
- package/templates/backend-python/app/core/database.py +12 -0
- package/templates/backend-python/app/main.py +17 -0
- package/templates/backend-python/app/routers/__init__.py +1 -0
- package/templates/backend-python/app/routers/health.py +7 -0
- package/templates/backend-python/requirements-dev.txt +6 -0
- package/templates/backend-python/requirements.txt +4 -0
- package/templates/backend-python/tests/test_health.py +9 -0
- package/templates/checkpoint.yaml +117 -0
- package/templates/database/README.md +474 -0
- package/templates/frontend-react/README.md +446 -0
- package/templates/plan.yaml +320 -0
- package/templates/session.yaml +125 -0
- package/templates/spec.yaml +229 -0
- package/templates/tasks.yaml +330 -0
- package/workflows/bugfix-backend.md +380 -0
- package/workflows/documentation.md +232 -0
- package/workflows/generate-prd.md +320 -0
- package/workflows/ideation.md +396 -0
- package/workflows/new-agent-ia.md +497 -0
- package/workflows/new-automation.md +374 -0
- package/workflows/new-feature.md +290 -0
- package/workflows/optimize-performance.md +373 -0
- package/workflows/resolve-github-issue.md +524 -0
- package/workflows/security-review.md +291 -0
- package/workflows/spec-driven.md +476 -0
- package/workflows/testing-strategy.md +296 -0
- package/workflows/third-party-integration.md +277 -0
|
@@ -0,0 +1,476 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Workflow completo de desarrollo SPEC DRIVEN (spec→plan→tasks→implement)
|
|
3
|
+
level: 2-4
|
|
4
|
+
personas: [pm, arch, dev, qa]
|
|
5
|
+
version: 3.0
|
|
6
|
+
type: workflow_spec
|
|
7
|
+
triggers:
|
|
8
|
+
- /spec
|
|
9
|
+
- /spec-driven
|
|
10
|
+
- /sdd
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# SPEC DRIVEN Development Workflow
|
|
14
|
+
|
|
15
|
+
> **LMAgent v3.0 - SPEC+LM Methodology**
|
|
16
|
+
>
|
|
17
|
+
> Este workflow implementa desarrollo guiado por especificaciones, donde la spec es la fuente de verdad y el código es derivado de ella.
|
|
18
|
+
|
|
19
|
+
## 🎯 Cuándo Usar Este Workflow
|
|
20
|
+
|
|
21
|
+
| Situación | Recomendación |
|
|
22
|
+
|-----------|---------------|
|
|
23
|
+
| Feature nueva compleja | ✅ Usar SPEC DRIVEN |
|
|
24
|
+
| Cambio de arquitectura | ✅ Usar SPEC DRIVEN |
|
|
25
|
+
| MVP de producto nuevo | ✅ Usar SPEC DRIVEN |
|
|
26
|
+
| Bug fix simple | ❌ Usar `/fix` workflow |
|
|
27
|
+
| Typo o config menor | ❌ Implementar directo |
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## 📊 Overview del Flujo
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
┌─────────────────────────────────────────────────────────────────────────────┐
|
|
35
|
+
│ SPEC DRIVEN DEVELOPMENT FLOW │
|
|
36
|
+
│ │
|
|
37
|
+
│ SPECIFY PLAN TASKS IMPLEMENT VERIFY │
|
|
38
|
+
│ ─────────► ─────────► ─────────► ─────────► ─────────► │
|
|
39
|
+
│ │
|
|
40
|
+
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
|
|
41
|
+
│ │spec.yaml │→ │plan.yaml │→ │tasks.yaml│→ │ CODE │→ │ TESTS │ │
|
|
42
|
+
│ │ │ │ │ │ │ │ │ │ │ │
|
|
43
|
+
│ │ WHAT │ │ HOW │ │ ACTIONS │ │ RESULT │ │ VALIDATE │ │
|
|
44
|
+
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
|
|
45
|
+
│ │
|
|
46
|
+
│ /pm /arch /dev /dev+/qa /qa │
|
|
47
|
+
│ writes designs breaks down implements validates │
|
|
48
|
+
│ │
|
|
49
|
+
└─────────────────────────────────────────────────────────────────────────────┘
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
```mermaid
|
|
53
|
+
graph LR
|
|
54
|
+
A[📝 SPECIFY<br>/pm] -->|spec.yaml| B[🏗️ PLAN<br>/arch]
|
|
55
|
+
B -->|plan.yaml| C[📋 TASKS<br>/dev]
|
|
56
|
+
C -->|tasks.yaml| D[💻 IMPLEMENT<br>/dev]
|
|
57
|
+
D --> E[✅ VERIFY<br>/qa]
|
|
58
|
+
E -->|Pass| F[🚀 DONE]
|
|
59
|
+
E -->|Fail| D
|
|
60
|
+
|
|
61
|
+
style A fill:#4CAF50,color:white
|
|
62
|
+
style B fill:#2196F3,color:white
|
|
63
|
+
style C fill:#FF9800,color:white
|
|
64
|
+
style D fill:#9C27B0,color:white
|
|
65
|
+
style E fill:#009688,color:white
|
|
66
|
+
style F fill:#4CAF50,color:white
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## 📝 Phase 1: SPECIFY (`/pm`)
|
|
72
|
+
|
|
73
|
+
**Objetivo**: Definir QUÉ construir y POR QUÉ.
|
|
74
|
+
|
|
75
|
+
### Activar Persona
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
/pm Crear especificación para [nombre del feature]
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Inputs Requeridos
|
|
82
|
+
|
|
83
|
+
Antes de iniciar, obtener del usuario:
|
|
84
|
+
|
|
85
|
+
1. **Problema a resolver**: ¿Qué dolor tiene el usuario?
|
|
86
|
+
2. **Usuario objetivo**: ¿Para quién es?
|
|
87
|
+
3. **Métricas de éxito**: ¿Cómo sabemos que funcionó?
|
|
88
|
+
4. **Restricciones**: ¿Deadline, presupuesto, tech stack?
|
|
89
|
+
|
|
90
|
+
### Crear spec.yaml
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
# Copiar template
|
|
94
|
+
cp templates/spec.yaml specs/[feature-name]/spec.yaml
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Secciones Críticas
|
|
98
|
+
|
|
99
|
+
| Sección | Importancia | Quién Revisa |
|
|
100
|
+
|---------|-------------|--------------|
|
|
101
|
+
| `problem_statement` | 🔴 Crítica | Product Owner |
|
|
102
|
+
| `solution.in_scope` | 🔴 Crítica | Tech Lead |
|
|
103
|
+
| `user_stories` | 🔴 Crítica | Todo el equipo |
|
|
104
|
+
| `success_metrics` | 🟡 Alta | Product Owner |
|
|
105
|
+
| `constraints` | 🟡 Alta | Architect |
|
|
106
|
+
| `risks` | 🟢 Media | Tech Lead |
|
|
107
|
+
|
|
108
|
+
### Definition of Done - Specify
|
|
109
|
+
|
|
110
|
+
- [ ] `spec.yaml` creado con todas las secciones completas
|
|
111
|
+
- [ ] Problem statement validado con datos/evidencia
|
|
112
|
+
- [ ] User stories con acceptance criteria claros
|
|
113
|
+
- [ ] Success metrics definidas y medibles
|
|
114
|
+
- [ ] Stakeholders notificados
|
|
115
|
+
- [ ] **Status cambiado a `review`**
|
|
116
|
+
|
|
117
|
+
### Checkpoint: Aprobación de Spec
|
|
118
|
+
|
|
119
|
+
```markdown
|
|
120
|
+
**Handoff: /pm → /arch**
|
|
121
|
+
|
|
122
|
+
📄 **Artefacto**: specs/[feature-name]/spec.yaml
|
|
123
|
+
📊 **Status**: review
|
|
124
|
+
📋 **Siguiente Paso**: Diseñar arquitectura e implementación
|
|
125
|
+
✅ **Criterio de Éxito**: plan.yaml aprobado
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## 🏗️ Phase 2: PLAN (`/arch`)
|
|
131
|
+
|
|
132
|
+
**Objetivo**: Definir CÓMO construir la solución.
|
|
133
|
+
|
|
134
|
+
### Activar Persona
|
|
135
|
+
|
|
136
|
+
```
|
|
137
|
+
/arch Diseñar plan de implementación para specs/[feature-name]/spec.yaml
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### Prerrequisitos
|
|
141
|
+
|
|
142
|
+
- [x] `spec.yaml` en status `approved`
|
|
143
|
+
- [x] Dependencias técnicas identificadas
|
|
144
|
+
- [x] Recursos disponibles confirmados
|
|
145
|
+
|
|
146
|
+
### Crear plan.yaml
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
# Usar spec aprobada
|
|
150
|
+
cp templates/plan.yaml specs/[feature-name]/plan.yaml
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Decisiones de Arquitectura (ADRs)
|
|
154
|
+
|
|
155
|
+
Para cada decisión significativa, documentar:
|
|
156
|
+
|
|
157
|
+
```yaml
|
|
158
|
+
decisions:
|
|
159
|
+
- id: "ADR-001"
|
|
160
|
+
title: "[Título de la decisión]"
|
|
161
|
+
status: proposed
|
|
162
|
+
context: "[Por qué esta decisión es necesaria]"
|
|
163
|
+
decision: "[Qué se decidió]"
|
|
164
|
+
consequences:
|
|
165
|
+
positive: ["[Beneficios]"]
|
|
166
|
+
negative: ["[Trade-offs]"]
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Definir Fases
|
|
170
|
+
|
|
171
|
+
| Fase | Contenido | Persona |
|
|
172
|
+
|------|-----------|---------|
|
|
173
|
+
| 1. Foundation | Setup, DB, configs | `/dev` |
|
|
174
|
+
| 2. Core Logic | Business logic | `/dev` |
|
|
175
|
+
| 3. API Layer | Endpoints, auth | `/dev` |
|
|
176
|
+
| 4. Integration | E2E, polish | `/dev` + `/qa` |
|
|
177
|
+
|
|
178
|
+
### Identificar Paralelismo
|
|
179
|
+
|
|
180
|
+
```yaml
|
|
181
|
+
parallel_execution:
|
|
182
|
+
enabled: true
|
|
183
|
+
groups:
|
|
184
|
+
- phase: 3
|
|
185
|
+
parallel_tasks:
|
|
186
|
+
group_a:
|
|
187
|
+
tasks: ["API endpoints"]
|
|
188
|
+
group_b:
|
|
189
|
+
tasks: ["Auth middleware"]
|
|
190
|
+
can_run_with: ["group_a"]
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### Definition of Done - Plan
|
|
194
|
+
|
|
195
|
+
- [ ] `plan.yaml` creado con todas las fases
|
|
196
|
+
- [ ] ADRs documentados para decisiones clave
|
|
197
|
+
- [ ] Dependencias mapeadas
|
|
198
|
+
- [ ] Rollback plan definido
|
|
199
|
+
- [ ] Security considerations documentadas
|
|
200
|
+
- [ ] Resource estimates completados
|
|
201
|
+
- [ ] **Status cambiado a `review`**
|
|
202
|
+
|
|
203
|
+
### Checkpoint: Aprobación de Plan
|
|
204
|
+
|
|
205
|
+
```markdown
|
|
206
|
+
**Handoff: /arch → /dev**
|
|
207
|
+
|
|
208
|
+
📄 **Artefactos**:
|
|
209
|
+
- specs/[feature-name]/spec.yaml (approved)
|
|
210
|
+
- specs/[feature-name]/plan.yaml (approved)
|
|
211
|
+
📋 **Siguiente Paso**: Desglosar en tasks ejecutables
|
|
212
|
+
✅ **Criterio de Éxito**: Todas las tasks completadas
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## 📋 Phase 3: TASKS (`/dev`)
|
|
218
|
+
|
|
219
|
+
**Objetivo**: Desglosar el plan en tareas ejecutables.
|
|
220
|
+
|
|
221
|
+
### Activar Persona
|
|
222
|
+
|
|
223
|
+
```
|
|
224
|
+
/dev Crear tasks para specs/[feature-name]/plan.yaml
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### Crear tasks.yaml
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
cp templates/tasks.yaml specs/[feature-name]/tasks.yaml
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### Reglas para Tasks
|
|
234
|
+
|
|
235
|
+
| Regla | Descripción |
|
|
236
|
+
|-------|-------------|
|
|
237
|
+
| **Atómica** | Una task = una acción completa |
|
|
238
|
+
| **Estimable** | Máximo 4 horas por task |
|
|
239
|
+
| **Testeable** | Cada task tiene criterio de aceptación |
|
|
240
|
+
| **Independiente** | Mínimas dependencias posibles |
|
|
241
|
+
|
|
242
|
+
### Estructura de Task
|
|
243
|
+
|
|
244
|
+
```yaml
|
|
245
|
+
- id: "T001"
|
|
246
|
+
title: "[Título descriptivo]"
|
|
247
|
+
description: "[Detalles de implementación]"
|
|
248
|
+
persona: "/dev"
|
|
249
|
+
estimated_hours: 2.0
|
|
250
|
+
file_operations:
|
|
251
|
+
create: ["path/to/new/file.py"]
|
|
252
|
+
modify: ["path/to/existing/file.py"]
|
|
253
|
+
dependencies: []
|
|
254
|
+
blocks: ["T002"]
|
|
255
|
+
acceptance_criteria:
|
|
256
|
+
- "[ ] [Criterio 1]"
|
|
257
|
+
- "[ ] [Criterio 2]"
|
|
258
|
+
commands:
|
|
259
|
+
validate: ["pytest tests/ -v"]
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
### Definition of Done - Tasks
|
|
263
|
+
|
|
264
|
+
- [ ] Todas las tasks definidas
|
|
265
|
+
- [ ] Dependencias mapeadas correctamente
|
|
266
|
+
- [ ] Estimaciones razonables (<4h por task)
|
|
267
|
+
- [ ] Acceptance criteria claros
|
|
268
|
+
- [ ] Parallel groups identificados
|
|
269
|
+
|
|
270
|
+
---
|
|
271
|
+
|
|
272
|
+
## 💻 Phase 4: IMPLEMENT (`/dev`)
|
|
273
|
+
|
|
274
|
+
**Objetivo**: Ejecutar las tasks y producir código.
|
|
275
|
+
|
|
276
|
+
### Activar Persona
|
|
277
|
+
|
|
278
|
+
```
|
|
279
|
+
/dev Implementar task T001 de specs/[feature-name]/tasks.yaml
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
### Proceso de Implementación
|
|
283
|
+
|
|
284
|
+
```mermaid
|
|
285
|
+
graph TD
|
|
286
|
+
A[Seleccionar Task] --> B{¿Dependencias<br>completadas?}
|
|
287
|
+
B -->|No| C[Esperar o<br>cambiar task]
|
|
288
|
+
B -->|Sí| D[Implementar]
|
|
289
|
+
D --> E[Ejecutar tests]
|
|
290
|
+
E --> F{¿Tests pasan?}
|
|
291
|
+
F -->|No| D
|
|
292
|
+
F -->|Sí| G[Marcar completa]
|
|
293
|
+
G --> H{¿Más tasks?}
|
|
294
|
+
H -->|Sí| A
|
|
295
|
+
H -->|No| I[Proceed to Verify]
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
### TDD Approach (Recomendado)
|
|
299
|
+
|
|
300
|
+
```python
|
|
301
|
+
# 1. Escribir test primero
|
|
302
|
+
def test_create_entity():
|
|
303
|
+
# Given
|
|
304
|
+
data = {"name": "test"}
|
|
305
|
+
|
|
306
|
+
# When
|
|
307
|
+
result = service.create(data)
|
|
308
|
+
|
|
309
|
+
# Then
|
|
310
|
+
assert result.id is not None
|
|
311
|
+
assert result.name == "test"
|
|
312
|
+
|
|
313
|
+
# 2. Implementar hasta que pase
|
|
314
|
+
# 3. Refactorizar
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
### Actualizar tasks.yaml
|
|
318
|
+
|
|
319
|
+
```yaml
|
|
320
|
+
- id: "T001"
|
|
321
|
+
status: completed
|
|
322
|
+
started_at: "2026-01-23T10:00:00"
|
|
323
|
+
completed_at: "2026-01-23T12:30:00"
|
|
324
|
+
completed_by: "/dev agent"
|
|
325
|
+
actual_hours: 2.5
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
### Parallel Execution
|
|
329
|
+
|
|
330
|
+
Si hay tasks paralelas:
|
|
331
|
+
|
|
332
|
+
```
|
|
333
|
+
┌─────────────────────────────────────────┐
|
|
334
|
+
│ Parallel Group: Phase 3 │
|
|
335
|
+
│ │
|
|
336
|
+
│ Agent 1: T004 (API endpoints) │
|
|
337
|
+
│ Agent 2: T005 (Auth middleware) │
|
|
338
|
+
│ Agent 3: T006 (Documentation) │
|
|
339
|
+
│ │
|
|
340
|
+
│ ─────────── SINCRONIZAR ──────────── │
|
|
341
|
+
│ │
|
|
342
|
+
│ Continuar con Phase 4 │
|
|
343
|
+
└─────────────────────────────────────────┘
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
### Definition of Done - Implement
|
|
347
|
+
|
|
348
|
+
- [ ] Todas las tasks completadas
|
|
349
|
+
- [ ] Tests unitarios passing (>80% coverage)
|
|
350
|
+
- [ ] Tests de integración passing
|
|
351
|
+
- [ ] Linting sin errores
|
|
352
|
+
- [ ] Documentación actualizada
|
|
353
|
+
- [ ] Code review completado
|
|
354
|
+
|
|
355
|
+
---
|
|
356
|
+
|
|
357
|
+
## ✅ Phase 5: VERIFY (`/qa`)
|
|
358
|
+
|
|
359
|
+
**Objetivo**: Validar que la implementación cumple la spec.
|
|
360
|
+
|
|
361
|
+
### Activar Persona
|
|
362
|
+
|
|
363
|
+
```
|
|
364
|
+
/qa Verificar implementación contra specs/[feature-name]/spec.yaml
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
### Checklist de Verificación
|
|
368
|
+
|
|
369
|
+
#### Funcional
|
|
370
|
+
|
|
371
|
+
- [ ] Todos los acceptance criteria de user stories cumplidos
|
|
372
|
+
- [ ] Happy paths funcionan
|
|
373
|
+
- [ ] Error paths manejados correctamente
|
|
374
|
+
- [ ] Edge cases cubiertos
|
|
375
|
+
|
|
376
|
+
#### Técnico
|
|
377
|
+
|
|
378
|
+
- [ ] Tests passing (unit + integration + E2E)
|
|
379
|
+
- [ ] Coverage > 80%
|
|
380
|
+
- [ ] Performance dentro de límites
|
|
381
|
+
- [ ] Security scan pasado
|
|
382
|
+
|
|
383
|
+
#### Documentación
|
|
384
|
+
|
|
385
|
+
- [ ] API docs actualizados
|
|
386
|
+
- [ ] README actualizado
|
|
387
|
+
- [ ] Changelog actualizado
|
|
388
|
+
|
|
389
|
+
### Validación contra Spec
|
|
390
|
+
|
|
391
|
+
```python
|
|
392
|
+
# Script de validación automática
|
|
393
|
+
def validate_against_spec(spec_path, implementation):
|
|
394
|
+
spec = load_yaml(spec_path)
|
|
395
|
+
|
|
396
|
+
results = {
|
|
397
|
+
"passed": [],
|
|
398
|
+
"failed": []
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
for story in spec["user_stories"]:
|
|
402
|
+
for criterion in story["acceptance_criteria"]:
|
|
403
|
+
if test_criterion(criterion, implementation):
|
|
404
|
+
results["passed"].append(criterion)
|
|
405
|
+
else:
|
|
406
|
+
results["failed"].append(criterion)
|
|
407
|
+
|
|
408
|
+
return results
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
### Definition of Done - Verify
|
|
412
|
+
|
|
413
|
+
- [ ] 100% acceptance criteria verificados
|
|
414
|
+
- [ ] Tests passing
|
|
415
|
+
- [ ] Performance verificado
|
|
416
|
+
- [ ] Security verificado
|
|
417
|
+
- [ ] Stakeholder sign-off obtenido
|
|
418
|
+
|
|
419
|
+
---
|
|
420
|
+
|
|
421
|
+
## 🚀 Completion
|
|
422
|
+
|
|
423
|
+
### Marcar Spec como Completada
|
|
424
|
+
|
|
425
|
+
```yaml
|
|
426
|
+
# En spec.yaml
|
|
427
|
+
metadata:
|
|
428
|
+
status: completed
|
|
429
|
+
completed_at: "[YYYY-MM-DD]"
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
### Documentar Lecciones Aprendidas
|
|
433
|
+
|
|
434
|
+
```markdown
|
|
435
|
+
## Retrospectiva: [Feature Name]
|
|
436
|
+
|
|
437
|
+
### ¿Qué funcionó bien?
|
|
438
|
+
- [...]
|
|
439
|
+
|
|
440
|
+
### ¿Qué podría mejorar?
|
|
441
|
+
- [...]
|
|
442
|
+
|
|
443
|
+
### Métricas finales
|
|
444
|
+
- Tiempo estimado: X horas
|
|
445
|
+
- Tiempo real: Y horas
|
|
446
|
+
- Variación: Z%
|
|
447
|
+
```
|
|
448
|
+
|
|
449
|
+
---
|
|
450
|
+
|
|
451
|
+
## 🔧 Comandos Rápidos
|
|
452
|
+
|
|
453
|
+
| Comando | Acción |
|
|
454
|
+
|---------|--------|
|
|
455
|
+
| `/spec new [name]` | Crear nueva spec |
|
|
456
|
+
| `/spec plan [name]` | Crear plan desde spec |
|
|
457
|
+
| `/spec tasks [name]` | Crear tasks desde plan |
|
|
458
|
+
| `/spec status [name]` | Ver estado del feature |
|
|
459
|
+
| `/spec validate [name]` | Validar implementación |
|
|
460
|
+
|
|
461
|
+
---
|
|
462
|
+
|
|
463
|
+
## 📚 Referencias
|
|
464
|
+
|
|
465
|
+
- [spec.yaml template](../templates/spec.yaml)
|
|
466
|
+
- [plan.yaml template](../templates/plan.yaml)
|
|
467
|
+
- [tasks.yaml template](../templates/tasks.yaml)
|
|
468
|
+
- [Product Manager persona](../personas/product-manager.md)
|
|
469
|
+
- [Architect persona](../personas/architect.md)
|
|
470
|
+
- [Backend Engineer persona](../personas/backend-engineer.md)
|
|
471
|
+
- [QA Engineer persona](../personas/qa-engineer.md)
|
|
472
|
+
|
|
473
|
+
---
|
|
474
|
+
|
|
475
|
+
*Workflow version: 3.0 (SPEC+LM)*
|
|
476
|
+
*Compatible con: BMAD-METHOD + SWE-agent*
|