@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,244 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sql-script-organizer
|
|
3
|
+
description: "Mantiene el archivo único SCRIPTS.sql por sesión (uppercase EN canon, F-D session062), aplica estilo del proyecto (BEGIN/COMMIT, idempotencia, schema explícito), markers @category (01-ddl-tablas, 02-ddl-funciones, 03-migracion, 04-inserts) y @stmt por sentencia. La separación 01-04 + generación de rollbacks ocurre post-hoc en /agent-workflow:export-scripts (no durante exec). BREAKING desde v1.0.0: reemplaza el layout scripts/01-04/* + .rollback.sql per archivo (2N+1) por SCRIPTS.sql único. Layouts legacy se migran con /agent-workflow:migrate --upgrade-topology."
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# SQL Script Organizer
|
|
8
|
+
|
|
9
|
+
Organización, estilo y graduación de scripts SQL dentro del flujo de sesiones.
|
|
10
|
+
|
|
11
|
+
## Regla cero — read/write filesystem only
|
|
12
|
+
|
|
13
|
+
Este skill **organiza, renumera, escribe diffs y prepara el bundle** en disco. **Nunca ejecuta SQL** contra `<mcp-cert>`/`<mcp-prod>` ni ningún otro destino. La aplicación del bundle (DDL, migraciones, inserts) la realiza el **usuario** manualmente, fuera del scope de este skill. Si durante el flujo aparece tentación de "verificar aplicando" — refusar y pedir al usuario que ejecute.
|
|
14
|
+
|
|
15
|
+
## When to use
|
|
16
|
+
|
|
17
|
+
- Cuando existan ≥2 archivos `.sql` en la sesión y necesiten ordenarse para entrega.
|
|
18
|
+
- **Antes de escribir un nuevo `.sql`** — para elegir categoría correcta y aplicar estilo desde el inicio.
|
|
19
|
+
- Al llegar a Fase 5 (Cierre) con scripts SQL pendientes de graduar.
|
|
20
|
+
- NL: "unificar", "reorganizar", "preparar bundle de scripts", "listos para prod".
|
|
21
|
+
- Al renumerar o reclasificar scripts durante la sesión.
|
|
22
|
+
|
|
23
|
+
## Sandbox read-only
|
|
24
|
+
|
|
25
|
+
`../session/references/sandbox-readonly-rules.md`. Plan describe clasificación, renumeración y orden propuestos (sin crear ni mover `.sql`).
|
|
26
|
+
|
|
27
|
+
## Staging durante la sesión (v1.0.0 — BREAKING)
|
|
28
|
+
|
|
29
|
+
**Archivo único** en la raíz de la sesión:
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
.workflow/sessions/sessionXXX-nombre/
|
|
33
|
+
└── SCRIPTS.sql (consolidado de todas las sentencias de la sesión)
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Spec completa: ver [`references/scripts-sql-format.md`](references/scripts-sql-format.md).
|
|
37
|
+
|
|
38
|
+
**Cada sentencia** se appendea al SCRIPTS.sql con un par de markers en comentarios:
|
|
39
|
+
|
|
40
|
+
```sql
|
|
41
|
+
-- @category: 01-ddl-tablas
|
|
42
|
+
-- @stmt: 01-crear-tabla-usuarios
|
|
43
|
+
CREATE TABLE IF NOT EXISTS esq_credito.tb_usuarios (
|
|
44
|
+
...
|
|
45
|
+
);
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
- `@category` clasifica la sentencia (4 valores canónicos, ver tabla abajo).
|
|
49
|
+
- `@stmt` da el slug determinístico (`NN-verbo-objetivo`). Sirve para que `export-scripts` derive el filename al separar.
|
|
50
|
+
- Orden cronológico dentro del archivo = orden en que se appendea. `export-scripts` resuelve el orden de ejecución final por categoría (01 → 02 → 03 → 04).
|
|
51
|
+
- `BEGIN;` global al inicio del archivo, `COMMIT;` al final. Cada sentencia individual NO trae su propio BEGIN/COMMIT (la separación post-hoc los agrega por archivo).
|
|
52
|
+
|
|
53
|
+
> **Sin .rollback.sql per archivo durante exec**. Los rollbacks se generan post-hoc al correr `/agent-workflow:export-scripts` (ver `sql-rollback-generator` v1.0.0).
|
|
54
|
+
|
|
55
|
+
## Migración desde layout legacy
|
|
56
|
+
|
|
57
|
+
Sesiones creadas con `sql-script-organizer` v0.x usan layout antiguo:
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
.workflow/sessions/sessionXXX-nombre/scripts/
|
|
61
|
+
├── 01-ddl-tablas/
|
|
62
|
+
│ └── 001-crear-tabla.sql
|
|
63
|
+
├── 02-ddl-funciones/
|
|
64
|
+
│ └── 001-crear-fn.sql
|
|
65
|
+
└── ...
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Para migrar: `/agent-workflow:migrate --upgrade-topology`. El skill `migrate` detecta el layout legacy y consolida en `SCRIPTS.sql` preservando order + agregando markers. Ver `agent-workflow/skills/migrate/SKILL.md` capability 11.
|
|
69
|
+
|
|
70
|
+
`/agent-workflow:export-scripts` aborta si detecta layout legacy sin migrar. NO consume sesiones mixtas.
|
|
71
|
+
|
|
72
|
+
## Las 4 categorías (markers `@category`)
|
|
73
|
+
|
|
74
|
+
| Marker | Patrones de detección |
|
|
75
|
+
|---|---|
|
|
76
|
+
| `01-ddl-tablas` | `CREATE TABLE`, `DROP TABLE`, `ALTER TABLE`, `CREATE INDEX`, `CREATE SEQUENCE` |
|
|
77
|
+
| `02-ddl-funciones` | `CREATE [OR REPLACE] FUNCTION`, `CREATE [OR REPLACE] PROCEDURE`, `DROP FUNCTION`, `DROP PROCEDURE` |
|
|
78
|
+
| `03-migracion` | `UPDATE`, `INSERT ... SELECT ...`, `DELETE` sobre datos existentes, transformaciones de columnas |
|
|
79
|
+
| `04-inserts` | `INSERT INTO ... VALUES`, seeds de catálogos, `tb_maestra_detalle`, datos de configuración inicial |
|
|
80
|
+
|
|
81
|
+
**Orden de ejecución obligatorio**: 01 → 02 → 03 → 04. El archivo SCRIPTS.sql puede mezclar categorías cronológicamente; `export-scripts` ordena al bundle final.
|
|
82
|
+
|
|
83
|
+
Patrones detallados y edge cases en `references/categorization-rules.md`.
|
|
84
|
+
|
|
85
|
+
## Reglas de estilo SQL
|
|
86
|
+
|
|
87
|
+
Cumplir `coding-standards/references/database-conventions.md#estilo-de-scripts-sql`:
|
|
88
|
+
|
|
89
|
+
- `BEGIN;` al inicio, `COMMIT;` al final.
|
|
90
|
+
- Idempotencia: `CREATE TABLE IF NOT EXISTS`, `DROP ... IF EXISTS`, `CREATE OR REPLACE`, `ON CONFLICT`.
|
|
91
|
+
- Cuerpo: preferir `WITH ... AS` (CTEs encadenadas) sobre subqueries anidados y sobre `DO $$ ... LOOP ... END $$`. Ver "Cuerpo: CTEs sobre DO/LOOP" abajo.
|
|
92
|
+
- Header canónico de 4 líneas (Script / Sesion / Objeto / Alcance). Ver "Header canónico" abajo.
|
|
93
|
+
- Separador entre secciones: una línea de comentario envuelta por guiones. Ver "Separadores entre secciones" abajo.
|
|
94
|
+
- Nunca crear `fn_*`/`sp_*` para reusar lógica exclusiva de un script; usar CTE o inline.
|
|
95
|
+
- Schema siempre explícito (`esq_credito.tb_x`, nunca `public.`).
|
|
96
|
+
|
|
97
|
+
### Header canónico
|
|
98
|
+
|
|
99
|
+
Bloque único al inicio del script, entre dos líneas de iguales:
|
|
100
|
+
|
|
101
|
+
```sql
|
|
102
|
+
-- ============================================================================
|
|
103
|
+
-- Script: NNN-tipo-objetivo.sql
|
|
104
|
+
-- Sesion: sNNN
|
|
105
|
+
-- Objeto: <qué hace, 1-2 líneas>
|
|
106
|
+
-- Alcance: <filtros y boundaries del cambio, 1 línea>
|
|
107
|
+
-- ============================================================================
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
- Solo 4 campos: `Script`, `Sesion`, `Objeto`, `Alcance`.
|
|
111
|
+
- `Sesion` puede listar varias sesiones cuando el script trazó historia (ej. `s078 → s080 (fix UNIQUE) → s082 (simplificado)`).
|
|
112
|
+
- Autor / Fecha / "Defensa futura" / notas largas **NO** van dentro del header. Si el contexto lo amerita, van como bloque libre debajo del header (separado por una línea en blanco). Default: no se generan.
|
|
113
|
+
- Si el motor no es Postgres, indicarlo en `Objeto:` o como nota libre debajo, no como campo del header.
|
|
114
|
+
|
|
115
|
+
### Separadores entre secciones
|
|
116
|
+
|
|
117
|
+
Cada sección del cuerpo se introduce con una línea de comentario corta envuelta por guiones seguidos:
|
|
118
|
+
|
|
119
|
+
```sql
|
|
120
|
+
-- ----------------------------------------------------------------------------
|
|
121
|
+
-- N. Descripción corta de qué hace este bloque.
|
|
122
|
+
-- ----------------------------------------------------------------------------
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
- Sin cajas dobles (`====` queda solo para el header).
|
|
126
|
+
- Si el script tiene una sola sección, omitir separadores.
|
|
127
|
+
- No partir un bloque corto solo por estética — los separadores marcan flujos lógicos, no líneas.
|
|
128
|
+
|
|
129
|
+
### Cuerpo: CTEs sobre DO/LOOP
|
|
130
|
+
|
|
131
|
+
- Default: una transformación = `WITH ... AS` con CTEs encadenadas + un `INSERT/UPDATE/DELETE` final que las consume.
|
|
132
|
+
- Evitar `DO $$ DECLARE ... FOR ... LOOP ... END $$` cuando el mismo resultado se logra declarativamente. Es código que el lector tiene que mentalizar fila a fila; el SQL declarativo es más fácil de auditar y revertir.
|
|
133
|
+
- Excepción permitida: descubrimiento dinámico de objetos (FKs, columnas, constraints, secuencias) que no se puede expresar en SQL declarativo. En ese caso documentar el motivo en `Objeto:` del header (ej. `Objeto: ... cascadea a hijas via FKs detectadas dinámicamente.`).
|
|
134
|
+
|
|
135
|
+
## Proceso de mantenimiento del SCRIPTS.sql (v1.0.0)
|
|
136
|
+
|
|
137
|
+
1. **Detectar la categoría** del cambio a aplicar siguiendo la tabla de markers.
|
|
138
|
+
2. **Verificar idempotencia** del statement (CREATE OR REPLACE, IF EXISTS, ON CONFLICT, etc.).
|
|
139
|
+
3. **Append** al `SCRIPTS.sql` con par de markers (`@category` + `@stmt`).
|
|
140
|
+
4. **Style check** — el statement debe cumplir el header canónico, CTEs sobre DO/LOOP, schema explícito.
|
|
141
|
+
5. **NO mover ni renumerar** archivos individuales (solo hay un SCRIPTS.sql).
|
|
142
|
+
6. **NO generar `.rollback.sql`** durante exec (rollback se genera al exportar).
|
|
143
|
+
|
|
144
|
+
El usuario revisa el SCRIPTS.sql periódicamente; la separación 01-04 final y la verificación de dependencias cruzadas la hace `/agent-workflow:export-scripts` post-hoc.
|
|
145
|
+
|
|
146
|
+
## Layout del bundle (post-export-scripts v3.0.0)
|
|
147
|
+
|
|
148
|
+
`/agent-workflow:export-scripts` produce el bundle al ejecutarse, no este skill:
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
<docs>/scripts/NNN-export-scripts-YYYY-MM-DD/por-sesion/sessionXXX-nombre/
|
|
152
|
+
├── README.md (generado por export-scripts)
|
|
153
|
+
├── 01-ddl-tablas/
|
|
154
|
+
│ ├── 001-crea-tb-x.sql (derivado de @stmt: 001-crea-tb-x)
|
|
155
|
+
│ └── ...
|
|
156
|
+
├── 02-ddl-funciones/
|
|
157
|
+
├── 03-migracion/
|
|
158
|
+
│ ├── 000-backup-tb-x.sql (auto-generado por sql-rollback-generator si UPDATE/DELETE masivo)
|
|
159
|
+
│ └── ...
|
|
160
|
+
├── 04-inserts/
|
|
161
|
+
└── rollback/
|
|
162
|
+
├── 00-rollback-global.sql (encadenado 04→03→02→01)
|
|
163
|
+
└── NNN-*.rollback.sql (1 por @stmt forward)
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Layout **legacy** pre-v1.0.0 (`scripts/01-04/*.sql + .rollback.sql` directo en sesión) ya **no se genera**; sesiones nuevas usan SCRIPTS.sql. Layouts legacy en sesiones cerradas se migran con `/agent-workflow:migrate --upgrade-topology`.
|
|
167
|
+
|
|
168
|
+
## Graduación al cierre (vía `/agent-workflow:release`)
|
|
169
|
+
|
|
170
|
+
Los scripts viven en la sesión durante execution: `.workflow/sessions/<folder>/scripts/`. La graduación a `docs/scripts/NNN-sessionXXX-<slug>/` la hace **`/agent-workflow:release` exclusivamente** (DEC-003) — único disparador de `kind=script`. Sesiones individuales NO invocan `agent-workflow graduate --kind script` directamente.
|
|
171
|
+
|
|
172
|
+
Destino al graduar (DEC-002, vía release):
|
|
173
|
+
- **hub mode** → `<hub>/docs/scripts/NNN-sessionXXX-<slug>/`.
|
|
174
|
+
- **project mode** → `<cwd>/docs/scripts/NNN-sessionXXX-<slug>/`.
|
|
175
|
+
|
|
176
|
+
`NNN` = siguiente correlativo en `docs/scripts/` (`agent-workflow next-number docs/scripts`). Release registra la ruta en `.workflow/HISTORY.md`.
|
|
177
|
+
|
|
178
|
+
## Modo release (cross-session + por tema)
|
|
179
|
+
|
|
180
|
+
Cuando `release` o `release-scripts` invocan este skill, aplica modo consolidación cross-session o modo por tema. Ambos comparten la clasificación 01→04 pero cambian el layout y la transaccionalidad.
|
|
181
|
+
|
|
182
|
+
Procedimiento completo (entrada, proceso paso a paso, layout destino, formato del consolidado, qué NO hacer) en **`references/consolidation-cross-session.md`**.
|
|
183
|
+
|
|
184
|
+
## Integración con otros skills
|
|
185
|
+
|
|
186
|
+
- **`sql-rollback-generator`** v1.0.0+ — **on-export**: ya NO genera rollbacks durante exec. La generación ocurre cuando `export-scripts` corre.
|
|
187
|
+
- **`export-scripts`** v3.0.0+ — consume `SCRIPTS.sql` per sesión, separa en 01-04 y delega a `sql-rollback-generator` para los rollbacks. Aborta si detecta layout legacy.
|
|
188
|
+
- **`migrate`** v1.3.0+ — capability 11: convierte layouts legacy `scripts/01-04/*.sql` → `SCRIPTS.sql` consolidado.
|
|
189
|
+
- **`coding-standards`** — fuente de las reglas de estilo (`database-conventions.md`).
|
|
190
|
+
- **`session`** — Fase execution invoca este skill al primer change SQL; Fase closure no necesita acción adicional.
|
|
191
|
+
|
|
192
|
+
## Ejemplo de header simplificado
|
|
193
|
+
|
|
194
|
+
Antes (estilo viejo, evitar):
|
|
195
|
+
|
|
196
|
+
```sql
|
|
197
|
+
-- ============================================================================
|
|
198
|
+
-- Script: 020-dml-normalizar-codusuario-uppercase.sql
|
|
199
|
+
-- Sesion: s078 (creado) → s079 (formato iniciales) → s080 (fix UNIQUE)
|
|
200
|
+
-- Fecha: 2026-04-29
|
|
201
|
+
-- Autor: Jesus Loayza (con asistencia AI)
|
|
202
|
+
-- Objeto: Renombra esq_x.tb_x.cod a MAYUSCULAS con sufijo numerico para
|
|
203
|
+
-- colisiones internas. Cascadea a hijas via FKs detectadas dinamicamente.
|
|
204
|
+
-- Alcance: SOLO usuarios id_tipo = 'CORE' con tb_persona valida.
|
|
205
|
+
-- Defensa futura: AuthSvc.generarCod en mscore-mantenimiento.
|
|
206
|
+
-- ============================================================================
|
|
207
|
+
-- Si el INSERT al mapping rebota con UNIQUE, significa que ...
|
|
208
|
+
-- ============================================================================
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
Después (estilo canónico):
|
|
212
|
+
|
|
213
|
+
```sql
|
|
214
|
+
-- ============================================================================
|
|
215
|
+
-- Script: 020-dml-normalizar-codusuario-uppercase.sql
|
|
216
|
+
-- Sesion: s078 → s080 (fix UNIQUE) → s082 (simplificado one-shot, sin trigger)
|
|
217
|
+
-- Objeto: Renombra esq_x.tb_x.cod a MAYUSCULAS con sufijo numérico para
|
|
218
|
+
-- colisiones. Cascadea a hijas vía FKs detectadas dinámicamente.
|
|
219
|
+
-- Alcance: SOLO usuarios id_tipo = 'CORE' con tb_persona válida.
|
|
220
|
+
-- ============================================================================
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
Y en el cuerpo, las secciones se separan así:
|
|
224
|
+
|
|
225
|
+
```sql
|
|
226
|
+
-- ----------------------------------------------------------------------------
|
|
227
|
+
-- 1. Mapping old → new para CORE con persona válida.
|
|
228
|
+
-- ----------------------------------------------------------------------------
|
|
229
|
+
WITH bases AS (
|
|
230
|
+
SELECT u.id, u.cod AS old_code,
|
|
231
|
+
UPPER(LEFT(TRIM(p.nombres), 1) || REPLACE(TRIM(p.apellido_paterno), ' ', '')) AS base_code
|
|
232
|
+
FROM esq_x.tb_x u
|
|
233
|
+
JOIN esq_x.tb_persona p ON p.id_persona = u.id_persona
|
|
234
|
+
WHERE u.id_tipo = 'CORE'
|
|
235
|
+
),
|
|
236
|
+
mapped AS ( ... )
|
|
237
|
+
INSERT INTO _cod_map (id, old_code, new_code) SELECT id, old_code, new_code FROM mapped;
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
## Recursos adicionales
|
|
241
|
+
|
|
242
|
+
- **`references/categorization-rules.md`** — patrones detallados, edge cases, scripts mixtos.
|
|
243
|
+
- **`references/bundle-readme-template.md`** — plantilla para `scripts/bundle/README.md`.
|
|
244
|
+
- **`references/consolidation-cross-session.md`** — modo release (cross-session + por tema).
|
package/skills/agent-workflow/standards/sql-script-organizer/references/bundle-readme-template.md
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Plantilla — README del Bundle SQL
|
|
2
|
+
|
|
3
|
+
Usar esta plantilla para generar `scripts/bundle/README.md` al finalizar la reorganización.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
```markdown
|
|
8
|
+
# Bundle SQL — sessionXXX: [nombre de sesión]
|
|
9
|
+
|
|
10
|
+
## Información
|
|
11
|
+
|
|
12
|
+
- **Sesión:** sessionXXX-[nombre-kebab]
|
|
13
|
+
- **Fecha de bundle:** YYYY-MM-DD
|
|
14
|
+
- **Motor de BD:** PostgreSQL [versión si se conoce]
|
|
15
|
+
- **Esquemas afectados:** esq_[dominio1], esq_[dominio2]
|
|
16
|
+
|
|
17
|
+
## Resumen
|
|
18
|
+
|
|
19
|
+
[1-2 líneas describiendo qué hace este bundle en conjunto]
|
|
20
|
+
|
|
21
|
+
## Orden de ejecución (forward)
|
|
22
|
+
|
|
23
|
+
Ejecutar en este orden exacto. Cada script usa `BEGIN`/`COMMIT`.
|
|
24
|
+
|
|
25
|
+
### 01 — DDL de Tablas
|
|
26
|
+
|
|
27
|
+
| # | Archivo | Descripción |
|
|
28
|
+
|---|---|---|
|
|
29
|
+
| 1 | `01-ddl-tablas/001-crea-tb-x.sql` | [descripción breve] |
|
|
30
|
+
| 2 | `01-ddl-tablas/002-agrega-col-tb-y.sql` | [descripción breve] |
|
|
31
|
+
|
|
32
|
+
### 02 — DDL de Funciones / SP
|
|
33
|
+
|
|
34
|
+
| # | Archivo | Descripción |
|
|
35
|
+
|---|---|---|
|
|
36
|
+
| 1 | `02-ddl-funciones/001-crea-fn-z.sql` | [descripción breve] |
|
|
37
|
+
|
|
38
|
+
### 03 — Migración de Datos
|
|
39
|
+
|
|
40
|
+
> Ejecutar scripts de respaldo (`000-backup-*.sql`) primero.
|
|
41
|
+
|
|
42
|
+
| # | Archivo | Descripción |
|
|
43
|
+
|---|---|---|
|
|
44
|
+
| 1 | `03-migracion/000-backup-tb-x.sql` | Respaldo previo en esq_audit |
|
|
45
|
+
| 2 | `03-migracion/001-migra-estado-x.sql` | [descripción breve] |
|
|
46
|
+
|
|
47
|
+
### 04 — Inserts Nuevos
|
|
48
|
+
|
|
49
|
+
| # | Archivo | Descripción |
|
|
50
|
+
|---|---|---|
|
|
51
|
+
| 1 | `04-inserts/001-inserta-maestras.sql` | [descripción breve] |
|
|
52
|
+
|
|
53
|
+
## Rollback
|
|
54
|
+
|
|
55
|
+
Para revertir **toda** la sesión: ejecutar `rollback/00-rollback-global.sql`.
|
|
56
|
+
|
|
57
|
+
Para revertir **un script específico**: ejecutar el `.rollback.sql` acoplado al lado del forward.
|
|
58
|
+
|
|
59
|
+
**Orden de rollback** (inverso al forward): 04 → 03 → 02 → 01.
|
|
60
|
+
|
|
61
|
+
## Operaciones irreversibles
|
|
62
|
+
|
|
63
|
+
<!-- Listar si aplica. Si no hay ninguna, eliminar esta sección. -->
|
|
64
|
+
|
|
65
|
+
| Script | Operación | Riesgo | Mitigation |
|
|
66
|
+
|---|---|---|---|
|
|
67
|
+
| `01-ddl-tablas/002-elimina-col-legacy.sql` | DROP COLUMN | Pérdida de datos | Backup en esq_audit antes de ejecutar |
|
|
68
|
+
|
|
69
|
+
## Dependencias externas
|
|
70
|
+
|
|
71
|
+
<!-- Scripts o estados de BD que deben existir ANTES de ejecutar este bundle -->
|
|
72
|
+
|
|
73
|
+
- [Ej: `tb_maestra_detalle` debe tener el `codprog` X con los estados Y, Z]
|
|
74
|
+
- [Ej: El feature flag `FLAG_NUEVA_FUNCIONALIDAD` debe estar activo]
|
|
75
|
+
|
|
76
|
+
## Notas de ejecución
|
|
77
|
+
|
|
78
|
+
<!-- Cualquier instrucción manual necesaria antes o después del bundle -->
|
|
79
|
+
|
|
80
|
+
- [Ej: Detener el servicio X antes de ejecutar `03-migracion/`]
|
|
81
|
+
- [Ej: Refrescar la caché de parámetros después de `04-inserts/`]
|
|
82
|
+
```
|
package/skills/agent-workflow/standards/sql-script-organizer/references/categorization-rules.md
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# Reglas de Categorización de Scripts SQL
|
|
2
|
+
|
|
3
|
+
## Patrones de detección por categoría
|
|
4
|
+
|
|
5
|
+
### `01-ddl-tablas/` — Estructura de tablas
|
|
6
|
+
|
|
7
|
+
| Patrón | Ejemplos |
|
|
8
|
+
|---|---|
|
|
9
|
+
| `CREATE TABLE` | `CREATE TABLE IF NOT EXISTS esq_credito.tb_solicitud (...)` |
|
|
10
|
+
| `DROP TABLE` | `DROP TABLE IF EXISTS esq_credito.tb_solicitud_bkp;` |
|
|
11
|
+
| `ALTER TABLE ... ADD COLUMN` | `ALTER TABLE esq_credito.tb_credito ADD COLUMN flag_activo integer;` |
|
|
12
|
+
| `ALTER TABLE ... DROP COLUMN` | `ALTER TABLE esq_credito.tb_credito DROP COLUMN IF EXISTS col_legacy;` |
|
|
13
|
+
| `ALTER TABLE ... ALTER COLUMN` | `ALTER TABLE tb_x ALTER COLUMN monto_total TYPE numeric(18,4);` |
|
|
14
|
+
| `ALTER TABLE ... RENAME` | `ALTER TABLE esq_credito.tb_x RENAME COLUMN col_vieja TO col_nueva;` |
|
|
15
|
+
| `CREATE INDEX` | `CREATE INDEX IF NOT EXISTS idx_tb_credito_cliente ON esq_credito.tb_credito(id_cliente);` |
|
|
16
|
+
| `DROP INDEX` | `DROP INDEX IF EXISTS esq_credito.idx_tb_credito_legacy;` |
|
|
17
|
+
| `CREATE SEQUENCE` | `CREATE SEQUENCE IF NOT EXISTS esq_credito.seq_tb_nueva;` |
|
|
18
|
+
| `DROP SEQUENCE` | `DROP SEQUENCE IF EXISTS esq_credito.seq_tb_legacy;` |
|
|
19
|
+
| `CREATE TABLE ... AS SELECT` | Reconstrucción desde backup |
|
|
20
|
+
| Constraint `ADD/DROP` | `ALTER TABLE tb_x ADD CONSTRAINT pk_tb_x PRIMARY KEY (id_x);` |
|
|
21
|
+
|
|
22
|
+
### `02-ddl-funciones/` — Funciones y Stored Procedures
|
|
23
|
+
|
|
24
|
+
| Patrón | Ejemplos |
|
|
25
|
+
|---|---|
|
|
26
|
+
| `CREATE [OR REPLACE] FUNCTION` | `CREATE OR REPLACE FUNCTION esq_credito.fn_calcular_cuota(...)` |
|
|
27
|
+
| `CREATE [OR REPLACE] PROCEDURE` | `CREATE OR REPLACE PROCEDURE esq_credito.sp_genera_credito(...)` |
|
|
28
|
+
| `DROP FUNCTION` | `DROP FUNCTION IF EXISTS esq_credito.fn_legacy(integer, numeric);` |
|
|
29
|
+
| `DROP PROCEDURE` | `DROP PROCEDURE IF EXISTS esq_credito.sp_legacy(integer);` |
|
|
30
|
+
| `CREATE [OR REPLACE] VIEW` | Vistas con lógica de negocio compleja |
|
|
31
|
+
| `DROP VIEW` | `DROP VIEW IF EXISTS esq_credito.vw_resumen_credito;` |
|
|
32
|
+
|
|
33
|
+
> **Nota**: La firma completa (incluyendo tipos de parámetros) es necesaria en `DROP FUNCTION`/`DROP PROCEDURE` para evitar ambigüedad en PostgreSQL.
|
|
34
|
+
|
|
35
|
+
### `03-migracion/` — Transformación de datos existentes
|
|
36
|
+
|
|
37
|
+
| Patrón | Ejemplos |
|
|
38
|
+
|---|---|
|
|
39
|
+
| `UPDATE` sobre tabla existente | `UPDATE esq_credito.tb_credito SET estado = 1 WHERE estado IS NULL;` |
|
|
40
|
+
| `INSERT ... SELECT ...` | Copiar/transformar datos entre tablas |
|
|
41
|
+
| `DELETE` sobre datos existentes | `DELETE FROM tb_x WHERE fecha_registro < '2020-01-01';` |
|
|
42
|
+
| Relleno de nueva columna | `UPDATE tb_x SET nueva_col = fn_calcula(otra_col);` |
|
|
43
|
+
| Normalización de datos | Separar una columna en múltiples, fusionar tablas |
|
|
44
|
+
| Migración de tipo de dato | Copiar valores transformados antes de cambiar tipo |
|
|
45
|
+
|
|
46
|
+
> **Importante**: Cualquier script de migración debe ir precedido de un `000-backup-<tabla>.sql` que respalde las filas afectadas a `esq_audit`.
|
|
47
|
+
|
|
48
|
+
### `04-inserts/` — Datos nuevos (seeds / catálogos)
|
|
49
|
+
|
|
50
|
+
| Patrón | Ejemplos |
|
|
51
|
+
|---|---|
|
|
52
|
+
| `INSERT INTO ... VALUES (...)` | Registros de `tb_maestra_detalle`, roles, perfiles |
|
|
53
|
+
| Seeds de configuración | Parámetros iniciales, valores de lookup |
|
|
54
|
+
| Datos de referencia | Países, monedas, estados de proceso |
|
|
55
|
+
| `INSERT ... ON CONFLICT DO NOTHING` | Idempotent inserts de catálogos |
|
|
56
|
+
| `INSERT ... ON CONFLICT DO UPDATE` | Upserts de configuración |
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Edge cases y scripts mixtos
|
|
61
|
+
|
|
62
|
+
### Script con DDL + DML (mezcla)
|
|
63
|
+
|
|
64
|
+
Si un script crea una tabla Y la puebla inmediatamente (patrón común en seeds):
|
|
65
|
+
|
|
66
|
+
**Opción A (recomendada)**: Dividir en dos scripts — `01-ddl-tablas/001-crea-tb-x.sql` + `04-inserts/001-inserta-tb-x.sql`.
|
|
67
|
+
|
|
68
|
+
**Opción B**: Si la división no tiene sentido semántico (ej: tabla temporal de trabajo que se llena y elimina en la misma operación), clasificar según la operación **dominante**. Documentar en el `README.md` del bundle.
|
|
69
|
+
|
|
70
|
+
### Scripts de respaldo previo (`000-backup-*.sql`)
|
|
71
|
+
|
|
72
|
+
Los scripts de respaldo pertenecen a la misma categoría que su script de migración:
|
|
73
|
+
- `03-migracion/000-backup-tb-credito.sql` precede a `03-migracion/001-migra-estado.sql`
|
|
74
|
+
- Numeración especial `000` para indicar que va primero dentro de la categoría
|
|
75
|
+
|
|
76
|
+
### Funciones de apoyo temporal
|
|
77
|
+
|
|
78
|
+
Si un script `03-migracion` usa una función **solo dentro de ese script** (creada y eliminada en el mismo archivo), **no** moverla a `02-ddl-funciones/`. Usar un bloque `DO $$ ... $$` o una CTE en su lugar, siguiendo la regla "sin funciones utilitarias efímeras".
|
|
79
|
+
|
|
80
|
+
### Scripts de versionado de funciones (`_v2`, `_v3`)
|
|
81
|
+
|
|
82
|
+
Al actualizar una función a una nueva versión:
|
|
83
|
+
- `02-ddl-funciones/001-actualiza-fn-x-v2.sql` → `CREATE OR REPLACE FUNCTION fn_x(...)`
|
|
84
|
+
- El rollback contiene la versión anterior (`v1`) para restaurar en caso necesario
|
|
85
|
+
- **No eliminar** la versión anterior hasta confirmar que `v2` funciona en producción
|
|
86
|
+
|
|
87
|
+
### Views
|
|
88
|
+
|
|
89
|
+
Clasificar en `02-ddl-funciones/` (mismo directorio que funciones). Las views son DDL de objetos de BD, no migración de datos.
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Resolución de dependencias entre categorías
|
|
94
|
+
|
|
95
|
+
Al renumerar, verificar:
|
|
96
|
+
|
|
97
|
+
1. `03-migracion` no puede referenciar una columna creada en `01-ddl-tablas` si ese script aún no fue ejecutado
|
|
98
|
+
2. `04-inserts` no puede insertar en una tabla que existe solo en `01-ddl-tablas` del mismo bundle (al ejecutar prod, ir en orden)
|
|
99
|
+
3. `02-ddl-funciones` puede depender de tablas de `01-ddl-tablas` — verificar que la función no se crea antes que su tabla
|
|
100
|
+
|
|
101
|
+
Si se detecta una dependencia circular o un orden imposible, dividir el bundle en sub-bundles y documentarlo en `README.md`.
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Nomenclatura de archivos
|
|
106
|
+
|
|
107
|
+
Formato: `NNN-verbo-sustantivo-objetivo.sql`
|
|
108
|
+
|
|
109
|
+
| Elemento | Regla | Ejemplos |
|
|
110
|
+
|---|---|---|
|
|
111
|
+
| `NNN` | 3 dígitos, cero-padded dentro de la categoría | `001`, `002`, `010` |
|
|
112
|
+
| `verbo` | acción que realiza el script | `crea`, `elimina`, `modifica`, `migra`, `inserta`, `actualiza`, `agrega` |
|
|
113
|
+
| `sustantivo` | objeto principal afectado | `tb-credito`, `fn-calcular-cuota`, `sp-genera-credito` |
|
|
114
|
+
| `objetivo` | detalle adicional si es necesario | `columna-estado`, `v2`, `sesion-inicial` |
|
|
115
|
+
|
|
116
|
+
Ejemplos válidos:
|
|
117
|
+
- `001-crea-tb-solicitud.sql`
|
|
118
|
+
- `002-agrega-columna-flag-activo-tb-credito.sql`
|
|
119
|
+
- `001-crea-fn-calcular-cuota-v2.sql`
|
|
120
|
+
- `001-migra-estado-credito.sql`
|
|
121
|
+
- `000-backup-tb-credito.sql`
|
|
122
|
+
- `001-inserta-maestras-estado-solicitud.sql`
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Consolidación cross-session (release) y modo por tema
|
|
2
|
+
|
|
3
|
+
Detalles del comportamiento de `sql-script-organizer` cuando es invocado por `release` (cross-session) o por `release-scripts` (por tema). El SKILL.md tiene el resumen; este archivo tiene el procedimiento completo.
|
|
4
|
+
|
|
5
|
+
## Modo consolidación cross-session (delegado por `release`)
|
|
6
|
+
|
|
7
|
+
Produce un bundle único que abarca múltiples sesiones en `docs/release/NNN-release-YYYY-MM-DD/scripts/`.
|
|
8
|
+
|
|
9
|
+
### Entrada
|
|
10
|
+
|
|
11
|
+
Lista de bundles fuente en orden cronológico de sesión:
|
|
12
|
+
- Sesiones cerradas: `docs/scripts/NNN-sessionXXX-*/` (ya graduados).
|
|
13
|
+
- Sesiones abiertas: `.workflow/sessions/sessionXXX-*/scripts/bundle/` o `scripts/` flat (organizar antes).
|
|
14
|
+
|
|
15
|
+
### Proceso
|
|
16
|
+
|
|
17
|
+
1. **Validar organización** de cada bundle fuente. Si flat, aplicar el proceso estándar de las 4 categorías antes.
|
|
18
|
+
2. **Crear estructura destino** con `01-ddl-tablas/`, `02-ddl-funciones/`, `03-migracion/`, `04-inserts/`, `rollback/`.
|
|
19
|
+
3. **Copiar scripts preservando orden**:
|
|
20
|
+
- Sesiones cronológicas (session001 → session002 → …).
|
|
21
|
+
- Dentro de cada sesión, orden 01→02→03→04.
|
|
22
|
+
- Renumerar `NNN` continuo dentro de la categoría.
|
|
23
|
+
- Header de origen:
|
|
24
|
+
```sql
|
|
25
|
+
-- Origen: sessionXXX-nombre · docs/scripts/NNN-sessionXXX-nombre/03-migracion/001-xyz.sql
|
|
26
|
+
-- Consolidado en release NNN (YYYY-MM-DD)
|
|
27
|
+
```
|
|
28
|
+
- El `.rollback.sql` viaja con su forward.
|
|
29
|
+
4. **No fusionar** scripts distintos en un único archivo.
|
|
30
|
+
5. **Resolver conflictos cross-sesión**: documentar en `scripts/README.md` si una migración depende de algo reemplazado.
|
|
31
|
+
6. **Generar `scripts/README.md`** con:
|
|
32
|
+
- Secuencia de ejecución lineal.
|
|
33
|
+
- Tabla "script en release | sesión origen | script original".
|
|
34
|
+
- Listado de irreversibles.
|
|
35
|
+
7. **Delegar a `sql-rollback-generator`** para el rollback global.
|
|
36
|
+
|
|
37
|
+
### Qué NO hacer
|
|
38
|
+
|
|
39
|
+
- Modificar scripts originales en `docs/scripts/NNN-sessionXXX-*/` — son memoria permanente.
|
|
40
|
+
- Mezclar sentencias de scripts distintos.
|
|
41
|
+
- Renombrar categorías — siempre 01→02→03→04.
|
|
42
|
+
- Saltar sesiones sin registrarlo.
|
|
43
|
+
|
|
44
|
+
### Layout del bundle consolidado
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
docs/release/NNN-release-YYYY-MM-DD/scripts/
|
|
48
|
+
├── README.md (mapeo sesión → script + secuencia)
|
|
49
|
+
├── 01-ddl-tablas/
|
|
50
|
+
│ ├── 001-crea-tb-x.sql (origen: session001)
|
|
51
|
+
│ ├── 001-crea-tb-x.rollback.sql
|
|
52
|
+
│ ├── 002-crea-tb-y.sql (origen: session003)
|
|
53
|
+
│ └── 002-crea-tb-y.rollback.sql
|
|
54
|
+
├── 02-ddl-funciones/
|
|
55
|
+
│ └── ...
|
|
56
|
+
├── 03-migracion/
|
|
57
|
+
│ ├── 000-backup-tb-x.sql (origen: session001)
|
|
58
|
+
│ ├── 001-migra-col-z.sql
|
|
59
|
+
│ ├── 001-migra-col-z.rollback.sql
|
|
60
|
+
│ └── ...
|
|
61
|
+
├── 04-inserts/
|
|
62
|
+
│ └── ...
|
|
63
|
+
└── rollback/
|
|
64
|
+
└── 00-rollback-release.sql (sql-rollback-generator)
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Confirmación
|
|
68
|
+
|
|
69
|
+
Si el usuario no confirmó producir el bundle consolidado, NO crear la carpeta. Referenciar bundles graduados por sesión y listar ejecución lineal.
|
|
70
|
+
|
|
71
|
+
## Modo por tema consolidado (delegado por `release-scripts`)
|
|
72
|
+
|
|
73
|
+
Reutiliza la clasificación 01→04 pero la aplica **dentro de cada tema** y **consolida** todos los scripts de una misma `(tema, categoría)` en un único `.sql`.
|
|
74
|
+
|
|
75
|
+
### Layout destino
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
docs/release/NNN-release-YYYY-MM-DD/scripts-por-tema/
|
|
79
|
+
└── tema-<slug>/
|
|
80
|
+
├── 01-ddl-tablas.sql (consolidado, BEGIN/COMMIT único)
|
|
81
|
+
├── 01-ddl-tablas.rollback.sql (consolidado inverso)
|
|
82
|
+
├── 02-ddl-funciones.sql
|
|
83
|
+
├── 02-ddl-funciones.rollback.sql
|
|
84
|
+
├── 03-migracion.sql
|
|
85
|
+
├── 03-migracion.rollback.sql
|
|
86
|
+
├── 04-inserts.sql
|
|
87
|
+
├── 04-inserts.rollback.sql
|
|
88
|
+
└── rollback-tema-<slug>.sql (revierte el tema completo)
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Qué cambia respecto al modo estándar
|
|
92
|
+
|
|
93
|
+
- **Consolidación**: N scripts de `(tema, categoría)` se concatenan en un único archivo. Eliminar `BEGIN;`/`COMMIT;` de cada uno; añadir `BEGIN;` único al inicio y `COMMIT;` al final. Transacción atómica por categoría del tema.
|
|
94
|
+
- **Trazabilidad**: separador `-- === [i/N] <nombre-original> ===` + ruta canónica.
|
|
95
|
+
- **Sin subcarpetas por categoría**: el nombre de archivo ya indica la categoría.
|
|
96
|
+
- **Categorías vacías** no se crean.
|
|
97
|
+
- **Scripts fuente preservados opt** con `--keep-parts` → `parts/<categoria>/*.sql`.
|
|
98
|
+
- **Orden cross-tema**: en `ORDER.md` (resuelto por `release-scripts`).
|
|
99
|
+
|
|
100
|
+
### Qué NO cambia
|
|
101
|
+
|
|
102
|
+
- Las 4 categorías y sus patrones.
|
|
103
|
+
- Las reglas de estilo SQL.
|
|
104
|
+
- El bundle plano sigue generándose igual; el modo por-tema es aditivo.
|
|
105
|
+
|
|
106
|
+
### Formato del archivo consolidado
|
|
107
|
+
|
|
108
|
+
```sql
|
|
109
|
+
-- Tema: <slug>
|
|
110
|
+
-- Categoría: 01-ddl-tablas
|
|
111
|
+
-- Release: NNN (YYYY-MM-DD)
|
|
112
|
+
-- Consolidado: <nombre1>.sql, <nombre2>.sql, …
|
|
113
|
+
|
|
114
|
+
BEGIN;
|
|
115
|
+
|
|
116
|
+
-- [1/N] <nombre>.sql (origen: sessionXXX)
|
|
117
|
+
<contenido sin BEGIN/COMMIT>
|
|
118
|
+
|
|
119
|
+
-- [2/N] <nombre>.sql (origen: sessionXXX)
|
|
120
|
+
<contenido>
|
|
121
|
+
|
|
122
|
+
COMMIT;
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Ver `release-scripts/SKILL.md` y `release-scripts/references/theme-detection.md` para asignación script→tema.
|