@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,102 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: quick-loop
|
|
3
|
+
description: >-
|
|
4
|
+
El atajo liviano de agent-workflow: resuelve una tarea acotada (un fix, un
|
|
5
|
+
ajuste pequeño) directamente desde el prompt del usuario, editando código con
|
|
6
|
+
ceremonia mínima. Heir del chasis spec-refine-loop (motor gap-driven mínimo,
|
|
7
|
+
research on-demand con regla BD read-only, AskUserQuestion con ≤3 tabs de
|
|
8
|
+
contenido + 1 tab flow Compactar/Cerrar siempre, compact/resume con Cerrar que
|
|
9
|
+
persiste CHECKPOINT + BACKLOG) y de plan-exec-loop (git seguro: rama esperada
|
|
10
|
+
antes de editar + commit propuesto, nunca push/--amend/--no-verify; la IA
|
|
11
|
+
nunca ejecuta DML, migraciones a SCRIPTS.sql; sin auto-export). Sus deltas: sin
|
|
12
|
+
fases ni plan-doc (el prompt ES la tarea), una sola session ligera
|
|
13
|
+
(<slug>-quick), un solo commit; y escalación con handoff si la tarea crece
|
|
14
|
+
(propone subir a SPEC/PLAN dejando el código a medias como contexto). NO toca
|
|
15
|
+
docs/. Lo arranca /w:quick y es reanudable. Invocar para cambios pequeños y
|
|
16
|
+
directos que no ameritan spec ni plan formal.
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# quick-loop
|
|
20
|
+
|
|
21
|
+
> **Heir** del chasis [`spec-refine-loop`](../spec-refine-loop/SKILL.md) + las políticas de ejecución de [`plan-exec-loop`](../plan-exec-loop/SKILL.md). Aquí **solo** los deltas de QUICK.
|
|
22
|
+
|
|
23
|
+
## Flow
|
|
24
|
+
QUICK
|
|
25
|
+
|
|
26
|
+
## Layer
|
|
27
|
+
2 — la IA lo corre entero (loop mínimo).
|
|
28
|
+
|
|
29
|
+
## Started by
|
|
30
|
+
`/w:quick` — **reanudable** (mismo mecanismo de resume del chasis).
|
|
31
|
+
|
|
32
|
+
## Reads
|
|
33
|
+
— (el prompt del usuario; no hay documento de entrada).
|
|
34
|
+
|
|
35
|
+
## Writes
|
|
36
|
+
- Edita código en las fuentes (cambio mínimo).
|
|
37
|
+
- Artefactos de la session en `.workflow/sessions/`.
|
|
38
|
+
- **NO toca `docs/`** (sin doc, sin auto-export).
|
|
39
|
+
|
|
40
|
+
## Internal session
|
|
41
|
+
|
|
42
|
+
- **SIEMPRE** crea una session ligera `<slug>-quick` (Type = `quick`, ≈ `exec`): `SESSION` · `DECISION` · `SCRIPTS.sql` · `CHECKPOINT` (+ `BACKLOG` al cerrar). Una sola session (no exec-por-fase).
|
|
43
|
+
|
|
44
|
+
## Inherits
|
|
45
|
+
|
|
46
|
+
- del **chasis** [`spec-refine-loop`](../spec-refine-loop/SKILL.md): gap-driven (mínimo), `AskUserQuestion` ≤3 + `flow` (`Compactar`/`Cerrar`), `research` on-demand + regla BD read-only (pregunta MCP si >1 sin default → `SCRIPTS.sql` → ejecuta read-only), compact/resume, `Cerrar` persiste `CHECKPOINT`+`BACKLOG`.
|
|
47
|
+
- de [`plan-exec-loop`](../plan-exec-loop/SKILL.md): **git** (rama segura antes de editar + commit propuesto; nunca `push`/`--amend`/`--no-verify`), **BD** (la IA nunca ejecuta DML; migraciones → `SCRIPTS.sql` de la session), **sin auto-export** (no toca otras carpetas `docs/`).
|
|
48
|
+
|
|
49
|
+
## Composes
|
|
50
|
+
|
|
51
|
+
`git` · `coding-standards` · `testing` (validación puntual) · `sql` (regla BD) · `writing` · `research`. Resueltas por `.workflow/skills.toml`.
|
|
52
|
+
|
|
53
|
+
## Delta QUICK — minimal ceremony
|
|
54
|
+
|
|
55
|
+
- **Sin fases, sin plan-doc**: el prompt **es** la tarea (una sola unidad). No hay roadmap.
|
|
56
|
+
- **Una sola session** (no exec-por-fase). **Un solo commit** propuesto al final.
|
|
57
|
+
- **Escalación + handoff**: si la tarea crece (muchos archivos / ≥2 fuentes / necesita arquitectura) → propone subir a **SPEC/PLAN**. Si el usuario acepta:
|
|
58
|
+
- el **código ya editado queda** en el working tree (no se revierte) **y se registra** en `CHECKPOINT` + `BACKLOG` ("cambios sin commitear en `<fuente>` — código a medias; decidir commit/descartar al retomar") — reusando **ambas** mitades del patrón "commit rechazado" de plan-exec (no revertir **y** registrar lo sin commitear). Crítico en la rama **SPEC**, que no retoma el working tree;
|
|
59
|
+
- la session quick va a `finalize`, persistiendo `CHECKPOINT` + `BACKLOG` con un **puntero** al spec/plan sembrado (Followups: "escalado a `docs/specs/NNN` o `docs/plans/PPP` — retomar ahí");
|
|
60
|
+
- los artefactos (`DECISION`, `SCRIPTS.sql`) **quedan en la session quick** como contexto referenciable por la nueva session (no se migran);
|
|
61
|
+
- **asimetría**: escalar a **PLAN** puede **absorber** el avance (plan-exec retoma el working tree existente); escalar a **SPEC** **reinicia** el ciclo de diseño y trata el código a medias como **contexto/referencia**, no como trabajo ya ingerido.
|
|
62
|
+
|
|
63
|
+
## Sequence
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
quick-loop(prompt):
|
|
67
|
+
s = create_or_resume(<slug>-quick) # siempre session ligera
|
|
68
|
+
trabajar la tarea (loop mínimo):
|
|
69
|
+
verificar rama esperada por fuente (branch-check); si no → pausar + resolver
|
|
70
|
+
editar código (cambio mínimo)
|
|
71
|
+
si consulta BD read-only → SCRIPTS.sql + ejecutar read-only
|
|
72
|
+
si cambio BD (DDL/DML) → SCRIPTS.sql (artefacto session, NO ejecutar)
|
|
73
|
+
si decisión no obvia → DECISION
|
|
74
|
+
si duda/gap → research session ó AskUserQuestion # chasis
|
|
75
|
+
si la tarea CRECE → proponer escalar a SPEC/PLAN
|
|
76
|
+
si acepta → handoff (código queda; BACKLOG→spec/plan sembrado) → goto finalize
|
|
77
|
+
validación puntual (test si aplica)
|
|
78
|
+
proponer commit (aprobar antes) # nunca push/amend/--no-verify
|
|
79
|
+
AskUserQuestion(contenido: [Cerrar tarea, Preguntar algo más], flow: [Compactar, Cerrar])
|
|
80
|
+
finalize: CHECKPOINT + BACKLOG (si queda algo) + cerrar session + reportar
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
```mermaid
|
|
84
|
+
flowchart TD
|
|
85
|
+
S["create_or_resume session <slug>-quick"] --> G["branch-check por fuente"]
|
|
86
|
+
G -->|ok| DO["editar código · BD→SCRIPTS.sql · DECISION<br/>(duda→research/AskUserQuestion)"]
|
|
87
|
+
G -->|rama ≠| PA["pausar + resolver"]
|
|
88
|
+
PA --> G
|
|
89
|
+
DO --> GROW{"¿la tarea creció?"}
|
|
90
|
+
GROW -->|sí| ESC["escalar a SPEC/PLAN<br/>código queda · BACKLOG→spec/plan sembrado"]
|
|
91
|
+
ESC --> FIN
|
|
92
|
+
GROW -->|no| V["validación puntual"]
|
|
93
|
+
V --> CM["proponer commit (aprobar)"]
|
|
94
|
+
CM --> Q["AskUserQuestion[Cerrar · Preguntar más]<br/>flow[Compactar · Cerrar]"]
|
|
95
|
+
Q --> FIN["finalize: CHECKPOINT + BACKLOG + cerrar"]
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Convergence / exit
|
|
99
|
+
|
|
100
|
+
- Tarea hecha + commit (o aprobado saltarlo) → `Cerrar`.
|
|
101
|
+
- `Cerrar`/`Compactar` (tab flow) → persiste `CHECKPOINT` + `BACKLOG` (reanudable).
|
|
102
|
+
- **Sin export**: nada va a `docs/`. Si algo amerita preservarse → se promueve aparte vía `export-*`, o se escala a SPEC/PLAN.
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: spec-refine-loop
|
|
3
|
+
description: >-
|
|
4
|
+
El CHASIS de los loops de agent-workflow. Refina un spec borrador
|
|
5
|
+
(docs/specs/NNN-spec.md) hasta un spec refinado sin ambigüedad
|
|
6
|
+
(docs/specs/NNN-spec-refined.md) mediante un motor gap-driven convergente:
|
|
7
|
+
detecta huecos/ambigüedades, los resuelve preguntando al humano (lo que
|
|
8
|
+
depende de su intención) o investigando de forma autónoma vía sessions de
|
|
9
|
+
research (lo que se responde leyendo el repo/datos), integra y repite hasta
|
|
10
|
+
converger. Compone la capacidad ui-design (built-in ui-spec) cuando el
|
|
11
|
+
requerimiento involucra UI. Lo arranca el comando /w:spec-refine y es
|
|
12
|
+
reanudable (4 casos de resume). Usa AskUserQuestion con ≤3 tabs de contenido
|
|
13
|
+
+ 1 tab flow (Compactar/Cerrar) siempre presente; Cerrar persiste CHECKPOINT
|
|
14
|
+
+ BACKLOG. Es el patrón de referencia que heredan plan-new-loop,
|
|
15
|
+
plan-exec-loop y quick-loop. Invocar cuando haya que refinar/desambiguar una
|
|
16
|
+
especificación antes de planificar.
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# spec-refine-loop
|
|
20
|
+
|
|
21
|
+
> **El CHASIS.** Primer loop diseñado en detalle; patrón de referencia que heredan los demás loops (`plan-new-loop`, `plan-exec-loop`, `quick-loop`). Si editas el motor, edítalo aquí.
|
|
22
|
+
|
|
23
|
+
## Flow
|
|
24
|
+
SPEC
|
|
25
|
+
|
|
26
|
+
## Layer
|
|
27
|
+
2 — la IA lo corre entero (gap-driven). El usuario no conduce el ciclo; solo responde tabs de contenido y dirige el ciclo de vida por el tab `flow`.
|
|
28
|
+
|
|
29
|
+
## Started by
|
|
30
|
+
`/w:spec-refine` — **reanudable**. Detecta el estado previo y arranca según corresponda (ver *Compact / resume*, 4 casos).
|
|
31
|
+
|
|
32
|
+
## Reads
|
|
33
|
+
- `docs/specs/NNN-spec.md` (borrador), **o**
|
|
34
|
+
- `docs/specs/NNN-spec-refined.md` si **ya existe** un refinado previo → se re-refina incremental sobre el refined (NO sobre el borrador stale).
|
|
35
|
+
|
|
36
|
+
## Writes
|
|
37
|
+
`docs/specs/NNN-spec-refined.md` (cuando el usuario elige `Guardar especificación refinada`). Si el archivo **ya existe**, **sobrescribe con confirmación** del usuario.
|
|
38
|
+
|
|
39
|
+
> **Invariante de boundary:** este loop escribe **solo** en `docs/specs`. Nunca gradúa/exporta otros artefactos a `docs/` — eso es trabajo de `export-*`, aparte.
|
|
40
|
+
|
|
41
|
+
## Internal sessions (managed)
|
|
42
|
+
|
|
43
|
+
El loop crea y maneja sus sessions en `.workflow/sessions/`. El usuario nunca las crea.
|
|
44
|
+
|
|
45
|
+
| Session | When | Artifacts | Role |
|
|
46
|
+
|---|---|---|---|
|
|
47
|
+
| **refine session** `<spec>-spec-refine/` | al arrancar el loop (o se reanuda) | `SESSION.md` · `CHECKPOINT.md` (· `BACKLOG.md` al cerrar) | Dueña del run. Guarda el avance al `Compactar` y al `Cerrar`; habilita el resume. Type = `refine`. |
|
|
48
|
+
| **research session** `<run>-research-*/` | on-demand, por cada gap factual | `SESSION.md` · `ANALYSIS-FILE.md` → `CONCLUSIONS.md` (+ `SCRIPTS.sql` si consulta BD) | Investiga, concluye, **cierra y reporta**. Puede cerrar **inconclusa**. Type = `research`; on-demand, **no reanudable** (run-and-close, sin `CHECKPOINT`/`BACKLOG` propios). |
|
|
49
|
+
|
|
50
|
+
> El spec **nunca** entra en una session; vive en `docs/specs/`.
|
|
51
|
+
>
|
|
52
|
+
> `<run>` = id de la session dueña del loop padre, que prefija sus sessions hijas: `<spec>-spec-refine`, `<plan>-plan-new`, `<plan>-plan-exec`, `<slug>-quick`. Así el patrón de naming es exacto en cualquier flujo que herede este chasis.
|
|
53
|
+
|
|
54
|
+
**CLI** (asunción de naming; los subcomandos se implementan en paralelo — no bloquear):
|
|
55
|
+
- `aw session-create --type refine --name <spec>-spec-refine` / `aw session-resume --code <…>` (detecta `CHECKPOINT`).
|
|
56
|
+
- `aw session-create --type research --name <run>-research-<gap>` para cada gap factual.
|
|
57
|
+
- `aw checkpoint-write` / `aw checkpoint-read` para el resume.
|
|
58
|
+
- `aw session-close` al cerrar (con razón); `aw session-artifacts` para inspeccionar.
|
|
59
|
+
|
|
60
|
+
## Composes
|
|
61
|
+
|
|
62
|
+
Cuando el requerimiento involucra **UI**, compone la capacidad **`ui-design`** (default built-in `ui-spec`; rebindeable vía `.workflow/skills.toml`): autora el UI spec nativamente (esquema `Screen`, vocabulario, formato). El loop aporta la iteración/Q&A que el viejo servicio no tenía (design-system, tema, variantes, desambiguación) y lo integra como sección `## UI spec` del spec.
|
|
63
|
+
|
|
64
|
+
Otras capacidades transversales que el chasis usa siempre: `research` (research on-demand), `sql` (regla BD en research), `writing` (redacción del refined). Todas se resuelven por config; `off` → el loop sigue sin la capacidad y, si era necesaria, lo dice o pregunta.
|
|
65
|
+
|
|
66
|
+
## Deliverable schema (`NNN-spec-refined.md`)
|
|
67
|
+
|
|
68
|
+
Más rico que el borrador: mismas secciones **completadas** + dos nuevas (`Refinement decisions`, `Q&A traceability`).
|
|
69
|
+
|
|
70
|
+
```markdown
|
|
71
|
+
# Spec NNN (refined) — <slug>
|
|
72
|
+
|
|
73
|
+
> Derivado de `NNN-spec.md` · refinado por spec-refine-loop
|
|
74
|
+
|
|
75
|
+
## Requirement (afinado, sin ambigüedad)
|
|
76
|
+
## Context (completo)
|
|
77
|
+
## Scope (In / Out claros)
|
|
78
|
+
## Acceptance criteria (testables, - [ ])
|
|
79
|
+
## Assumptions (declarados)
|
|
80
|
+
|
|
81
|
+
## UI spec (opt. — si involucra UI; vía capacidad ui-design / skill ui-spec)
|
|
82
|
+
Screen (JSON) + render Markdown.
|
|
83
|
+
|
|
84
|
+
## Refinement decisions ← NEW
|
|
85
|
+
Qué se definió al refinar y por qué. Incluye lo resuelto vía research
|
|
86
|
+
(con referencia a la research session / CONCLUSIONS).
|
|
87
|
+
|
|
88
|
+
## Q&A traceability ← NEW
|
|
89
|
+
Cada duda preguntada al humano + la respuesta elegida.
|
|
90
|
+
|
|
91
|
+
## Open questions (idealmente "None"; lo que quede se difiere)
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Gap taxonomy (= weak sections of the schema)
|
|
95
|
+
|
|
96
|
+
`detect_gaps(work)` busca estas señales; cada una tiene un resolutor:
|
|
97
|
+
|
|
98
|
+
| Gap | Signal | Resolved by |
|
|
99
|
+
|---|---|---|
|
|
100
|
+
| Requirement vago | el qué/por qué ambiguo | **humano** |
|
|
101
|
+
| Context incompleto | sistemas/componentes sin identificar | **research** |
|
|
102
|
+
| Scope borroso | falta `Out`, o In/Out se solapan | **humano** |
|
|
103
|
+
| Criterios no testables | acceptance no verificable | **humano** (derivar + confirmar) |
|
|
104
|
+
| Open questions abiertas | dudas explícitas | según naturaleza |
|
|
105
|
+
| Supuestos ocultos | el spec asume cosas no dichas | **research** valida / **humano** confirma |
|
|
106
|
+
| Contradicción interna | secciones que se contradicen | **humano** |
|
|
107
|
+
|
|
108
|
+
## Ask-vs-research rule (el discriminador)
|
|
109
|
+
|
|
110
|
+
Para cada gap, una sola pregunta decide el resolutor:
|
|
111
|
+
|
|
112
|
+
> *"¿Puedo responder esto leyendo el repo/datos?"* → **research** (autónomo).
|
|
113
|
+
> *"¿Depende de lo que el usuario quiere?"* → **preguntar al humano** (AskUserQuestion).
|
|
114
|
+
|
|
115
|
+
## Research: autonomy, scope & failure
|
|
116
|
+
|
|
117
|
+
- **Autónomo**: la IA crea la research session, investiga y reporta **sin pedir permiso**. El humano se entera al integrarse (en `Refinement decisions`) y mantiene control vía el tab `flow`.
|
|
118
|
+
- **Alcance**: workspace + repos asociados (fuentes) + MCPs de BD.
|
|
119
|
+
- **Regla BD** (única excepción a la autonomía):
|
|
120
|
+
1. **Elección de MCP**: si el gap requiere BD y hay **>1 MCP candidato sin default configurado**, la IA pregunta cuál usar. Esa pregunta va por el **mismo `AskUserQuestion`** como un **tab de contenido** (cuenta dentro del límite ≤3 + `flow`), **antes** de ejecutar queries. Si hay un único MCP o un default, no pregunta.
|
|
121
|
+
2. Escribe **primero** las queries en `SCRIPTS.sql` de la research session.
|
|
122
|
+
3. Las ejecuta **read-only** vía MCP (respeta `sql-mutation-guard`: nunca DML/DDL).
|
|
123
|
+
- **Research inconclusa** (BD no disponible, evidencia insuficiente, gap factual irresoluble):
|
|
124
|
+
- La research session cierra con estado **`inconcluso`** y reporta el motivo (vía su `Success criteria` no cumplido).
|
|
125
|
+
- El loop **degrada** el gap: lo pasa a **pregunta-al-humano** (próximo batch → `Q&A traceability`) o, si tampoco aplica, lo **difiere** a `## Open questions` del refined.
|
|
126
|
+
- El gap se marca **"ya intentado vía research"** (`attempts[gap]++`, límite `MAX`) para que `detect_gaps` **no lo re-dispare en bucle** → garantiza convergencia.
|
|
127
|
+
|
|
128
|
+
## AskUserQuestion (design & batching)
|
|
129
|
+
|
|
130
|
+
- Límite del host: **máx 4 preguntas/llamada**. Como el tab `flow` va **siempre** → **≤3 tabs de contenido + 1 tab `flow`**.
|
|
131
|
+
- **tab `flow`** (ciclo de vida, siempre presente): `Compactar` | `Cerrar`. Responder solo los tabs de contenido (sin tocar `flow`) = seguir iterando.
|
|
132
|
+
- **Tabs de contenido** posibles:
|
|
133
|
+
- dudas-de-humano (gaps no factuales);
|
|
134
|
+
- elección de MCP (regla BD) — antes de ejecutar queries;
|
|
135
|
+
- en **convergencia**, acción: `Guardar especificación refinada` | `Preguntar algo más`.
|
|
136
|
+
- **Batching**: agrupar hasta 3 gaps de humano en una sola llamada. Si hay más de 3 pendientes, priorizar (los que desbloquean otros gaps primero) y diferir el resto a la próxima vuelta.
|
|
137
|
+
|
|
138
|
+
## Sequence
|
|
139
|
+
|
|
140
|
+
```
|
|
141
|
+
spec-refine-loop(spec):
|
|
142
|
+
input = exists(NNN-spec-refined.md) ? NNN-spec-refined.md : NNN-spec.md # (#2 resume)
|
|
143
|
+
refine_session = create_or_resume(<spec>-spec-refine) # detecta CHECKPOINT
|
|
144
|
+
work = read(input) (+ aplicar avance del checkpoint si reanuda)
|
|
145
|
+
attempts = {} # anti-relanzamiento por gap
|
|
146
|
+
repeat:
|
|
147
|
+
gaps = detect_gaps(work) menos los gaps "agotados"
|
|
148
|
+
if gaps == ∅: break
|
|
149
|
+
batch = top ≤3 gaps ; pending_human = []
|
|
150
|
+
para cada gap en batch:
|
|
151
|
+
si factual(gap) y attempts[gap] < MAX:
|
|
152
|
+
si requiere BD y >1 MCP sin default → encolar "elección MCP" en pending_human
|
|
153
|
+
rs = create_research_session(gap)
|
|
154
|
+
res = rs.run_and_close() # ANALYSIS-FILE → CONCLUSIONS (+SCRIPTS.sql)
|
|
155
|
+
si res.concluyente: work = integrate(work, res) # → Refinement decisions
|
|
156
|
+
si no: attempts[gap]++ ; si attempts[gap] >= MAX → pending_human.push(gap)
|
|
157
|
+
si no:
|
|
158
|
+
pending_human.push(gap)
|
|
159
|
+
si pending_human no vacío:
|
|
160
|
+
ans = AskUserQuestion(contenido: pending_human (≤3), flow: [Compactar, Cerrar])
|
|
161
|
+
switch(flow):
|
|
162
|
+
Compactar → write CHECKPOINT (refine_session) ; /compact ; continue
|
|
163
|
+
Cerrar → goto finalize
|
|
164
|
+
work = integrate(work, ans) # → Q&A traceability / Open questions
|
|
165
|
+
# convergió:
|
|
166
|
+
ans = AskUserQuestion(contenido: [Guardar refinada, Preguntar algo más],
|
|
167
|
+
flow: [Compactar, Cerrar])
|
|
168
|
+
Guardar → write_with_confirm(NNN-spec-refined.md) ; goto finalize # (#2)
|
|
169
|
+
Preguntar algo más → continue
|
|
170
|
+
flow Compactar/Cerrar → manejar igual
|
|
171
|
+
finalize:
|
|
172
|
+
write CHECKPOINT (refine_session) # (#5) persiste siempre
|
|
173
|
+
write/update BACKLOG (motivo de cierre + Open questions diferidas) # (#5)
|
|
174
|
+
cerrar research sessions abiertas ; cerrar refine_session ; reportar
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
```mermaid
|
|
178
|
+
flowchart TD
|
|
179
|
+
S["input = refined si existe, si no borrador<br/>create_or_resume refine session"] --> D{"¿gaps<br/>(no agotados)?"}
|
|
180
|
+
D -->|no| C["AskUserQuestion<br/>contenido[Guardar refinada · Preguntar más]<br/>flow[Compactar · Cerrar]"]
|
|
181
|
+
D -->|sí| B["tomar ≤3 gaps"]
|
|
182
|
+
B --> F{"¿factual y<br/>attempts<MAX?"}
|
|
183
|
+
F -->|sí| RS["research session<br/>ANALYSIS-FILE → CONCLUSIONS (+SCRIPTS.sql)"]
|
|
184
|
+
RS --> CC{"¿concluyente?"}
|
|
185
|
+
CC -->|sí| I1["integrar → Refinement decisions"]
|
|
186
|
+
CC -->|no| DEG["attempts++ ; degradar a humano / Open questions"]
|
|
187
|
+
F -->|no| Q["AskUserQuestion<br/>contenido[dudas + elección MCP ≤3]<br/>flow[Compactar · Cerrar]"]
|
|
188
|
+
Q --> I2["integrar → Q&A traceability"]
|
|
189
|
+
I1 --> D
|
|
190
|
+
DEG --> D
|
|
191
|
+
I2 --> D
|
|
192
|
+
C -->|Guardar| W["write_with_confirm<br/>NNN-spec-refined.md"]
|
|
193
|
+
C -->|Preguntar más| D
|
|
194
|
+
W --> FIN["finalize: CHECKPOINT + BACKLOG<br/>+ cerrar sessions + reportar"]
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
## Compact / resume
|
|
198
|
+
|
|
199
|
+
Cuatro casos al ejecutar `/w:spec-refine` sobre un spec:
|
|
200
|
+
|
|
201
|
+
1. **En curso** (existe `CHECKPOINT.md` en la refine session) → reanuda desde el avance (gaps resueltos, Q&A, `attempts`, research sessions abiertas).
|
|
202
|
+
2. **Sin avance** (no hay CHECKPOINT ni refined) → arranca desde cero leyendo `NNN-spec.md`.
|
|
203
|
+
3. **Ya completado** (existe `NNN-spec-refined.md`, sin CHECKPOINT) → re-refinamiento incremental: input = el **refined** (no el borrador); al `Guardar`, sobrescribe con confirmación.
|
|
204
|
+
4. **`Compactar`** (tab flow) → escribe `CHECKPOINT.md` en la refine session (spec en progreso, gaps restantes, Q&A, `attempts`, research sessions abiertas) → dispara `/compact` del host → reanuda leyendo el checkpoint.
|
|
205
|
+
|
|
206
|
+
## Convergence / exit
|
|
207
|
+
|
|
208
|
+
- **Sin gaps materiales** → ofrece `Guardar especificación refinada`.
|
|
209
|
+
- `Guardar` → `write_with_confirm(NNN-spec-refined.md)` y `finalize`.
|
|
210
|
+
- `Cerrar` (tab flow, en cualquier momento) → `finalize`. **`finalize` persiste siempre**: escribe `CHECKPOINT.md` (reanudable) **y** `BACKLOG.md` (motivo de cierre + `Open questions` diferidas), cierra sessions y reporta. Así sobrevive el avance aunque no se haya `Compactar` antes.
|
|
211
|
+
|
|
212
|
+
## Integration (dónde aterriza cada resolución)
|
|
213
|
+
|
|
214
|
+
- Resuelto vía **research** → `## Refinement decisions` del refined (+ ref a la research session / `CONCLUSIONS`).
|
|
215
|
+
- Resuelto vía **humano** → `## Q&A traceability` del refined.
|
|
216
|
+
- **Research inconclusa o sin resolver** → `## Open questions` del refined (diferido) + `BACKLOG.md` de la refine session al cerrar.
|
|
217
|
+
|
|
218
|
+
## Heredan este chasis
|
|
219
|
+
|
|
220
|
+
- `plan-new-loop` — mismo motor; deltas: plan rico + gap taxonomy de plan.
|
|
221
|
+
- `plan-exec-loop` — mismo motor; deltas: ejecución real (código/BD/git), session por fase, sin auto-export.
|
|
222
|
+
- `quick-loop` — mismo motor (mínimo); hereda además git/BD/no-export de `plan-exec-loop`.
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
# roles/ — Capability role catalog
|
|
2
|
+
|
|
3
|
+
> Built-in default implementations of the **capability roles** that loops and exports compose.
|
|
4
|
+
> A role is a slot in the system; a skill is one concrete implementation of that slot.
|
|
5
|
+
> Changing implementation = changing one line in `skills.toml`.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Capability catalog
|
|
10
|
+
|
|
11
|
+
All 10 roles, their built-in defaults, their tier, and which loops/exports compose them:
|
|
12
|
+
|
|
13
|
+
| Role | Default built-in | Tier | Composed by |
|
|
14
|
+
|---|---|---|---|
|
|
15
|
+
| `ui-design` | [`ui-spec`](../ui-spec/SKILL.md) | must | `spec-refine-loop` (when requirement involves UI) |
|
|
16
|
+
| `sql` | `sql` | must | research sessions · `plan-exec-loop` · `quick-loop` · `export-scripts` |
|
|
17
|
+
| `git` | `git` | must | `plan-exec-loop` · `quick-loop` |
|
|
18
|
+
| `coding-standards` | `coding-standards` | must | `plan-exec-loop` · `quick-loop` |
|
|
19
|
+
| `writing` | `writing` | must | all loops · `export-manuals` · `export-reports` |
|
|
20
|
+
| `research` | [`research`](research/SKILL.md) | should | all loops (on-demand investigation) |
|
|
21
|
+
| `testing` | [`testing`](testing/SKILL.md) | should | `plan-exec-loop` · `quick-loop` |
|
|
22
|
+
| `tools` | [`tools`](tools/SKILL.md) | should | `plan-exec-loop` |
|
|
23
|
+
| `diagrams` | [`diagrams`](diagrams/SKILL.md) | should | `export-diagrams` |
|
|
24
|
+
| `overview` | `workflow` | should | any loop (orientation about the workflow itself) |
|
|
25
|
+
|
|
26
|
+
**Tiers:**
|
|
27
|
+
- `must` — core to almost every session; built-in always active unless explicitly `off`.
|
|
28
|
+
- `should` — loaded on-demand; active by default but lower priority to override.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Binding cascade
|
|
33
|
+
|
|
34
|
+
The CLI resolves which skill fulfills a role at compose-time using a 3-level cascade:
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
built-in default
|
|
38
|
+
↓ (overridden by, if present)
|
|
39
|
+
~/.workflow/skills.toml (global — applies to all workspaces on this machine)
|
|
40
|
+
↓ (overridden by, if present)
|
|
41
|
+
.workflow/skills.toml (workspace — applies only to this workspace)
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**Resolution rules:**
|
|
45
|
+
|
|
46
|
+
1. **Role with a binding** (workspace, or global if not workspace) → use that skill name.
|
|
47
|
+
- If the name exists under `roles/<name>/` → it is a built-in skill.
|
|
48
|
+
- If not → it is a third-party skill installed by name on the host (e.g. via skills.sh).
|
|
49
|
+
2. **Role with no binding at any level** → use the built-in default (table above). No config needed for the common case.
|
|
50
|
+
3. **`off`** → capability disabled. The loop continues without it; if the task required it, the loop reports why it cannot proceed or asks the human.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## skills.toml format
|
|
55
|
+
|
|
56
|
+
```toml
|
|
57
|
+
[skills]
|
|
58
|
+
# Built-in defaults (no entry needed — listed here for reference only)
|
|
59
|
+
# ui-design = "ui-spec"
|
|
60
|
+
# sql = "sql"
|
|
61
|
+
# git = "git"
|
|
62
|
+
# coding-standards = "coding-standards"
|
|
63
|
+
# writing = "writing"
|
|
64
|
+
# research = "research"
|
|
65
|
+
# testing = "testing"
|
|
66
|
+
# tools = "tools"
|
|
67
|
+
# diagrams = "diagrams"
|
|
68
|
+
# overview = "workflow"
|
|
69
|
+
|
|
70
|
+
# Override examples:
|
|
71
|
+
testing = "off" # disable testing capability
|
|
72
|
+
ui-design = "acme/figma-spec" # third-party skill installed via skills.sh
|
|
73
|
+
diagrams = "mermaid-only" # custom built installed locally
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Override: point to a third-party skill
|
|
77
|
+
|
|
78
|
+
```toml
|
|
79
|
+
[skills]
|
|
80
|
+
ui-design = "acme/figma-spec"
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
`acme/figma-spec` must be installed on the host (e.g. via `skills.sh install acme/figma-spec`). The CLI resolves the skill by name; if not found, it falls back to the built-in default and warns.
|
|
84
|
+
|
|
85
|
+
### Override: disable a capability
|
|
86
|
+
|
|
87
|
+
```toml
|
|
88
|
+
[skills]
|
|
89
|
+
testing = "off"
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
The loop that composes `testing` will skip it. If the task required testing and the role is `off`, the loop should inform the human and ask how to proceed.
|
|
93
|
+
|
|
94
|
+
### Override: use a different built-in
|
|
95
|
+
|
|
96
|
+
```toml
|
|
97
|
+
[skills]
|
|
98
|
+
diagrams = "diagrams-lite" # if a "diagrams-lite" built-in were registered
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Only meaningful if multiple built-ins for the same role are registered. Currently each role has exactly one built-in default.
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Inspecting resolved bindings
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
aw skills
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Lists the resolved binding for every role in the current workspace, showing which level of the cascade provided it (built-in / global / workspace) and whether it is `off`.
|
|
112
|
+
|
|
113
|
+
Example output:
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
Role Resolved skill Source
|
|
117
|
+
----------------- ------------------- -----------
|
|
118
|
+
ui-design ui-spec built-in
|
|
119
|
+
sql sql built-in
|
|
120
|
+
git git built-in
|
|
121
|
+
coding-standards coding-standards built-in
|
|
122
|
+
writing writing built-in
|
|
123
|
+
research research built-in
|
|
124
|
+
testing off workspace (.workflow/skills.toml)
|
|
125
|
+
tools tools built-in
|
|
126
|
+
diagrams mermaid-only global (~/.workflow/skills.toml)
|
|
127
|
+
overview workflow built-in
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Adding a new role
|
|
133
|
+
|
|
134
|
+
1. Define the role in this README (name, default built-in, tier, composed by).
|
|
135
|
+
2. Author the built-in skill under `roles/<name>/SKILL.md` following the schema.
|
|
136
|
+
3. Register it in the CLI resolver so `aw skills` lists it.
|
|
137
|
+
4. Document the binding key in the `skills.toml` reference above.
|
|
138
|
+
|
|
139
|
+
## Authoring a built-in skill
|
|
140
|
+
|
|
141
|
+
Each `SKILL.md` follows this schema:
|
|
142
|
+
|
|
143
|
+
| Section | Content |
|
|
144
|
+
|---|---|
|
|
145
|
+
| Frontmatter `name:` | kebab-case; MUST equal the binding name (`research`, `testing`, etc.) |
|
|
146
|
+
| Frontmatter `description:` | rich description: what + when; drives automatic selection |
|
|
147
|
+
| `## Role` | which capability role this implements (its skills.toml slot) |
|
|
148
|
+
| `## Purpose` | what it does |
|
|
149
|
+
| `## Composed by` | which loops/exports use it and when |
|
|
150
|
+
| `## Knowledge` | reusable know-how: vocabulary, rules, schema, examples |
|
|
151
|
+
| `## Output` | what it produces and where (if any) |
|
|
152
|
+
| `## Source` | recycled from (if applicable) |
|
|
153
|
+
|
|
154
|
+
See [`research/SKILL.md`](research/SKILL.md) as a reference implementation.
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: coding-standards
|
|
3
|
+
description: >-
|
|
4
|
+
Coding standards capability — built-in default for the `coding-standards` role.
|
|
5
|
+
Stack-agnostic principles (SOLID, fail-fast, descriptive names, small methods,
|
|
6
|
+
reuse over duplication) plus per-stack conventions (Java/Spring, Angular/TypeScript,
|
|
7
|
+
Node), security (no secrets in code or logs, parametrized SQL, DB read-only via MCP),
|
|
8
|
+
HTTP error handling (never silence errors), logging levels, and FE-BE integration
|
|
9
|
+
rules (unified sparse DTO, PATCH for edit, no hidden fallbacks). Use when a loop
|
|
10
|
+
implements, reviews or refactors code.
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# coding-standards — Coding standards capability
|
|
14
|
+
|
|
15
|
+
## Role
|
|
16
|
+
|
|
17
|
+
`coding-standards` — built-in default. Rebindable in `.workflow/skills.toml` (third-party skill or `off`).
|
|
18
|
+
|
|
19
|
+
## Purpose
|
|
20
|
+
|
|
21
|
+
Aportar los estándares de código que la IA aplica al **implementar, revisar o refactorizar**. Read-only por diseño: carga reglas, no edita ni ejecuta nada por sí misma — el loop consumidor materializa el código.
|
|
22
|
+
|
|
23
|
+
## Composed by
|
|
24
|
+
|
|
25
|
+
- **`plan-exec-loop`** — al implementar/refactorizar las tasks del plan.
|
|
26
|
+
- **`quick-loop`** — al implementar el atajo liviano.
|
|
27
|
+
|
|
28
|
+
## Knowledge
|
|
29
|
+
|
|
30
|
+
### Principios generales
|
|
31
|
+
|
|
32
|
+
- **SOLID** — Single Responsibility, Open/Closed, Liskov, Interface Segregation, Dependency Inversion.
|
|
33
|
+
- **Fail fast** — validar y retornar al inicio del método (early returns, evitar nesting).
|
|
34
|
+
- **Nombres descriptivos** — el código habla por sí mismo; comentarios solo para el "por qué".
|
|
35
|
+
- **Métodos pequeños** — una sola responsabilidad por función.
|
|
36
|
+
- **Composición sobre herencia**.
|
|
37
|
+
- **Reutilización antes que duplicación (DRY)** — antes de crear componente/función/clase, revisar si ya existe en `shared/` (frontend) o `common/`/`util/` (backend). Si un patrón aparece 2-3 veces, proponer extracción.
|
|
38
|
+
|
|
39
|
+
### Estándares por stack
|
|
40
|
+
|
|
41
|
+
- **Java / Spring Boot**: Constructor Injection (sin Field Injection), `@Transactional(readOnly=true)` para lecturas, Java records para DTOs Request/Response, Jakarta Validation para inputs.
|
|
42
|
+
- **Angular / TypeScript**: constructor injection, `async` pipe en templates, evitar `any`, FormBuilder reactivo sobre `ngModel` directo, arquitectura `@data`/`@presentation`, normalización de tipos.
|
|
43
|
+
- **Node / otros**: mismos principios generales; aplicar las convenciones idiomáticas del proyecto detectado.
|
|
44
|
+
|
|
45
|
+
### Integración FE-BE (cuando el cambio cruza frontend y backend)
|
|
46
|
+
|
|
47
|
+
- **R1 — Sparse DTO unificado**: mismo DTO `<Feature>SaveRequest` para create + edit, todos los campos nullable. `null` = "no tocar".
|
|
48
|
+
- **R2 — PATCH para edit**: `@PatchMapping` en BE, `http.patch()` en FE. POST solo para create. PUT solo si replace total justificado.
|
|
49
|
+
- **R3 — FE envía solo cambios**: payload diff entre `formValue` y entidad original.
|
|
50
|
+
- **R4 — Sin fallbacks que oculten errores**: prohibido `catchError(() => of([]))` en FE; prohibido try/catch con fallback al método legacy en BE durante migraciones. Usar feature flags explícitas para rollout gradual.
|
|
51
|
+
- **R5 — Validación BE con Bean Validation + groups**: `@NotNull(groups = OnCreate.class)` para distinguir reglas POST vs PATCH cuando comparten DTO.
|
|
52
|
+
- **R6 — DB stub-first**: funciones/SP nuevas arrancan devolviendo mock (`RETURN '[]'::jsonb`); implementación real en una fase posterior.
|
|
53
|
+
|
|
54
|
+
### Seguridad
|
|
55
|
+
|
|
56
|
+
- **Nunca** exponer secrets, API keys ni credenciales en código.
|
|
57
|
+
- **Nunca** logear datos sensibles (contraseñas, tokens, datos personales).
|
|
58
|
+
- **Siempre** parametrizar queries SQL (nunca concatenar strings).
|
|
59
|
+
- **BD vía MCP es READONLY**. Modificaciones a BD solo como scripts SQL versionados (ver rol `sql`); las aplica el **usuario**, nunca la IA — ni por MCP, ni `Bash`, ni `psql`, ni driver. (Invariante 4.)
|
|
60
|
+
|
|
61
|
+
### Manejo de errores HTTP
|
|
62
|
+
|
|
63
|
+
- **Nunca** silenciar errores HTTP con `catchError(() => of([]))` ni equivalentes. Los errores del backend se propagan al usuario (toast/mensaje) para detectar regresiones en guardado/sincronización/creación. Para reintentos usar operadores explícitos (`retry`, `retryWhen`), no silenciar.
|
|
64
|
+
|
|
65
|
+
### Logging
|
|
66
|
+
|
|
67
|
+
- `ERROR` — fallos que requieren atención inmediata.
|
|
68
|
+
- `WARN` — situaciones inesperadas pero manejadas.
|
|
69
|
+
- `INFO` — eventos de negocio relevantes (inicio/fin de procesos).
|
|
70
|
+
- `DEBUG` — detalle técnico para diagnóstico.
|
|
71
|
+
|
|
72
|
+
### Convenciones de BD (nomenclatura)
|
|
73
|
+
|
|
74
|
+
Esquemas `esq_`, tablas `tb_`, sequences `seq_`, funciones `fn_`/procedimientos `sp_`, patrón maestra-detalle, auditoría en `esq_audit`. Para autoría de scripts SQL (estilo, header, categorías, rollback) usar el rol **`sql`**.
|
|
75
|
+
|
|
76
|
+
## Output
|
|
77
|
+
|
|
78
|
+
Ninguno propio. La skill aporta reglas; el código lo escribe el loop. Cuando el cambio toca BD, delega la autoría de scripts al rol `sql`. Nunca exporta a `docs/` (invariante 1).
|
|
79
|
+
|
|
80
|
+
## Source
|
|
81
|
+
|
|
82
|
+
Reciclada de `standards/coding-standards/` (SKILL.md + references Java/Spring, Angular/TypeScript, fe-be-integration, database-conventions, frontend-structure, project-structure). Los principios UX de mantenimientos CRUD (formularios, listados, modales) viven en el rol `ui-spec`/`ui-design`; la autoría de scripts SQL en el rol `sql`. Se descarta la dependencia de `profile.json` y de comandos CLI de la doctrina vieja.
|