@tacuchi/agent-workflow-cli 11.0.1 → 12.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +51 -95
- package/dist/application/artifacts-service.d.ts +3 -12
- package/dist/application/artifacts-service.d.ts.map +1 -1
- package/dist/application/artifacts-service.js +18 -19
- package/dist/application/artifacts-service.js.map +1 -1
- package/dist/application/branch-resolver.d.ts +16 -0
- package/dist/application/branch-resolver.d.ts.map +1 -0
- package/dist/application/branch-resolver.js +24 -0
- package/dist/application/branch-resolver.js.map +1 -0
- package/dist/application/check-branch-service.d.ts +0 -2
- package/dist/application/check-branch-service.d.ts.map +1 -1
- package/dist/application/check-branch-service.js +5 -40
- package/dist/application/check-branch-service.js.map +1 -1
- package/dist/application/checkpoint/markdown.d.ts.map +1 -1
- package/dist/application/checkpoint/markdown.js +1 -16
- package/dist/application/checkpoint/markdown.js.map +1 -1
- package/dist/application/checkpoint/state-reader.d.ts +1 -3
- package/dist/application/checkpoint/state-reader.d.ts.map +1 -1
- package/dist/application/checkpoint/state-reader.js +10 -31
- package/dist/application/checkpoint/state-reader.js.map +1 -1
- package/dist/application/checkpoint-service.d.ts +12 -14
- package/dist/application/checkpoint-service.d.ts.map +1 -1
- package/dist/application/checkpoint-service.js +36 -61
- package/dist/application/checkpoint-service.js.map +1 -1
- package/dist/application/checkpoint-write-service.d.ts +0 -2
- package/dist/application/checkpoint-write-service.d.ts.map +1 -1
- package/dist/application/checkpoint-write-service.js +5 -6
- package/dist/application/checkpoint-write-service.js.map +1 -1
- package/dist/application/history-update-service.js +3 -1
- package/dist/application/history-update-service.js.map +1 -1
- package/dist/application/hook-branch-check.d.ts.map +1 -1
- package/dist/application/hook-branch-check.js +5 -34
- package/dist/application/hook-branch-check.js.map +1 -1
- package/dist/application/hook-git-commit-advisor.d.ts.map +1 -1
- package/dist/application/hook-git-commit-advisor.js +18 -23
- package/dist/application/hook-git-commit-advisor.js.map +1 -1
- package/dist/application/markdown.d.ts.map +1 -1
- package/dist/application/markdown.js +0 -4
- package/dist/application/markdown.js.map +1 -1
- package/dist/application/parsers/project-block.d.ts +0 -8
- package/dist/application/parsers/project-block.d.ts.map +1 -1
- package/dist/application/parsers/project-block.js +13 -52
- package/dist/application/parsers/project-block.js.map +1 -1
- package/dist/application/paths-service.d.ts +7 -8
- package/dist/application/paths-service.d.ts.map +1 -1
- package/dist/application/paths-service.js +12 -8
- package/dist/application/paths-service.js.map +1 -1
- package/dist/application/project-md-upsert-service.d.ts +3 -11
- package/dist/application/project-md-upsert-service.d.ts.map +1 -1
- package/dist/application/project-md-upsert-service.js +6 -56
- package/dist/application/project-md-upsert-service.js.map +1 -1
- package/dist/application/project-tab-data.d.ts +14 -42
- package/dist/application/project-tab-data.d.ts.map +1 -1
- package/dist/application/project-tab-data.js +27 -113
- package/dist/application/project-tab-data.js.map +1 -1
- package/dist/application/release-data/artifacts.d.ts +0 -2
- package/dist/application/release-data/artifacts.d.ts.map +1 -1
- package/dist/application/release-data/artifacts.js +22 -12
- package/dist/application/release-data/artifacts.js.map +1 -1
- package/dist/application/release-data/sessions.d.ts +0 -2
- package/dist/application/release-data/sessions.d.ts.map +1 -1
- package/dist/application/release-data/sessions.js +36 -27
- package/dist/application/release-data/sessions.js.map +1 -1
- package/dist/application/release-data-service.d.ts +0 -3
- package/dist/application/release-data-service.d.ts.map +1 -1
- package/dist/application/release-data-service.js +3 -21
- package/dist/application/release-data-service.js.map +1 -1
- package/dist/application/render/history-row.d.ts +1 -9
- package/dist/application/render/history-row.d.ts.map +1 -1
- package/dist/application/render/history-row.js +3 -20
- package/dist/application/render/history-row.js.map +1 -1
- package/dist/application/render/project-block.d.ts +1 -3
- package/dist/application/render/project-block.d.ts.map +1 -1
- package/dist/application/render/project-block.js +4 -27
- package/dist/application/render/project-block.js.map +1 -1
- package/dist/application/self/doctor-self.d.ts.map +1 -1
- package/dist/application/self/doctor-self.js +15 -8
- package/dist/application/self/doctor-self.js.map +1 -1
- package/dist/application/self/install-hooks.d.ts +1 -1
- package/dist/application/self/install-hooks.d.ts.map +1 -1
- package/dist/application/self/install-hooks.js +3 -2
- package/dist/application/self/install-hooks.js.map +1 -1
- package/dist/application/self/install-skill.d.ts +9 -3
- package/dist/application/self/install-skill.d.ts.map +1 -1
- package/dist/application/self/install-skill.js +16 -16
- package/dist/application/self/install-skill.js.map +1 -1
- package/dist/application/self/uninstall-skill.js +14 -12
- package/dist/application/self/uninstall-skill.js.map +1 -1
- package/dist/application/self/uninstall.js +14 -12
- package/dist/application/self/uninstall.js.map +1 -1
- package/dist/application/session-artifacts.d.ts +7 -6
- package/dist/application/session-artifacts.d.ts.map +1 -1
- package/dist/application/session-artifacts.js +10 -15
- package/dist/application/session-artifacts.js.map +1 -1
- package/dist/application/session-close-service.d.ts +5 -22
- package/dist/application/session-close-service.d.ts.map +1 -1
- package/dist/application/session-close-service.js +20 -143
- package/dist/application/session-close-service.js.map +1 -1
- package/dist/application/session-create-service.d.ts +9 -29
- package/dist/application/session-create-service.d.ts.map +1 -1
- package/dist/application/session-create-service.js +44 -288
- package/dist/application/session-create-service.js.map +1 -1
- package/dist/application/session-resolver.d.ts +4 -25
- package/dist/application/session-resolver.d.ts.map +1 -1
- package/dist/application/session-resolver.js +33 -149
- package/dist/application/session-resolver.js.map +1 -1
- package/dist/application/session-resume-service.d.ts +3 -4
- package/dist/application/session-resume-service.d.ts.map +1 -1
- package/dist/application/session-resume-service.js +8 -26
- package/dist/application/session-resume-service.js.map +1 -1
- package/dist/application/sessions-service.d.ts +2 -3
- package/dist/application/sessions-service.d.ts.map +1 -1
- package/dist/application/sessions-service.js +9 -26
- package/dist/application/sessions-service.js.map +1 -1
- package/dist/application/skill-index-service.d.ts +0 -2
- package/dist/application/skill-index-service.d.ts.map +1 -1
- package/dist/application/skill-index-service.js +0 -1
- package/dist/application/skill-index-service.js.map +1 -1
- package/dist/application/skills-resolver-service.d.ts +22 -0
- package/dist/application/skills-resolver-service.d.ts.map +1 -0
- package/dist/application/skills-resolver-service.js +71 -0
- package/dist/application/skills-resolver-service.js.map +1 -0
- package/dist/application/sources-service.d.ts +0 -5
- package/dist/application/sources-service.d.ts.map +1 -1
- package/dist/application/sources-service.js +5 -44
- package/dist/application/sources-service.js.map +1 -1
- package/dist/application/templates/session.d.ts +24 -0
- package/dist/application/templates/session.d.ts.map +1 -0
- package/dist/application/templates/session.js +46 -0
- package/dist/application/templates/session.js.map +1 -0
- package/dist/application/upgrade-hub-mode-service.d.ts.map +1 -1
- package/dist/application/upgrade-hub-mode-service.js +0 -1
- package/dist/application/upgrade-hub-mode-service.js.map +1 -1
- package/dist/application/workspace-init-service.d.ts +60 -0
- package/dist/application/workspace-init-service.d.ts.map +1 -0
- package/dist/application/workspace-init-service.js +227 -0
- package/dist/application/workspace-init-service.js.map +1 -0
- package/dist/cli/commands/check-branch.d.ts.map +1 -1
- package/dist/cli/commands/check-branch.js +0 -3
- package/dist/cli/commands/check-branch.js.map +1 -1
- package/dist/cli/commands/plugin-doctor.d.ts.map +1 -1
- package/dist/cli/commands/plugin-doctor.js +0 -3
- package/dist/cli/commands/plugin-doctor.js.map +1 -1
- package/dist/cli/commands/project-md-upsert.d.ts.map +1 -1
- package/dist/cli/commands/project-md-upsert.js +5 -31
- package/dist/cli/commands/project-md-upsert.js.map +1 -1
- package/dist/cli/commands/session-close.d.ts.map +1 -1
- package/dist/cli/commands/session-close.js +1 -33
- package/dist/cli/commands/session-close.js.map +1 -1
- package/dist/cli/commands/session-create.d.ts.map +1 -1
- package/dist/cli/commands/session-create.js +5 -21
- package/dist/cli/commands/session-create.js.map +1 -1
- package/dist/cli/commands/session-resume.js +1 -1
- package/dist/cli/commands/session-resume.js.map +1 -1
- package/dist/cli/commands/set-working-branch.d.ts +3 -0
- package/dist/cli/commands/set-working-branch.d.ts.map +1 -0
- package/dist/cli/commands/set-working-branch.js +34 -0
- package/dist/cli/commands/set-working-branch.js.map +1 -0
- package/dist/cli/commands/skill-index.d.ts.map +1 -1
- package/dist/cli/commands/skill-index.js +0 -3
- package/dist/cli/commands/skill-index.js.map +1 -1
- package/dist/cli/commands/skills.d.ts +3 -0
- package/dist/cli/commands/skills.d.ts.map +1 -0
- package/dist/cli/commands/skills.js +10 -0
- package/dist/cli/commands/skills.js.map +1 -0
- package/dist/cli/commands/sources.d.ts.map +1 -1
- package/dist/cli/commands/sources.js +0 -3
- package/dist/cli/commands/sources.js.map +1 -1
- package/dist/cli/commands/workspace-init.d.ts +3 -0
- package/dist/cli/commands/workspace-init.d.ts.map +1 -0
- package/dist/cli/commands/workspace-init.js +69 -0
- package/dist/cli/commands/workspace-init.js.map +1 -0
- package/dist/cli/help-groups.d.ts.map +1 -1
- package/dist/cli/help-groups.js +8 -19
- package/dist/cli/help-groups.js.map +1 -1
- package/dist/cli/interactive-menu.d.ts +1 -1
- package/dist/cli/interactive-menu.d.ts.map +1 -1
- package/dist/cli/main.js +29 -37
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/parser.d.ts +0 -2
- package/dist/cli/parser.d.ts.map +1 -1
- package/dist/cli/parser.js +1 -13
- package/dist/cli/parser.js.map +1 -1
- package/dist/cli/tui/app.js +3 -38
- package/dist/cli/tui/app.js.map +1 -1
- package/dist/cli/tui/components/hub-init-alias.js +1 -1
- package/dist/cli/tui/components/hub-init-alias.js.map +1 -1
- package/dist/cli/tui/components/hub-init-form.d.ts.map +1 -1
- package/dist/cli/tui/components/hub-init-form.js +13 -12
- package/dist/cli/tui/components/hub-init-form.js.map +1 -1
- package/dist/cli/tui/components/workspace-init-alias.d.ts +5 -0
- package/dist/cli/tui/components/workspace-init-alias.d.ts.map +1 -0
- package/dist/cli/tui/components/workspace-init-alias.js +19 -0
- package/dist/cli/tui/components/workspace-init-alias.js.map +1 -0
- package/dist/cli/tui/components/workspace-init-form.d.ts +13 -0
- package/dist/cli/tui/components/workspace-init-form.d.ts.map +1 -0
- package/dist/cli/tui/components/workspace-init-form.js +87 -0
- package/dist/cli/tui/components/workspace-init-form.js.map +1 -0
- package/dist/cli/tui/data/activity.d.ts +1 -1
- package/dist/cli/tui/data/activity.d.ts.map +1 -1
- package/dist/cli/tui/data/activity.js +2 -2
- package/dist/cli/tui/data/activity.js.map +1 -1
- package/dist/cli/tui/data/workflow-content.d.ts.map +1 -1
- package/dist/cli/tui/data/workflow-content.js +67 -87
- package/dist/cli/tui/data/workflow-content.js.map +1 -1
- package/dist/cli/tui/tabs/project-tab.d.ts.map +1 -1
- package/dist/cli/tui/tabs/project-tab.js +23 -97
- package/dist/cli/tui/tabs/project-tab.js.map +1 -1
- package/dist/cli/tui/tabs/skills-tab.d.ts.map +1 -1
- package/dist/cli/tui/tabs/skills-tab.js +7 -7
- package/dist/cli/tui/tabs/skills-tab.js.map +1 -1
- package/dist/cli/tui/tabs/workflow-tab.d.ts +1 -3
- package/dist/cli/tui/tabs/workflow-tab.d.ts.map +1 -1
- package/dist/cli/tui/tabs/workflow-tab.js +2 -2
- package/dist/cli/tui/tabs/workflow-tab.js.map +1 -1
- package/dist/cli/types.d.ts +3 -0
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/domain/plugin.d.ts +2 -12
- package/dist/domain/plugin.d.ts.map +1 -1
- package/dist/domain/project.d.ts +0 -9
- package/dist/domain/project.d.ts.map +1 -1
- package/dist/domain/session.d.ts +7 -24
- package/dist/domain/session.d.ts.map +1 -1
- package/dist/domain/skills.d.ts +22 -0
- package/dist/domain/skills.d.ts.map +1 -0
- package/dist/domain/skills.js +37 -0
- package/dist/domain/skills.js.map +1 -0
- package/dist/domain/types.d.ts +6 -2
- package/dist/domain/types.d.ts.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/runtime/config-service.js +1 -1
- package/dist/runtime/config-service.js.map +1 -1
- package/dist/runtime/types.d.ts +0 -1
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime/types.js.map +1 -1
- package/package.json +12 -3
- package/skills/w/README.md +65 -0
- package/skills/w/SKILL.md +153 -0
- package/skills/w/artifacts/README.md +60 -0
- package/skills/w/artifacts/artifacts-core/BACKLOG.md +12 -0
- package/skills/w/artifacts/artifacts-core/CHECKPOINT.md +22 -0
- package/skills/w/artifacts/artifacts-core/SCRIPTS.sql +39 -0
- package/skills/w/artifacts/artifacts-core/SESSION.md +27 -0
- package/skills/w/artifacts/artifacts-core/TASKS.md +18 -0
- package/skills/w/artifacts/artifacts-dev/DECISION.md +11 -0
- package/skills/w/artifacts/artifacts-dev/TECHNICAL-NOTE.md +81 -0
- package/skills/w/artifacts/artifacts-research/ANALYSIS-FILE.md +48 -0
- package/skills/w/artifacts/artifacts-research/CONCLUSIONS.md +20 -0
- package/skills/w/commands/README.md +116 -0
- package/skills/w/commands/export-diagrams.md +35 -0
- package/skills/w/commands/export-manuals.md +35 -0
- package/skills/w/commands/export-reports.md +35 -0
- package/skills/w/commands/export-scripts.md +35 -0
- package/skills/w/commands/plan-exec.md +46 -0
- package/skills/w/commands/plan-new.md +44 -0
- package/skills/w/commands/quick.md +39 -0
- package/skills/w/commands/spec-new.md +63 -0
- package/skills/w/commands/spec-refine.md +41 -0
- package/skills/w/commands/workspace-init.md +39 -0
- package/skills/w/exports/README.md +88 -0
- package/skills/w/exports/export-diagrams/SKILL.md +125 -0
- package/skills/w/exports/export-manuals/SKILL.md +127 -0
- package/skills/w/exports/export-reports/SKILL.md +115 -0
- package/skills/w/exports/export-scripts/SKILL.md +135 -0
- package/skills/w/hooks/README.md +15 -0
- package/skills/{agent-workflow → w}/hooks/hooks.template.json +2 -2
- package/skills/w/loops/README.md +118 -0
- package/skills/w/loops/plan-exec-loop/SKILL.md +161 -0
- package/skills/w/loops/plan-new-loop/SKILL.md +97 -0
- package/skills/w/loops/quick-loop/SKILL.md +102 -0
- package/skills/w/loops/spec-refine-loop/SKILL.md +222 -0
- package/skills/w/roles/README.md +154 -0
- package/skills/w/roles/coding-standards/SKILL.md +82 -0
- package/skills/w/roles/diagrams/SKILL.md +248 -0
- package/skills/w/roles/git/SKILL.md +98 -0
- package/skills/w/roles/research/SKILL.md +181 -0
- package/skills/w/roles/sql/SKILL.md +137 -0
- package/skills/w/roles/testing/SKILL.md +180 -0
- package/skills/w/roles/tools/SKILL.md +148 -0
- package/skills/w/roles/ui-spec/SKILL.md +136 -0
- package/skills/w/roles/writing/SKILL.md +90 -0
- package/skills/agent-workflow/LICENSE +0 -661
- package/skills/agent-workflow/MANUAL-FUNCIONAL.md +0 -298
- package/skills/agent-workflow/MANUAL-TECNICO.md +0 -271
- package/skills/agent-workflow/README.md +0 -74
- package/skills/agent-workflow/SKILL.md +0 -112
- package/skills/agent-workflow/commands/README.md +0 -26
- package/skills/agent-workflow/commands/compact.md +0 -24
- package/skills/agent-workflow/commands/doctor.md +0 -100
- package/skills/agent-workflow/commands/export-arq.md +0 -77
- package/skills/agent-workflow/commands/export-conclusions.md +0 -78
- package/skills/agent-workflow/commands/export-plan.md +0 -74
- package/skills/agent-workflow/commands/export-qa-note.md +0 -30
- package/skills/agent-workflow/commands/export-report.md +0 -78
- package/skills/agent-workflow/commands/export-requirement.md +0 -30
- package/skills/agent-workflow/commands/export-scripts.md +0 -82
- package/skills/agent-workflow/commands/export-tech-manuals.md +0 -75
- package/skills/agent-workflow/commands/export-tech-note.md +0 -30
- package/skills/agent-workflow/commands/hub-init.md +0 -58
- package/skills/agent-workflow/commands/migrate.md +0 -56
- package/skills/agent-workflow/commands/patch.md +0 -49
- package/skills/agent-workflow/commands/project-init.md +0 -60
- package/skills/agent-workflow/commands/resume.md +0 -22
- package/skills/agent-workflow/commands/rules.md +0 -41
- package/skills/agent-workflow/commands/session.md +0 -35
- package/skills/agent-workflow/docs/TEST-PLAN.md +0 -163
- package/skills/agent-workflow/doctrine/README.md +0 -15
- package/skills/agent-workflow/doctrine/compact/SKILL.md +0 -145
- package/skills/agent-workflow/doctrine/doctor/SKILL.md +0 -86
- package/skills/agent-workflow/doctrine/hub-init/SKILL.md +0 -77
- package/skills/agent-workflow/doctrine/hub-init/references/multiroot-manual.md +0 -51
- package/skills/agent-workflow/doctrine/implement/SKILL.md +0 -290
- package/skills/agent-workflow/doctrine/implement/references/branch-verification.md +0 -16
- package/skills/agent-workflow/doctrine/implement/references/design-md-template.md +0 -108
- package/skills/agent-workflow/doctrine/implement/references/rollback-guide.md +0 -83
- package/skills/agent-workflow/doctrine/migrate/SKILL.md +0 -281
- package/skills/agent-workflow/doctrine/project-init/SKILL.md +0 -100
- package/skills/agent-workflow/doctrine/refactor/SKILL.md +0 -208
- package/skills/agent-workflow/doctrine/refactor/references/refactor-md-template.md +0 -108
- package/skills/agent-workflow/doctrine/refactor/references/strangler-checklist.md +0 -116
- package/skills/agent-workflow/doctrine/resume/SKILL.md +0 -199
- package/skills/agent-workflow/doctrine/rules/SKILL.md +0 -250
- package/skills/agent-workflow/doctrine/session/SKILL.md +0 -471
- package/skills/agent-workflow/doctrine/session/references/auto-plan-rules.md +0 -63
- package/skills/agent-workflow/doctrine/session/references/backlog-template.md +0 -95
- package/skills/agent-workflow/doctrine/session/references/branch-verification.md +0 -198
- package/skills/agent-workflow/doctrine/session/references/commits-policy.md +0 -111
- package/skills/agent-workflow/doctrine/session/references/communication-style.md +0 -50
- package/skills/agent-workflow/doctrine/session/references/graduacion-routing.md +0 -88
- package/skills/agent-workflow/doctrine/session/references/lifecycle-deep.md +0 -160
- package/skills/agent-workflow/doctrine/session/references/prompts/C1-specialty-selection.md +0 -11
- package/skills/agent-workflow/doctrine/session/references/prompts/C2-cost-guard.md +0 -14
- package/skills/agent-workflow/doctrine/session/references/prompts/M1-closure-commit-prompt.md +0 -104
- package/skills/agent-workflow/doctrine/session/references/prompts/M10-next-step.md +0 -17
- package/skills/agent-workflow/doctrine/session/references/prompts/M11-context.md +0 -16
- package/skills/agent-workflow/doctrine/session/references/prompts/M13-closure-cleanup.md +0 -61
- package/skills/agent-workflow/doctrine/session/references/prompts/M2-branch-caso-A.md +0 -14
- package/skills/agent-workflow/doctrine/session/references/prompts/M3-branch-caso-C.md +0 -33
- package/skills/agent-workflow/doctrine/session/references/prompts/M4-cross-source-hard-gate.md +0 -33
- package/skills/agent-workflow/doctrine/session/references/prompts/M5-modality-analyze.md +0 -15
- package/skills/agent-workflow/doctrine/session/references/prompts/M6-phase-gate.md +0 -31
- package/skills/agent-workflow/doctrine/session/references/prompts/M7-refactor-legacy-detected.md +0 -28
- package/skills/agent-workflow/doctrine/session/references/prompts/M8-refactor-cleanup.md +0 -16
- package/skills/agent-workflow/doctrine/session/references/prompts/M9-contract-review.md +0 -39
- package/skills/agent-workflow/doctrine/session/references/prompts/S1-type-design.md +0 -15
- package/skills/agent-workflow/doctrine/session/references/prompts/S2-topic-change-detection.md +0 -14
- package/skills/agent-workflow/doctrine/session/references/prompts/S3-flow-detection.md +0 -28
- package/skills/agent-workflow/doctrine/session/references/prompts/S4-resume.md +0 -27
- package/skills/agent-workflow/doctrine/session/references/prompts/S5-post-compact.md +0 -17
- package/skills/agent-workflow/doctrine/session/references/prompts/S6-scope.md +0 -16
- package/skills/agent-workflow/doctrine/session/references/prompts/S7-design-review.md +0 -37
- package/skills/agent-workflow/doctrine/session/references/prompts-catalog.md +0 -213
- package/skills/agent-workflow/doctrine/session/references/sandbox-readonly-rules.md +0 -82
- package/skills/agent-workflow/doctrine/session/references/specialty-decision-tree.md +0 -56
- package/skills/agent-workflow/doctrine/session/references/topic-change-rules.md +0 -67
- package/skills/agent-workflow/exports/README.md +0 -15
- package/skills/agent-workflow/exports/export-arq/SKILL.md +0 -229
- package/skills/agent-workflow/exports/export-arq/references/lexico-tecnico.md +0 -94
- package/skills/agent-workflow/exports/export-arq/references/template-c4.md +0 -293
- package/skills/agent-workflow/exports/export-arq/references/template-plantuml.puml +0 -77
- package/skills/agent-workflow/exports/export-arq/references/template-structurizr.dsl +0 -72
- package/skills/agent-workflow/exports/export-arq/references/validations.md +0 -231
- package/skills/agent-workflow/exports/export-conclusions/SKILL.md +0 -169
- package/skills/agent-workflow/exports/export-conclusions/references/dedup-rules.md +0 -154
- package/skills/agent-workflow/exports/export-conclusions/references/template-conclusions.md +0 -158
- package/skills/agent-workflow/exports/export-plan/SKILL.md +0 -225
- package/skills/agent-workflow/exports/export-plan/references/state-transitions.md +0 -141
- package/skills/agent-workflow/exports/export-plan/references/template-plan.md +0 -132
- package/skills/agent-workflow/exports/export-qa-note/SKILL.md +0 -31
- package/skills/agent-workflow/exports/export-report/SKILL.md +0 -262
- package/skills/agent-workflow/exports/export-report/references/lexico.md +0 -174
- package/skills/agent-workflow/exports/export-report/references/template-a.md +0 -95
- package/skills/agent-workflow/exports/export-report/references/template-b.md +0 -221
- package/skills/agent-workflow/exports/export-report/references/template-c.md +0 -180
- package/skills/agent-workflow/exports/export-report/references/validations.md +0 -255
- package/skills/agent-workflow/exports/export-requirement/SKILL.md +0 -31
- package/skills/agent-workflow/exports/export-scripts/SKILL.md +0 -211
- package/skills/agent-workflow/exports/export-scripts/references/code-scan-recommendations.md +0 -83
- package/skills/agent-workflow/exports/export-scripts/references/deprecation-plan.md +0 -80
- package/skills/agent-workflow/exports/export-scripts/references/lexico-tecnico.md +0 -47
- package/skills/agent-workflow/exports/export-scripts/references/manifest-template.md +0 -265
- package/skills/agent-workflow/exports/export-scripts/references/readme-template.md +0 -49
- package/skills/agent-workflow/exports/export-scripts/references/theme-handling.md +0 -141
- package/skills/agent-workflow/exports/export-scripts/references/validations.md +0 -69
- package/skills/agent-workflow/exports/export-tech-manuals/SKILL.md +0 -214
- package/skills/agent-workflow/exports/export-tech-manuals/references/lexico-tecnico.md +0 -97
- package/skills/agent-workflow/exports/export-tech-manuals/references/template-index.md +0 -123
- package/skills/agent-workflow/exports/export-tech-manuals/references/template-manual.md +0 -143
- package/skills/agent-workflow/exports/export-tech-manuals/references/validations.md +0 -211
- package/skills/agent-workflow/exports/export-tech-note/SKILL.md +0 -31
- package/skills/agent-workflow/hooks/README.md +0 -15
- package/skills/agent-workflow/references/README.md +0 -12
- package/skills/agent-workflow/references/checkpoint.md +0 -59
- package/skills/agent-workflow/references/dev-only.md +0 -50
- package/skills/agent-workflow/references/doctor.md +0 -61
- package/skills/agent-workflow/references/history.md +0 -40
- package/skills/agent-workflow/references/hooks.md +0 -35
- package/skills/agent-workflow/references/legacy-anchors.md +0 -50
- package/skills/agent-workflow/references/mcp.md +0 -34
- package/skills/agent-workflow/references/objetivo-tasks.md +0 -64
- package/skills/agent-workflow/references/orchestration.md +0 -86
- package/skills/agent-workflow/references/profile-parametrization.md +0 -88
- package/skills/agent-workflow/references/self.md +0 -68
- package/skills/agent-workflow/references/session-mgmt.md +0 -109
- package/skills/agent-workflow/references/sources.md +0 -102
- package/skills/agent-workflow/specialties/README.md +0 -14
- package/skills/agent-workflow/specialties/analyze-conclude/SKILL.md +0 -181
- package/skills/agent-workflow/specialties/analyze-conclude/references/incident-classification.md +0 -61
- package/skills/agent-workflow/specialties/analyze-investigate/SKILL.md +0 -148
- package/skills/agent-workflow/specialties/analyze-investigate/references/cost-guard.md +0 -85
- package/skills/agent-workflow/specialties/analyze-synthesize/SKILL.md +0 -127
- package/skills/agent-workflow/specialties/design-brief/SKILL.md +0 -90
- package/skills/agent-workflow/specialties/design-deliver/SKILL.md +0 -121
- package/skills/agent-workflow/specialties/design-develop/SKILL.md +0 -115
- package/skills/agent-workflow/specialties/design-discover/SKILL.md +0 -103
- package/skills/agent-workflow/standards/README.md +0 -12
- package/skills/agent-workflow/standards/coding-standards/SKILL.md +0 -102
- package/skills/agent-workflow/standards/coding-standards/references/angular-typescript.md +0 -266
- package/skills/agent-workflow/standards/coding-standards/references/database-conventions.md +0 -170
- package/skills/agent-workflow/standards/coding-standards/references/fe-be-integration.md +0 -300
- package/skills/agent-workflow/standards/coding-standards/references/frontend-structure.md +0 -182
- package/skills/agent-workflow/standards/coding-standards/references/java-spring.md +0 -244
- package/skills/agent-workflow/standards/coding-standards/references/project-structure.md +0 -197
- package/skills/agent-workflow/standards/frontend-design/SKILL.md +0 -62
- package/skills/agent-workflow/standards/frontend-design/references/feedback-toasts-patterns.md +0 -249
- package/skills/agent-workflow/standards/frontend-design/references/form-patterns.md +0 -278
- package/skills/agent-workflow/standards/frontend-design/references/list-patterns.md +0 -256
- package/skills/agent-workflow/standards/frontend-design/references/modal-patterns.md +0 -220
- package/skills/agent-workflow/standards/frontend-design/references/navigation-patterns.md +0 -224
- package/skills/agent-workflow/standards/redaccion-simple/SKILL.md +0 -128
- package/skills/agent-workflow/standards/sql-rollback-generator/SKILL.md +0 -158
- package/skills/agent-workflow/standards/sql-rollback-generator/references/irreversible-checklist.md +0 -161
- package/skills/agent-workflow/standards/sql-rollback-generator/references/release-rollback.md +0 -133
- package/skills/agent-workflow/standards/sql-rollback-generator/references/rollback-patterns.md +0 -257
- package/skills/agent-workflow/standards/sql-script-organizer/SKILL.md +0 -243
- package/skills/agent-workflow/standards/sql-script-organizer/references/bundle-readme-template.md +0 -82
- package/skills/agent-workflow/standards/sql-script-organizer/references/categorization-rules.md +0 -122
- package/skills/agent-workflow/standards/sql-script-organizer/references/consolidation-cross-session.md +0 -125
- package/skills/agent-workflow/standards/sql-script-organizer/references/scripts-sql-format.md +0 -140
- package/skills/agent-workflow/standards/testing-strategy/SKILL.md +0 -113
- package/skills/agent-workflow/standards/testing-strategy/references/test-levels.md +0 -255
- package/skills/agent-workflow/workflows/README.md +0 -12
- package/skills/agent-workflow/workflows/analyze-workflow/SKILL.md +0 -94
- package/skills/agent-workflow/workflows/design-workflow/SKILL.md +0 -79
- package/skills/agent-workflow/workflows/dev-workflow/SKILL.md +0 -172
|
@@ -1,224 +0,0 @@
|
|
|
1
|
-
# Patrones de navegación
|
|
2
|
-
|
|
3
|
-
Principios de diseño para navegación en aplicaciones admin: sidebar, toolbar, breadcrumbs, tabs, routing, back navigation. Agnóstico a framework.
|
|
4
|
-
|
|
5
|
-
Para el código del stack (routing, guards, lazy loading, store sincronizado con `NavigationEnd`), ver `coding-standards/references/<stack>.md`.
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## 1. Layout admin de 2 zonas
|
|
10
|
-
|
|
11
|
-
Las aplicaciones admin siguen un layout persistente con 2 zonas fijas alrededor del contenido:
|
|
12
|
-
|
|
13
|
-
```
|
|
14
|
-
┌──────────────────────────────────────────────────────────┐
|
|
15
|
-
│ Logo [≡] │ Breadcrumbs | Sucursal Usuario ⎋ │ ← toolbar (top)
|
|
16
|
-
├─────────────┬──┴──────────────────────────────────────────┤
|
|
17
|
-
│ │ │
|
|
18
|
-
│ Sidebar │ Contenido de la vista │
|
|
19
|
-
│ (menu) │ (title + action + filters + table/form) │
|
|
20
|
-
│ │ │
|
|
21
|
-
│ │ │
|
|
22
|
-
└─────────────┴──────────────────────────────────────────────┘
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
**Reglas:**
|
|
26
|
-
|
|
27
|
-
- Toolbar fija en el top; sidebar fija a la izquierda.
|
|
28
|
-
- El contenido de la vista se renderiza en el área central (`<router-outlet>`).
|
|
29
|
-
- Sidebar colapsable: en desktop ocupa ~240 px expandida / ~60 px colapsada (solo íconos).
|
|
30
|
-
- En mobile: sidebar se convierte en drawer overlay (`position: fixed` + backdrop).
|
|
31
|
-
|
|
32
|
-
---
|
|
33
|
-
|
|
34
|
-
## 2. Sidebar
|
|
35
|
-
|
|
36
|
-
**Comportamiento:**
|
|
37
|
-
|
|
38
|
-
- **Colapsable** con toggle desde la toolbar. Estado persistente (store + opcional localStorage) para que sobreviva a navegación entre páginas.
|
|
39
|
-
- **Ítems dinámicos** leídos de un catálogo central (no hardcoded por app). El catálogo expone qué ve cada usuario según su rol.
|
|
40
|
-
- **Ítem activo destacado** con clase `.active` + color de fondo o borde lateral. Sincronizado con la ruta actual vía evento del router (`NavigationEnd` en Angular).
|
|
41
|
-
|
|
42
|
-
**Estructura de cada ítem:**
|
|
43
|
-
|
|
44
|
-
```html
|
|
45
|
-
<a class="sidebar-item" [class.active]="isActive" [title]="!sidebarOpen ? label : null">
|
|
46
|
-
<span class="sidebar-icon"><i class="fa fa-users"></i></span>
|
|
47
|
-
<span class="sidebar-label" *ngIf="sidebarOpen">{{ label }}</span>
|
|
48
|
-
</a>
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
**Reglas:**
|
|
52
|
-
|
|
53
|
-
- Ícono a la izquierda, label a la derecha. Label se oculta en colapsado; tooltip (`title`) lo sustituye.
|
|
54
|
-
- Máximo 1 nivel de anidación visible; si el menú crece, agrupar por secciones con separador.
|
|
55
|
-
- Ítems ordenados por frecuencia de uso del rol dominante (no alfabéticamente).
|
|
56
|
-
- Pie opcional con "Volver al home" o enlace al cambio de app.
|
|
57
|
-
|
|
58
|
-
---
|
|
59
|
-
|
|
60
|
-
## 3. Toolbar (top bar)
|
|
61
|
-
|
|
62
|
-
3 zonas horizontales:
|
|
63
|
-
|
|
64
|
-
| Zona | Contenido |
|
|
65
|
-
|------|-----------|
|
|
66
|
-
| Izquierda | Logo + botón toggle del sidebar. |
|
|
67
|
-
| Centro | Breadcrumbs (opcional — ver §5). |
|
|
68
|
-
| Derecha (desktop) | Contexto (sucursal si es cambiable) + nombre usuario + avatar + logout. |
|
|
69
|
-
| Derecha (mobile) | Solo avatar; al tap abre drawer con las opciones. |
|
|
70
|
-
|
|
71
|
-
**Reglas:**
|
|
72
|
-
|
|
73
|
-
- Logo siempre navegable al home (click → ruta raíz).
|
|
74
|
-
- El **contexto** (sucursal activa, periodo contable, etc.) vive en la toolbar cuando es relevante al trabajo en curso y puede cambiarse globalmente.
|
|
75
|
-
- **Avatar = iniciales** (primeras 2 letras del nombre, upper) si no hay foto. Badge redondo con color consistente por usuario.
|
|
76
|
-
- Logout como enlace `⎋` o "Salir" — nunca oculto en un sub-menú innecesario.
|
|
77
|
-
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
## 4. Título de página + acción primaria (page header)
|
|
81
|
-
|
|
82
|
-
Cada vista del área de contenido abre con un header consistente:
|
|
83
|
-
|
|
84
|
-
```html
|
|
85
|
-
<div class="mb-4">
|
|
86
|
-
<div class="d-flex justify-content-between align-items-center flex-wrap gap-3">
|
|
87
|
-
<div>
|
|
88
|
-
<h2 class="fw-bold mb-1">Título de la vista</h2>
|
|
89
|
-
<p class="text-muted mb-0">Descripción de una línea.</p>
|
|
90
|
-
</div>
|
|
91
|
-
<button class="btn btn-primary">Acción primaria</button>
|
|
92
|
-
</div>
|
|
93
|
-
</div>
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
**Reglas:**
|
|
97
|
-
|
|
98
|
-
- `h2 fw-bold` para el título, `p text-muted` para la descripción de una sola línea.
|
|
99
|
-
- Acción primaria top-right; si no hay, el header queda sin botón (no forzar uno).
|
|
100
|
-
- `flex-wrap gap-3` para que el botón baje en mobile sin solaparse.
|
|
101
|
-
|
|
102
|
-
**[shared-candidato] `page-header`** — se repite en 6+ vistas; amerita extracción con slots `[title]`, `[subtitle]`, `[action]`. Ver también `list-patterns.md` §2 y `form-patterns.md` §2.
|
|
103
|
-
|
|
104
|
-
---
|
|
105
|
-
|
|
106
|
-
## 5. Breadcrumbs
|
|
107
|
-
|
|
108
|
-
**Cuándo activarlos:**
|
|
109
|
-
|
|
110
|
-
- Jerarquía de navegación es profunda (3+ niveles) y la ruta es relevante al usuario.
|
|
111
|
-
- La URL no es suficientemente descriptiva (IDs en vez de nombres).
|
|
112
|
-
|
|
113
|
-
**Cuándo omitirlos:**
|
|
114
|
-
|
|
115
|
-
- App de 2 niveles (home → sección). El título de la vista ya indica dónde está el usuario.
|
|
116
|
-
- Admin plano (todos los módulos al mismo nivel bajo `/admin`). El sidebar ya es la navegación principal.
|
|
117
|
-
|
|
118
|
-
**Estructura cuando existen:**
|
|
119
|
-
|
|
120
|
-
```html
|
|
121
|
-
<nav class="breadcrumbs">
|
|
122
|
-
<a routerLink="/admin">Administración</a>
|
|
123
|
-
<span class="separator">›</span>
|
|
124
|
-
<a routerLink="/admin/usuario">Usuarios</a>
|
|
125
|
-
<span class="separator">›</span>
|
|
126
|
-
<span class="current">Editar</span>
|
|
127
|
-
</nav>
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
**Reglas:**
|
|
131
|
-
|
|
132
|
-
- Separador visual (`›`, `/`, `>`). Tipografía pequeña (`small`) + color atenuado para los links intermedios.
|
|
133
|
-
- Último ítem (la vista actual) no es link; se destaca en negrita o color del texto base.
|
|
134
|
-
- Derivados del router (no escritos a mano por vista) — para que nunca queden desincronizados con la URL real.
|
|
135
|
-
|
|
136
|
-
---
|
|
137
|
-
|
|
138
|
-
## 6. Tabs dentro de una sección
|
|
139
|
-
|
|
140
|
-
Cuando un módulo tiene 2-3 sub-vistas relacionadas (p. ej. "Sucursales" + "Carga masiva", o "Roles" + "Permisos"), usar tabs en vez de ítems separados del sidebar.
|
|
141
|
-
|
|
142
|
-
```html
|
|
143
|
-
<ul class="nav nav-tabs mb-4 px-2 bg-white rounded-top">
|
|
144
|
-
<li class="nav-item">
|
|
145
|
-
<a class="nav-link" routerLink="./roles" routerLinkActive="active">Roles</a>
|
|
146
|
-
</li>
|
|
147
|
-
<li class="nav-item">
|
|
148
|
-
<a class="nav-link" routerLink="./permisos" routerLinkActive="active">Permisos</a>
|
|
149
|
-
</li>
|
|
150
|
-
</ul>
|
|
151
|
-
<router-outlet></router-outlet>
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
**Reglas:**
|
|
155
|
-
|
|
156
|
-
- **Tabs con routing** (`routerLink` + `routerLinkActive`) — cada tab es una URL propia, bookmarkeable y con back button funcional.
|
|
157
|
-
- Evitar tabs con estado local (`[tab]="currentTab"` sin routing) cuando las sub-vistas son no triviales; el usuario pierde su lugar al recargar.
|
|
158
|
-
- Máximo 3-4 tabs por sección. Si hay más, probablemente son módulos independientes que merecen sidebar.
|
|
159
|
-
|
|
160
|
-
**[shared-candidato]:** el componente shared `nav-tabs` existe pero se usa mezclando los dos enfoques (routing vs state local). Documentar qué enfoque gana (routing) y migrar los que están en state local.
|
|
161
|
-
|
|
162
|
-
---
|
|
163
|
-
|
|
164
|
-
## 7. Back navigation
|
|
165
|
-
|
|
166
|
-
Para vistas que abren desde un listado (p. ej. `admin/usuario` → `admin/usuario/editar/:id`), ofrecer retorno explícito al listado:
|
|
167
|
-
|
|
168
|
-
- **Opción A (recomendada):** link "← Volver a usuarios" en la parte superior del header, alineado con el título.
|
|
169
|
-
- **Opción B:** botón `Cancelar` en el footer del formulario que navega a la ruta padre.
|
|
170
|
-
|
|
171
|
-
**Reglas:**
|
|
172
|
-
|
|
173
|
-
- El back siempre navega a la ruta **explícita** (router a `/admin/usuario`), no `history.back()` (comportamiento impredecible si el usuario llegó por deep link o recarga).
|
|
174
|
-
- Usar un helper compartido para resolver la "ruta padre" desde la ruta actual (evita hardcodear).
|
|
175
|
-
|
|
176
|
-
**[shared-candidato] `back-button`** — observado reinventado en 3+ lugares (`volverHome()` en sidebar, `irHome()` en header, similar en sucursal). Extraer a un componente o servicio.
|
|
177
|
-
|
|
178
|
-
---
|
|
179
|
-
|
|
180
|
-
## 8. Routing: lazy loading y rutas anidadas
|
|
181
|
-
|
|
182
|
-
Cada módulo admin (usuario, sucursal, producto, accesos, etc.) vive como **módulo Angular lazy-loaded** bajo el layout padre:
|
|
183
|
-
|
|
184
|
-
```ts
|
|
185
|
-
{ path: 'usuario', loadChildren: () => import('./usuario/usuario.module').then(m => m.UsuarioModule) }
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
Cada módulo hijo define sus rutas anidadas (`lista`, `nuevo`, `editar/:id`, sub-tabs, modales con estado en URL si aplica).
|
|
189
|
-
|
|
190
|
-
**Reglas:**
|
|
191
|
-
|
|
192
|
-
- El layout admin (`admin-layout.component`) envuelve todas las rutas hijas con `<router-outlet>`, de forma que sidebar y toolbar persistan entre navegaciones.
|
|
193
|
-
- Default redirect por módulo: `{ path: '', redirectTo: 'lista' }` para que `/admin/usuario` abra automáticamente el listado.
|
|
194
|
-
- Guards a nivel de layout (autenticación, sesión) — no repetir en cada ruta hija.
|
|
195
|
-
|
|
196
|
-
Detalles técnicos y ejemplo completo del routing: `coding-standards/references/angular-typescript.md` y `coding-standards/references/frontend-structure.md`.
|
|
197
|
-
|
|
198
|
-
---
|
|
199
|
-
|
|
200
|
-
## 9. Stack del proyecto
|
|
201
|
-
|
|
202
|
-
El proyecto usa **Angular + Bootstrap + ng-bootstrap**:
|
|
203
|
-
|
|
204
|
-
- **Sidebar/toolbar:** componentes dedicados en `@presentation/admin/layout/` (`admin-layout`, `sidebar`, `toolbar`). Consumen `MenuCatalogService` para el catálogo dinámico.
|
|
205
|
-
- **Tabs:** usar `nav-tabs` shared con `routerLink` + `routerLinkActive="active"`. La variante state-local existe pero es legado — no replicar.
|
|
206
|
-
- **Breadcrumbs:** hay lógica en `AdminStore.breadcrumbs` (computed signal) pero **no se renderiza en la UI actual**. Si se activa, conectar el computed al template en `admin-layout`.
|
|
207
|
-
- **wizard-footer** shared existe pero no se usa en admin. Reservado para futuros flujos multi-step.
|
|
208
|
-
|
|
209
|
-
---
|
|
210
|
-
|
|
211
|
-
## 10. Checklist de replicación
|
|
212
|
-
|
|
213
|
-
Al añadir un módulo nuevo bajo admin:
|
|
214
|
-
|
|
215
|
-
- [ ] Lazy loading como módulo Angular (`loadChildren`).
|
|
216
|
-
- [ ] Añadir ítem en el catálogo de menú (`MenuCatalogService`) con nombre, ícono y ruta.
|
|
217
|
-
- [ ] Rutas anidadas dentro del módulo: `lista`, `nuevo`, `editar/:id` como mínimo.
|
|
218
|
-
- [ ] Default redirect del módulo → `lista`.
|
|
219
|
-
- [ ] Page header consistente en cada vista (`h2 fw-bold` + descripción + acción).
|
|
220
|
-
- [ ] Si hay sub-vistas relacionadas, tabs con routing (no state local).
|
|
221
|
-
- [ ] Back navigation explícito en las vistas de edición.
|
|
222
|
-
- [ ] Sidebar/toolbar se heredan del layout padre — no crear otros.
|
|
223
|
-
- [ ] Guards de sesión/autenticación a nivel de layout.
|
|
224
|
-
- [ ] Revisar `shared/` antes de crear helpers de navegación.
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: redaccion-simple
|
|
3
|
-
description: "Guía transversal de redacción para artefactos agent-workflow. Reglas para escribir OBJECTIVE/TASKS/DECISIONS/EVIDENCE/FINDINGS/CONCLUSIONS/CHECKPOINT/STATUS/PROBLEM/IDEAS/DELIVERY (legacy ES = OBJETIVO/DECISIONES/EVIDENCIA/HALLAZGOS/CONCLUSIONES/PROBLEMA/ENTREGA) con frases cortas, listas sobre prosa, sin jerga. Activable cross-plugin como `agent-workflow:redaccion-simple`. Aplica a toda prosa que el AI produzca en contexto agent-workflow: artefactos `.md` de sesión, mensajes de commit, descripciones de PR, READMEs ad-hoc, respuestas en chat sobre temas agent-workflow. No requiere sesión activa."
|
|
4
|
-
version: 2.0.1
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Redacción simple — Guía transversal agent-workflow
|
|
8
|
-
|
|
9
|
-
Reglas de estilo y formato para los artefactos que producen los plugins agent-workflow (core, dev, design, analyze).
|
|
10
|
-
|
|
11
|
-
## Cuándo se invoca
|
|
12
|
-
|
|
13
|
-
- Implícitamente al escribir cualquier `.md` dentro de una sesión agent-workflow (artefactos canónicos).
|
|
14
|
-
- Implícitamente al producir prosa en contexto agent-workflow fuera de sesión activa: commit messages, descripciones de PR, READMEs ad-hoc, respuestas en chat sobre runtime/skills/sesiones agent-workflow.
|
|
15
|
-
- Explícitamente con `Skill(agent-workflow:redaccion-simple)` desde un flow plugin o desde la skill agregadora `agent-workflow:rules`.
|
|
16
|
-
- Referenciada desde `session`, `compact`, `resume` y los skills de los flow plugins.
|
|
17
|
-
|
|
18
|
-
## Las 6 reglas
|
|
19
|
-
|
|
20
|
-
1. **Frases cortas**: máximo ~15 palabras. Si pasa de 20, partir en dos.
|
|
21
|
-
2. **Listas sobre prosa**: 3+ ideas paralelas van en bullets. Prosa solo para narrar.
|
|
22
|
-
3. **Una idea por línea**: si el bullet usa "y" o ";" para meter una segunda idea, separar.
|
|
23
|
-
4. **"Qué + por qué" en una línea**: formato `<qué>: <por qué corto>`. Sin párrafo aparte para el "por qué".
|
|
24
|
-
5. **Sin jerga ni abreviaturas raras**: palabras comunes. Términos técnicos (MCP, C4) OK; abreviaturas inventadas (ej. "TLDR del CTX") no.
|
|
25
|
-
6. **Sin relleno**: borrar "es importante notar que…", "cabe destacar…", "como se mencionó…", "en conclusión…". La idea va directo.
|
|
26
|
-
|
|
27
|
-
## Palabras a evitar / preferir
|
|
28
|
-
|
|
29
|
-
| Evitar | Preferir |
|
|
30
|
-
|---|---|
|
|
31
|
-
| "es importante notar que" | (borrar y empezar con la idea) |
|
|
32
|
-
| "cabe destacar" | (borrar) |
|
|
33
|
-
| "en otras palabras" | (borrar) |
|
|
34
|
-
| "se procede a" | "vamos a" / verbo directo |
|
|
35
|
-
| "implementar la funcionalidad de X" | "implementar X" |
|
|
36
|
-
| "realizar la validación de" | "validar" |
|
|
37
|
-
| "llevar a cabo" | "hacer" |
|
|
38
|
-
| "a los efectos de" | "para" |
|
|
39
|
-
| "en el marco de" | "en" |
|
|
40
|
-
| "asimismo" | "también" |
|
|
41
|
-
| "no obstante" | "pero" |
|
|
42
|
-
| "previamente mencionado" | "antes" / "ya dicho" |
|
|
43
|
-
| "TLDR", "FYI", "WIP" | escribir la palabra completa |
|
|
44
|
-
|
|
45
|
-
## Ejemplos antes / después
|
|
46
|
-
|
|
47
|
-
**1. Prosa redundante**
|
|
48
|
-
|
|
49
|
-
Antes:
|
|
50
|
-
> Es importante notar que los MCPs `<mcp-cert>` y `<mcp-prod>` constituyen hoy la única vía de acceso a la información de schema desde las sesiones de Claude Code. En el marco de la operatoria habitual, cada llamada implica un round-trip al servidor MCP además del consumo de tokens correspondiente al JSON de respuesta.
|
|
51
|
-
|
|
52
|
-
Después (-50%):
|
|
53
|
-
> Hoy las sesiones acceden al schema solo vía MCP `<mcp-cert>` y `<mcp-prod>`. Cada llamada cuesta un round-trip y los tokens del JSON.
|
|
54
|
-
|
|
55
|
-
**2. Decisión densa**
|
|
56
|
-
|
|
57
|
-
Antes:
|
|
58
|
-
> Se decidió, luego de analizar las distintas alternativas, implementar la validación de roles a nivel del frontend exclusivamente, dado que el backend de mantenimiento no requiere conocer la lógica de permisos para operar correctamente, y además esto evita duplicar la regla de negocio en dos lugares distintos.
|
|
59
|
-
|
|
60
|
-
Después:
|
|
61
|
-
> **Decisión**: validar permisos solo en el frontend.
|
|
62
|
-
> **Por qué**: el backend de mantenimiento no necesita la lógica; evita duplicar la regla.
|
|
63
|
-
|
|
64
|
-
**3. Tarea con código inline**
|
|
65
|
-
|
|
66
|
-
Antes:
|
|
67
|
-
> - [ ] **T3**: Implementar el método `validarRol`.
|
|
68
|
-
> ```java
|
|
69
|
-
> public boolean validarRol(Usuario u, Rol r) {
|
|
70
|
-
> if (u == null) throw new IllegalArgumentException("...");
|
|
71
|
-
> ...
|
|
72
|
-
> }
|
|
73
|
-
> ```
|
|
74
|
-
|
|
75
|
-
Después:
|
|
76
|
-
> - [ ] **T3**: Implementar `validarRol(Usuario, Rol)` en `RolService`. Hecho cuando devuelve `true` para la matriz de `EVIDENCE.md § matriz-roles`.
|
|
77
|
-
|
|
78
|
-
## Cuándo SÍ se permite prosa larga
|
|
79
|
-
|
|
80
|
-
- `## Summary` de CONCLUSIONS.md (modality=technical): si la decisión necesita 4-6 oraciones para sostenerse.
|
|
81
|
-
- Conclusión de causa raíz dentro de CONCLUSIONS.md (modality=incident): la cadena causal puede requerir un párrafo.
|
|
82
|
-
- `## UX decisions` de DELIVERY: cuando explicar un tradeoff visual.
|
|
83
|
-
|
|
84
|
-
En esos casos sigue aplicando "frases cortas": prosa de oraciones simples encadenadas, no oraciones largas.
|
|
85
|
-
|
|
86
|
-
## Estructuras mínimas por artefacto
|
|
87
|
-
|
|
88
|
-
Cada artefacto tiene una estructura fija. Cambia el contenido, no los headings que los parsers leen.
|
|
89
|
-
|
|
90
|
-
| Artefacto | Headings | Tamaño objetivo |
|
|
91
|
-
|---|---|---|
|
|
92
|
-
| OBJECTIVE.md (legacy: OBJETIVO.md) | `## <Modality\|Type\|Requirement>`, `## <Question\|Brief\|Requirement>`, `## Context`, `## Acceptance criteria`, `## Origin` (opcional), `## Topics` (opcional dev) | 30-60 líneas |
|
|
93
|
-
| TASKS.md | `## Plan summary`, `## Tasks`, `## Risks / external dependencies` | 40-100 (full); 20-40 (lite) |
|
|
94
|
-
| DECISIONS.md (legacy: DECISIONES.md) | `## DEC-NNN: <título>` con `**Decisión**:` + `**Por qué**:` + opcionales | 3-6 líneas por decisión |
|
|
95
|
-
| STATUS.md | campos planos + `## Branches por fuente`, `## Next step` o `## Cierre` | 15-25 líneas |
|
|
96
|
-
| CHECKPOINT.md | `## Last action`, `## Next step`, `## Recent decisions`, `## Files touched`, `## Critical context to resume`, `## Refs` | 20-50 líneas |
|
|
97
|
-
| EVIDENCE.md (legacy: EVIDENCIA.md) | `## Original question`, `## Sources consulted`, `## Raw finding N: <título>`, `## Notes / tentative hypotheses` | 40-150 líneas |
|
|
98
|
-
| FINDINGS.md (legacy: HALLAZGOS.md) | `## Patterns identified`, `## Model decision`, `## What is NOT known (gaps)`, `## False positives discarded` (opcional) | 30-100 líneas |
|
|
99
|
-
| CONCLUSIONS.md (cualquier modality, legacy: CONCLUSIONES.md) | `## Modality`, `## Summary`, `## Conclusions`, `## Recommendations`, `## Traceability`, `## Open` (opcional) | 60-200 líneas según modality y profundidad |
|
|
100
|
-
| PROBLEM.md (legacy: PROBLEMA.md) | `## Statement`, `## Key constraints`, `## Success metrics` | 20-50 líneas |
|
|
101
|
-
| IDEAS.md | `## Variant A/B/C` con Idea/Pros/Contras, `## Initial recommendation` | 60-120 líneas |
|
|
102
|
-
| DELIVERY.md (legacy: ENTREGA.md) | `## Summary`, `## Components` (con `### <Component>`), `## Flows / interactions`, `## UX decisions`, `## Out of scope` | 150-300 líneas |
|
|
103
|
-
|
|
104
|
-
Tamaño objetivo es **suave**: pasarlo está OK si se justifica.
|
|
105
|
-
|
|
106
|
-
## Reglas operativas por artefacto
|
|
107
|
-
|
|
108
|
-
- **OBJECTIVE**: `## Context` arranca con "Lo que NO está en la pregunta:". Sin sección `## Restricciones` separada.
|
|
109
|
-
- **TASKS**: prohibido código inline. Si hace falta código, va en EVIDENCE y se referencia.
|
|
110
|
-
- **DECISIONS**: si una DEC-NNN es obvia, no se registra. Sin SQL/código inline.
|
|
111
|
-
- **STATUS**: sin `## Artefactos` enumerando archivos (`ls` ya lo hace). Sin `## Handoff sugerido` separado.
|
|
112
|
-
- **CHECKPOINT**: si una sección no aplica, se borra entera. Sin placeholders vacíos.
|
|
113
|
-
- **EVIDENCE**: cada hallazgo 4-8 líneas. Tablas solo si comparan más de 3 cosas.
|
|
114
|
-
- **CONCLUSIONS**: sin `## Context` que repita el OBJECTIVE. Sin opciones falsas tipo "no hacer nada". Sin pseudocódigo. Cada `**CN**` con evidencia link; cada `**RN**` con responsable + cuándo.
|
|
115
|
-
|
|
116
|
-
## Sandbox read-only
|
|
117
|
-
|
|
118
|
-
Canon universal en `../session/references/sandbox-readonly-rules.md`. Esta skill es read-only por diseño — carga reglas de redacción, no escribe artefactos por sí misma. Los skills consumidores (`session`, `compact`, `resume`, etc.) son quienes producen el `.md`.
|
|
119
|
-
|
|
120
|
-
En plan mode: describir en el plan file qué artefacto se redactaría (OBJECTIVE / TASKS / DECISIONS / EVIDENCE / FINDINGS / CONCLUSIONS / CHECKPOINT / STATUS / commit-msg / PR-description), qué reglas operativas aplican, y el tamaño objetivo en líneas. NO ejecuta `Write`, `Edit`, `MultiEdit` por sí misma — describe el contenido para que el consumidor lo materialice.
|
|
121
|
-
|
|
122
|
-
Compatible con plan mode sin restricciones adicionales.
|
|
123
|
-
|
|
124
|
-
## Referencias
|
|
125
|
-
|
|
126
|
-
- Propuesta origen: `agent-workflow/docs/propuestas/001-simplificar-artefactos.md` (graduado de session005-analyze; el repo legacy era `core-workflow-plugin`).
|
|
127
|
-
- Templates afectados: `agent-workflow-cli/src/application/templates/objective.ts` (canon EN; ES legacy `OBJETIVO.md` sigue siendo legible vía bilingual readers R1).
|
|
128
|
-
- Skills consumidores: `session`, `compact`, `resume`, y los workflows `dev-workflow`/`design-workflow`/`analyze-workflow` (todos en `agent-workflow`).
|
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sql-rollback-generator
|
|
3
|
-
description: "Genera `00-ROLLBACK.sql` único al root del bundle, leyendo los forwards ya escritos por `/agent-workflow:export-scripts` v5.0.0+. v3.0.0 BREAKING (session103): lee los archivos `NN-*.sql` consolidados (no `SCRIPTS.sql` por sesión); headers SQL mínimos (1-2 líneas); orden inverso del último forward al primero. Bloque `BEGIN; ... COMMIT;` único + bloque opcional `Fase 5 — Cleanup irreversible` después del COMMIT para operaciones no revertibles automáticamente (DROP COLUMN, TRUNCATE, ALTER COLUMN TYPE con pérdida). NO genera companions `.rollback.sql` ni sub-carpetas per-sesión."
|
|
4
|
-
version: 3.0.0
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# SQL Rollback Generator — `00-ROLLBACK.sql` único, derivado de forwards
|
|
8
|
-
|
|
9
|
-
Genera el rollback **derivado de los forwards consolidados**. Invocado por `/agent-workflow:export-scripts` v5.0.0+ después de escribir los archivos `NN-*.sql` del bundle.
|
|
10
|
-
|
|
11
|
-
> v3.0.0 (session103) — lee los forwards ya escritos en vez de `SCRIPTS.sql` original. Headers minimal (1-2 líneas). Sin verbosidad de motivación/impacto.
|
|
12
|
-
|
|
13
|
-
## When to use
|
|
14
|
-
|
|
15
|
-
- **Disparado por `/agent-workflow:export-scripts`** después del Paso 5 (forwards escritos).
|
|
16
|
-
- NL del usuario: "generar rollback", "script de reversa".
|
|
17
|
-
- En plan-mode: simular el rollback de un cambio específico sin escribir archivos.
|
|
18
|
-
|
|
19
|
-
## Sandbox read-only
|
|
20
|
-
|
|
21
|
-
`../session/references/sandbox-readonly-rules.md`. Plan describe estructura del rollback sin escribir archivos.
|
|
22
|
-
|
|
23
|
-
## Principios (v3.0.0)
|
|
24
|
-
|
|
25
|
-
- **Input**: los archivos `NN-*.sql` forward ya escritos en el bundle (no `SCRIPTS.sql` original).
|
|
26
|
-
- **Output único**: `<bundle-root>/00-ROLLBACK.sql`.
|
|
27
|
-
- **Orden interno**: inverso del último forward al primero — si el bundle es `01-DDL-TABLES.sql, 02-DML.sql, 03-INSERTS.sql`, el rollback procesa `03 → 02 → 01`.
|
|
28
|
-
- **Headers mínimos**: 2 líneas para el archivo, 1 línea por sentencia.
|
|
29
|
-
- **Bloque transaccional único** `BEGIN; ... COMMIT;`.
|
|
30
|
-
- **Bloque Fase 5** después del COMMIT (solo si hay irreversibles): operaciones que no se pueden revertir automáticamente.
|
|
31
|
-
- **Idempotencia obligatoria**: `DROP ... IF EXISTS`, `CREATE OR REPLACE`.
|
|
32
|
-
|
|
33
|
-
## Estructura del `00-ROLLBACK.sql`
|
|
34
|
-
|
|
35
|
-
Header del archivo (2 líneas):
|
|
36
|
-
|
|
37
|
-
```sql
|
|
38
|
-
-- 00-ROLLBACK.sql — bundle NNN-export-scripts-YYYY-MM-DD
|
|
39
|
-
-- Generado por agent-workflow sql-rollback-generator v3.0.0
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
Sub-bloque por sentencia (1 línea de comentario + SQL):
|
|
43
|
-
|
|
44
|
-
```sql
|
|
45
|
-
-- Revierte: sessionXXX / stmt-id (forward: 02-DML.sql)
|
|
46
|
-
ALTER TABLE esq_.tb_x ALTER COLUMN col_y TYPE varchar(80);
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
Bloque Fase 5 (al final, fuera de la transacción — solo si hay irreversibles):
|
|
50
|
-
|
|
51
|
-
```sql
|
|
52
|
-
COMMIT;
|
|
53
|
-
|
|
54
|
-
-- Fase 5 — Cleanup irreversible (manual)
|
|
55
|
-
-- sessionXXX / UPDATE esq_.tb_y sin backup automático: completar valores previos manualmente.
|
|
56
|
-
-- sessionYYY / TRUNCATE esq_.tb_z: pérdida total, sin reversa.
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
Sin templates `BEGIN; UPDATE … COMMIT;` comentados ni explicaciones largas. Solo una línea por irreversible identificando origen y razón.
|
|
60
|
-
|
|
61
|
-
## Estrategias por tipo de operación
|
|
62
|
-
|
|
63
|
-
### DDL de tablas
|
|
64
|
-
|
|
65
|
-
| Forward | Rollback |
|
|
66
|
-
|---|---|
|
|
67
|
-
| `CREATE TABLE IF NOT EXISTS esq_.tb_x` | `DROP TABLE IF EXISTS esq_.tb_x;` |
|
|
68
|
-
| `ALTER TABLE tb_x ADD COLUMN col_y ...` | `ALTER TABLE tb_x DROP COLUMN IF EXISTS col_y;` |
|
|
69
|
-
| `CREATE INDEX idx_... ON tb_x(col)` | `DROP INDEX IF EXISTS idx_...;` |
|
|
70
|
-
| `CREATE SEQUENCE esq_.seq_tb_x` | `DROP SEQUENCE IF EXISTS esq_.seq_tb_x;` |
|
|
71
|
-
| `ALTER COLUMN col TYPE varchar(255)` (widen) | `ALTER COLUMN col TYPE varchar(80);` (con nota Fase 5 si datos exceden 80) |
|
|
72
|
-
| `DROP TABLE tb_x` | **Irreversible** → Fase 5 (requiere backup previo a `esq_audit`) |
|
|
73
|
-
|
|
74
|
-
### DDL de funciones
|
|
75
|
-
|
|
76
|
-
| Forward | Rollback |
|
|
77
|
-
|---|---|
|
|
78
|
-
| `CREATE OR REPLACE FUNCTION fn_x(...)` | `DROP FUNCTION IF EXISTS fn_x(<firma>);` |
|
|
79
|
-
| `DROP FUNCTION fn_x` | **Irreversible** → Fase 5 |
|
|
80
|
-
|
|
81
|
-
### Migración de datos (UPDATE / DELETE)
|
|
82
|
-
|
|
83
|
-
- Si el forward incluye backup explícito en `esq_audit.tb_bkp_*_sNNN` (visible en el forward consolidado): rollback `UPDATE … FROM esq_audit.tb_bkp_…`.
|
|
84
|
-
- Si NO hay backup automático en el forward: **Fase 5**, con nota de una línea ("`sessionXXX` / UPDATE sin backup: completar valores previos manualmente").
|
|
85
|
-
|
|
86
|
-
### Inserts
|
|
87
|
-
|
|
88
|
-
```sql
|
|
89
|
-
DELETE FROM esq_.tb_maestras WHERE campo_identificador IN (<lista>);
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
Usar claves naturales o rango de IDs conocido — nunca DELETE sin WHERE.
|
|
93
|
-
|
|
94
|
-
### Irreversibles → Fase 5
|
|
95
|
-
|
|
96
|
-
- `TRUNCATE TABLE`
|
|
97
|
-
- `DROP COLUMN` sin respaldo previo
|
|
98
|
-
- `DROP TABLE` sin respaldo previo
|
|
99
|
-
- `ALTER COLUMN TYPE` con pérdida (varchar widen → narrow si datos exceden)
|
|
100
|
-
- Cascadas destructivas (`DROP ... CASCADE`)
|
|
101
|
-
- `DELETE`/`UPDATE` sin respaldo en `esq_audit`
|
|
102
|
-
|
|
103
|
-
Cada uno aparece como **una sola línea** en la Fase 5, identificando origen + razón. Sin templates comentados ni explicaciones extensas.
|
|
104
|
-
|
|
105
|
-
## Proceso (v3.0.0)
|
|
106
|
-
|
|
107
|
-
1. Leer los archivos `NN-*.sql` forward escritos en el bundle (no `SCRIPTS.sql` original).
|
|
108
|
-
2. Parsear cada bloque (un BEGIN/COMMIT por sentencia, identificada por `-- sessionXXX / stmt-id`).
|
|
109
|
-
3. Para cada sentencia forward, clasificar el tipo y seleccionar estrategia (DDL / migración / inserts / irreversible).
|
|
110
|
-
4. Generar el bloque rollback correspondiente (header de 1 línea + SQL inverso).
|
|
111
|
-
5. Identificar irreversibles → moverlos a la Fase 5 al final.
|
|
112
|
-
6. Componer el `00-ROLLBACK.sql` único con orden inverso (último forward → primero, dentro de cada uno última sentencia → primera).
|
|
113
|
-
7. Escribir el archivo al root del bundle.
|
|
114
|
-
|
|
115
|
-
## Notas de portabilidad
|
|
116
|
-
|
|
117
|
-
PostgreSQL como motor primario. Para otros motores, ajustar sintaxis idempotente:
|
|
118
|
-
|
|
119
|
-
| Concepto | PostgreSQL | Oracle | SQL Server |
|
|
120
|
-
|---|---|---|---|
|
|
121
|
-
| Drop idempotente | `DROP … IF EXISTS` | `DROP … (no IF EXISTS)` | `DROP … IF EXISTS` |
|
|
122
|
-
| Recrear función | `CREATE OR REPLACE FUNCTION` | `CREATE OR REPLACE FUNCTION` | `CREATE OR ALTER PROCEDURE` |
|
|
123
|
-
|
|
124
|
-
Si el destino no es Postgres, indicarlo en el header del archivo (línea adicional opcional).
|
|
125
|
-
|
|
126
|
-
## Layout (post-export-scripts v5.0.0)
|
|
127
|
-
|
|
128
|
-
```
|
|
129
|
-
<docs>/scripts/NNN-export-scripts-YYYY-MM-DD/
|
|
130
|
-
└── 00-ROLLBACK.sql # este skill lo genera
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
Para context: el bundle plano del export incluye además `01-…`, `02-…`, etc. (forwards en orden ascendente, numeración continua) + `README.md` — todos al root, generados por `export-scripts`.
|
|
134
|
-
|
|
135
|
-
**No se generan** desde v2.0.0:
|
|
136
|
-
|
|
137
|
-
- Companions `.rollback.sql` por sentencia.
|
|
138
|
-
- Sub-carpeta `<session>/rollback/` per-sesión.
|
|
139
|
-
- Archivo `rollback-global.sql` separado.
|
|
140
|
-
|
|
141
|
-
## Integración con otros skills
|
|
142
|
-
|
|
143
|
-
- **`export-scripts`** v5.0.0+ — único invocador activo; pasa los forwards ya escritos.
|
|
144
|
-
- **`sql-script-organizer`** — companion que organiza el `SCRIPTS.sql` por sesión.
|
|
145
|
-
- **`coding-standards`** — reglas de estilo SQL.
|
|
146
|
-
- **`session`** — este skill NO se invoca al cerrar una sesión individual; sólo desde export-scripts.
|
|
147
|
-
|
|
148
|
-
## Histórico de versiones
|
|
149
|
-
|
|
150
|
-
- **v3.0.0** (session103, 2026-05-28) — lee forwards ya escritos en vez de `SCRIPTS.sql` original; headers SQL minimal; Fase 5 sin templates comentados.
|
|
151
|
-
- **v2.0.0** (session093) — `00-ROLLBACK.sql` único cross-session leyendo `SCRIPTS.sql`. Histórico.
|
|
152
|
-
- **v1.0.0** y anteriores — companions `.rollback.sql` + per-sesión rollback. Histórico.
|
|
153
|
-
|
|
154
|
-
## Recursos adicionales
|
|
155
|
-
|
|
156
|
-
- **`references/rollback-patterns.md`** — recetas completas con ejemplos SQL.
|
|
157
|
-
- **`references/irreversible-checklist.md`** — lista de irreversibles y protocolo.
|
|
158
|
-
- **`references/release-rollback.md`** — algoritmos legacy (modo release, deprecation Fase 1).
|
package/skills/agent-workflow/standards/sql-rollback-generator/references/irreversible-checklist.md
DELETED
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
# Checklist de Operaciones Irreversibles
|
|
2
|
-
|
|
3
|
-
Operaciones que no pueden revertirse automáticamente. Requieren protocolo especial antes de ejecutar.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Protocolo ante una operación irreversible
|
|
8
|
-
|
|
9
|
-
Antes de ejecutar cualquier operación de esta lista:
|
|
10
|
-
|
|
11
|
-
1. **Agregar `-- WARNING: IRREVERSIBLE`** en el header del forward script
|
|
12
|
-
2. **Crear script de respaldo** si hay datos en riesgo (ver plantillas en `rollback-patterns.md`)
|
|
13
|
-
3. **Registrar en `DECISIONS.md`** de la sesión:
|
|
14
|
-
- Qué se va a ejecutar
|
|
15
|
-
- Por qué no es reversible
|
|
16
|
-
- Qué backup existe (o por qué no aplica)
|
|
17
|
-
- Confirmación explícita del usuario
|
|
18
|
-
4. **Generar rollback best-effort** con nota `-- RESTAURACIÓN MANUAL REQUERIDA` si el rollback automático no es posible
|
|
19
|
-
5. **Checkpoint**: el usuario debe confirmar explícitamente antes de continuar
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
## Lista de operaciones irreversibles
|
|
24
|
-
|
|
25
|
-
### TRUNCATE TABLE
|
|
26
|
-
|
|
27
|
-
```sql
|
|
28
|
-
-- WARNING: IRREVERSIBLE
|
|
29
|
-
-- Elimina TODOS los datos de la tabla sin posibilidad de rollback transaccional en algunos motores.
|
|
30
|
-
-- En PostgreSQL se puede envolver en BEGIN/COMMIT, pero el efecto es inmediato si se confirma.
|
|
31
|
-
-- Respaldo obligatorio en esq_audit antes de ejecutar.
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
**Mitigación**: `CREATE TABLE esq_audit.tb_bkp_x_sessionXXX AS SELECT * FROM esq_.tb_x;` antes.
|
|
35
|
-
|
|
36
|
-
---
|
|
37
|
-
|
|
38
|
-
### DROP COLUMN sin respaldo previo
|
|
39
|
-
|
|
40
|
-
```sql
|
|
41
|
-
-- WARNING: IRREVERSIBLE
|
|
42
|
-
-- La columna y sus datos se pierden permanentemente.
|
|
43
|
-
-- Respaldo: ALTER TABLE tb_x ADD COLUMN col_bkp ... + UPDATE SET col_bkp = col_original;
|
|
44
|
-
-- o bien: CREATE TABLE esq_audit.tb_bkp_x_col_sessionXXX AS SELECT id, col FROM tb_x;
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
**Mitigación**: copiar los valores a una columna temporal o tabla de backup antes del DROP.
|
|
48
|
-
|
|
49
|
-
---
|
|
50
|
-
|
|
51
|
-
### DROP TABLE sin respaldo previo
|
|
52
|
-
|
|
53
|
-
```sql
|
|
54
|
-
-- WARNING: IRREVERSIBLE
|
|
55
|
-
-- La tabla y todos sus datos, índices, constraints y sequences asociados se pierden.
|
|
56
|
-
-- Respaldo obligatorio: CREATE TABLE esq_audit.tb_bkp_x_sessionXXX AS SELECT * FROM esq_.tb_x;
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
---
|
|
60
|
-
|
|
61
|
-
### ALTER COLUMN TYPE con pérdida de precisión
|
|
62
|
-
|
|
63
|
-
```sql
|
|
64
|
-
-- WARNING: IRREVERSIBLE
|
|
65
|
-
-- Cambiar de varchar(500) a varchar(50) trunca datos. Cambiar de numeric(18,4) a integer pierde decimales.
|
|
66
|
-
-- Verificar que no hay datos que excedan el nuevo tamaño/precisión ANTES de ejecutar.
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
**Mitigación**:
|
|
70
|
-
```sql
|
|
71
|
-
-- Verificar antes:
|
|
72
|
-
SELECT COUNT(*) FROM esq_.tb_x WHERE length(col_x) > 50;
|
|
73
|
-
SELECT COUNT(*) FROM esq_.tb_x WHERE col_x != FLOOR(col_x);
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
---
|
|
77
|
-
|
|
78
|
-
### DROP ... CASCADE
|
|
79
|
-
|
|
80
|
-
```sql
|
|
81
|
-
-- WARNING: IRREVERSIBLE
|
|
82
|
-
-- Elimina el objeto Y todos los objetos que dependen de él (views, funciones, constraints).
|
|
83
|
-
-- Listar dependencias antes: SELECT * FROM information_schema.constraint_column_usage WHERE table_name = 'tb_x';
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
**Mitigación**: antes de ejecutar, listar todas las dependencias y generar los scripts para recrearlas.
|
|
87
|
-
|
|
88
|
-
---
|
|
89
|
-
|
|
90
|
-
### DELETE sin WHERE (o con WHERE muy amplio)
|
|
91
|
-
|
|
92
|
-
```sql
|
|
93
|
-
-- WARNING: IRREVERSIBLE
|
|
94
|
-
-- Un DELETE sin cláusula WHERE o con condición demasiado amplia puede vaciar una tabla.
|
|
95
|
-
-- Respaldo obligatorio: CREATE TABLE esq_audit.tb_bkp_x_sessionXXX AS SELECT * FROM esq_.tb_x WHERE <condicion>;
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
**Verificación previa recomendada**:
|
|
99
|
-
```sql
|
|
100
|
-
-- Ejecutar primero como SELECT para ver qué filas afecta:
|
|
101
|
-
SELECT COUNT(*) FROM esq_.tb_x WHERE <condicion_del_delete>;
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
---
|
|
105
|
-
|
|
106
|
-
### UPDATE sin WHERE sobre tabla grande
|
|
107
|
-
|
|
108
|
-
```sql
|
|
109
|
-
-- WARNING: ALTA SUPERFICIE DE IMPACTO
|
|
110
|
-
-- Un UPDATE sin WHERE o con condición muy amplia modifica todas las filas.
|
|
111
|
-
-- Si es intencional, documentarlo explícitamente en DECISIONS.md.
|
|
112
|
-
-- Respaldo obligatorio antes de ejecutar.
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
---
|
|
116
|
-
|
|
117
|
-
### Eliminar función sin versión anterior conocida
|
|
118
|
-
|
|
119
|
-
```sql
|
|
120
|
-
-- WARNING: IRREVERSIBLE
|
|
121
|
-
-- Si no hay registro de la versión anterior de la función (no está en el repo ni en la sesión),
|
|
122
|
-
-- no es posible generar un rollback automático.
|
|
123
|
-
-- El rollback best-effort debe incluir el cuerpo actual en un comentario para restauración manual.
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
---
|
|
127
|
-
|
|
128
|
-
### Cambiar tipo de columna con conversión destructiva
|
|
129
|
-
|
|
130
|
-
Por ejemplo: `varchar` → `integer` donde algunos valores no son números; `timestamp` → `date` perdiendo la hora.
|
|
131
|
-
|
|
132
|
-
**Mitigación**:
|
|
133
|
-
```sql
|
|
134
|
-
-- Verificar antes:
|
|
135
|
-
SELECT col_x FROM esq_.tb_x WHERE col_x !~ '^\d+$'; -- filas que no son números
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
---
|
|
139
|
-
|
|
140
|
-
## Formato del header para scripts irreversibles
|
|
141
|
-
|
|
142
|
-
```sql
|
|
143
|
-
-- Archivo: 001-elimina-col-legacy-tb-credito.sql
|
|
144
|
-
-- Sesión: sessionXXX-nombre-kebab (YYYY-MM-DD)
|
|
145
|
-
-- WARNING: IRREVERSIBLE — DROP COLUMN sin restauración automática posible
|
|
146
|
-
-- Respaldo: esq_audit.tb_bkp_credito_col_legacy_sessionXXX (creado en 000-backup.sql)
|
|
147
|
-
-- Decisión: DECISIONS.md DEC-XXX — aprobado por [usuario]
|
|
148
|
-
BEGIN;
|
|
149
|
-
-- cuerpo del script
|
|
150
|
-
COMMIT;
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
---
|
|
154
|
-
|
|
155
|
-
## Verificaciones antes de ejecutar en producción
|
|
156
|
-
|
|
157
|
-
- [ ] El script de respaldo fue ejecutado y verificado (`SELECT COUNT(*) FROM esq_audit.tb_bkp_...`)
|
|
158
|
-
- [ ] La decisión está registrada en `DECISIONS.md`
|
|
159
|
-
- [ ] El usuario confirmó explícitamente la ejecución
|
|
160
|
-
- [ ] Se tiene el rollback best-effort documentado (aunque sea manual)
|
|
161
|
-
- [ ] Se notificó al equipo si el cambio afecta a otros servicios
|