@tacuchi/agent-workflow-cli 6.2.0 → 7.0.1
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/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/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/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 +26 -0
- package/skills/agent-workflow/commands/compact.md +24 -0
- package/skills/agent-workflow/commands/doctor.md +100 -0
- package/skills/agent-workflow/commands/export-arq.md +77 -0
- package/skills/agent-workflow/commands/export-conclusions.md +78 -0
- package/skills/agent-workflow/commands/export-plan.md +74 -0
- package/skills/agent-workflow/commands/export-qa-note.md +30 -0
- package/skills/agent-workflow/commands/export-report.md +78 -0
- package/skills/agent-workflow/commands/export-requirement.md +30 -0
- package/skills/agent-workflow/commands/export-scripts.md +92 -0
- package/skills/agent-workflow/commands/export-tech-manuals.md +75 -0
- package/skills/agent-workflow/commands/export-tech-note.md +30 -0
- package/skills/agent-workflow/commands/hub-init.md +82 -0
- package/skills/agent-workflow/commands/migrate.md +56 -0
- package/skills/agent-workflow/commands/project-init.md +60 -0
- package/skills/agent-workflow/commands/resume.md +22 -0
- package/skills/agent-workflow/commands/rules.md +40 -0
- package/skills/agent-workflow/commands/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,255 @@
|
|
|
1
|
+
# Validations — V1-V6 para `/agent-workflow:export-report`
|
|
2
|
+
|
|
3
|
+
Checks post-render que se aplican antes de escribir el `.md` al filesystem. Heredan de `docs/especificaciones/001-export-report-format/DELIVERY.md §"Validation criteria"`.
|
|
4
|
+
|
|
5
|
+
Niveles de severidad:
|
|
6
|
+
- **Hard-fail**: aborta la escritura, devuelve `ok: false` con error report. No se crea el archivo.
|
|
7
|
+
- **Warning**: emite mensaje, pide confirmación del usuario para continuar. Si confirma → escribe.
|
|
8
|
+
|
|
9
|
+
## V1 — Cota de palabras
|
|
10
|
+
|
|
11
|
+
**Severidad**: hard-fail si excede +20% de la cota; warning si excede ±10%.
|
|
12
|
+
|
|
13
|
+
**Cotas por variante** (v1.1: B y C subieron por Componentes impactados; A sin cambio; v1.4 session079: tolerancia condicional en C):
|
|
14
|
+
|
|
15
|
+
| Variante | Cota nominal | Warning fuera de | Hard fail |
|
|
16
|
+
|---|---|---|---|
|
|
17
|
+
| A — Compacta | 400w | 360-440w | >480w o <320w |
|
|
18
|
+
| B — Media (default v1.1) | 760w | 684-836w | >912w o <608w |
|
|
19
|
+
| C — Extensa (v1.1) | 1620w | 1458-1782w | >1944w o <1296w |
|
|
20
|
+
|
|
21
|
+
**Tolerancia condicional en C (v1.4 — DEC-005 session079)**: cuando V4 omite "Oportunidades de mejora" en C (corpus sin items abiertos), la ventana efectiva de warning se desplaza a **1323-1617w** (1470w nominal ±10%). Razón: los pesos C sin Op suman 1470w (no 1620w); la ventana original generaba warnings de borde sin valor. La cota de hard fail sigue siendo 1296w (low) — la tolerancia condicional solo afecta el rango warning. A y B mantienen ventana fija (sus deltas con/sin Op son menores).
|
|
22
|
+
|
|
23
|
+
**Cómo contar**:
|
|
24
|
+
|
|
25
|
+
Word count canónico = `wc -w` sobre el `.md` puro tras stripear:
|
|
26
|
+
- Bloque de Referencias (no cuenta).
|
|
27
|
+
- Front-matter YAML si existe (no cuenta).
|
|
28
|
+
- Comentarios HTML `<!-- ... -->` (no cuentan).
|
|
29
|
+
- Code fences ```...``` (no cuentan, salvo que el diagrama opt-in incluido se considere texto representativo — decisión del render).
|
|
30
|
+
|
|
31
|
+
Comando referencial:
|
|
32
|
+
```bash
|
|
33
|
+
awk '
|
|
34
|
+
/^# Referencias/ { skip=1 }
|
|
35
|
+
/^---$/ { yaml = !yaml; next }
|
|
36
|
+
/^<!--/ { hc=1 }
|
|
37
|
+
/-->$/ { hc=0; next }
|
|
38
|
+
/^```/ { cf = !cf; next }
|
|
39
|
+
!skip && !yaml && !hc && !cf { print }
|
|
40
|
+
' output.md | wc -w
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**Error report (hard-fail)**:
|
|
44
|
+
```
|
|
45
|
+
V1 FAILED: cota excedida
|
|
46
|
+
variante: B
|
|
47
|
+
cota nominal: 760w (±10% warning, ±20% hard fail)
|
|
48
|
+
cota actual: 951w
|
|
49
|
+
excedente: +191w (+25%)
|
|
50
|
+
acción: comprimir secciones {{LOGROS}}, {{OBJETIVO}} o {{ALCANCES}}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## V2 — Léxico vetado
|
|
54
|
+
|
|
55
|
+
**Severidad**: hard-fail si hay ≥1 ocurrencia en el **cuerpo** (header y Referencias exentos).
|
|
56
|
+
|
|
57
|
+
**Lista vetada**: ver `lexico.md` §"Lista vetada (V2 — para grep determinista)".
|
|
58
|
+
|
|
59
|
+
**Scope de V2**: desde la línea inmediatamente siguiente al primer header `# ` hasta la línea inmediatamente anterior a `# Referencias`. Quedan **fuera del scope**:
|
|
60
|
+
- Header del documento (líneas antes del primer `# `): contiene el nombre del producto provisto por AW-PROJECT, que puede legítimamente incluir identificadores del equipo (ej. "RUNTIME QTC-*"). El nombre del producto no es jerga — es el título.
|
|
61
|
+
- Sección `# Referencias`: contiene paths a `docs/<categoria>/` que son ineludibles.
|
|
62
|
+
|
|
63
|
+
**Cómo validar**:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
# Strippear header (antes del primer #) y sección Referencias
|
|
67
|
+
awk '
|
|
68
|
+
BEGIN { body=0 }
|
|
69
|
+
/^# Referencias/ { body=0 }
|
|
70
|
+
body { print }
|
|
71
|
+
/^# / && !/Referencias/ { body=1 }
|
|
72
|
+
' output.md > /tmp/body.md
|
|
73
|
+
|
|
74
|
+
# grep contra cada término de la lista vetada (fixed strings, case-insensitive).
|
|
75
|
+
# -F (fixed strings) captura compuestos como `flow=dev` y `<mcp-cert>` que
|
|
76
|
+
# `-w` (word boundary) descartaría por contener caracteres no-palabra.
|
|
77
|
+
grep -i -n -F -f lexico-vetado.txt /tmp/body.md
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Salida vacía → V2 pasa. Salida con matches → V2 falla.
|
|
81
|
+
|
|
82
|
+
**Nota de implementación**: `lexico-vetado.txt` es un archivo de una palabra/término por línea derivado de la "Lista vetada (V2)" de `lexico.md`. Como es fixed-string match, los términos genéricos cortos (≤3 caracteres) se descartan de la lista para evitar falsos positivos; los términos vetados elegidos son distintivos técnicos (`commits`, `skill`, `<mcp-cert>`, `flow=dev`, `Codex`, etc.) que no aparecen naturalmente en español ejecutivo.
|
|
83
|
+
|
|
84
|
+
**Excepción adicional**: el patrón fijo `\bN sesiones trabajadas\b` en el header (cuando se cuela en cuerpo por alguna razón) NO cuenta como violación.
|
|
85
|
+
|
|
86
|
+
**Error report (hard-fail)**:
|
|
87
|
+
```
|
|
88
|
+
V2 FAILED: léxico vetado detectado en cuerpo
|
|
89
|
+
ocurrencias:
|
|
90
|
+
línea 12: "...commits aplicados..." → reemplazar por "cambios aplicados"
|
|
91
|
+
línea 28: "...flow=dev..." → reemplazar por "trabajo de implementación"
|
|
92
|
+
línea 41: "...skill..." → reemplazar por "componente del sistema"
|
|
93
|
+
total: 3 ocurrencias
|
|
94
|
+
acción: aplicar tabla de traducción de lexico.md y re-renderizar
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## V3 — Secciones obligatorias presentes en orden + motor del diagrama
|
|
98
|
+
|
|
99
|
+
**Severidad**: hard-fail si falta alguna sección obligatoria; hard-fail si el orden está mal. Warning si el motor del diagrama no es Mermaid en B/C (v1.2 default).
|
|
100
|
+
|
|
101
|
+
**Secciones obligatorias por variante** (v1.1: B y C extendidas con Objetivo (reubicado desde Finalidades), Componentes impactados y Diagrama de flujo; rename Recomendaciones→Oportunidades de mejora):
|
|
102
|
+
|
|
103
|
+
| Variante | Secciones obligatorias (orden) |
|
|
104
|
+
|---|---|
|
|
105
|
+
| A | `# Resumen`, `# Cambios`, `# Riesgos`, `# Referencias` (4 — más `# Oportunidades de mejora` condicional) |
|
|
106
|
+
| B (default v1.1) | `# Resumen ejecutivo`, `# Período cubierto`, `# Objetivo`, `# Logros del período`, `# Componentes impactados`, `# Diagrama de flujo`, `# Alcances / Límites`, `# Riesgos y deuda`, `# Referencias` (9 — más `# Oportunidades de mejora` condicional) |
|
|
107
|
+
| C (v1.1) | `# Resumen ejecutivo`, `# Contexto del período`, `# Objetivo`, `# Cambios por capacidad`, `# Componentes impactados`, `# Diagrama de flujo`, `# Alcances`, `# Límites`, `# Riesgos y deuda`, `# Referencias` (10 obligatorias — más `# Oportunidades de mejora` condicional) |
|
|
108
|
+
|
|
109
|
+
**Motor del diagrama (v1.2)**: dentro de `# Diagrama de flujo` (B/C), el code fence debe ser ` ```mermaid ` con contenido `flowchart` o `graph` por default. Si es plain code fence con ASCII, se emite warning (`engine: ascii (fallback)`) en lugar de hard-fail — ASCII es válido como fallback opt-in.
|
|
110
|
+
|
|
111
|
+
**Link de visualización (v1.3 — session078)**: cuando engine=mermaid, inmediatamente después del fence de cierre debe aparecer un blockquote con `> Ver diagrama renderizado: <https://mermaid.ink/img/BASE64>`. Si falta → warning `render_link: absent` (no hard-fail; corpus pre-v1.3 no lo tenía). Si engine=ascii → skip el check (ASCII no lleva link).
|
|
112
|
+
|
|
113
|
+
**Cómo validar**: extraer todos los `^# ` headers del output, verificar que la lista incluye los obligatorios en el orden esperado. Dentro de la sección `# Diagrama de flujo`, parsear el primer code fence: si abre con ` ```mermaid ` → engine=mermaid (pass); si abre con ` ``` ` plano → engine=ascii (warning). Si engine=mermaid, buscar el blockquote `> Ver diagrama renderizado:` en la línea siguiente al fence de cierre — si presente, `render_link: present`; si ausente, `render_link: absent` (warning).
|
|
114
|
+
|
|
115
|
+
**Error report**:
|
|
116
|
+
```
|
|
117
|
+
V3 FAILED: estructura de secciones inválida
|
|
118
|
+
variante: B
|
|
119
|
+
esperado: Resumen ejecutivo → Período cubierto → Objetivo → Logros del período → Componentes impactados → Diagrama de flujo → Alcances / Límites → Riesgos y deuda → [Oportunidades de mejora?] → Referencias
|
|
120
|
+
encontrado: Resumen ejecutivo → Logros del período → Objetivo → Alcances / Límites → Riesgos y deuda → Referencias
|
|
121
|
+
faltantes: Período cubierto, Componentes impactados, Diagrama de flujo
|
|
122
|
+
orden incorrecto: Objetivo debe ir antes de Logros del período
|
|
123
|
+
acción: regenerar incluyendo todas las secciones obligatorias en el orden correcto
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## V4 — "Oportunidades de mejora" condicional honored
|
|
127
|
+
|
|
128
|
+
**Severidad**: hard-fail si la sección aparece sin justificación en el corpus, o si falta cuando el corpus la justifica.
|
|
129
|
+
|
|
130
|
+
v1.1 (session076): renombrada desde "Recomendaciones / próximos pasos" para alinear con el formato ejecutivo. La lógica de detección NO cambia — los corpus existentes mantienen `## Recommendations` / `## Recomendaciones` como header en CONCLUSIONS.md (sin migración forzada).
|
|
131
|
+
|
|
132
|
+
**Condiciones de aparición** (al menos UNA debe matchear en el corpus filtrado):
|
|
133
|
+
|
|
134
|
+
- ≥1 item en sección `## Open (gaps)` de algún `CONCLUSIONS.md` del corpus.
|
|
135
|
+
- ≥1 item en sección `## Recommendations` / `## Recomendaciones` de algún `CONCLUSIONS.md`.
|
|
136
|
+
- ≥1 decision con texto "pendiente" / "diferido" / "TODO" en `DECISIONS.md` del corpus.
|
|
137
|
+
- ≥1 mención a "próximos pasos" / "futuras mejoras" / "oportunidades" / "queda pendiente" en `CHECKPOINT.md` o `CONCLUSIONS.md` del corpus.
|
|
138
|
+
|
|
139
|
+
**Cómo validar**: pre-render — count de matches en el corpus filtrado.
|
|
140
|
+
- `count > 0` → render debe incluir `# Oportunidades de mejora`.
|
|
141
|
+
- `count == 0` → render debe NO incluir ese encabezado.
|
|
142
|
+
|
|
143
|
+
Post-render: verificar consistencia.
|
|
144
|
+
|
|
145
|
+
**Error report (caso A — sección presente sin justificación)**:
|
|
146
|
+
```
|
|
147
|
+
V4 FAILED: sección "Oportunidades de mejora" presente pero corpus filtrado no tiene items abiertos
|
|
148
|
+
corpus inspeccionado: 12 sesiones (período: last-month)
|
|
149
|
+
open gaps detectados: 0
|
|
150
|
+
recommendations detectadas: 0
|
|
151
|
+
decisions pendientes: 0
|
|
152
|
+
menciones "próximos pasos / oportunidades": 0
|
|
153
|
+
acción: omitir sección o ajustar detector
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
**Error report (caso B — sección omitida pero corpus la justifica)**:
|
|
157
|
+
```
|
|
158
|
+
V4 FAILED: corpus filtrado tiene items abiertos pero sección "Oportunidades de mejora" omitida
|
|
159
|
+
corpus inspeccionado: 12 sesiones (período: last-month)
|
|
160
|
+
open gaps detectados: 3 (en sessionXXX, sessionYYY, sessionZZZ)
|
|
161
|
+
decisions pendientes: 1 (DEC-014 en sessionWWW)
|
|
162
|
+
acción: incluir sección con los items detectados
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## V5 — Header bien formado
|
|
166
|
+
|
|
167
|
+
**Severidad**: warning (no bloquea — el usuario puede aceptar).
|
|
168
|
+
|
|
169
|
+
**Checks**:
|
|
170
|
+
- Línea 1 contiene `{{PRODUCTO}} — Informe ejecutivo` con `{{PRODUCTO}}` reemplazado por valor real (no literal).
|
|
171
|
+
- Línea 2 contiene `Período: Del <DD> de <mes> al <DD> de <mes> de <YYYY>. <N> sesiones trabajadas.`
|
|
172
|
+
- Fecha en formato natural ES (no `2026-05-18`).
|
|
173
|
+
- Si variante C: línea 3 contiene `Audiencia: Comité de seguimiento`.
|
|
174
|
+
|
|
175
|
+
**Error report (warning)**:
|
|
176
|
+
```
|
|
177
|
+
V5 WARNING: header incompleto o mal formado
|
|
178
|
+
línea 1: OK
|
|
179
|
+
línea 2: "Período: 2026-05-08 a 2026-05-18 (55 sesiones)"
|
|
180
|
+
→ formato esperado: "Del 8 de mayo al 18 de mayo de 2026. 55 sesiones trabajadas."
|
|
181
|
+
acción sugerida: re-renderizar header con formato natural ES
|
|
182
|
+
¿continuar de todas formas? (s/n)
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
## V6 — Referencias resolubles
|
|
186
|
+
|
|
187
|
+
**Severidad**: warning (no bloquea).
|
|
188
|
+
|
|
189
|
+
**Checks**: cada link en la sección `# Referencias` apunta a un path existente en filesystem al momento de la generación.
|
|
190
|
+
|
|
191
|
+
**Cómo validar**:
|
|
192
|
+
```bash
|
|
193
|
+
grep -E '^- [A-Za-z]+:' references-section.md | \
|
|
194
|
+
sed -E 's/^- [A-Za-z]+: //' | \
|
|
195
|
+
while read p; do
|
|
196
|
+
if [ ! -e "$p" ]; then echo "MISSING: $p"; fi
|
|
197
|
+
done
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
**Error report (warning)**:
|
|
201
|
+
```
|
|
202
|
+
V6 WARNING: 2 referencias apuntan a paths inexistentes
|
|
203
|
+
- docs/arquitectura/NNN-export-arq-YYYY-MM-DD/ → no existe (export-arq aún no generado)
|
|
204
|
+
- docs/manuales/NNN-export-mt-YYYY-MM-DD/ → no existe (export-mt aún no generado)
|
|
205
|
+
acción sugerida: omitir referencias placeholder o regenerar tras producir export-arq y export-mt
|
|
206
|
+
¿continuar de todas formas? (s/n)
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
## Orden de aplicación
|
|
210
|
+
|
|
211
|
+
1. V1 (cota) — primero, barato (word count).
|
|
212
|
+
2. V2 (léxico) — segundo, barato (grep).
|
|
213
|
+
3. V3 (secciones) — tercero, barato (regex headers).
|
|
214
|
+
4. V4 (oportunidades de mejora condicional) — cuarto, requiere consultar corpus.
|
|
215
|
+
5. V5 (header) — quinto.
|
|
216
|
+
6. V6 (referencias resolubles) — último.
|
|
217
|
+
|
|
218
|
+
Si V1, V3 o V4 fallan → abortar inmediatamente. No correr el resto.
|
|
219
|
+
Si V2 falla → abortar (no warning).
|
|
220
|
+
Si V5 o V6 emiten warning → mostrar al usuario y pedir confirmación.
|
|
221
|
+
|
|
222
|
+
## Reporte consolidado
|
|
223
|
+
|
|
224
|
+
Al final del flujo, el skill devuelve:
|
|
225
|
+
|
|
226
|
+
```json
|
|
227
|
+
{
|
|
228
|
+
"ok": true | false,
|
|
229
|
+
"variant": "A" | "B" | "C",
|
|
230
|
+
"output_path": "docs/funcional/NNN-export-report-YYYY-MM-DD.md",
|
|
231
|
+
"word_count": 681,
|
|
232
|
+
"word_target": 700,
|
|
233
|
+
"validations": {
|
|
234
|
+
"V1": { "status": "pass", "actual": 681, "target": 700, "tolerance_pct": 10 },
|
|
235
|
+
"V2": { "status": "pass", "vetoed_hits": 0 },
|
|
236
|
+
"V3": { "status": "pass", "sections_found": ["Resumen ejecutivo","Período cubierto","Objetivo","Logros del período","Componentes impactados","Diagrama de flujo","Alcances / Límites","Riesgos y deuda","Oportunidades de mejora","Referencias"], "diagram_engine": "mermaid", "render_link": "present" },
|
|
237
|
+
"V4": { "status": "pass", "section_included": true, "trigger_count": 7 },
|
|
238
|
+
"V5": { "status": "warning", "issues": ["línea 2 con formato no-natural"] },
|
|
239
|
+
"V6": { "status": "warning", "missing_refs": ["docs/arquitectura/..."] }
|
|
240
|
+
},
|
|
241
|
+
"summary": "Output escrito. 2 warnings (V5/V6) aceptados por el usuario."
|
|
242
|
+
}
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
Si algún hard-fail:
|
|
246
|
+
|
|
247
|
+
```json
|
|
248
|
+
{
|
|
249
|
+
"ok": false,
|
|
250
|
+
"stage": "validation",
|
|
251
|
+
"failed_at": "V2",
|
|
252
|
+
"details": "léxico vetado detectado en cuerpo: 3 ocurrencias (commits, flow=dev, skill)",
|
|
253
|
+
"no_file_written": true
|
|
254
|
+
}
|
|
255
|
+
```
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: export-requirement
|
|
3
|
+
description: "[STUB] Genera un Requerimiento Funcional (`.md`) consolidando el corpus de sesiones del workspace y `docs/`. Stub vacío sin lógica activa — implementación diferida a una sesión futura. Output previsto: `docs/funcional/NNN-export-requirement-YYYY-MM-DD.md`. Read-only sobre el corpus. Invocado sólo vía `/agent-workflow:export-requirement`. Creado en session081-dev-extend-export-family con `version: 0.1.0`."
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Export Requirement — Stub vacío (sin lógica activa)
|
|
8
|
+
|
|
9
|
+
> **STUB**. Este skill **no genera output útil aún**. Existe como placeholder discoverable para que el catálogo `/agent-workflow:export-*` lo registre. La implementación se difiere a una sesión futura (`flow=design` o `flow=dev`).
|
|
10
|
+
|
|
11
|
+
## Alcance previsto
|
|
12
|
+
|
|
13
|
+
Generar un único `.md` con el **Requerimiento Funcional** consolidado del workspace, dirigido a stakeholders de negocio/producto (no técnico). Audiencias típicas: PO, líder de área, auditoría funcional.
|
|
14
|
+
|
|
15
|
+
- **Input canónico**: corpus = sesiones del workflow + `docs/`. Ver `agent-workflow/docs/shared-contract/export-corpus-sources.md` (DEC-002 session081).
|
|
16
|
+
- **Subcarpetas de `docs/` que consumirá** (previstas): `docs/especificaciones/`, `docs/decisiones/`, `docs/funcional/`.
|
|
17
|
+
- **Output previsto**: `<docs>/funcional/NNN-export-requirement-YYYY-MM-DD.md`.
|
|
18
|
+
|
|
19
|
+
## Estado
|
|
20
|
+
|
|
21
|
+
- Creado: session081-dev-extend-export-family (2026-05-21).
|
|
22
|
+
- Implementación: **diferida**. Cuando se aborde, abrir sesión `flow=design` para spec primero (siguiendo el patrón session056 → session057 que sí funcionó para `export-report`).
|
|
23
|
+
|
|
24
|
+
## Plan mode
|
|
25
|
+
|
|
26
|
+
Reglas generales en `skills/session/references/sandbox-readonly-rules.md`. Como el skill es un stub, en plan mode reportar `ok: false` con `reason: "stub not implemented yet"` y referenciar esta sesión.
|
|
27
|
+
|
|
28
|
+
## Recursos
|
|
29
|
+
|
|
30
|
+
- `agent-workflow/docs/shared-contract/export-corpus-sources.md` — contrato corpus canónico (DEC-002 session081).
|
|
31
|
+
- `.workflow/sessions/session081-dev-extend-export-family/OBJECTIVE.md` — alcance de la sesión que creó el stub.
|
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: export-scripts
|
|
3
|
+
description: "Consolida N sesiones del workspace + `docs/scripts/` ya graduados en un paquete de paso a producción bajo `docs/scripts/NNN-export-scripts-YYYY-MM-DD/`. v3.0.0 BREAKING (F-D session062): lee `SCRIPTS.sql` único per sesión (uppercase EN, G1), parsea markers `@category`/`@stmt` y separa post-hoc en `por-sesion/sessionXXX/01-04/`. Delega `sql-rollback-generator` v1.0.0+ on-export para generar rollbacks per archivo + global encadenado 04→01. Aborta con sugerencia de `/agent-workflow:migrate --upgrade-topology` si detecta layout legacy `scripts/01-04/*.sql` (G2). Sigue produciendo `manifest.md`, `por-tema/` opt-in, `rollback-global.sql`, `ORDER.md`. Read-only / reporte — no ejecuta commits ni SQL. Invocado sólo vía `/agent-workflow:export-scripts`. v3.1 (session081): corpus extendido a `docs/` además de sesiones (DEC-002) — ver `docs/shared-contract/export-corpus-sources.md`."
|
|
4
|
+
version: 3.1.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Export Scripts — Bundle SQL + informe consolidado desde N sesiones
|
|
8
|
+
|
|
9
|
+
Consolida N sesiones cerradas (más opcionalmente activas) en un único output dir `docs/scripts/NNN-export-scripts-YYYY-MM-DD/`. Es **solo lectura/reporte**: el usuario sigue ejecutando scripts, correos, merges y commits manualmente.
|
|
10
|
+
|
|
11
|
+
> Último comando de la familia `/agent-workflow:export-*`. Refactor que consolida `/agent-workflow:release` v2.0.0 + `/agent-workflow:release-scripts` v2.0.0. Propuesta del modelo: `docs/conclusiones/007-export-commands-family.md`. Plan de deprecación: ver `references/deprecation-plan.md`.
|
|
12
|
+
|
|
13
|
+
## Excepción session-aware
|
|
14
|
+
|
|
15
|
+
Como `release` y `release-scripts` legacy, este skill requiere conocimiento del lifecycle. **No crea ni modifica sesiones**. Si el workspace no tiene sesiones cerradas → abortar y sugerir `/agent-workflow:session create`.
|
|
16
|
+
|
|
17
|
+
**Solo formato actual (v0.9+)**: sesiones legacy abortan; migrar con `/agent-workflow:migrate --upgrade-topology`.
|
|
18
|
+
|
|
19
|
+
**Consumo de CLI `agent-workflow`** (no leer paths hardcodeados):
|
|
20
|
+
|
|
21
|
+
- `agent-workflow release-data [--since sessionNNN] [--source alias] [--include-graduated]` — dump consolidado de sesiones + bundles graduados.
|
|
22
|
+
- `agent-workflow session-artifacts --code <NNN>` — lectura lazy de OBJECTIVE/TASKS/DECISIONS/scripts (con fallback bilingual a OBJETIVO/TASKS/DECISIONES legacy).
|
|
23
|
+
- `agent-workflow code-scan` — escaneo determinístico (built-in + opcionalmente `--patterns-file`).
|
|
24
|
+
- `agent-workflow next-number docs/scripts` — numeración determinística del output dir.
|
|
25
|
+
- Resolución hub-aware de `docs/scripts/` la maneja el CLI internamente.
|
|
26
|
+
|
|
27
|
+
## When to use
|
|
28
|
+
|
|
29
|
+
- "Bundle SQL del release", "informe de release", "qué falta para producción", "preparar paso a prod".
|
|
30
|
+
- Sesiones cerradas a consolidar para promover a `certificacion` o `main`.
|
|
31
|
+
- Re-generar tras agregar nuevas sesiones desde el último export.
|
|
32
|
+
- Antes de go/no-go meeting.
|
|
33
|
+
|
|
34
|
+
## Qué hace este skill
|
|
35
|
+
|
|
36
|
+
1. Lee sesiones (`.workflow/sessions/`) recolectando `scripts/` y `queries/` de **todas** las sesiones del workspace (filtrables por `--since` y `--source`).
|
|
37
|
+
2. Escanea código fuente buscando patrones que no deben llegar a producción.
|
|
38
|
+
3. Consulta git (rama vs `certificacion`, commits pendientes, archivos sin commit).
|
|
39
|
+
4. Delega a `sql-script-organizer` (clasificación 01→04 cross-session) y `sql-rollback-generator` (rollback acoplado + global).
|
|
40
|
+
5. Detecta acciones manuales requeridas (matriz heredada de `release`).
|
|
41
|
+
6. **Theme detection (opt-in)**: si hay `## Temas` en algún OBJECTIVE o `--themes slug1,slug2` declarado, genera vista `por-tema/` consolidada por categoría.
|
|
42
|
+
7. Aplica validations V1-V6 (`references/validations.md`).
|
|
43
|
+
8. Si pasa: escribe el dossier completo bajo `docs/scripts/NNN-export-scripts-YYYY-MM-DD/`.
|
|
44
|
+
|
|
45
|
+
## Qué NO hace
|
|
46
|
+
|
|
47
|
+
- Ejecutar commits, merges, push (ver `agent-workflow:commits-policy`).
|
|
48
|
+
- Ejecutar scripts SQL contra BD.
|
|
49
|
+
- Enviar correos ni crear PRs.
|
|
50
|
+
- Modificar código fuente (los hallazgos del escaneo son recomendaciones).
|
|
51
|
+
- Tocar `.workflow/sessions/` ni artefactos individuales.
|
|
52
|
+
- Migrar histórico de `docs/release/` (workspaces que ya invocaron `release` legacy mantienen ese dir como histórico).
|
|
53
|
+
|
|
54
|
+
## Sandbox read-only
|
|
55
|
+
|
|
56
|
+
`../session/references/sandbox-readonly-rules.md`. Plan describe NNN, sesiones incluidas, secciones del manifest, hallazgos esperados, contenido del bundle por sesión y (opcionalmente) por tema.
|
|
57
|
+
|
|
58
|
+
## Estilo de comunicación
|
|
59
|
+
|
|
60
|
+
`../session/references/communication-style.md`. Confirmación antes de crear el bundle SQL consolidado; si declina, ejecutar como `--dry-run` (sólo reporte propositivo).
|
|
61
|
+
|
|
62
|
+
## Entrada
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
/agent-workflow:export-scripts [--sessions NNN[,NNN]] [--since sessionNNN] [--source <alias>]
|
|
66
|
+
[--themes slug1,slug2|infer] [--keep-parts]
|
|
67
|
+
[--skip-code-scan] [--dry-run]
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
| Flag | Comportamiento |
|
|
71
|
+
|---|---|
|
|
72
|
+
| `--sessions NNN[,NNN]` | Filtro discreto por código. Toma precedencia sobre `--since` (si ambos se pasan, `--since` se ignora con warning) |
|
|
73
|
+
| `--since sessionNNN` | Incluye sólo sesiones posteriores a NNN (inclusive). Ignorado si `--sessions` presente |
|
|
74
|
+
| `--source <alias>` | Limita a una fuente específica (hub mode) |
|
|
75
|
+
| `--themes slug1,slug2` | Genera `por-tema/` con los slugs declarados |
|
|
76
|
+
| `--themes infer` | Inferencia LLM de temas (mismo flujo que release-scripts legacy) |
|
|
77
|
+
| `--keep-parts` | Preserva `por-tema/<slug>/parts/<categoria>/*.sql` con scripts individuales |
|
|
78
|
+
| `--skip-code-scan` | Omite el escaneo de código fuente |
|
|
79
|
+
| `--dry-run` | Reporte propositivo sin escribir archivos |
|
|
80
|
+
|
|
81
|
+
Sin args: incluye todas las sesiones cerradas, sin vista `por-tema/`, escanea todo el código.
|
|
82
|
+
|
|
83
|
+
Ejemplo: `/agent-workflow:export-scripts --sessions 055,057,061` consolida sólo esas 3 sesiones.
|
|
84
|
+
|
|
85
|
+
## Flujo
|
|
86
|
+
|
|
87
|
+
### Paso 1 — Descubrimiento de sesiones
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
agent-workflow release-data --include-graduated [--sessions NNN[,NNN]] [--since sessionNNN] [--source <alias>]
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Output: `{workspace_mode, is_hub, source_alias, docs_root, sessions, sessions_count, legacy_sessions, graduated_bundles}`.
|
|
94
|
+
|
|
95
|
+
**Sesiones legacy v0.x (REQUIREMENTS.md)**: si `legacy_sessions` no vacío → abortar:
|
|
96
|
+
|
|
97
|
+
> Sesiones en formato legacy detectadas: sessionXXX, sessionYYY.
|
|
98
|
+
> Migrar primero con `/agent-workflow:migrate --upgrade-topology`, luego re-correr export-scripts.
|
|
99
|
+
|
|
100
|
+
### Paso 1.5 — Gate de layout SQL (v3.0.0, G2)
|
|
101
|
+
|
|
102
|
+
Por cada sesión del corpus, verificar el layout SQL:
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
agent-workflow session-artifacts --code <CODE>
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Lógica:
|
|
109
|
+
1. Si `scripts_sql_present: true` → OK, usar `SCRIPTS.sql` (path: `.workflow/sessions/<folder>/SCRIPTS.sql`).
|
|
110
|
+
2. Si `scripts_sql_present: false` Y existe carpeta `.workflow/sessions/<folder>/scripts/` con sub-carpetas `01-ddl-tablas/`, `02-ddl-funciones/`, `03-migracion/` o `04-inserts/` → **ABORTAR**:
|
|
111
|
+
|
|
112
|
+
> Layout SQL legacy detectado en sessionXXX-<slug>:
|
|
113
|
+
> - scripts/01-ddl-tablas/...
|
|
114
|
+
> - scripts/02-ddl-funciones/...
|
|
115
|
+
> Migrar primero con `/agent-workflow:migrate --upgrade-topology` (consolida en SCRIPTS.sql) y luego re-correr export-scripts.
|
|
116
|
+
|
|
117
|
+
3. Si ninguno de los dos: la sesión no tiene cambios SQL → skipear esa sesión silenciosamente (no es error).
|
|
118
|
+
|
|
119
|
+
**Nunca consumir sesiones mixtas**: el bundle final debe ser coherente, sin mezclar layouts.
|
|
120
|
+
|
|
121
|
+
Para artefactos por sesión: el `session-artifacts` ya incluye flags de presencia (`scripts_sql_present`, `conclusiones_present`, etc.).
|
|
122
|
+
|
|
123
|
+
### Paso 2 — Escaneo de código fuente (delegado a `code-scan`)
|
|
124
|
+
|
|
125
|
+
```
|
|
126
|
+
agent-workflow code-scan
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Built-in patterns: localhost, IP literal, TODO/FIXME/XXX/HACK, hardcoded-secret, console-log. Override con `--patterns-file references/code-scan-recommendations.md` (catálogo extendido) o `--pattern ID:REGEX:SEV` repetible.
|
|
130
|
+
|
|
131
|
+
**Excludes** por default: `node_modules/`, `target/`, `dist/`, `build/`, `.workflow/`, `docs/`, `tests/`, `test/`, `.git/`, `__pycache__/`, `.idea/`, `.vscode/`. Override: `--exclude DIR1,DIR2`.
|
|
132
|
+
|
|
133
|
+
**Extensiones** por default: `.java`, `.ts`, `.js`, `.py`, `.go`, `.rb`, `.php`, `.cs`, `.kt`, `.scala`, `.vue`, `.tsx`, `.jsx`, `.properties`, `.yml`, `.yaml`, `.json`, `.xml`, `.sql`. Override: `--ext`.
|
|
134
|
+
|
|
135
|
+
Output: `{matches: [{pattern_id, severity, file, line, snippet, recommendation}], counts, by_severity, total_matches}`.
|
|
136
|
+
|
|
137
|
+
Si `--skip-code-scan`: marcar la sección 5 del manifest como "escaneo omitido".
|
|
138
|
+
|
|
139
|
+
Catálogo extendido (alta/media/baja con recomendaciones detalladas) en `references/code-scan-recommendations.md`.
|
|
140
|
+
|
|
141
|
+
### Paso 3 — Estado de git
|
|
142
|
+
|
|
143
|
+
```
|
|
144
|
+
git rev-parse --abbrev-ref HEAD
|
|
145
|
+
git log certificacion..HEAD --oneline
|
|
146
|
+
git log HEAD..certificacion --oneline
|
|
147
|
+
git status --porcelain
|
|
148
|
+
git diff certificacion --stat
|
|
149
|
+
git branch -a --list
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
Interpretar: rama actual, commits no mergeados, cambios sin commit, archivos modificados. Si `certificacion`: marcar "ya integrada". Si git falla: registrar advertencia, no abortar.
|
|
153
|
+
|
|
154
|
+
### Paso 4 — Numeración del output dir
|
|
155
|
+
|
|
156
|
+
```
|
|
157
|
+
agent-workflow next-number docs/scripts
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
Output dir resuelto:
|
|
161
|
+
- **hub mode** → `<hub>/docs/scripts/NNN-export-scripts-YYYY-MM-DD/`.
|
|
162
|
+
- **project mode** → `<cwd>/docs/scripts/NNN-export-scripts-YYYY-MM-DD/`.
|
|
163
|
+
|
|
164
|
+
Si `docs/scripts/` no existe, crearlo.
|
|
165
|
+
|
|
166
|
+
### Paso 5 — `por-sesion/` (bundle por sesión, v3.0.0)
|
|
167
|
+
|
|
168
|
+
Para cada sesión del corpus que tenga `SCRIPTS.sql` (verificado en Paso 1.5):
|
|
169
|
+
|
|
170
|
+
1. Crear `por-sesion/sessionXXX-<slug>/`.
|
|
171
|
+
2. **Leer y parsear `SCRIPTS.sql`** de la sesión:
|
|
172
|
+
- Detectar markers `-- @category: <01-04>` + `-- @stmt: NNN-verbo-objetivo`.
|
|
173
|
+
- Detectar opcionales `@objeto` y `@alcance` para el header canónico de cada archivo separado.
|
|
174
|
+
- Validar idempotencia básica (presencia de `IF EXISTS`, `OR REPLACE`, `ON CONFLICT`); advertir en manifest si falta.
|
|
175
|
+
3. **Separar en 01-04**:
|
|
176
|
+
- Por cada par marker → escribir archivo `por-sesion/sessionXXX-<slug>/<categoria>/<stmt>.sql` con header canónico re-derivado (Script / Sesion / Objeto / Alcance) + BEGIN/COMMIT propios.
|
|
177
|
+
- Orden dentro de cada categoría: cronológico según aparición en SCRIPTS.sql.
|
|
178
|
+
- Spec del SCRIPTS.sql: `agent-workflow/skills/sql-script-organizer/references/scripts-sql-format.md`.
|
|
179
|
+
4. **Delegar a `sql-rollback-generator` v1.0.0** (on-export): genera `<stmt>.rollback.sql` por cada forward separado + `rollback/00-rollback-global.sql` encadenado 04→01.
|
|
180
|
+
5. Copiar `queries/` tal cual si existe (canal aparte para queries de soporte; no se separa).
|
|
181
|
+
6. Si la sesión tenía layout legacy `scripts/01-04/*.sql` (sub-carpetas), el Paso 1.5 ya abortó antes — nunca llegamos acá con layout mixto.
|
|
182
|
+
|
|
183
|
+
### Paso 6 — `por-tema/` (opt-in)
|
|
184
|
+
|
|
185
|
+
Activación:
|
|
186
|
+
- `--themes slug1,slug2` declarado, **o**
|
|
187
|
+
- Al menos una sesión tiene `## Temas` en su OBJECTIVE, **o**
|
|
188
|
+
- `--themes infer` declarado (inferencia LLM).
|
|
189
|
+
|
|
190
|
+
Si activado, aplicar `references/theme-handling.md` (port adaptado de release-scripts legacy):
|
|
191
|
+
|
|
192
|
+
1. Resolver temas por sesión (lectura declarativa + inferencia + confirmación).
|
|
193
|
+
2. Asignar cada script a su tema (header `-- Temas:`, nombre, contenido, fallback `tema-general`).
|
|
194
|
+
3. Consolidar por categoría dentro de cada tema en un único `.sql` ejecutable (4 forwards + 4 rollbacks + 1 rollback de tema = ~9 archivos/tema).
|
|
195
|
+
4. Generar `ORDER.md` cross-tema con secuencia fase 1→4.
|
|
196
|
+
5. Si `--keep-parts`: preservar `por-tema/<slug>/parts/<categoria>/*.sql`.
|
|
197
|
+
|
|
198
|
+
Si no activado, **skip** este paso completo (sin sub-carpeta `por-tema/` vacía).
|
|
199
|
+
|
|
200
|
+
### Paso 7 — `rollback-global.sql` + `ORDER.md`
|
|
201
|
+
|
|
202
|
+
**`rollback-global.sql`**: encadena rollbacks en orden inverso al `ORDER.md`. Si `por-tema/` existe, el global encadena rollbacks por-tema; si no, encadena rollbacks por-sesion. Operaciones irreversibles → "Fase 5 — Cleanup irreversible" al final con header WARNING.
|
|
203
|
+
|
|
204
|
+
**`ORDER.md`**: secuencia ejecutable cross-bundle:
|
|
205
|
+
- Sin `por-tema/`: orden por sesión cronológica, dentro de cada una 01→04.
|
|
206
|
+
- Con `por-tema/`: intercalado por fase (Fase 1 DDL tablas cross-tema, Fase 2 DDL funciones cross-tema, etc.) — algoritmo en `references/theme-handling.md`.
|
|
207
|
+
|
|
208
|
+
### Paso 8 — Detección de acciones manuales
|
|
209
|
+
|
|
210
|
+
Cruzar contra `release/references/manual-actions-catalog.md` (reference cruzada — DEC-004 session061). Reglas resumidas:
|
|
211
|
+
|
|
212
|
+
| Condición | Acción manual |
|
|
213
|
+
|---|---|
|
|
214
|
+
| Tokens/api-key/credenciales mencionados sin valor | Solicitar a admin de prod (plantilla de correo) |
|
|
215
|
+
| Scripts en `03-migracion/` | Respaldar tablas afectadas |
|
|
216
|
+
| `ALTER TABLE ... DROP` o `DROP TABLE` | Validar ventana de downtime |
|
|
217
|
+
| Escaneo: `localhost` / staging URL | Reemplazar por env var |
|
|
218
|
+
| Escaneo: credenciales hardcodeadas (alta) | Rotar + gestor de secretos |
|
|
219
|
+
| Rama distinta de `certificacion` con commits | Crear PR a `certificacion` |
|
|
220
|
+
| Sesión activa con `.sql` sin bundle | Cerrar o aislar antes del export |
|
|
221
|
+
|
|
222
|
+
Cada acción incluye `id` (ACT-001, …) para referenciar desde el checklist final del manifest.
|
|
223
|
+
|
|
224
|
+
### Paso 9 — `manifest.md` + `README.md` + validaciones
|
|
225
|
+
|
|
226
|
+
**`manifest.md`** (informe consolidado): usar `references/manifest-template.md`. Secciones canónicas:
|
|
227
|
+
1. Resumen ejecutivo + readiness.
|
|
228
|
+
2. Sesiones incluidas.
|
|
229
|
+
3. Acciones manuales (ACT-NNN).
|
|
230
|
+
4. Base de datos (secuencia, rollback, impacto, vista por-tema si aplica).
|
|
231
|
+
5. Hallazgos del code-scan.
|
|
232
|
+
6. Git y ramas.
|
|
233
|
+
7. Documentación graduada.
|
|
234
|
+
8. Checklist final de producción.
|
|
235
|
+
9. Advertencias.
|
|
236
|
+
10. Metadata.
|
|
237
|
+
|
|
238
|
+
**`README.md`**: índice del directorio + mapeo sesión↔tema↔scripts + how-to-execute. Usar `references/readme-template.md`.
|
|
239
|
+
|
|
240
|
+
**Validaciones V1-V6** (`references/validations.md`):
|
|
241
|
+
- V1 estructura del manifest.
|
|
242
|
+
- V2 noise vetado (placeholders, paths absolutos, `NNN` sin reemplazar).
|
|
243
|
+
- V3 secciones obligatorias del manifest.
|
|
244
|
+
- V4 conditionals (vista por-tema honored, dry-run, código scan skip).
|
|
245
|
+
- V5 header del manifest bien formado.
|
|
246
|
+
- V6 referencias resolubles (paths a `docs/`).
|
|
247
|
+
|
|
248
|
+
Si V1, V3 o V4 fallan → abortar con error report. V2, V5, V6 → warning.
|
|
249
|
+
|
|
250
|
+
### Paso 10 — Escribir output
|
|
251
|
+
|
|
252
|
+
Si `--dry-run`: imprimir reporte (count sesiones incluidas, hallazgos por severidad, acciones manuales, V4 outcome). No escribir.
|
|
253
|
+
|
|
254
|
+
Si pasa: escribir directorio completo:
|
|
255
|
+
|
|
256
|
+
```
|
|
257
|
+
docs/scripts/NNN-export-scripts-YYYY-MM-DD/
|
|
258
|
+
├── manifest.md # informe consolidado
|
|
259
|
+
├── README.md # índice + mapeo
|
|
260
|
+
├── ORDER.md # secuencia ejecutable
|
|
261
|
+
├── rollback-global.sql # rollback encadenado inverso
|
|
262
|
+
├── por-sesion/
|
|
263
|
+
│ ├── sessionXXX-<slug>/
|
|
264
|
+
│ │ ├── 01-ddl-tablas/
|
|
265
|
+
│ │ ├── 02-ddl-funciones/
|
|
266
|
+
│ │ ├── 03-migracion/
|
|
267
|
+
│ │ ├── 04-inserts/
|
|
268
|
+
│ │ └── rollback/
|
|
269
|
+
│ └── ...
|
|
270
|
+
└── por-tema/ # opt-in
|
|
271
|
+
├── tema-<slug>/
|
|
272
|
+
│ ├── 01-ddl-tablas.sql # consolidado cross-session
|
|
273
|
+
│ ├── 02-ddl-funciones.sql
|
|
274
|
+
│ ├── 03-migracion.sql
|
|
275
|
+
│ ├── 04-inserts.sql
|
|
276
|
+
│ ├── rollback-tema-<slug>.sql
|
|
277
|
+
│ └── parts/ # si --keep-parts
|
|
278
|
+
└── tema-<otro>/...
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
### Paso 11 — Resumen al usuario
|
|
282
|
+
|
|
283
|
+
- Ruta del bundle (`docs/scripts/NNN-export-scripts-YYYY-MM-DD/`).
|
|
284
|
+
- Counts: sesiones incluidas, scripts totales, hallazgos por severidad, acciones manuales pendientes.
|
|
285
|
+
- Si `por-tema/` activado: temas resueltos + scripts por tema.
|
|
286
|
+
- Advertencias bloqueantes: sesiones abiertas, rollback ausente, irreversibles sin respaldo.
|
|
287
|
+
|
|
288
|
+
## Composición con otras skills
|
|
289
|
+
|
|
290
|
+
- **`sql-script-organizer`** — clasificación 01→04 cross-session (paso 5 y consolidación por tema paso 6).
|
|
291
|
+
- **`sql-rollback-generator`** — rollback acoplado por archivo y rollback global encadenado.
|
|
292
|
+
- **`session`** — este skill NO invoca graduación ni cierre.
|
|
293
|
+
- **`coding-standards`** — patrones de escaneo derivan de reglas de seguridad.
|
|
294
|
+
- **`agent-workflow:redaccion-simple`** — preset default aplicado en prosa del manifest.
|
|
295
|
+
|
|
296
|
+
## Re-ejecución
|
|
297
|
+
|
|
298
|
+
Idempotente funcional pero NO sobreescribe bundles previos. Cada ejecución toma siguiente NNN. Para regenerar: borrar el directorio manualmente y re-invocar.
|
|
299
|
+
|
|
300
|
+
## Relación con `release` / `release-scripts` legacy
|
|
301
|
+
|
|
302
|
+
Plan de deprecación Fase 1 (plugin v2.8.0):
|
|
303
|
+
- `/agent-workflow:release` y `/agent-workflow:release-scripts` siguen funcionando idénticos. Output legacy (`docs/release/NNN-informe-release.md` + `docs/scripts/NNN-sessionXXX-<slug>/` + `scripts-por-tema/`) sin cambios.
|
|
304
|
+
- Banner deprecation visible al cargar SKILL.md y commands/*.md de ambos.
|
|
305
|
+
- Workspaces que ya invocaron `release` mantienen `docs/release/` como histórico. Nuevas invocaciones se hacen vía `/agent-workflow:export-scripts`.
|
|
306
|
+
|
|
307
|
+
Plan de deprecación Fase 2 (plugin v3.0.0 — futuro, sin compromiso de fecha):
|
|
308
|
+
- Remoción de skills + commands legacy.
|
|
309
|
+
- Decisión final cuando se confirme migración cross-workspace.
|
|
310
|
+
|
|
311
|
+
Detalle completo: `references/deprecation-plan.md`.
|
|
312
|
+
|
|
313
|
+
## Recursos adicionales
|
|
314
|
+
|
|
315
|
+
- **`references/manifest-template.md`** — plantilla canónica del informe consolidado (port adaptado de `release/references/report-template.md` con nuevos paths).
|
|
316
|
+
- **`references/readme-template.md`** — plantilla del README del bundle.
|
|
317
|
+
- **`references/lexico-tecnico.md`** — lista mínima de noise vetado para V2.
|
|
318
|
+
- **`references/validations.md`** — V1-V6 con condiciones de hard-fail.
|
|
319
|
+
- **`references/code-scan-recommendations.md`** — catálogo extendido de patrones (port directo de `release/references/code-scan-patterns.md`).
|
|
320
|
+
- **`references/theme-handling.md`** — algoritmo de detección/consolidación por tema (port adaptado de `release-scripts/references/theme-detection.md` + `order-generation.md`).
|
|
321
|
+
- **`references/deprecation-plan.md`** — plan de fases 1-2.
|
|
322
|
+
- **`release/references/manual-actions-catalog.md`** — catálogo de acciones manuales (reference cruzada — DEC-004 session061).
|
|
323
|
+
- **`docs/conclusiones/007-export-commands-family.md`** — Propuesta original de la familia `/agent-workflow:export-*`.
|
|
324
|
+
- **`agent-workflow/skills/export-report/SKILL.md`**, **`export-arq/SKILL.md`**, **`export-tech-manuals/SKILL.md`** — hermanos de la familia.
|