@tacuchi/agent-workflow-cli 6.1.0 → 7.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/README.md +65 -12
- package/dist/application/profile/profile-service.d.ts +53 -0
- package/dist/application/profile/profile-service.d.ts.map +1 -0
- package/dist/application/profile/profile-service.js +210 -0
- package/dist/application/profile/profile-service.js.map +1 -0
- package/dist/application/render/history-row.d.ts.map +1 -1
- package/dist/application/render/history-row.js +5 -0
- package/dist/application/render/history-row.js.map +1 -1
- package/dist/application/self/bootstrap.js +2 -1
- package/dist/application/self/bootstrap.js.map +1 -1
- package/dist/application/self/detect-hosts.d.ts +18 -0
- package/dist/application/self/detect-hosts.d.ts.map +1 -0
- package/dist/application/self/detect-hosts.js +37 -0
- package/dist/application/self/detect-hosts.js.map +1 -0
- package/dist/application/self/install-hooks.d.ts +30 -0
- package/dist/application/self/install-hooks.d.ts.map +1 -0
- package/dist/application/self/install-hooks.js +253 -0
- package/dist/application/self/install-hooks.js.map +1 -0
- package/dist/application/self/install-skill.d.ts +2 -0
- package/dist/application/self/install-skill.d.ts.map +1 -1
- package/dist/application/self/install-skill.js +69 -3
- package/dist/application/self/install-skill.js.map +1 -1
- package/dist/application/session-close-service.d.ts +10 -0
- package/dist/application/session-close-service.d.ts.map +1 -1
- package/dist/application/session-close-service.js +87 -10
- package/dist/application/session-close-service.js.map +1 -1
- package/dist/cli/commands/self.d.ts.map +1 -1
- package/dist/cli/commands/self.js +9 -1
- package/dist/cli/commands/self.js.map +1 -1
- package/dist/cli/commands/session-close.d.ts.map +1 -1
- package/dist/cli/commands/session-close.js +11 -0
- package/dist/cli/commands/session-close.js.map +1 -1
- package/dist/cli/tui/tabs/skills-tab.d.ts.map +1 -1
- package/dist/cli/tui/tabs/skills-tab.js +100 -24
- package/dist/cli/tui/tabs/skills-tab.js.map +1 -1
- package/package.json +2 -2
- package/skills/agent-workflow/commands/README.md +24 -0
- package/skills/agent-workflow/commands/agent-workflow-compact.md +24 -0
- package/skills/agent-workflow/commands/agent-workflow-doctor.md +100 -0
- package/skills/agent-workflow/commands/agent-workflow-export-arq.md +77 -0
- package/skills/agent-workflow/commands/agent-workflow-export-conclusions.md +78 -0
- package/skills/agent-workflow/commands/agent-workflow-export-plan.md +74 -0
- package/skills/agent-workflow/commands/agent-workflow-export-qa-note.md +30 -0
- package/skills/agent-workflow/commands/agent-workflow-export-report.md +78 -0
- package/skills/agent-workflow/commands/agent-workflow-export-requirement.md +30 -0
- package/skills/agent-workflow/commands/agent-workflow-export-scripts.md +92 -0
- package/skills/agent-workflow/commands/agent-workflow-export-tech-manuals.md +75 -0
- package/skills/agent-workflow/commands/agent-workflow-export-tech-note.md +30 -0
- package/skills/agent-workflow/commands/agent-workflow-hub-init.md +82 -0
- package/skills/agent-workflow/commands/agent-workflow-migrate.md +56 -0
- package/skills/agent-workflow/commands/agent-workflow-project-init.md +60 -0
- package/skills/agent-workflow/commands/agent-workflow-resume.md +22 -0
- package/skills/agent-workflow/commands/agent-workflow-rules.md +40 -0
- package/skills/agent-workflow/commands/agent-workflow-session.md +35 -0
- package/skills/agent-workflow/doctrine/README.md +15 -0
- package/skills/agent-workflow/doctrine/compact/SKILL.md +145 -0
- package/skills/agent-workflow/doctrine/doctor/SKILL.md +86 -0
- package/skills/agent-workflow/doctrine/doctor/SKILL.md.tmp +0 -0
- package/skills/agent-workflow/doctrine/hub-init/SKILL.md +157 -0
- package/skills/agent-workflow/doctrine/hub-init/SKILL.md.tmp +0 -0
- package/skills/agent-workflow/doctrine/hub-init/references/multiroot-manual.md +51 -0
- package/skills/agent-workflow/doctrine/implement/SKILL.md +290 -0
- package/skills/agent-workflow/doctrine/implement/references/branch-verification.md +16 -0
- package/skills/agent-workflow/doctrine/implement/references/design-md-template.md +108 -0
- package/skills/agent-workflow/doctrine/implement/references/rollback-guide.md +81 -0
- package/skills/agent-workflow/doctrine/migrate/SKILL.md +281 -0
- package/skills/agent-workflow/doctrine/migrate/SKILL.md.tmp +0 -0
- package/skills/agent-workflow/doctrine/project-init/SKILL.md +100 -0
- package/skills/agent-workflow/doctrine/project-init/SKILL.md.tmp +0 -0
- package/skills/agent-workflow/doctrine/refactor/SKILL.md +208 -0
- package/skills/agent-workflow/doctrine/refactor/references/refactor-md-template.md +108 -0
- package/skills/agent-workflow/doctrine/refactor/references/strangler-checklist.md +116 -0
- package/skills/agent-workflow/doctrine/resume/SKILL.md +199 -0
- package/skills/agent-workflow/doctrine/rules/SKILL.md +224 -0
- package/skills/agent-workflow/doctrine/rules/SKILL.md.tmp +0 -0
- package/skills/agent-workflow/doctrine/session/SKILL.md +383 -0
- package/skills/agent-workflow/doctrine/session/references/auto-plan-rules.md +63 -0
- package/skills/agent-workflow/doctrine/session/references/backlog-template.md +95 -0
- package/skills/agent-workflow/doctrine/session/references/branch-verification.md +198 -0
- package/skills/agent-workflow/doctrine/session/references/commits-policy.md +111 -0
- package/skills/agent-workflow/doctrine/session/references/communication-style.md +50 -0
- package/skills/agent-workflow/doctrine/session/references/graduacion-routing.md +88 -0
- package/skills/agent-workflow/doctrine/session/references/lifecycle-deep.md +160 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/C1-specialty-selection.md +11 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/C2-cost-guard.md +14 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/M1-closure-commit-prompt.md +104 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/M10-next-step.md +17 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/M11-context.md +16 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/M2-branch-caso-A.md +14 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/M3-branch-caso-C.md +33 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/M4-cross-source-hard-gate.md +33 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/M5-modality-analyze.md +15 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/M6-phase-gate.md +31 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/M7-refactor-legacy-detected.md +28 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/M8-refactor-cleanup.md +16 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/M9-contract-review.md +39 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/S1-type-design.md +15 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/S2-topic-change-detection.md +14 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/S3-flow-detection.md +28 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/S4-resume.md +27 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/S5-post-compact.md +17 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/S6-scope.md +16 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/S7-design-review.md +37 -0
- package/skills/agent-workflow/doctrine/session/references/prompts-catalog.md +210 -0
- package/skills/agent-workflow/doctrine/session/references/sandbox-readonly-rules.md +82 -0
- package/skills/agent-workflow/doctrine/session/references/specialty-decision-tree.md +56 -0
- package/skills/agent-workflow/doctrine/session/references/topic-change-rules.md +67 -0
- package/skills/agent-workflow/exports/README.md +15 -0
- package/skills/agent-workflow/exports/export-arq/SKILL.md +229 -0
- package/skills/agent-workflow/exports/export-arq/SKILL.md.tmp +0 -0
- package/skills/agent-workflow/exports/export-arq/references/lexico-tecnico.md +94 -0
- package/skills/agent-workflow/exports/export-arq/references/template-c4.md +293 -0
- package/skills/agent-workflow/exports/export-arq/references/template-plantuml.puml +77 -0
- package/skills/agent-workflow/exports/export-arq/references/template-structurizr.dsl +72 -0
- package/skills/agent-workflow/exports/export-arq/references/validations.md +231 -0
- package/skills/agent-workflow/exports/export-conclusions/SKILL.md +169 -0
- package/skills/agent-workflow/exports/export-conclusions/references/dedup-rules.md +154 -0
- package/skills/agent-workflow/exports/export-conclusions/references/template-conclusions.md +158 -0
- package/skills/agent-workflow/exports/export-plan/SKILL.md +225 -0
- package/skills/agent-workflow/exports/export-plan/references/state-transitions.md +141 -0
- package/skills/agent-workflow/exports/export-plan/references/template-plan.md +132 -0
- package/skills/agent-workflow/exports/export-qa-note/SKILL.md +31 -0
- package/skills/agent-workflow/exports/export-report/SKILL.md +262 -0
- package/skills/agent-workflow/exports/export-report/SKILL.md.tmp +0 -0
- package/skills/agent-workflow/exports/export-report/references/lexico.md +174 -0
- package/skills/agent-workflow/exports/export-report/references/template-a.md +95 -0
- package/skills/agent-workflow/exports/export-report/references/template-b.md +221 -0
- package/skills/agent-workflow/exports/export-report/references/template-c.md +180 -0
- package/skills/agent-workflow/exports/export-report/references/validations.md +255 -0
- package/skills/agent-workflow/exports/export-requirement/SKILL.md +31 -0
- package/skills/agent-workflow/exports/export-scripts/SKILL.md +324 -0
- package/skills/agent-workflow/exports/export-scripts/references/code-scan-recommendations.md +83 -0
- package/skills/agent-workflow/exports/export-scripts/references/deprecation-plan.md +80 -0
- package/skills/agent-workflow/exports/export-scripts/references/lexico-tecnico.md +80 -0
- package/skills/agent-workflow/exports/export-scripts/references/manifest-template.md +253 -0
- package/skills/agent-workflow/exports/export-scripts/references/readme-template.md +79 -0
- package/skills/agent-workflow/exports/export-scripts/references/theme-handling.md +168 -0
- package/skills/agent-workflow/exports/export-scripts/references/validations.md +242 -0
- package/skills/agent-workflow/exports/export-tech-manuals/SKILL.md +214 -0
- package/skills/agent-workflow/exports/export-tech-manuals/references/lexico-tecnico.md +97 -0
- package/skills/agent-workflow/exports/export-tech-manuals/references/template-index.md +123 -0
- package/skills/agent-workflow/exports/export-tech-manuals/references/template-manual.md +143 -0
- package/skills/agent-workflow/exports/export-tech-manuals/references/validations.md +211 -0
- package/skills/agent-workflow/exports/export-tech-note/SKILL.md +31 -0
- package/skills/agent-workflow/hooks/README.md +15 -0
- package/skills/agent-workflow/hooks/hooks.template.json +90 -0
- package/skills/agent-workflow/references/README.md +12 -0
- package/skills/agent-workflow/references/legacy-anchors.md +50 -0
- package/skills/agent-workflow/references/profile-parametrization.md +88 -0
- package/skills/agent-workflow/specialties/README.md +14 -0
- package/skills/agent-workflow/specialties/analyze-conclude/SKILL.md +175 -0
- package/skills/agent-workflow/specialties/analyze-conclude/references/incident-classification.md +61 -0
- package/skills/agent-workflow/specialties/analyze-investigate/SKILL.md +148 -0
- package/skills/agent-workflow/specialties/analyze-investigate/SKILL.md.tmp +0 -0
- package/skills/agent-workflow/specialties/analyze-investigate/references/cost-guard.md +85 -0
- package/skills/agent-workflow/specialties/analyze-synthesize/SKILL.md +127 -0
- package/skills/agent-workflow/specialties/design-brief/SKILL.md +90 -0
- package/skills/agent-workflow/specialties/design-deliver/SKILL.md +121 -0
- package/skills/agent-workflow/specialties/design-develop/SKILL.md +115 -0
- package/skills/agent-workflow/specialties/design-discover/SKILL.md +103 -0
- package/skills/agent-workflow/standards/README.md +12 -0
- package/skills/agent-workflow/standards/coding-standards/SKILL.md +102 -0
- package/skills/agent-workflow/standards/coding-standards/SKILL.md.tmp +0 -0
- package/skills/agent-workflow/standards/coding-standards/references/angular-typescript.md +266 -0
- package/skills/agent-workflow/standards/coding-standards/references/database-conventions.md +170 -0
- package/skills/agent-workflow/standards/coding-standards/references/fe-be-integration.md +300 -0
- package/skills/agent-workflow/standards/coding-standards/references/frontend-structure.md +182 -0
- package/skills/agent-workflow/standards/coding-standards/references/java-spring.md +244 -0
- package/skills/agent-workflow/standards/coding-standards/references/project-structure.md +197 -0
- package/skills/agent-workflow/standards/frontend-design/SKILL.md +62 -0
- package/skills/agent-workflow/standards/frontend-design/references/feedback-toasts-patterns.md +249 -0
- package/skills/agent-workflow/standards/frontend-design/references/form-patterns.md +278 -0
- package/skills/agent-workflow/standards/frontend-design/references/list-patterns.md +256 -0
- package/skills/agent-workflow/standards/frontend-design/references/modal-patterns.md +220 -0
- package/skills/agent-workflow/standards/frontend-design/references/navigation-patterns.md +224 -0
- package/skills/agent-workflow/standards/redaccion-simple/SKILL.md +128 -0
- package/skills/agent-workflow/standards/sql-rollback-generator/SKILL.md +197 -0
- package/skills/agent-workflow/standards/sql-rollback-generator/references/irreversible-checklist.md +161 -0
- package/skills/agent-workflow/standards/sql-rollback-generator/references/release-rollback.md +131 -0
- package/skills/agent-workflow/standards/sql-rollback-generator/references/rollback-patterns.md +255 -0
- package/skills/agent-workflow/standards/sql-script-organizer/SKILL.md +244 -0
- package/skills/agent-workflow/standards/sql-script-organizer/references/bundle-readme-template.md +82 -0
- package/skills/agent-workflow/standards/sql-script-organizer/references/categorization-rules.md +122 -0
- package/skills/agent-workflow/standards/sql-script-organizer/references/consolidation-cross-session.md +125 -0
- package/skills/agent-workflow/standards/sql-script-organizer/references/scripts-sql-format.md +140 -0
- package/skills/agent-workflow/standards/testing-strategy/SKILL.md +113 -0
- package/skills/agent-workflow/standards/testing-strategy/references/test-levels.md +255 -0
- package/skills/agent-workflow/workflows/README.md +12 -0
- package/skills/agent-workflow/workflows/analyze-workflow/SKILL.md +107 -0
- package/skills/agent-workflow/workflows/design-workflow/SKILL.md +100 -0
- package/skills/agent-workflow/workflows/dev-workflow/SKILL.md +195 -0
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: implement
|
|
3
|
+
description: "Orquesta edits de código durante execution. Toma una tarea de TASKS.md, verifica rama, aplica cambio mínimo incremental, muestra diff, registra DECISIONS (legacy = DECISIONES) no obvias, marca tarea cerrada y repite. Detecta secciones `## Phase X — Y` en TASKS.md y dispara M6 entre phases (modo phased default-on para `## Type: feature|refactor`; alias bilingüe legacy `## Tipo`). v2.7+ extiende el modelo a Phase 0-5 (Mapeo+Contrato → Lecturas → Escritura → Validaciones → Seguridad placeholder → Optimizaciones). v2.8+ retira M9 (contract-review post-stub) — el gate de design review se materializa via DESIGN.md + S7 antes de Phase 0 desde `skills/session/SKILL.md`. Doctrina de bugfix compone con `superpowers:systematic-debugging` + test de regresión. Compone con coding-standards, sql-script-organizer, testing-strategy, frontend-design y refactor. Invocado por agent-workflow:session cuando el OBJECTIVE requiere editar código."
|
|
4
|
+
version: 2.2.1
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Implement — qtc v2.7+
|
|
8
|
+
|
|
9
|
+
Skill de especialidad **dev**: orquesta edits de código durante la fase `execution` del lifecycle universal.
|
|
10
|
+
|
|
11
|
+
## Cuándo se invoca
|
|
12
|
+
|
|
13
|
+
- **Composición desde `agent-workflow:session`** (lo más común): cuando la sesión entra a `execution` y el OBJECTIVE requiere editar código (default si no es analyze/design puro).
|
|
14
|
+
- **NL del usuario**: "implementá", "aplicá el cambio", "vamos a codear".
|
|
15
|
+
- **Slash explícito** (no canónico, opcional): `/agent-workflow:session` durante execution lo invoca.
|
|
16
|
+
|
|
17
|
+
NO se activa por sí solo fuera del lifecycle universal — siempre dentro de una sesión activa.
|
|
18
|
+
|
|
19
|
+
## Pre-requisitos
|
|
20
|
+
|
|
21
|
+
1. **Sesión activa** registrada en AW-PROJECT.Status.
|
|
22
|
+
2. **OBJECTIVE.md presente** y aprobado.
|
|
23
|
+
3. **TASKS.md presente** (al menos un item abierto). Si auto-plan declaró `skip`, tomar el OBJECTIVE como única tarea.
|
|
24
|
+
4. **Ramas verificadas**: ejecutar `agent-workflow sources`. Si alguna no coincide, aplicar `references/branch-verification.md` antes de cualquier Edit/Write.
|
|
25
|
+
|
|
26
|
+
## Modos de operación
|
|
27
|
+
|
|
28
|
+
`implement` opera en dos modos según TASKS.md:
|
|
29
|
+
|
|
30
|
+
| Modo | Detección | Comportamiento |
|
|
31
|
+
|---|---|---|
|
|
32
|
+
| **Flat** (default histórico, v1.x) | TASKS.md sin secciones `## Phase X — Y` (ni sinónimos) | Loop lineal sobre todas las tareas hasta cerrar todas. |
|
|
33
|
+
| **Phased** (v2.0+, default-on para `## Type: feature\|refactor`) | TASKS.md con ≥2 secciones `## (Phase\|Fase\|Sprint\|Etapa) X — Y` (ver §"Phased mode") | Loop por phase, gate M6 entre phases. DESIGN.md + S7 fueron disparados antes de Phase 0 desde planning closure (no aquí). |
|
|
34
|
+
|
|
35
|
+
El modo se detecta al iniciar el loop y al releer `TASKS.md` entre tareas (permite promoción mid-session). Phased se activa cuando OBJECTIVE declara `## Type: feature|refactor` (canónico) o `## Tipo: feature|refactor` (alias legacy ES). Default-on `feature` cuando no se declara — ver §"Resolución del `## Type`". Detalles en `agent-workflow:dev-workflow` §"Convención `## Type`".
|
|
36
|
+
|
|
37
|
+
## Loop de implementación (flat mode)
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
[take task] → [verify branch] → [minimal change]
|
|
41
|
+
↓
|
|
42
|
+
[show diff]
|
|
43
|
+
↓
|
|
44
|
+
[register DECISION if non-obvious]
|
|
45
|
+
↓
|
|
46
|
+
[mark task done]
|
|
47
|
+
↓
|
|
48
|
+
[next task or checkpoint]
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### 1. Tomar una tarea
|
|
52
|
+
|
|
53
|
+
Leer `TASKS.md` y elegir la primera tarea abierta (`- [ ] ...`). Si hay dependencias declaradas, respetarlas.
|
|
54
|
+
|
|
55
|
+
### 2. Verificar rama (cada vez)
|
|
56
|
+
|
|
57
|
+
Antes de cualquier Edit/Write/MultiEdit:
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
agent-workflow check-branch --file <path> --strict
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
El hook PreToolUse lo hace automático. Si falla → aplicar `references/branch-verification.md`.
|
|
64
|
+
|
|
65
|
+
### 3. Cambio mínimo necesario
|
|
66
|
+
|
|
67
|
+
- Diffs incrementales, nunca todo al final.
|
|
68
|
+
- Una preocupación por diff (separar refactor de feature).
|
|
69
|
+
- Respetar convenciones del stack — invocar **`coding-standards`** para revisar.
|
|
70
|
+
- Si es UI/formularios → invocar **`frontend-design`** para principios.
|
|
71
|
+
- Si es SQL → invocar **`sql-script-organizer`** desde el primer `.sql`. Aplicar el header canónico de 4 líneas (Script/Sesion/Objeto/Alcance), separadores simples y CTEs sobre `DO`/`LOOP` definidos ahí.
|
|
72
|
+
|
|
73
|
+
### 4. Mostrar diff al usuario
|
|
74
|
+
|
|
75
|
+
Diff breve (no el archivo completo). Si el cambio fue trivial y obvio, omitir.
|
|
76
|
+
|
|
77
|
+
### 5. Registrar DECISIONS.md (sólo lo no obvio)
|
|
78
|
+
|
|
79
|
+
```markdown
|
|
80
|
+
## DEC-NNN: <título corto>
|
|
81
|
+
|
|
82
|
+
Decisión: <qué se decidió>.
|
|
83
|
+
|
|
84
|
+
Por qué: <motivación + alternativas descartadas>.
|
|
85
|
+
|
|
86
|
+
Cuándo: <date>.
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
NO registrar:
|
|
90
|
+
- Cambios obvios (rename, formatting, fix de typo).
|
|
91
|
+
- Decisiones que ya están en docs/decisiones/.
|
|
92
|
+
- Comentarios sobre el qué (eso lo dicen los identificadores).
|
|
93
|
+
|
|
94
|
+
### 6. Marcar tarea cerrada
|
|
95
|
+
|
|
96
|
+
Editar `TASKS.md`: `- [ ] Foo` → `- [x] Foo`. Atomic.
|
|
97
|
+
|
|
98
|
+
### 7. Iterar
|
|
99
|
+
|
|
100
|
+
Si quedan tareas abiertas, volver a paso 1. Cuando todas cerradas, propagar a `agent-workflow:session` para entrar a `validation`.
|
|
101
|
+
|
|
102
|
+
## Reglas
|
|
103
|
+
|
|
104
|
+
- **Sin builds/tests automáticos**: respetar `validation_mode` (default `ask`). El usuario decide cuándo validar.
|
|
105
|
+
- **Si algo falla** (compilación, test inesperado): aplicar `references/rollback-guide.md` inmediatamente. NO acumular fallos.
|
|
106
|
+
- **El hook PreToolUse bloquea Edit/Write si la rama no coincide**: confiá en él, no skippes.
|
|
107
|
+
- **No tocar archivos fuera de fuentes declaradas**: si el cambio requiere otro repo, agregarlo primero a `## Fuentes` del AW-PROJECT (sugerencia al usuario).
|
|
108
|
+
- **DEPENDENCIES.md**: si introducís una librería/microservicio nuevo al stack, registrarlo. No esperar al cierre.
|
|
109
|
+
- **SQL = script + ejecución manual del usuario**: si la tarea toca BD, el cambio se materializa como `.sql` versionado bajo `docs/scripts/` del workspace de la fuente (la skill `sql-script-organizer` define layout y categorías). El loop de implement **nunca ejecuta el script** — ni vía MCP `<mcp-cert>`/`<mcp-prod>`, ni vía `Bash` (psql, cliente DB), ni vía cualquier otro canal. El usuario aplica el script manualmente y confirma; recién ahí la tarea se cierra. Excepción única: el usuario explícitamente delega ejecución, y aún así con confirmación por bloque.
|
|
110
|
+
|
|
111
|
+
## Phased mode (v2.7+)
|
|
112
|
+
|
|
113
|
+
Activo cuando TASKS.md tiene ≥2 secciones `## Phase X — Y`. Loop por phase:
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
[planning closure: DESIGN.md producido → S7 design-review → user approves]
|
|
117
|
+
↓
|
|
118
|
+
[detect phases in TASKS.md]
|
|
119
|
+
↓
|
|
120
|
+
Phase 0 — Mapeo + Contrato
|
|
121
|
+
↓ todas las tasks de Phase 0 cerradas
|
|
122
|
+
┌────────────────────────────────────────┐
|
|
123
|
+
│ M6 — phase-gate │ ← cierre de cualquier phase
|
|
124
|
+
│ "avanzamos a Phase X+1?" │
|
|
125
|
+
└────────────────────────────────────────┘
|
|
126
|
+
↓ user aprueba avanzar
|
|
127
|
+
Phase 1 — Lecturas
|
|
128
|
+
↓ M6 → Phase 2 — Escritura (sin validaciones)
|
|
129
|
+
↓ M6 → Phase 3 — Validaciones / Correcciones
|
|
130
|
+
↓ M6 → Phase 4 — Seguridad (placeholder; skip silencioso si vacía)
|
|
131
|
+
↓ M6 → Phase 5 — Optimizaciones (opt-in; skip silencioso si no declarada)
|
|
132
|
+
↓
|
|
133
|
+
propagar a validation lifecycle phase
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
> **M9 retirado v2.8+**: el gate de design review que existía al cerrar Phase 0 (M9 contract-review) se movió a antes de Phase 0 vía S7 design-review, disparado desde `skills/session/SKILL.md` durante el cierre de planning. La validación post-implementación se delega al skill futuro `agent-workflow:review <sessionNNN>`.
|
|
137
|
+
|
|
138
|
+
### Phases canónicas (v2.7+ — 6 phases)
|
|
139
|
+
|
|
140
|
+
| Phase | Título | Qué incluye | Outputs típicos |
|
|
141
|
+
|---|---|---|---|
|
|
142
|
+
| **0** | Mapeo + Contrato | Interfaces FE (services `throw "not impl"`), DTOs BE Sparse (records vacíos), endpoints 501, funciones BD que devuelven mock. **Routing FE↔BE conectado** (la app navega y consume mocks). Cableado e2e sin lógica. | Walking skeleton e2e navegable; click "Ingresar" lleva a home; home consume mocks. |
|
|
143
|
+
| **1** | Lecturas | GET endpoints, queries SELECT, listados, combos, filtros, paginación con datos reales. **Solo BE.** El FE ya está integrado desde Phase 0. | Listado funcional con datos reales; sin formularios de edición. |
|
|
144
|
+
| **2** | Escritura | POST/PATCH/DELETE funcionales, Sparse DTOs, scripts SQL DDL/DML. **Sin Bean Validation aún** (eso va a Phase 3). | CRUD funcional. Endpoints aceptan input y mutan estado; ante input malformado pueden devolver 500 (esperado, se cubre en Phase 3). |
|
|
145
|
+
| **3** | Validaciones / Correcciones | Bean Validation con groups, handler global de errores 400 estructurado, validaciones FE inline, reglas de negocio, cleanup smells, fixes de bugs detectados durante Phases 1-2. | CRUD robusto; input malformado retorna 400 con `field`+`message`; reglas de negocio activas. |
|
|
146
|
+
| **4** | Seguridad | **Placeholder con `## Estado: pendiente-spec`**. Bullets canónicos a completar en sesiones analyze propuesta futuras: RBAC, validar caller, no leakear info en logs/errores, secrets handling, CSRF, XSS, SQL injection guard, rate limiting. **Skip silencioso si la sección queda vacía en TASKS.md**. | Cuando la spec exista: hardening explícito documentado por session. Hoy: placeholder. |
|
|
147
|
+
| **5** | Optimizaciones | Performance review: queries (planes EXPLAIN, índices), métodos sync vs async, hilos/colas, caching, lazy loading. **Opt-in: skip si TASKS.md no la declara**. | Mejoras concretas medibles; sin fold con `coding-standards` ni `testing-strategy`. |
|
|
148
|
+
|
|
149
|
+
> **Por qué este orden** (CQRS incremental + Walking Skeleton + separación validación/seguridad/perf): primero validás cableado + routing (Phase 0), después lecturas (Phase 1, sin riesgo de corromper datos), después escritura (Phase 2, riesgo controlado), después blindás contra input malformado (Phase 3), después seguridad (Phase 4, opt-in cuando exista spec), por último optimizás lo que ya es correcto (Phase 5, opt-in). Maps a [Microsoft Learn — CQRS](https://learn.microsoft.com/en-us/azure/architecture/patterns/cqrs) y [Cockburn — Walking Skeleton](https://codeclimate.com/blog/kickstart-your-next-project-with-a-walking-skeleton).
|
|
150
|
+
>
|
|
151
|
+
> **Compat v2.0/v2.6**: TASKS.md de sesiones legacy con sólo Phase 0/1/2 (donde Phase 2 contenía validaciones) sigue procesándose tal cual. El loop no fuerza la separación retroactivamente. El modelo de 6 phases aplica a sesiones nuevas.
|
|
152
|
+
|
|
153
|
+
### Detección
|
|
154
|
+
|
|
155
|
+
Al iniciar el loop:
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
grep -E '^## (Phase|Fase|Sprint|Etapa) [0-9]+( — .+)?$' .workflow/sessions/<folder>/TASKS.md | wc -l
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Si ≥2 → phased mode. Si <2 → flat mode (compat v1.x).
|
|
162
|
+
|
|
163
|
+
`Phase` es la forma canónica recomendada. `Fase`, `Sprint` y `Etapa` son sinónimos aceptados sin diferencia funcional — el detector los trata igual. El " — `<title>`" después del número es opcional para tolerar TASKS.md mínimos. Ver apéndice "Convención de naming phased" en `agent-workflow:prompts-catalog`.
|
|
164
|
+
|
|
165
|
+
### Gates
|
|
166
|
+
|
|
167
|
+
#### Cierre de Phase 0 → M6 directo (M9 retirado v2.8+)
|
|
168
|
+
|
|
169
|
+
Cuando TODAS las `- [ ]` de la sección `## Phase 0 — Contrato` (o sus sinónimos `## Fase 0`/`## Sprint 0`/`## Etapa 0`) quedan en `- [x]`:
|
|
170
|
+
|
|
171
|
+
1. Disparar M6 (phase-gate) directo. M9 fue retirado por DEC-002 de session049 — el design review ya ocurrió antes de Phase 0 vía S7 en planning closure.
|
|
172
|
+
2. La validación post-implementación se delega al skill futuro `agent-workflow:review <sessionNNN>` (placeholder DEC-002 de session049, R5 de CONCLUSIONS), que opera sobre sesiones cerradas en lugar de dentro del mismo ciclo de desarrollo.
|
|
173
|
+
|
|
174
|
+
#### Cierre de Phase X → M6 (phase-gate, mandatorio entre phases)
|
|
175
|
+
|
|
176
|
+
Cuando TODAS las `- [ ]` de la sección `## Phase X — Y` (o sinónimos `## Fase X`/`## Sprint X`/`## Etapa X`) quedan en `- [x]` y existe la siguiente:
|
|
177
|
+
|
|
178
|
+
1. **Dispara `AskUserQuestion`** con spec de M6 (`agent-workflow:prompts-catalog#M6`). Header `phase-gate`, 3 opciones (Avanzar / Pausar / Re-iterar) + preview opcional cuando current_phase=0. NUNCA narrar la pregunta en texto plano (ej. "¿Avanzamos al Sprint 2?" en chat es un anti-patrón).
|
|
179
|
+
2. Si usuario elige opción 1 ("Avanzar"): tomar primera task de la phase siguiente, continuar loop.
|
|
180
|
+
3. Si usuario elige opción 2 ("Pausar"): detener loop. Esperar señal explícita de retomar.
|
|
181
|
+
4. Si usuario elige opción 3 ("Re-iterar Phase X"): el AI propone tareas adicionales en la phase actual (con DECISIÓN nueva justificando) o el usuario las añade.
|
|
182
|
+
|
|
183
|
+
#### Cierre de la última Phase → propagar a validation
|
|
184
|
+
|
|
185
|
+
Cuando TODAS las phases quedan cerradas, NO disparar M6. Propagar a `validation` directamente (lifecycle universal).
|
|
186
|
+
|
|
187
|
+
### Reglas adicionales en phased mode
|
|
188
|
+
|
|
189
|
+
- **No saltar phases**: `implement` siempre toma tareas de la phase actual antes de pasar a la siguiente. Si una task de Phase 1 queda incompleta cuando Phase 0 se cierra, no se avanza — re-abre la task que falta.
|
|
190
|
+
- **Promoción mid-session**: si el usuario edita TASKS.md entre tareas para reorganizar phases, `implement` releé al iniciar el siguiente take. Tareas marcadas `[x]` no se reabren automáticamente.
|
|
191
|
+
- **Phase 4 placeholder skip silencioso**: si `## Phase 4 — Seguridad` no está en TASKS.md o existe pero sin tasks abiertas (sólo prosa de "pendiente-spec"), `implement` no dispara M6 entre Phase 3→Phase 4; salta a Phase 5 si está declarada o propaga a validation si no.
|
|
192
|
+
- **Phase 5 opt-in skip silencioso**: si `## Phase 5 — Optimizaciones` no está en TASKS.md, `implement` propaga a validation tras cerrar la última phase declarada (Phase 3 típicamente). El usuario puede agregar Phase 5 mid-session si descubre la necesidad — `implement` la detecta al releer.
|
|
193
|
+
- **Refactor compose**: cuando la sesión es `## Type: refactor` (alias legacy `## Tipo: refactor`), el skill `refactor` genera el TASKS.md phased (con las 6 phases según alcance: Phase 5 típicamente sí porque refactor suele tocar performance) y hace hand-off; `implement` solo ejecuta el loop. Las acciones específicas de refactor (rename legacy, cleanup) las maneja `refactor` con M7/M8 fuera del loop de `implement`.
|
|
194
|
+
|
|
195
|
+
## Resolución del `## Type` — defensa en profundidad
|
|
196
|
+
|
|
197
|
+
Tres capas garantizan que `## Type` nunca esté ausente en sesiones nuevas:
|
|
198
|
+
|
|
199
|
+
**Capa 1 — CLI template inyecta `## Type` siempre (Mit-A)**
|
|
200
|
+
|
|
201
|
+
`agent-workflow session-create --flow dev` produce `OBJECTIVE.md` con `## Type: <valor>` materializado en posición canónica (línea 3 si no hay `## Origin`, después de `## Origin` si existe). Nunca emite OBJECTIVE.md sin la sección.
|
|
202
|
+
|
|
203
|
+
**Capa 2 — Heurística decide el valor (Mit-C)**
|
|
204
|
+
|
|
205
|
+
El CLI analiza `--objetivo` con keywords (de `dev-workflow:97-103`) y elige tipo + confianza. Flag opcional `--type <valor>` para override explícito. Detalles en `agent-workflow-cli` módulo `infer-type.ts`.
|
|
206
|
+
|
|
207
|
+
**Capa 3 — Default-on en lectura para sesiones legacy/migradas**
|
|
208
|
+
|
|
209
|
+
`implement` lee OBJECTIVE.md en cada iteración:
|
|
210
|
+
- Si tiene `## Type: <valor>` → usar `<valor>`.
|
|
211
|
+
- Si tiene `## Tipo: <valor>` (legacy ES) → leer vía alias bilingüe `parseTypeFromObjetivo()` y normalizar a EN.
|
|
212
|
+
- Si no tiene ninguno → asumir `feature` y emitir log:
|
|
213
|
+
```
|
|
214
|
+
[implement] Type no declarado en OBJECTIVE.md → asumiendo 'feature' por default-on. Declarar explícito si querés sobrescribir.
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
**Cobertura de casos**:
|
|
218
|
+
- Sesiones legacy pre-v2.7: cubierto por Capa 3.
|
|
219
|
+
- Sesiones creadas sin `## Type` por bug del template: resuelto por Capa 1.
|
|
220
|
+
- Usuario borra `## Type`: cubierto por Capa 3 con log.
|
|
221
|
+
- Sesiones migradas desde otro workspace: cubierto por Capa 3.
|
|
222
|
+
|
|
223
|
+
**Alias bilingüe `## Type` ↔ `## Tipo`**: parser acepta ambas formas; escritura canónica es `## Type`. Convivencia alineada con `OBJETIVO.md` ↔ `OBJECTIVE.md`, `DECISIONES.md` ↔ `DECISIONS.md`. Cero migración forzada de sesiones cerradas.
|
|
224
|
+
|
|
225
|
+
## Bugfix doctrina (flat mode v2.7+)
|
|
226
|
+
|
|
227
|
+
Cuando OBJECTIVE declara `## Type: bugfix` (alias legacy `## Tipo`), `implement` cae a flat mode (sin phases) pero aplica una doctrina de 3 pasos canónicos:
|
|
228
|
+
|
|
229
|
+
1. **Reproducir + diagnosticar**: el AI compone `superpowers:systematic-debugging` (root-cause analysis sistemático) antes de proponer fix. Output: 1 DEC mínima en DECISIONS.md con causa raíz identificada o hipótesis a validar.
|
|
230
|
+
2. **Aplicar fix mínimo**: loop flat normal, 1-3 tareas como mucho, sin gates M6 (ni DESIGN.md/S7 — type bugfix los excluye).
|
|
231
|
+
3. **Verificación específica del bug**: `testing-strategy` exige test de regresión que reproduce el bug original (criterio de hecho: el test rompe antes del fix y pasa después).
|
|
232
|
+
|
|
233
|
+
**Skip permitido del paso 1** si el bug es trivialmente obvio (1 line con justificación inline en DECISIONS (legacy: DECISIONES), ej. "typo en regex que rompía parsing — sin causa raíz adicional").
|
|
234
|
+
|
|
235
|
+
**Fallback si `superpowers:systematic-debugging` no está instalado**: aplicar guideline textual de root-cause documentado en `agent-workflow:dev-workflow` (preguntar "¿qué pasó? ¿qué cambió? ¿cuál es el error exacto? ¿se reproduce?" antes de fix).
|
|
236
|
+
|
|
237
|
+
**Sin nuevo `## Type: hotfix`**: la urgencia se expresa en el OBJECTIVE ("hotfix prod sangrando") y en saltar Phase 4/5 cuando aplica; no requiere cardinalidad nueva en `## Type`.
|
|
238
|
+
|
|
239
|
+
## Composición con otras skills
|
|
240
|
+
|
|
241
|
+
| Skill | Cuándo |
|
|
242
|
+
|---|---|
|
|
243
|
+
| `coding-standards` | revisar calidad de cada diff (fail fast, logging, naming, security, **reglas FE-BE Sparse DTO/PATCH**) |
|
|
244
|
+
| `frontend-design` | layout, formularios, modales, navegación, feedback (UI/UX) |
|
|
245
|
+
| `refactor` | sesiones con `## Type: refactor` (alias legacy `## Tipo`). Genera TASKS.md phased y hace hand-off; `implement` ejecuta el loop. M7/M8 los maneja `refactor`. |
|
|
246
|
+
| `sql-script-organizer` | tan pronto haya un `.sql` en `scripts/` |
|
|
247
|
+
| `sql-rollback-generator` | en paralelo a sql-script-organizer (forward + rollback siempre acoplados) |
|
|
248
|
+
| `testing-strategy` | en validation, o cuando el usuario pide tests durante execution |
|
|
249
|
+
|
|
250
|
+
NO duplicar lógica entre skills — invocar la especializada.
|
|
251
|
+
|
|
252
|
+
## Checklist de calidad antes de cada diff
|
|
253
|
+
|
|
254
|
+
- [ ] **Fail fast**: validaciones + early returns al inicio.
|
|
255
|
+
- [ ] **Logging**: ERROR/WARN/INFO/DEBUG apropiado, sin datos sensibles.
|
|
256
|
+
- [ ] **Seguridad**: sin secrets hardcoded, SQL parametrizado, no XSS/injection.
|
|
257
|
+
- [ ] **Naming descriptivo**: no abreviaturas oscuras, no `tmp`/`foo`.
|
|
258
|
+
- [ ] **Comentarios sólo para WHY**: el qué lo dice el código.
|
|
259
|
+
- [ ] **Convenciones del stack**: invocar `coding-standards` si dudas.
|
|
260
|
+
- [ ] **Si es UI**: invocar `frontend-design`.
|
|
261
|
+
|
|
262
|
+
## Sandbox read-only
|
|
263
|
+
|
|
264
|
+
Reglas universales en `../session/references/sandbox-readonly-rules.md` (canon v2.1+). En plan mode esta skill describe en el plan file:
|
|
265
|
+
|
|
266
|
+
- **Tarea elegida** del TASKS.md (cuál tomar, en qué orden) — sin marcarla en progreso.
|
|
267
|
+
- **Archivos a editar/crear**: rutas absolutas o relativas + resumen del cambio (no el código completo).
|
|
268
|
+
- **Decisión a registrar** en DECISIONS.md si aplica: número DEC-NNN propuesto + 2-3 líneas de "qué" y "por qué".
|
|
269
|
+
- **Rama esperada**: comando `git branch --show-current` (read-only) para validar; si no matchea, describir el flujo de `references/branch-verification.md` sin ejecutarlo.
|
|
270
|
+
- **Tests a correr post-cambio**: nombre del comando + scope.
|
|
271
|
+
|
|
272
|
+
NO ejecuta: `Edit`, `Write`, `Bash` con efectos (commits, npm install, mvn package), ni `agent-workflow graduate`/`session-close`/`phase-next`.
|
|
273
|
+
|
|
274
|
+
## Política de commits
|
|
275
|
+
|
|
276
|
+
`implement` **nunca** ejecuta `git commit`/`push`/`merge`/`rebase`/`tag` por iniciativa propia, ni siquiera tras completar una tarea. Si el usuario pide explícitamente commitear durante execution, aplicar `agent-workflow:commits-policy` Regla 3 (propose-then-execute universal con `AskUserQuestion` M1) o Regla 5 (bypass si el usuario aporta el mensaje literal). El formato canónico (1 línea, tag `session<CODE>`, sin co-author) lo provee el mensaje sugerido del prompt. La fase `closure` de `agent-workflow:session` ejecuta el mismo flujo M1 auto-disparado por dirty sources.
|
|
277
|
+
|
|
278
|
+
## Recursos
|
|
279
|
+
|
|
280
|
+
- `references/branch-verification.md` — flujo cuando la rama no coincide.
|
|
281
|
+
- `references/rollback-guide.md` — qué hacer si un cambio falla.
|
|
282
|
+
- `coding-standards` — skill hermano para revisar calidad.
|
|
283
|
+
- `coding-standards/references/fe-be-integration.md` — reglas Sparse DTO + PATCH + sin fallbacks ocultos.
|
|
284
|
+
- `refactor` — skill hermano para refactors phased (Strangler Fig).
|
|
285
|
+
- `agent-workflow:prompts-catalog` M6 (phase-gate) — spec literal del gate phased entre phases. S7 (design-review) dispara desde `skills/session/SKILL.md` durante planning closure, no acá.
|
|
286
|
+
- `references/design-md-template.md` — template canónico del DESIGN.md producido para sesiones `## Type: feature|refactor`.
|
|
287
|
+
- `agent-workflow:session` — lifecycle universal que invoca este skill.
|
|
288
|
+
- `agent-workflow:commits-policy` — política controlada de commits cross-plugin.
|
|
289
|
+
- shared-contract §14 — fase `execution` del lifecycle universal.
|
|
290
|
+
- shared-contract §15 — naming convention de specialty skills.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Verificación de rama de trabajo — Stub
|
|
2
|
+
|
|
3
|
+
> **Documento canónico** en `../session/references/branch-verification.md` (mismo plugin).
|
|
4
|
+
>
|
|
5
|
+
> El hook `branch-check.py` y el lifecycle `agent-workflow:session` apuntan a esa única fuente de verdad. Esta copia se mantiene como stub para no romper links viejos. No editar contenido aquí — cualquier cambio a la lógica de verificación se hace en `session/references/`.
|
|
6
|
+
|
|
7
|
+
## Resumen rápido (referencia mínima)
|
|
8
|
+
|
|
9
|
+
| Caso | Estado | Acción |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| A | `match=false, dirty=false` | Pedir confirmación al usuario para `git checkout <expected>`. |
|
|
12
|
+
| B | `match=false, dirty=true` | Pausar. Esperar que el usuario resuelva manualmente (commit/stash/discard). |
|
|
13
|
+
| C | flow=analyze + edición decidida | Preguntar nombre de rama, ofrecer `checkout` o `checkout -b` desde `main_branch`. |
|
|
14
|
+
| Cross | hub mode con divergencia no declarada | Hard gate. Resolver alineando o declarando divergencia explícita. |
|
|
15
|
+
|
|
16
|
+
Para el flujo completo ver el documento canónico.
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# DESIGN.md template (canon)
|
|
2
|
+
|
|
3
|
+
Template canónico copy-paste-friendly para producir el `DESIGN.md` de una sesión `flow=dev` con `## Type: feature|refactor`. Se ubica en `.workflow/sessions/<folder>/DESIGN.md` y se genera durante el cierre de planning, antes de S7.
|
|
4
|
+
|
|
5
|
+
## Convenciones
|
|
6
|
+
|
|
7
|
+
- **Filename**: `DESIGN.md` (EN canon, alineado con OBJECTIVE/TASKS/DECISIONS/EVIDENCE/FINDINGS/CONCLUSIONS).
|
|
8
|
+
- **Headers**: EN (`## Context`, `## Goals`, etc.).
|
|
9
|
+
- **Body**: idioma del usuario (típicamente ES). Memory `feedback_i18n_scope_runtime_only`.
|
|
10
|
+
- **Tamaño objetivo**: 1-3 páginas. Más grande → señal de que la sesión debería partirse.
|
|
11
|
+
- **Sección `## Open questions`**: obligatoria. Si no hay dudas abiertas, escribir literalmente `None` (DD-2 de DESIGN.md session050).
|
|
12
|
+
- **Composición**: invocar `agent-workflow:redaccion-simple` para frases cortas + listas + sin jerga.
|
|
13
|
+
|
|
14
|
+
## Template (copy-paste)
|
|
15
|
+
|
|
16
|
+
```markdown
|
|
17
|
+
# Design — session<NNN>-<slug>
|
|
18
|
+
|
|
19
|
+
## Context
|
|
20
|
+
<1 párrafo. Qué se diseña y por qué — anchor del problema.>
|
|
21
|
+
|
|
22
|
+
## Goals
|
|
23
|
+
- <2-4 bullets accionables de qué resuelve este diseño.>
|
|
24
|
+
|
|
25
|
+
## Non-goals
|
|
26
|
+
- <2-4 bullets de anti-scope explícito (qué NO toca).>
|
|
27
|
+
|
|
28
|
+
## Current state
|
|
29
|
+
<ASCII flow del estado actual. Citar paths concretos (com.qtc..., src/...).>
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
<diagrama ASCII de flow / componentes actuales>
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Target state
|
|
36
|
+
<ASCII flow del estado después. Mismas convenciones que current state.>
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
<diagrama ASCII de flow / componentes objetivo>
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## New interfaces
|
|
43
|
+
<Firmas de las interfaces/clases/métodos nuevos con 1 línea de rol cada uno. Sin implementación.>
|
|
44
|
+
|
|
45
|
+
```<lenguaje>
|
|
46
|
+
// ej. Java
|
|
47
|
+
public interface PdfRenderer {
|
|
48
|
+
byte[] renderFromHtml(String html);
|
|
49
|
+
byte[] renderFromHtml(String html, String baseUrl);
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Wiring
|
|
54
|
+
<Cableado DI / data flow en ASCII. Cómo se conectan los nuevos tipos con los existentes.>
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
@Service Impl ─┬─ injected ─> Consumer1.field
|
|
58
|
+
└─ injected ─> Consumer2.field
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Design decisions
|
|
62
|
+
|
|
63
|
+
### DD-1 — <título corto>
|
|
64
|
+
- **Decisión**: <qué se decidió>.
|
|
65
|
+
- **Por qué**: <motivación principal>.
|
|
66
|
+
- **Alternativas descartadas**: <1-2 alternativas con razón corta cada una>.
|
|
67
|
+
|
|
68
|
+
### DD-2 — <título corto>
|
|
69
|
+
- **Decisión**: …
|
|
70
|
+
- **Por qué**: …
|
|
71
|
+
- **Alternativas descartadas**: …
|
|
72
|
+
|
|
73
|
+
<Tantos DDs como decisiones no obvias haya. Si una decisión es trivial/obvia, no necesita DD.>
|
|
74
|
+
|
|
75
|
+
## Open questions
|
|
76
|
+
<Lista de cosas que el AI deja sin resolver explícitamente — el usuario decide antes de codear. Si no hay ninguna, escribir literalmente "None">
|
|
77
|
+
|
|
78
|
+
- <Pregunta 1: nombre de algo, dónde vive una excepción, overload conveniente, etc.>
|
|
79
|
+
- <Pregunta 2: ...>
|
|
80
|
+
|
|
81
|
+
(o)
|
|
82
|
+
|
|
83
|
+
None
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Reglas de redacción
|
|
87
|
+
|
|
88
|
+
- **Frases cortas**. Listas sobre prosa larga.
|
|
89
|
+
- **Citar paths concretos** en current/target state: `com.qtc.credito.core.service.PdfRenderer`, `src/cli/menu.tsx`, `mscore-delivery-spring/...`.
|
|
90
|
+
- **DD sin alternativa descartada** es sospechoso — el AI debe forzarse a buscar una. Si genuinamente no hay alternativa razonable, escribirlo explícito ("Alternativas descartadas: ninguna razonable; era la única opción que respeta <constraint>").
|
|
91
|
+
- **Open questions vacías** = `None`. Nunca omitir la sección.
|
|
92
|
+
- **No copiar código completo de impl** en `## New interfaces` — sólo firmas. La impl va en Phase 0 tasks.
|
|
93
|
+
|
|
94
|
+
## Skip rules
|
|
95
|
+
|
|
96
|
+
DESIGN.md no se produce cuando:
|
|
97
|
+
- `## Type: bugfix` — bugfix doctrina (3 pasos canónicos en `dev-workflow/SKILL.md`) no requiere design artifact.
|
|
98
|
+
- `## Type: chore` — chores son cambios triviales (bump deps, format, rename) sin design upfront.
|
|
99
|
+
- `auto-plan-decide` retornó `skip` (OBJECTIVE trivialmente atómico).
|
|
100
|
+
|
|
101
|
+
Para los demás casos (`## Type: feature|refactor`), DESIGN.md es obligatorio y S7 dispara always-on (DEC-003 de session049).
|
|
102
|
+
|
|
103
|
+
## Refs
|
|
104
|
+
|
|
105
|
+
- `skills/session/references/prompts/S7-design-review.md` — gate del DESIGN.md, dispara tras producción.
|
|
106
|
+
- `skills/session/SKILL.md` §"Cierre de planning" — pipeline planning → DESIGN.md → S7 → M10 → execution.
|
|
107
|
+
- `skills/implement/SKILL.md` §"Resolución del `## Type`" — defensa en profundidad para que el field nunca falte.
|
|
108
|
+
- `docs/conclusiones/005-mejoras-flujos-qtc-runtime.md` — CONCLUSIONS de session049, motivación + research.
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Guía de Rollback — implement
|
|
2
|
+
|
|
3
|
+
## Cuándo hacer rollback
|
|
4
|
+
|
|
5
|
+
Aplicar rollback cuando:
|
|
6
|
+
- La compilación falla después de un cambio y la corrección no es obvia.
|
|
7
|
+
- Un test que antes pasaba ahora falla por el cambio introducido.
|
|
8
|
+
- El usuario solicita revertir un cambio.
|
|
9
|
+
- Se detecta que el enfoque tomado no es el correcto.
|
|
10
|
+
|
|
11
|
+
## Procedimiento
|
|
12
|
+
|
|
13
|
+
### Rollback de último cambio (más común)
|
|
14
|
+
|
|
15
|
+
1. Identificar los archivos modificados en el último diff (`git diff HEAD` o histórico de la conversación).
|
|
16
|
+
2. Revertir usando git:
|
|
17
|
+
```bash
|
|
18
|
+
git checkout -- ruta/archivo.java
|
|
19
|
+
```
|
|
20
|
+
3. Si los cambios están staged:
|
|
21
|
+
```bash
|
|
22
|
+
git restore --staged --worktree ruta/archivo.java
|
|
23
|
+
```
|
|
24
|
+
4. Si no hay git, aplicar el diff inverso manualmente con Edit.
|
|
25
|
+
5. Compilar para verificar que el rollback fue exitoso (si aplica).
|
|
26
|
+
6. Registrar el rollback en `DECISIONS.md`:
|
|
27
|
+
```markdown
|
|
28
|
+
## DEC-NNN: Rollback de [descripción]
|
|
29
|
+
|
|
30
|
+
Decisión: revertir el cambio de [archivo(s)] del [fecha].
|
|
31
|
+
Por qué: [motivo: build falla / test rojo / enfoque incorrecto / pedido del usuario].
|
|
32
|
+
Plan alternativo: [próximo intento o decisión de pausar].
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Rollback de múltiples cambios
|
|
36
|
+
|
|
37
|
+
1. Identificar el commit estable más reciente.
|
|
38
|
+
2. Listar todos los archivos modificados desde ese punto (`git diff <commit>..HEAD --name-only`).
|
|
39
|
+
3. Revertir en orden inverso (último cambio primero).
|
|
40
|
+
4. Compilar después de cada reversión parcial si el riesgo lo justifica.
|
|
41
|
+
5. Documentar todo en `DECISIONS.md` con una sola entrada DEC-NNN explicando el rollback masivo y por qué.
|
|
42
|
+
|
|
43
|
+
### Rollback con git stash
|
|
44
|
+
|
|
45
|
+
Si se quiere preservar el trabajo para revisión futura:
|
|
46
|
+
```bash
|
|
47
|
+
git stash push -m "session00X: rollback de [descripción]"
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
El stash queda disponible para reaplicar (`git stash pop`) o descartar (`git stash drop`) según la decisión posterior del usuario.
|
|
51
|
+
|
|
52
|
+
## Después del rollback
|
|
53
|
+
|
|
54
|
+
1. Revisar `TASKS.md`: marcar la tarea como pendiente nuevamente (`[x] → [ ]`).
|
|
55
|
+
2. Discutir con el usuario el nuevo enfoque.
|
|
56
|
+
3. Documentar en `DECISIONS.md` qué se aprendió (1-2 oraciones).
|
|
57
|
+
4. Continuar con la implementación alternativa.
|
|
58
|
+
|
|
59
|
+
## Prevención
|
|
60
|
+
|
|
61
|
+
Para minimizar la necesidad de rollback:
|
|
62
|
+
- Diffs pequeños e incrementales (1 preocupación por diff).
|
|
63
|
+
- Compilar/probar después de cada cambio significativo si el cambio es de alto riesgo.
|
|
64
|
+
- Verificar con el usuario antes de cambios estructurales grandes.
|
|
65
|
+
- Usar branches de git si el cambio es exploratorio (rama temporal).
|
|
66
|
+
|
|
67
|
+
## Rollback de BD
|
|
68
|
+
|
|
69
|
+
Los rollbacks de código (git) descritos arriba **no revierten cambios en base de datos**. Para revertir scripts SQL ejecutados en producción, usar el skill `sql-rollback-generator`.
|
|
70
|
+
|
|
71
|
+
El skill produce:
|
|
72
|
+
- **Rollback acoplado** por script: `NNN-script.rollback.sql` al lado del forward.
|
|
73
|
+
- **Bundle global**: `rollback/00-rollback-global.sql` que deshace toda la sesión en orden inverso.
|
|
74
|
+
|
|
75
|
+
Para operaciones irreversibles (TRUNCATE, DROP COLUMN, DROP TABLE sin backup), ver `skills/sql-rollback-generator/references/irreversible-checklist.md`.
|
|
76
|
+
|
|
77
|
+
## Reglas
|
|
78
|
+
|
|
79
|
+
- **Nunca** ejecutar `git reset --hard`, `git clean -f`, o destructivos similares como atajo. Si dudás, preguntá.
|
|
80
|
+
- **Siempre** registrar el rollback en `DECISIONS.md` (el qué Y el por qué).
|
|
81
|
+
- **El rollback de código no implica rollback de BD** ni viceversa: se manejan en paralelo si aplica.
|