@tacuchi/agent-workflow-cli 11.0.1 → 12.2.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 +52 -95
- package/dist/adapters/git-cli.d.ts +7 -1
- package/dist/adapters/git-cli.d.ts.map +1 -1
- package/dist/adapters/git-cli.js +47 -0
- package/dist/adapters/git-cli.js.map +1 -1
- 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/git-flow-service.d.ts +44 -0
- package/dist/application/git-flow-service.d.ts.map +1 -0
- package/dist/application/git-flow-service.js +220 -0
- package/dist/application/git-flow-service.js.map +1 -0
- 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 +1 -8
- package/dist/application/parsers/project-block.d.ts.map +1 -1
- package/dist/application/parsers/project-block.js +19 -51
- package/dist/application/parsers/project-block.js.map +1 -1
- package/dist/application/paths-service.d.ts +9 -8
- package/dist/application/paths-service.d.ts.map +1 -1
- package/dist/application/paths-service.js +16 -8
- package/dist/application/paths-service.js.map +1 -1
- package/dist/application/project-md-upsert-service.d.ts +5 -11
- package/dist/application/project-md-upsert-service.d.ts.map +1 -1
- package/dist/application/project-md-upsert-service.js +11 -56
- package/dist/application/project-md-upsert-service.js.map +1 -1
- package/dist/application/project-tab-data.d.ts +16 -42
- package/dist/application/project-tab-data.d.ts.map +1 -1
- package/dist/application/project-tab-data.js +28 -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 +2 -3
- package/dist/application/render/project-block.d.ts.map +1 -1
- package/dist/application/render/project-block.js +16 -26
- 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 +11 -3
- package/dist/application/self/install-skill.d.ts.map +1 -1
- package/dist/application/self/install-skill.js +65 -14
- 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.d.ts +1 -1
- package/dist/application/self/uninstall.d.ts.map +1 -1
- package/dist/application/self/uninstall.js +39 -29
- 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 +62 -0
- package/dist/application/workspace-init-service.d.ts.map +1 -0
- package/dist/application/workspace-init-service.js +228 -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/git-flow.d.ts +3 -0
- package/dist/cli/commands/git-flow.d.ts.map +1 -0
- package/dist/cli/commands/git-flow.js +50 -0
- package/dist/cli/commands/git-flow.js.map +1 -0
- 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-qa-branch.d.ts +3 -0
- package/dist/cli/commands/set-qa-branch.d.ts.map +1 -0
- package/dist/cli/commands/set-qa-branch.js +34 -0
- package/dist/cli/commands/set-qa-branch.js.map +1 -0
- 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 +71 -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 +10 -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 +33 -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 +6 -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/git-flow-actions.d.ts +22 -0
- package/dist/cli/tui/components/git-flow-actions.d.ts.map +1 -0
- package/dist/cli/tui/components/git-flow-actions.js +0 -0
- package/dist/cli/tui/components/git-flow-actions.js.map +1 -0
- 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 +49 -105
- 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/ports/git.d.ts +17 -0
- package/dist/ports/git.d.ts.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
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: diagrams
|
|
3
|
+
description: >
|
|
4
|
+
Autoría de diagramas de arquitectura y sistema: C4 (Context, Container, Component),
|
|
5
|
+
PlantUML y Structurizr DSL. Compuesta por export-diagrams para producir el contenido
|
|
6
|
+
de docs/diagrams/. Selecciona el motor de render según el flag --diagrams del export
|
|
7
|
+
(Structurizr default, Mermaid y PlantUML opt-in). Incluye link mermaid.ink por cada
|
|
8
|
+
bloque Mermaid para preview sin renderer local.
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# diagrams — Diagram authoring capability
|
|
12
|
+
|
|
13
|
+
## Role
|
|
14
|
+
|
|
15
|
+
`diagrams` — implementación built-in por defecto. Rebindeable a otra skill (de tercero o `off`) en `.workflow/skills.toml`.
|
|
16
|
+
|
|
17
|
+
## Purpose
|
|
18
|
+
|
|
19
|
+
Autorar diagramas de arquitectura con notación C4 (Levels 1-3) usando el motor que el export configure. Produce source renderizable (DSL, PUML, Mermaid) — **no renderiza visualmente**; el render lo hace el lector con sus herramientas. Cubre el estándar C4 formal (Structurizr DSL), el opt-in embebido (Mermaid nativo) y el opt-in exportable (PlantUML).
|
|
20
|
+
|
|
21
|
+
## Composed by
|
|
22
|
+
|
|
23
|
+
| Export | Cuándo la compone |
|
|
24
|
+
|---|---|
|
|
25
|
+
| `export-diagrams` | para generar el contenido de `docs/diagrams/NNN-*/` |
|
|
26
|
+
|
|
27
|
+
Cualquier loop puede componerla también si necesita producir un diagrama inline durante ejecución (raro; el caso primario es `export-diagrams`).
|
|
28
|
+
|
|
29
|
+
## Knowledge
|
|
30
|
+
|
|
31
|
+
### Engine matrix
|
|
32
|
+
|
|
33
|
+
| `--diagrams` flag | Motor | Archivos producidos | Cuándo elegirlo |
|
|
34
|
+
|---|---|---|---|
|
|
35
|
+
| `structurizr` (default) | Structurizr DSL | `workspace.dsl` + Mermaid auxiliar embebido en `.md` | Dossier técnico formal; soporte de tooling externo (structurizr.com, structurizr-lite) |
|
|
36
|
+
| `mermaid` | Mermaid C4 nativo | solo `.md` con bloques Mermaid | Preferir render embebido sin DSL separado; GitHub/GitLab lo renderizan inline |
|
|
37
|
+
| `plantuml` | PlantUML C4-stdlib | `arquitectura.puml` + nota en `.md` | Equipos con pipeline PlantUML instalado |
|
|
38
|
+
|
|
39
|
+
**Regla canónica**: `export-diagrams` usa Structurizr DSL por defecto (C4 formal, separa modelo de vistas). Mermaid es opt-in cuando se prefiere render embebido.
|
|
40
|
+
|
|
41
|
+
### C4 model — levels
|
|
42
|
+
|
|
43
|
+
#### Level 1: Context (C4Context)
|
|
44
|
+
|
|
45
|
+
El sistema como caja única + actores + sistemas vecinos. Perspectiva de negocio.
|
|
46
|
+
|
|
47
|
+
```mermaid
|
|
48
|
+
C4Context
|
|
49
|
+
title Diagrama de Contexto: <PRODUCTO>
|
|
50
|
+
Person(dev, "Developer", "Miembro del equipo")
|
|
51
|
+
System(sistema, "<PRODUCTO>", "<descripcion corta>")
|
|
52
|
+
System_Ext(extA, "<Sistema A>", "<rol>")
|
|
53
|
+
Rel(dev, sistema, "Usa")
|
|
54
|
+
Rel(sistema, extA, "<integracion>")
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
#### Level 2: Container (C4Container)
|
|
58
|
+
|
|
59
|
+
Aplicaciones, servicios, data stores que componen el sistema. Una fuente declarada en `WORKSPACE` = un contenedor.
|
|
60
|
+
|
|
61
|
+
```mermaid
|
|
62
|
+
C4Container
|
|
63
|
+
title Diagrama de Contenedores: <PRODUCTO>
|
|
64
|
+
Person(dev, "Developer")
|
|
65
|
+
System_Boundary(sistema, "<PRODUCTO>") {
|
|
66
|
+
Container(svcA, "<Servicio A>", "<tech>", "<responsabilidad>")
|
|
67
|
+
Container(svcB, "<Servicio B>", "<tech>", "<responsabilidad>")
|
|
68
|
+
ContainerDb(db, "Base de datos", "<motor>", "<uso>")
|
|
69
|
+
}
|
|
70
|
+
System_Ext(extA, "<Sistema A>")
|
|
71
|
+
Rel(dev, svcA, "Usa")
|
|
72
|
+
Rel(svcA, db, "Lee/escribe")
|
|
73
|
+
Rel(svcA, extA, "<protocolo>")
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
#### Level 3: Component (C4Component)
|
|
77
|
+
|
|
78
|
+
Módulos internos relevantes de un contenedor. Solo para contenedores con complejidad interna suficiente. Un diagrama por contenedor; el resto se omite.
|
|
79
|
+
|
|
80
|
+
```mermaid
|
|
81
|
+
C4Component
|
|
82
|
+
title Componentes: <Contenedor>
|
|
83
|
+
Container_Boundary(cont, "<Contenedor>") {
|
|
84
|
+
Component(compA, "<Componente A>", "<tech>", "<responsabilidad>")
|
|
85
|
+
Component(compB, "<Componente B>", "<tech>", "<responsabilidad>")
|
|
86
|
+
}
|
|
87
|
+
Rel(compA, compB, "<interaccion>")
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Si ningún contenedor justifica C4 Component → omitir la sección con nota inline `_(Sin contenedores con complejidad interna suficiente para C4 Component.)_`.
|
|
91
|
+
|
|
92
|
+
### Structurizr DSL template
|
|
93
|
+
|
|
94
|
+
```dsl
|
|
95
|
+
workspace "<PRODUCTO>" "<descripcion>" {
|
|
96
|
+
|
|
97
|
+
model {
|
|
98
|
+
// Personas
|
|
99
|
+
dev = person "Developer" "Miembro del equipo"
|
|
100
|
+
|
|
101
|
+
// Sistema bajo análisis
|
|
102
|
+
sistema = softwareSystem "<PRODUCTO>" "<descripcion>" {
|
|
103
|
+
svcA = container "<Servicio A>" "<tech>" "<responsabilidad>"
|
|
104
|
+
svcB = container "<Servicio B>" "<tech>" "<responsabilidad>"
|
|
105
|
+
db = container "Base de datos" "<motor>" "<uso>" "Database"
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// Sistemas externos
|
|
109
|
+
extA = softwareSystem "<Sistema A>" "<rol>" "External"
|
|
110
|
+
|
|
111
|
+
// Relaciones
|
|
112
|
+
dev -> sistema "Usa"
|
|
113
|
+
svcA -> db "Lee/escribe"
|
|
114
|
+
svcA -> extA "<protocolo>"
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
views {
|
|
118
|
+
systemContext sistema "Context" {
|
|
119
|
+
include *
|
|
120
|
+
autoLayout
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
container sistema "Container" {
|
|
124
|
+
include *
|
|
125
|
+
autoLayout
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// Una vista por contenedor con C4 Component relevante:
|
|
129
|
+
component svcA "SvcA-Components" {
|
|
130
|
+
include *
|
|
131
|
+
autoLayout
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
theme default
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Render online gratuito: [structurizr.com/dsl](https://structurizr.com/dsl) o structurizr-lite (Docker).
|
|
140
|
+
|
|
141
|
+
### PlantUML C4-stdlib template
|
|
142
|
+
|
|
143
|
+
```plantuml
|
|
144
|
+
@startuml arquitectura
|
|
145
|
+
|
|
146
|
+
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Context.puml
|
|
147
|
+
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml
|
|
148
|
+
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Component.puml
|
|
149
|
+
|
|
150
|
+
title <PRODUCTO> — Diagrama de Contexto C4
|
|
151
|
+
|
|
152
|
+
Person(dev, "Developer", "Miembro del equipo")
|
|
153
|
+
System(sistema, "<PRODUCTO>", "<descripcion>")
|
|
154
|
+
System_Ext(extA, "<Sistema A>", "<rol>")
|
|
155
|
+
|
|
156
|
+
Rel(dev, sistema, "Usa")
|
|
157
|
+
Rel(sistema, extA, "<protocolo>")
|
|
158
|
+
|
|
159
|
+
SHOW_LEGEND()
|
|
160
|
+
@enduml
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
Render: [plantuml.com](https://plantuml.com) o `plantuml.jar` local.
|
|
164
|
+
|
|
165
|
+
### Mermaid auxiliar (bajo Structurizr default)
|
|
166
|
+
|
|
167
|
+
Cuando `--diagrams structurizr`, el archivo `.md` incluye también un bloque Mermaid derivado del DSL como **fallback offline** (lectores sin acceso a structurizr.com/dsl pueden leerlo directamente):
|
|
168
|
+
|
|
169
|
+
```
|
|
170
|
+
```mermaid
|
|
171
|
+
C4Context
|
|
172
|
+
title ...
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
> Ver diagrama renderizado: <https://mermaid.ink/img/BASE64>
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
El `BASE64` es el código Mermaid plano codificado en base64 URL-safe (RFC 4648 §5; alfabeto `A-Z a-z 0-9 - _`). **Cada bloque Mermaid lleva su propio link** inmediatamente después del fence de cierre.
|
|
179
|
+
|
|
180
|
+
### Sequence diagrams (opt-in)
|
|
181
|
+
|
|
182
|
+
Para flujos críticos de integración (no C4 estructural), un `sequenceDiagram` Mermaid complementa el C4 Container:
|
|
183
|
+
|
|
184
|
+
```mermaid
|
|
185
|
+
sequenceDiagram
|
|
186
|
+
participant Dev
|
|
187
|
+
participant SvcA
|
|
188
|
+
participant DB
|
|
189
|
+
Dev->>SvcA: POST /resource
|
|
190
|
+
SvcA->>DB: INSERT
|
|
191
|
+
DB-->>SvcA: OK
|
|
192
|
+
SvcA-->>Dev: 201 Created
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
Solo si aporta claridad real — no agregar sequence diagrams por defecto.
|
|
196
|
+
|
|
197
|
+
### Entity-Relationship (modelo de datos)
|
|
198
|
+
|
|
199
|
+
Cuando `export-diagrams` incluye `--scope datos` y hay MCP configurado:
|
|
200
|
+
|
|
201
|
+
```mermaid
|
|
202
|
+
erDiagram
|
|
203
|
+
TABLA_A ||--o{ TABLA_B : "tiene"
|
|
204
|
+
TABLA_A {
|
|
205
|
+
int id PK
|
|
206
|
+
string nombre
|
|
207
|
+
}
|
|
208
|
+
TABLA_B {
|
|
209
|
+
int id PK
|
|
210
|
+
int a_id FK
|
|
211
|
+
string detalle
|
|
212
|
+
}
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
MCP read-only: `\d <tabla>` + `SELECT count(*)` para magnitud (aplicar cost guard: ver skill `research` o `sql`).
|
|
216
|
+
|
|
217
|
+
### Output file structure
|
|
218
|
+
|
|
219
|
+
```
|
|
220
|
+
docs/diagrams/NNN-export-diagrams-YYYY-MM-DD/
|
|
221
|
+
├── README.md # indice + how-to-read + motores usados
|
|
222
|
+
├── arquitectura.md # documento principal con C4 + Mermaid auxiliar
|
|
223
|
+
├── workspace.dsl # solo con --diagrams structurizr (default)
|
|
224
|
+
└── arquitectura.puml # solo con --diagrams plantuml
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### Render rules
|
|
228
|
+
|
|
229
|
+
1. Sin cota de palabras — completitud > concisión para documentación técnica.
|
|
230
|
+
2. Diagrama principal (al menos C4Context + C4Container) es obligatorio; sin ellos el output no es válido.
|
|
231
|
+
3. C4Component solo si el contenedor lo justifica.
|
|
232
|
+
4. Sequence y erDiagram son opcionales; solo si aportan claridad real.
|
|
233
|
+
5. Cada bloque `mermaid` lleva el link `mermaid.ink` como blockquote inline.
|
|
234
|
+
6. Placeholders `{{PLACEHOLDER}}` siempre reemplazados — nunca dejar marcadores sin rellenar.
|
|
235
|
+
|
|
236
|
+
## Output
|
|
237
|
+
|
|
238
|
+
Produce en `docs/diagrams/NNN-export-diagrams-YYYY-MM-DD/`:
|
|
239
|
+
- `README.md`
|
|
240
|
+
- `arquitectura.md` (siempre)
|
|
241
|
+
- `workspace.dsl` (si `--diagrams structurizr`)
|
|
242
|
+
- `arquitectura.puml` (si `--diagrams plantuml`)
|
|
243
|
+
|
|
244
|
+
Escribe solo `docs/diagrams/` (invariant #1 y #2: solo `export-*` gradua a `docs/`; esta skill la compone `export-diagrams`).
|
|
245
|
+
|
|
246
|
+
## Source
|
|
247
|
+
|
|
248
|
+
Reciclado de `agent-workflow/exports/export-arq/` del bundle viejo (v1.3.0). Se conserva: el modelo C4 Levels 1-3, los tres motores (Structurizr default, Mermaid opt-in, PlantUML opt-in), las plantillas DSL y PUML, la regla de link `mermaid.ink` por bloque Mermaid, la estructura de output, el cost guard para MCP. Se descarta: la lógica de lectura de AW-PROJECT legacy, los comandos CLI `agent-workflow next-number`/`history-data`/etc. (son detalles de implementación del CLI, no de la skill), y el scope `--diagrams` como input flag (lo recibe el export que compone esta skill).
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: git
|
|
3
|
+
description: >-
|
|
4
|
+
Git-safe capability — built-in default for the `git` role. Verifies the expected
|
|
5
|
+
work branch per source before editing, proposes commits (one per source) and only
|
|
6
|
+
commits when the user approves, and NEVER runs push, --amend, --no-verify, force,
|
|
7
|
+
merge/rebase/cherry-pick, tags, or destructive resets without explicit user request.
|
|
8
|
+
Read-only git (status/log/diff/branch) is always allowed. Use when a loop is about
|
|
9
|
+
to edit code or when the user asks to commit / save / push changes.
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# git — git-safe capability
|
|
13
|
+
|
|
14
|
+
## Role
|
|
15
|
+
|
|
16
|
+
`git` — built-in default. Rebindable in `.workflow/skills.toml` (third-party skill or `off`). This skill encodes invariant 5: **git seguro**.
|
|
17
|
+
|
|
18
|
+
## Purpose
|
|
19
|
+
|
|
20
|
+
Operar git de forma **segura y controlada**: verificar la rama esperada antes de editar, **proponer** commits por fuente, y nunca ejecutar operaciones destructivas o de publicación sin pedido explícito del usuario.
|
|
21
|
+
|
|
22
|
+
## Composed by
|
|
23
|
+
|
|
24
|
+
- **`plan-exec-loop`** — verifica rama antes de cada edit; propone commits al cerrar/checkpoint.
|
|
25
|
+
- **`quick-loop`** — igual, en el atajo liviano.
|
|
26
|
+
|
|
27
|
+
(Cualquier flujo que edite código o que el usuario quiera commitear lo usa.)
|
|
28
|
+
|
|
29
|
+
## Knowledge
|
|
30
|
+
|
|
31
|
+
### Operaciones prohibidas sin solicitud explícita del usuario
|
|
32
|
+
|
|
33
|
+
Lista cerrada. La IA **nunca** las ejecuta por iniciativa propia:
|
|
34
|
+
|
|
35
|
+
- `git commit` (incluye `--amend`)
|
|
36
|
+
- `git push` (incluye `--force` / `-f`)
|
|
37
|
+
- `git merge` · `git rebase` · `git cherry-pick`
|
|
38
|
+
- `git tag` (crear o editar)
|
|
39
|
+
- `git reset --hard` · `git restore .` · `git checkout -- .` · `git clean -fd` · `git stash` (cuando hay trabajo sin commit)
|
|
40
|
+
|
|
41
|
+
Y **siempre** prohibido, aún cuando el usuario pida commit: `--no-verify` (respetar los hooks pre-commit), `--force`, trailers `Co-Authored-By`, firmas de modelo.
|
|
42
|
+
|
|
43
|
+
### Operaciones read-only (siempre permitidas, sin preguntar)
|
|
44
|
+
|
|
45
|
+
`status` · `log` · `diff` · `branch --show-current` · `rev-parse` · `show`. `git checkout` (cambio de rama) **no** es read-only: requiere `AskUserQuestion` aunque no sea destructivo (ver verificación de rama).
|
|
46
|
+
|
|
47
|
+
### Verificación de rama (antes de editar)
|
|
48
|
+
|
|
49
|
+
La rama esperada **nunca se asume desde la rama actual** — el usuario pudo cambiarla a mano. Verificar contra la rama de trabajo declarada por fuente antes de cualquier `Write/Edit`.
|
|
50
|
+
|
|
51
|
+
Campos por fuente: `alias`, `path`, `main_branch` (base, default `certificacion`), `expected_work_branch`, `current_branch`, `match` (`current == expected`), `dirty` (cambios sin commit).
|
|
52
|
+
|
|
53
|
+
Casos:
|
|
54
|
+
|
|
55
|
+
- **`match=true`** → OK, editar.
|
|
56
|
+
- **`match=false, dirty=false`** (Caso A — rama distinta, repo limpio) → `AskUserQuestion`: hacer `git checkout <expected>` / mantener current y actualizar la expectativa de la sesión / cancelar.
|
|
57
|
+
- **`match=false, dirty=true`** (Caso B — rama distinta + cambios sin commit) → **pausar y esperar resolución manual**. No proponer checkout (podría perder trabajo). Pedir al usuario commit/stash/discard y avisar cuando continuar.
|
|
58
|
+
- **Cross-fuente (hub)**: si las fuentes tocadas apuntan a ramas distintas sin declararlo, **hard gate** — bloquear avance con `AskUserQuestion` (alinear todas / declarar divergencia explícita / cancelar).
|
|
59
|
+
- **HEAD detached** → tratar como Caso A.
|
|
60
|
+
- **Fuente fuera de git** (`is_repo=false`) → informar, no bloquear.
|
|
61
|
+
|
|
62
|
+
### Commits — propose-then-execute, una fuente a la vez
|
|
63
|
+
|
|
64
|
+
Ante cualquier pedido o disparo de commit (cierre de loop, "commitea esto", "guardá los cambios"):
|
|
65
|
+
|
|
66
|
+
1. Resolver las fuentes y su estado dirty/rama.
|
|
67
|
+
2. Si hay 1+ fuentes `dirty=true`, invocar **una sola** `AskUserQuestion` con un tab por fuente dirty (máx 4 simultáneas; si N>4, en tandas):
|
|
68
|
+
- Header del tab: el `alias` de la fuente.
|
|
69
|
+
- Opciones: "Aprobar sugerido (Recomendado)" con el mensaje canónico / "Saltar esta fuente". `Other` = mensaje custom.
|
|
70
|
+
3. Ejecutar `git -C <path> commit -m "<msg>"` solo en las fuentes aprobadas, **una a una**. Respetar hooks (sin `--no-verify`).
|
|
71
|
+
4. Si una fuente tiene `match=false` (rama distinta a la esperada): **omitirla y abortar su commit**; avisar para alinear la rama primero.
|
|
72
|
+
5. Si todas están `dirty=false` → skip silencioso, informar en chat que no hay nada que commitear.
|
|
73
|
+
|
|
74
|
+
**Bypass** (Regla 5): si el usuario aporta el mensaje literal exacto (`-m "..."`, comillas), commitear directo sin `AskUserQuestion`, pero seguir validando rama, hooks y formato. Si el literal viola el formato, avisar antes de ejecutar.
|
|
75
|
+
|
|
76
|
+
### Formato canónico del mensaje
|
|
77
|
+
|
|
78
|
+
- **Una sola línea**, corta (≤72 chars sugerido), descriptiva (qué cambia, no cómo).
|
|
79
|
+
- Incluir el código de sesión activa (`session<NNN>` como tag o en el prefijo) cuando aplique.
|
|
80
|
+
- Prefijo Conventional Commits **opcional** (`feat:` `fix:` `docs:` `chore:` `refactor:` `test:`).
|
|
81
|
+
- **Prohibido**: multi-línea/body, trailers `Co-Authored-By`, firmas de modelo, emojis (salvo pedido explícito), `--no-verify`.
|
|
82
|
+
|
|
83
|
+
Válidos:
|
|
84
|
+
```
|
|
85
|
+
session007: agrega politica de commits controlados
|
|
86
|
+
feat(session012): nuevo export-scripts
|
|
87
|
+
fix(session018): corrige drift en hooks.json
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Fuera de sesión activa: relajar a "1 línea + sin co-author"; el tag `session<NNN>` se omite. El propose-then-execute sigue activo.
|
|
91
|
+
|
|
92
|
+
## Output
|
|
93
|
+
|
|
94
|
+
Ninguno en `docs/`. Produce commits **solo** cuando el usuario aprueba, en los repos fuente. La verificación de rama puede actualizar la expectativa de rama de la sesión si el usuario lo elige.
|
|
95
|
+
|
|
96
|
+
## Source
|
|
97
|
+
|
|
98
|
+
Reciclada de la doctrina vieja: `doctrine/session/references/commits-policy.md` (Reglas 1-5: propose-then-execute, formato canónico, bypass) + `doctrine/session/references/branch-verification.md` (Casos A/B/C, cross-fuente hard gate). Se descarta la dependencia de comandos CLI específicos (`agent-workflow sources`): la verificación se hace con git read-only directo más la rama de trabajo declarada por la sesión.
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: research
|
|
3
|
+
description: >
|
|
4
|
+
Capacidad de investigación on-demand que los loops componen cuando necesitan evidencia para avanzar.
|
|
5
|
+
Crea una sesión de investigación, lee el workspace + repos asociados + MCPs en modo read-only,
|
|
6
|
+
produce ANALYSIS-FILE → CONCLUSIONS. Cierra INCONCLUSIVE si la pregunta no puede responderse
|
|
7
|
+
con las fuentes disponibles. Discrimina cuándo investigar ("¿puedo responder leyendo repo/datos?")
|
|
8
|
+
vs cuándo preguntar al humano ("¿depende de lo que el usuario quiere?").
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# research — On-demand investigation capability
|
|
12
|
+
|
|
13
|
+
## Role
|
|
14
|
+
|
|
15
|
+
`research` — implementación built-in por defecto. Rebindeable a otra skill (de tercero o `off`) en `.workflow/skills.toml`.
|
|
16
|
+
|
|
17
|
+
## Purpose
|
|
18
|
+
|
|
19
|
+
Resolver preguntas factuales sobre el sistema antes de actuar: leer el repo, rastrear datos vía MCP read-only, producir hallazgos sintetizados. **No crea artefactos de producción** — produce evidencia y conclusiones para que el loop que la compuso pueda avanzar con información de calidad.
|
|
20
|
+
|
|
21
|
+
El discriminador clave:
|
|
22
|
+
|
|
23
|
+
| La pregunta... | Acción |
|
|
24
|
+
|---|---|
|
|
25
|
+
| puede responderse leyendo repo / datos (hechos objetivos del sistema) | **investigar** |
|
|
26
|
+
| depende de preferencias, prioridades o decisiones del usuario | **preguntar al humano** vía `AskUserQuestion` |
|
|
27
|
+
| está parcialmente en el repo y parcialmente en intención del usuario | investigar primero, luego preguntar solo por la parte incierta |
|
|
28
|
+
|
|
29
|
+
## Composed by
|
|
30
|
+
|
|
31
|
+
Todos los loops la cargan on-demand:
|
|
32
|
+
|
|
33
|
+
| Loop | Cuándo la compone |
|
|
34
|
+
|---|---|
|
|
35
|
+
| `spec-refine-loop` | para entender el sistema existente antes de refinar un spec |
|
|
36
|
+
| `plan-new-loop` | para descubrir dependencias, integrations, convenciones del repo |
|
|
37
|
+
| `plan-exec-loop` | para investigar comportamiento real de un componente antes de modificarlo |
|
|
38
|
+
| `quick-loop` | para responder preguntas de orientación sobre el código o datos |
|
|
39
|
+
|
|
40
|
+
## Knowledge
|
|
41
|
+
|
|
42
|
+
### Investigation lifecycle
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
[pregunta del loop] → [crear sesión research] → [recolectar evidencia] → [sintetizar] → [CONCLUSIONS]
|
|
46
|
+
↕
|
|
47
|
+
[nueva hipótesis o gap] → [más evidencia o INCONCLUSIVE]
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
1. **Crear sesión research** en `.workflow/sessions/<slug>/` con `SESSION.md` (pregunta original + scope).
|
|
51
|
+
2. **Recolectar evidencia** — read-only: `Read`, `Grep`, `Glob`, MCP SELECT, `git log`.
|
|
52
|
+
3. **Escribir `ANALYSIS-FILE.md`** con hallazgos crudos.
|
|
53
|
+
4. **Sintetizar** en `CONCLUSIONS.md` con conclusiones evidenciadas.
|
|
54
|
+
5. **Cerrar** la sesión: estado `closed` si converge; `inconclusive` si no hay suficiente material.
|
|
55
|
+
|
|
56
|
+
### Ask-vs-research discriminator (examples)
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
"¿qué convención de nombres usa este repo?" → investigar (Grep + Read)
|
|
60
|
+
"¿qué endpoint necesita el spec?" → investigar (leer spec + código)
|
|
61
|
+
"¿prefieres enfoque A o B?" → preguntar al humano
|
|
62
|
+
"¿cuál es el estado de la tabla X?" → investigar (MCP read-only)
|
|
63
|
+
"¿qué tan urgente es esto para ti?" → preguntar al humano
|
|
64
|
+
"¿el servicio Y ya tiene auth implementado?" → investigar (leer código)
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### ANALYSIS-FILE.md schema
|
|
68
|
+
|
|
69
|
+
```markdown
|
|
70
|
+
# Analysis — <slug>
|
|
71
|
+
|
|
72
|
+
## Question
|
|
73
|
+
|
|
74
|
+
[La pregunta exacta que el loop planteó.]
|
|
75
|
+
|
|
76
|
+
## Sources consulted
|
|
77
|
+
|
|
78
|
+
- Codigo: <repo/path:lineas>
|
|
79
|
+
- BD (<mcp-name>): queries en queries/
|
|
80
|
+
- Git: <SHAs relevantes>
|
|
81
|
+
- Refs externas: <links si aplica>
|
|
82
|
+
|
|
83
|
+
## Finding 1: <titulo>
|
|
84
|
+
|
|
85
|
+
- **Que se observo**: ...
|
|
86
|
+
- **Donde**: <path o link>
|
|
87
|
+
- **Cuando**: <fecha si aplica>
|
|
88
|
+
|
|
89
|
+
## Finding N: ...
|
|
90
|
+
|
|
91
|
+
## Tentative hypotheses
|
|
92
|
+
|
|
93
|
+
- [hipotesis sin compromiso, para revisar en synthesis]
|
|
94
|
+
|
|
95
|
+
## Gaps
|
|
96
|
+
|
|
97
|
+
- [lo que no pudo leerse o no esta disponible]
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### CONCLUSIONS.md schema
|
|
101
|
+
|
|
102
|
+
```markdown
|
|
103
|
+
# Conclusions — <slug>
|
|
104
|
+
|
|
105
|
+
## Summary
|
|
106
|
+
|
|
107
|
+
[1-2 oraciones: que se investigo y que se concluyó.]
|
|
108
|
+
|
|
109
|
+
## Conclusions
|
|
110
|
+
|
|
111
|
+
- **C1**: <conclusion + link a ANALYSIS-FILE#section>
|
|
112
|
+
- **C2**: ...
|
|
113
|
+
|
|
114
|
+
## Recommendations
|
|
115
|
+
|
|
116
|
+
- **R1**: <accion concreta para el loop que hizo la pregunta>
|
|
117
|
+
|
|
118
|
+
## Open (gaps)
|
|
119
|
+
|
|
120
|
+
- <pregunta sin responder si aplica>
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### DB rule (invariant #4)
|
|
124
|
+
|
|
125
|
+
- **Solo SELECT** — nunca DML/DDL.
|
|
126
|
+
- **Escribir la query primero** en `.workflow/sessions/<slug>/queries/NNN-<slug>.sql` con header:
|
|
127
|
+
```sql
|
|
128
|
+
-- Query: <proposito>
|
|
129
|
+
-- MCP: <nombre>
|
|
130
|
+
-- Fecha: YYYY-MM-DD
|
|
131
|
+
-- Sesion: <slug>
|
|
132
|
+
-- Costo estimado: <filas|N/A>
|
|
133
|
+
```
|
|
134
|
+
- **Si hay >1 MCP candidato sin default declarado**: preguntar al humano cuál usar antes de ejecutar.
|
|
135
|
+
- **Cost guard antes de ejecutar**:
|
|
136
|
+
- `COUNT(*) ≤ 1.000` o lookup por PK → ejecutar directo.
|
|
137
|
+
- `1.000–10.000` filas o seq scan tabla pequeña → avisar estimado al usuario.
|
|
138
|
+
- `> 10.000` filas o seq scan tabla grande → confirmación explícita del usuario.
|
|
139
|
+
- UPDATE/INSERT/DELETE → rechazar.
|
|
140
|
+
|
|
141
|
+
### Code reading rules
|
|
142
|
+
|
|
143
|
+
- Usar `Grep` y `Read` extensivamente. **Nunca** `Edit/Write` durante investigación.
|
|
144
|
+
- Citar con path + líneas: `src/services/Foo.java:142`.
|
|
145
|
+
- Si el código está disperso: `Glob` + `Grep` para acotar.
|
|
146
|
+
|
|
147
|
+
### Git read-only (git-safe, invariant #5)
|
|
148
|
+
|
|
149
|
+
Solo: `git log`, `git show`, `git diff`, `git blame`, `git branch --show-current`.
|
|
150
|
+
Nunca durante investigación: `commit`, `push`, `merge`, `rebase`, `reset`, `checkout`.
|
|
151
|
+
|
|
152
|
+
### Inconclusive closure
|
|
153
|
+
|
|
154
|
+
Si tras investigar los gaps persisten y no pueden cerrarse con las fuentes disponibles:
|
|
155
|
+
- Documentar los gaps en `CONCLUSIONS.md#Open`.
|
|
156
|
+
- Marcar sesión como `inconclusive`.
|
|
157
|
+
- Reportar al loop: qué se pudo y qué no — el loop decide si pregunta al humano.
|
|
158
|
+
|
|
159
|
+
### Research session artifacts
|
|
160
|
+
|
|
161
|
+
```
|
|
162
|
+
.workflow/sessions/<slug>/
|
|
163
|
+
├── SESSION.md # pregunta original + scope + estado (open|closed|inconclusive)
|
|
164
|
+
├── ANALYSIS-FILE.md # hallazgos crudos (equivale a EVIDENCE.md del modelo viejo)
|
|
165
|
+
├── CONCLUSIONS.md # sintesis + recomendaciones para el loop
|
|
166
|
+
└── queries/ # SQL read-only (si se usó MCP)
|
|
167
|
+
└── 001-<slug>.sql
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## Output
|
|
171
|
+
|
|
172
|
+
Produce en `.workflow/sessions/<slug>/`:
|
|
173
|
+
- `ANALYSIS-FILE.md` — hallazgos crudos sin sintetizar.
|
|
174
|
+
- `CONCLUSIONS.md` — conclusiones con evidencia + recomendaciones para el loop.
|
|
175
|
+
- `queries/*.sql` — solo si se usó MCP.
|
|
176
|
+
|
|
177
|
+
No gradua a `docs/` (invariant #1). El loop que compone esta capacidad consume las conclusiones y actua en consecuencia.
|
|
178
|
+
|
|
179
|
+
## Source
|
|
180
|
+
|
|
181
|
+
Reciclado de `analyze-investigate`, `analyze-synthesize` y `analyze-conclude` del bundle viejo. Se conserva: el modelo de investigacion divergente → sintesis → conclusiones; las reglas read-only; el cost guard de queries; la discriminacion de gaps. Se descarta: la terminología de `flow=analyze`, `EVIDENCE.md`/`FINDINGS.md` como nombres canónicos (ahora `ANALYSIS-FILE.md`/`CONCLUSIONS.md`), el lifecycle de sesiones legacy, y la modulacion por modalidad (technical/incident/data) — la skill de research es de propósito general.
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sql
|
|
3
|
+
description: >-
|
|
4
|
+
SQL / database capability — built-in default for the `sql` role. Authoring DB
|
|
5
|
+
changes as versioned scripts (never executing them): writes statements to the
|
|
6
|
+
session `SCRIPTS.sql` with `@category` + `@stmt` markers, applies project SQL
|
|
7
|
+
style (canonical header, BEGIN/COMMIT, idempotency, explicit schema, CTEs over
|
|
8
|
+
DO/LOOP), classifies into the 4 categories, and knows how rollbacks are derived
|
|
9
|
+
on export. DB access is read-only via MCP — DML/DDL is NEVER executed (invariant 4).
|
|
10
|
+
Use when a loop writes migrations / queries, when research reads schema, or when
|
|
11
|
+
export-scripts consolidates the bundle.
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# sql — SQL / database capability
|
|
15
|
+
|
|
16
|
+
## Role
|
|
17
|
+
|
|
18
|
+
`sql` — built-in default. Rebindable in `.workflow/skills.toml` (third-party skill or `off`). When `off`, the loop continues without DB authoring help and says so if the task needed it.
|
|
19
|
+
|
|
20
|
+
## Purpose
|
|
21
|
+
|
|
22
|
+
Autorar cambios de base de datos como **scripts SQL versionados**, nunca ejecutándolos. Cubre dos modos:
|
|
23
|
+
|
|
24
|
+
- **Read-only** (consulta): leer schema/datos via MCP para entender el dominio (research, planning).
|
|
25
|
+
- **Write-to-script** (cambio): toda mutación de BD se escribe a `SCRIPTS.sql` de la sesión; la **aplica el usuario**, no la IA.
|
|
26
|
+
|
|
27
|
+
## Composed by
|
|
28
|
+
|
|
29
|
+
- **research** — leer schema via MCP read-only para entender el dominio.
|
|
30
|
+
- **`plan-exec-loop`** — cada cambio SQL se appendea a `SCRIPTS.sql` durante la ejecución.
|
|
31
|
+
- **`quick-loop`** — igual, para el atajo liviano.
|
|
32
|
+
- **`export-scripts`** — consolida los `SCRIPTS.sql` de N sesiones en el bundle `docs/scripts/NNN-export-scripts-YYYY-MM-DD/` y deriva el rollback.
|
|
33
|
+
|
|
34
|
+
## Knowledge
|
|
35
|
+
|
|
36
|
+
### Regla cero — nunca ejecutar SQL (invariante 4)
|
|
37
|
+
|
|
38
|
+
La IA **nunca ejecuta DML/DDL** contra ninguna BD, por ningún canal (MCP, `psql`, `Bash`, driver de app). Las migraciones quedan en `SCRIPTS.sql` y las **aplica el usuario**. Si aparece la tentación de "verificar aplicando", rehusar y pedir al usuario que ejecute.
|
|
39
|
+
|
|
40
|
+
- **Lecturas read-only via MCP**: `SELECT`, inspección de schema, conteos — OK. Sin `INSERT/UPDATE/DELETE/CREATE/ALTER/DROP/TRUNCATE`.
|
|
41
|
+
- Los MCP de BD (cert/prod) son **READONLY** por contrato.
|
|
42
|
+
- Excepción única, que NO relaja la regla: si el usuario pide explícitamente "ejecutalo vos contra cert", aún así confirmar por bloque y no asumir autorización ampliada.
|
|
43
|
+
|
|
44
|
+
### Staging — archivo único `SCRIPTS.sql` por sesión
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
.workflow/sessions/<folder>/
|
|
48
|
+
└── SCRIPTS.sql (consolidado de TODAS las sentencias de la sesión)
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Cada sentencia se **appendea** con un par de markers en comentarios:
|
|
52
|
+
|
|
53
|
+
```sql
|
|
54
|
+
-- @category: 01-ddl-tablas
|
|
55
|
+
-- @stmt: 01-crear-tabla-usuarios
|
|
56
|
+
CREATE TABLE IF NOT EXISTS esq_credito.tb_usuarios (
|
|
57
|
+
...
|
|
58
|
+
);
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
- `@category` clasifica (4 valores canónicos, abajo).
|
|
62
|
+
- `@stmt` da el slug determinístico `NN-verbo-objetivo`; `export-scripts` deriva el filename al separar.
|
|
63
|
+
- Orden dentro del archivo = orden cronológico de append. El orden de ejecución final por categoría (01→02→03→04) lo resuelve `export-scripts`, no este paso.
|
|
64
|
+
- `BEGIN;` global al inicio del archivo, `COMMIT;` al final. Cada sentencia individual **no** trae su propio BEGIN/COMMIT.
|
|
65
|
+
- **Sin** `.rollback.sql` per archivo durante exec — el rollback se genera al exportar.
|
|
66
|
+
|
|
67
|
+
### Las 4 categorías (`@category`)
|
|
68
|
+
|
|
69
|
+
| Marker | Patrones de detección |
|
|
70
|
+
|---|---|
|
|
71
|
+
| `01-ddl-tablas` | `CREATE/DROP/ALTER TABLE`, `CREATE INDEX`, `CREATE SEQUENCE` |
|
|
72
|
+
| `02-ddl-funciones` | `CREATE [OR REPLACE] FUNCTION/PROCEDURE`, `DROP FUNCTION/PROCEDURE` |
|
|
73
|
+
| `03-migracion` | `UPDATE`, `INSERT ... SELECT`, `DELETE` sobre datos existentes, transformaciones de columnas |
|
|
74
|
+
| `04-inserts` | `INSERT INTO ... VALUES`, seeds de catálogos, datos de configuración inicial |
|
|
75
|
+
|
|
76
|
+
**Orden de ejecución obligatorio**: 01 → 02 → 03 → 04. El `SCRIPTS.sql` puede mezclar categorías cronológicamente; `export-scripts` ordena el bundle final.
|
|
77
|
+
|
|
78
|
+
### Estilo SQL (cumple `database-conventions`)
|
|
79
|
+
|
|
80
|
+
- **Header canónico de 4 líneas**, entre dos líneas de iguales:
|
|
81
|
+
```sql
|
|
82
|
+
-- ============================================================================
|
|
83
|
+
-- Script: NNN-tipo-objetivo.sql
|
|
84
|
+
-- Sesion: sNNN
|
|
85
|
+
-- Objeto: <qué hace, 1-2 líneas>
|
|
86
|
+
-- Alcance: <filtros y boundaries del cambio, 1 línea>
|
|
87
|
+
-- ============================================================================
|
|
88
|
+
```
|
|
89
|
+
Solo 4 campos. Autor/Fecha/notas largas NO van en el header (si hacen falta, bloque libre debajo). Si el motor no es Postgres, indicarlo en `Objeto:`.
|
|
90
|
+
- **Idempotencia**: `CREATE TABLE IF NOT EXISTS`, `DROP ... IF EXISTS`, `CREATE OR REPLACE`, `ON CONFLICT`.
|
|
91
|
+
- **Schema explícito** siempre (`esq_credito.tb_x`, nunca `public.`).
|
|
92
|
+
- **CTEs sobre DO/LOOP**: una transformación = `WITH ... AS` encadenadas + un `INSERT/UPDATE/DELETE` final. Evitar `DO $$ ... LOOP ... END $$` cuando el resultado se logra declarativamente (más fácil de auditar y revertir). Excepción: descubrimiento dinámico de objetos (FKs/columnas/constraints) — documentar el motivo en `Objeto:`.
|
|
93
|
+
- **Queries parametrizadas** siempre (nunca concatenar strings) — en cualquier SQL que termine en código de app.
|
|
94
|
+
- Nunca crear `fn_*`/`sp_*` para reusar lógica exclusiva de un script; usar CTE o inline.
|
|
95
|
+
- **Separadores entre secciones** (solo si hay 2+ secciones):
|
|
96
|
+
```sql
|
|
97
|
+
-- ----------------------------------------------------------------------------
|
|
98
|
+
-- N. Descripción corta de qué hace este bloque.
|
|
99
|
+
-- ----------------------------------------------------------------------------
|
|
100
|
+
```
|
|
101
|
+
Cajas dobles (`====`) solo para el header.
|
|
102
|
+
|
|
103
|
+
### Proceso de mantenimiento del `SCRIPTS.sql`
|
|
104
|
+
|
|
105
|
+
1. **Detectar la categoría** del cambio (tabla de markers).
|
|
106
|
+
2. **Verificar idempotencia** del statement.
|
|
107
|
+
3. **Append** con par de markers (`@category` + `@stmt`).
|
|
108
|
+
4. **Style check** — header canónico, CTEs sobre DO/LOOP, schema explícito.
|
|
109
|
+
5. **No** renumerar ni mover (solo hay un `SCRIPTS.sql`).
|
|
110
|
+
6. **No** generar `.rollback.sql` durante exec.
|
|
111
|
+
|
|
112
|
+
### Rollback (lo genera `export-scripts`, no este paso)
|
|
113
|
+
|
|
114
|
+
`export-scripts` lee los forwards ya consolidados y genera **un único** `00-ROLLBACK.sql` al root del bundle, en orden inverso. Conocer las estrategias para escribir forwards reversibles:
|
|
115
|
+
|
|
116
|
+
| Forward | Rollback |
|
|
117
|
+
|---|---|
|
|
118
|
+
| `CREATE TABLE IF NOT EXISTS tb_x` | `DROP TABLE IF EXISTS tb_x;` |
|
|
119
|
+
| `ALTER TABLE tb_x ADD COLUMN col` | `ALTER TABLE tb_x DROP COLUMN IF EXISTS col;` |
|
|
120
|
+
| `CREATE INDEX idx_...` | `DROP INDEX IF EXISTS idx_...;` |
|
|
121
|
+
| `CREATE SEQUENCE seq_...` | `DROP SEQUENCE IF EXISTS seq_...;` |
|
|
122
|
+
| `CREATE OR REPLACE FUNCTION fn_x(...)` | `DROP FUNCTION IF EXISTS fn_x(<firma>);` |
|
|
123
|
+
| `UPDATE/DELETE` con backup en `esq_audit.tb_bkp_*` | `UPDATE … FROM esq_audit.tb_bkp_…` |
|
|
124
|
+
| `INSERT INTO tb_x VALUES (...)` | `DELETE FROM tb_x WHERE <clave natural / rango>;` (nunca DELETE sin WHERE) |
|
|
125
|
+
|
|
126
|
+
**Irreversibles → bloque "Fase 5" manual** (fuera de la transacción, una línea por caso): `TRUNCATE`, `DROP COLUMN`/`DROP TABLE` sin backup, `ALTER COLUMN TYPE` con pérdida, `DROP ... CASCADE`, `DELETE/UPDATE` sin respaldo en `esq_audit`. Para que un cambio destructivo sea reversible, escribir el backup en el mismo forward (`esq_audit.tb_bkp_<tabla>_sNNN`).
|
|
127
|
+
|
|
128
|
+
## Output
|
|
129
|
+
|
|
130
|
+
- Durante loops: sentencias appendeadas a `.workflow/sessions/<folder>/SCRIPTS.sql` (artefacto de sesión, no `docs/`).
|
|
131
|
+
- Vía `export-scripts`: bundle `docs/scripts/NNN-export-scripts-YYYY-MM-DD/` — `00-ROLLBACK.sql` + `01-<CATEGORIA>.sql` … (numeración continua, sin gaps por categoría vacía) + `README.md`. Orden canónico de categorías: `DDL-TABLES → DDL-FUNCTIONS → DML → INSERTS`.
|
|
132
|
+
|
|
133
|
+
Nunca escribe a `docs/` desde un loop (invariante 1: solo `export-*` exporta). Nunca ejecuta nada contra una BD (invariante 4).
|
|
134
|
+
|
|
135
|
+
## Source
|
|
136
|
+
|
|
137
|
+
Reciclada de `standards/sql-script-organizer/` (staging `SCRIPTS.sql`, markers, 4 categorías, estilo) + `standards/sql-rollback-generator/` (derivación de rollback, irreversibles, Fase 5) + reglas de estilo de `standards/coding-standards/references/database-conventions.md`. Se moderniza al modelo nuevo: el bundle lo arma `export-scripts`, no la skill; el "release/graduate" viejo se reemplaza por `export-scripts`.
|