@tacuchi/agent-workflow-cli 11.0.1 → 12.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +51 -95
- package/dist/application/artifacts-service.d.ts +3 -12
- package/dist/application/artifacts-service.d.ts.map +1 -1
- package/dist/application/artifacts-service.js +18 -19
- package/dist/application/artifacts-service.js.map +1 -1
- package/dist/application/branch-resolver.d.ts +16 -0
- package/dist/application/branch-resolver.d.ts.map +1 -0
- package/dist/application/branch-resolver.js +24 -0
- package/dist/application/branch-resolver.js.map +1 -0
- package/dist/application/check-branch-service.d.ts +0 -2
- package/dist/application/check-branch-service.d.ts.map +1 -1
- package/dist/application/check-branch-service.js +5 -40
- package/dist/application/check-branch-service.js.map +1 -1
- package/dist/application/checkpoint/markdown.d.ts.map +1 -1
- package/dist/application/checkpoint/markdown.js +1 -16
- package/dist/application/checkpoint/markdown.js.map +1 -1
- package/dist/application/checkpoint/state-reader.d.ts +1 -3
- package/dist/application/checkpoint/state-reader.d.ts.map +1 -1
- package/dist/application/checkpoint/state-reader.js +10 -31
- package/dist/application/checkpoint/state-reader.js.map +1 -1
- package/dist/application/checkpoint-service.d.ts +12 -14
- package/dist/application/checkpoint-service.d.ts.map +1 -1
- package/dist/application/checkpoint-service.js +36 -61
- package/dist/application/checkpoint-service.js.map +1 -1
- package/dist/application/checkpoint-write-service.d.ts +0 -2
- package/dist/application/checkpoint-write-service.d.ts.map +1 -1
- package/dist/application/checkpoint-write-service.js +5 -6
- package/dist/application/checkpoint-write-service.js.map +1 -1
- package/dist/application/history-update-service.js +3 -1
- package/dist/application/history-update-service.js.map +1 -1
- package/dist/application/hook-branch-check.d.ts.map +1 -1
- package/dist/application/hook-branch-check.js +5 -34
- package/dist/application/hook-branch-check.js.map +1 -1
- package/dist/application/hook-git-commit-advisor.d.ts.map +1 -1
- package/dist/application/hook-git-commit-advisor.js +18 -23
- package/dist/application/hook-git-commit-advisor.js.map +1 -1
- package/dist/application/markdown.d.ts.map +1 -1
- package/dist/application/markdown.js +0 -4
- package/dist/application/markdown.js.map +1 -1
- package/dist/application/parsers/project-block.d.ts +0 -8
- package/dist/application/parsers/project-block.d.ts.map +1 -1
- package/dist/application/parsers/project-block.js +13 -52
- package/dist/application/parsers/project-block.js.map +1 -1
- package/dist/application/paths-service.d.ts +7 -8
- package/dist/application/paths-service.d.ts.map +1 -1
- package/dist/application/paths-service.js +12 -8
- package/dist/application/paths-service.js.map +1 -1
- package/dist/application/project-md-upsert-service.d.ts +3 -11
- package/dist/application/project-md-upsert-service.d.ts.map +1 -1
- package/dist/application/project-md-upsert-service.js +6 -56
- package/dist/application/project-md-upsert-service.js.map +1 -1
- package/dist/application/project-tab-data.d.ts +14 -42
- package/dist/application/project-tab-data.d.ts.map +1 -1
- package/dist/application/project-tab-data.js +27 -113
- package/dist/application/project-tab-data.js.map +1 -1
- package/dist/application/release-data/artifacts.d.ts +0 -2
- package/dist/application/release-data/artifacts.d.ts.map +1 -1
- package/dist/application/release-data/artifacts.js +22 -12
- package/dist/application/release-data/artifacts.js.map +1 -1
- package/dist/application/release-data/sessions.d.ts +0 -2
- package/dist/application/release-data/sessions.d.ts.map +1 -1
- package/dist/application/release-data/sessions.js +36 -27
- package/dist/application/release-data/sessions.js.map +1 -1
- package/dist/application/release-data-service.d.ts +0 -3
- package/dist/application/release-data-service.d.ts.map +1 -1
- package/dist/application/release-data-service.js +3 -21
- package/dist/application/release-data-service.js.map +1 -1
- package/dist/application/render/history-row.d.ts +1 -9
- package/dist/application/render/history-row.d.ts.map +1 -1
- package/dist/application/render/history-row.js +3 -20
- package/dist/application/render/history-row.js.map +1 -1
- package/dist/application/render/project-block.d.ts +1 -3
- package/dist/application/render/project-block.d.ts.map +1 -1
- package/dist/application/render/project-block.js +4 -27
- package/dist/application/render/project-block.js.map +1 -1
- package/dist/application/self/doctor-self.d.ts.map +1 -1
- package/dist/application/self/doctor-self.js +15 -8
- package/dist/application/self/doctor-self.js.map +1 -1
- package/dist/application/self/install-hooks.d.ts +1 -1
- package/dist/application/self/install-hooks.d.ts.map +1 -1
- package/dist/application/self/install-hooks.js +3 -2
- package/dist/application/self/install-hooks.js.map +1 -1
- package/dist/application/self/install-skill.d.ts +9 -3
- package/dist/application/self/install-skill.d.ts.map +1 -1
- package/dist/application/self/install-skill.js +16 -16
- package/dist/application/self/install-skill.js.map +1 -1
- package/dist/application/self/uninstall-skill.js +14 -12
- package/dist/application/self/uninstall-skill.js.map +1 -1
- package/dist/application/self/uninstall.js +14 -12
- package/dist/application/self/uninstall.js.map +1 -1
- package/dist/application/session-artifacts.d.ts +7 -6
- package/dist/application/session-artifacts.d.ts.map +1 -1
- package/dist/application/session-artifacts.js +10 -15
- package/dist/application/session-artifacts.js.map +1 -1
- package/dist/application/session-close-service.d.ts +5 -22
- package/dist/application/session-close-service.d.ts.map +1 -1
- package/dist/application/session-close-service.js +20 -143
- package/dist/application/session-close-service.js.map +1 -1
- package/dist/application/session-create-service.d.ts +9 -29
- package/dist/application/session-create-service.d.ts.map +1 -1
- package/dist/application/session-create-service.js +44 -288
- package/dist/application/session-create-service.js.map +1 -1
- package/dist/application/session-resolver.d.ts +4 -25
- package/dist/application/session-resolver.d.ts.map +1 -1
- package/dist/application/session-resolver.js +33 -149
- package/dist/application/session-resolver.js.map +1 -1
- package/dist/application/session-resume-service.d.ts +3 -4
- package/dist/application/session-resume-service.d.ts.map +1 -1
- package/dist/application/session-resume-service.js +8 -26
- package/dist/application/session-resume-service.js.map +1 -1
- package/dist/application/sessions-service.d.ts +2 -3
- package/dist/application/sessions-service.d.ts.map +1 -1
- package/dist/application/sessions-service.js +9 -26
- package/dist/application/sessions-service.js.map +1 -1
- package/dist/application/skill-index-service.d.ts +0 -2
- package/dist/application/skill-index-service.d.ts.map +1 -1
- package/dist/application/skill-index-service.js +0 -1
- package/dist/application/skill-index-service.js.map +1 -1
- package/dist/application/skills-resolver-service.d.ts +22 -0
- package/dist/application/skills-resolver-service.d.ts.map +1 -0
- package/dist/application/skills-resolver-service.js +71 -0
- package/dist/application/skills-resolver-service.js.map +1 -0
- package/dist/application/sources-service.d.ts +0 -5
- package/dist/application/sources-service.d.ts.map +1 -1
- package/dist/application/sources-service.js +5 -44
- package/dist/application/sources-service.js.map +1 -1
- package/dist/application/templates/session.d.ts +24 -0
- package/dist/application/templates/session.d.ts.map +1 -0
- package/dist/application/templates/session.js +46 -0
- package/dist/application/templates/session.js.map +1 -0
- package/dist/application/upgrade-hub-mode-service.d.ts.map +1 -1
- package/dist/application/upgrade-hub-mode-service.js +0 -1
- package/dist/application/upgrade-hub-mode-service.js.map +1 -1
- package/dist/application/workspace-init-service.d.ts +60 -0
- package/dist/application/workspace-init-service.d.ts.map +1 -0
- package/dist/application/workspace-init-service.js +227 -0
- package/dist/application/workspace-init-service.js.map +1 -0
- package/dist/cli/commands/check-branch.d.ts.map +1 -1
- package/dist/cli/commands/check-branch.js +0 -3
- package/dist/cli/commands/check-branch.js.map +1 -1
- package/dist/cli/commands/plugin-doctor.d.ts.map +1 -1
- package/dist/cli/commands/plugin-doctor.js +0 -3
- package/dist/cli/commands/plugin-doctor.js.map +1 -1
- package/dist/cli/commands/project-md-upsert.d.ts.map +1 -1
- package/dist/cli/commands/project-md-upsert.js +5 -31
- package/dist/cli/commands/project-md-upsert.js.map +1 -1
- package/dist/cli/commands/session-close.d.ts.map +1 -1
- package/dist/cli/commands/session-close.js +1 -33
- package/dist/cli/commands/session-close.js.map +1 -1
- package/dist/cli/commands/session-create.d.ts.map +1 -1
- package/dist/cli/commands/session-create.js +5 -21
- package/dist/cli/commands/session-create.js.map +1 -1
- package/dist/cli/commands/session-resume.js +1 -1
- package/dist/cli/commands/session-resume.js.map +1 -1
- package/dist/cli/commands/set-working-branch.d.ts +3 -0
- package/dist/cli/commands/set-working-branch.d.ts.map +1 -0
- package/dist/cli/commands/set-working-branch.js +34 -0
- package/dist/cli/commands/set-working-branch.js.map +1 -0
- package/dist/cli/commands/skill-index.d.ts.map +1 -1
- package/dist/cli/commands/skill-index.js +0 -3
- package/dist/cli/commands/skill-index.js.map +1 -1
- package/dist/cli/commands/skills.d.ts +3 -0
- package/dist/cli/commands/skills.d.ts.map +1 -0
- package/dist/cli/commands/skills.js +10 -0
- package/dist/cli/commands/skills.js.map +1 -0
- package/dist/cli/commands/sources.d.ts.map +1 -1
- package/dist/cli/commands/sources.js +0 -3
- package/dist/cli/commands/sources.js.map +1 -1
- package/dist/cli/commands/workspace-init.d.ts +3 -0
- package/dist/cli/commands/workspace-init.d.ts.map +1 -0
- package/dist/cli/commands/workspace-init.js +69 -0
- package/dist/cli/commands/workspace-init.js.map +1 -0
- package/dist/cli/help-groups.d.ts.map +1 -1
- package/dist/cli/help-groups.js +8 -19
- package/dist/cli/help-groups.js.map +1 -1
- package/dist/cli/interactive-menu.d.ts +1 -1
- package/dist/cli/interactive-menu.d.ts.map +1 -1
- package/dist/cli/main.js +29 -37
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/parser.d.ts +0 -2
- package/dist/cli/parser.d.ts.map +1 -1
- package/dist/cli/parser.js +1 -13
- package/dist/cli/parser.js.map +1 -1
- package/dist/cli/tui/app.js +3 -38
- package/dist/cli/tui/app.js.map +1 -1
- package/dist/cli/tui/components/hub-init-alias.js +1 -1
- package/dist/cli/tui/components/hub-init-alias.js.map +1 -1
- package/dist/cli/tui/components/hub-init-form.d.ts.map +1 -1
- package/dist/cli/tui/components/hub-init-form.js +13 -12
- package/dist/cli/tui/components/hub-init-form.js.map +1 -1
- package/dist/cli/tui/components/workspace-init-alias.d.ts +5 -0
- package/dist/cli/tui/components/workspace-init-alias.d.ts.map +1 -0
- package/dist/cli/tui/components/workspace-init-alias.js +19 -0
- package/dist/cli/tui/components/workspace-init-alias.js.map +1 -0
- package/dist/cli/tui/components/workspace-init-form.d.ts +13 -0
- package/dist/cli/tui/components/workspace-init-form.d.ts.map +1 -0
- package/dist/cli/tui/components/workspace-init-form.js +87 -0
- package/dist/cli/tui/components/workspace-init-form.js.map +1 -0
- package/dist/cli/tui/data/activity.d.ts +1 -1
- package/dist/cli/tui/data/activity.d.ts.map +1 -1
- package/dist/cli/tui/data/activity.js +2 -2
- package/dist/cli/tui/data/activity.js.map +1 -1
- package/dist/cli/tui/data/workflow-content.d.ts.map +1 -1
- package/dist/cli/tui/data/workflow-content.js +67 -87
- package/dist/cli/tui/data/workflow-content.js.map +1 -1
- package/dist/cli/tui/tabs/project-tab.d.ts.map +1 -1
- package/dist/cli/tui/tabs/project-tab.js +23 -97
- package/dist/cli/tui/tabs/project-tab.js.map +1 -1
- package/dist/cli/tui/tabs/skills-tab.d.ts.map +1 -1
- package/dist/cli/tui/tabs/skills-tab.js +7 -7
- package/dist/cli/tui/tabs/skills-tab.js.map +1 -1
- package/dist/cli/tui/tabs/workflow-tab.d.ts +1 -3
- package/dist/cli/tui/tabs/workflow-tab.d.ts.map +1 -1
- package/dist/cli/tui/tabs/workflow-tab.js +2 -2
- package/dist/cli/tui/tabs/workflow-tab.js.map +1 -1
- package/dist/cli/types.d.ts +3 -0
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/domain/plugin.d.ts +2 -12
- package/dist/domain/plugin.d.ts.map +1 -1
- package/dist/domain/project.d.ts +0 -9
- package/dist/domain/project.d.ts.map +1 -1
- package/dist/domain/session.d.ts +7 -24
- package/dist/domain/session.d.ts.map +1 -1
- package/dist/domain/skills.d.ts +22 -0
- package/dist/domain/skills.d.ts.map +1 -0
- package/dist/domain/skills.js +37 -0
- package/dist/domain/skills.js.map +1 -0
- package/dist/domain/types.d.ts +6 -2
- package/dist/domain/types.d.ts.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/runtime/config-service.js +1 -1
- package/dist/runtime/config-service.js.map +1 -1
- package/dist/runtime/types.d.ts +0 -1
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime/types.js.map +1 -1
- package/package.json +12 -3
- package/skills/w/README.md +65 -0
- package/skills/w/SKILL.md +153 -0
- package/skills/w/artifacts/README.md +60 -0
- package/skills/w/artifacts/artifacts-core/BACKLOG.md +12 -0
- package/skills/w/artifacts/artifacts-core/CHECKPOINT.md +22 -0
- package/skills/w/artifacts/artifacts-core/SCRIPTS.sql +39 -0
- package/skills/w/artifacts/artifacts-core/SESSION.md +27 -0
- package/skills/w/artifacts/artifacts-core/TASKS.md +18 -0
- package/skills/w/artifacts/artifacts-dev/DECISION.md +11 -0
- package/skills/w/artifacts/artifacts-dev/TECHNICAL-NOTE.md +81 -0
- package/skills/w/artifacts/artifacts-research/ANALYSIS-FILE.md +48 -0
- package/skills/w/artifacts/artifacts-research/CONCLUSIONS.md +20 -0
- package/skills/w/commands/README.md +116 -0
- package/skills/w/commands/export-diagrams.md +35 -0
- package/skills/w/commands/export-manuals.md +35 -0
- package/skills/w/commands/export-reports.md +35 -0
- package/skills/w/commands/export-scripts.md +35 -0
- package/skills/w/commands/plan-exec.md +46 -0
- package/skills/w/commands/plan-new.md +44 -0
- package/skills/w/commands/quick.md +39 -0
- package/skills/w/commands/spec-new.md +63 -0
- package/skills/w/commands/spec-refine.md +41 -0
- package/skills/w/commands/workspace-init.md +39 -0
- package/skills/w/exports/README.md +88 -0
- package/skills/w/exports/export-diagrams/SKILL.md +125 -0
- package/skills/w/exports/export-manuals/SKILL.md +127 -0
- package/skills/w/exports/export-reports/SKILL.md +115 -0
- package/skills/w/exports/export-scripts/SKILL.md +135 -0
- package/skills/w/hooks/README.md +15 -0
- package/skills/{agent-workflow → w}/hooks/hooks.template.json +2 -2
- package/skills/w/loops/README.md +118 -0
- package/skills/w/loops/plan-exec-loop/SKILL.md +161 -0
- package/skills/w/loops/plan-new-loop/SKILL.md +97 -0
- package/skills/w/loops/quick-loop/SKILL.md +102 -0
- package/skills/w/loops/spec-refine-loop/SKILL.md +222 -0
- package/skills/w/roles/README.md +154 -0
- package/skills/w/roles/coding-standards/SKILL.md +82 -0
- package/skills/w/roles/diagrams/SKILL.md +248 -0
- package/skills/w/roles/git/SKILL.md +98 -0
- package/skills/w/roles/research/SKILL.md +181 -0
- package/skills/w/roles/sql/SKILL.md +137 -0
- package/skills/w/roles/testing/SKILL.md +180 -0
- package/skills/w/roles/tools/SKILL.md +148 -0
- package/skills/w/roles/ui-spec/SKILL.md +136 -0
- package/skills/w/roles/writing/SKILL.md +90 -0
- package/skills/agent-workflow/LICENSE +0 -661
- package/skills/agent-workflow/MANUAL-FUNCIONAL.md +0 -298
- package/skills/agent-workflow/MANUAL-TECNICO.md +0 -271
- package/skills/agent-workflow/README.md +0 -74
- package/skills/agent-workflow/SKILL.md +0 -112
- package/skills/agent-workflow/commands/README.md +0 -26
- package/skills/agent-workflow/commands/compact.md +0 -24
- package/skills/agent-workflow/commands/doctor.md +0 -100
- package/skills/agent-workflow/commands/export-arq.md +0 -77
- package/skills/agent-workflow/commands/export-conclusions.md +0 -78
- package/skills/agent-workflow/commands/export-plan.md +0 -74
- package/skills/agent-workflow/commands/export-qa-note.md +0 -30
- package/skills/agent-workflow/commands/export-report.md +0 -78
- package/skills/agent-workflow/commands/export-requirement.md +0 -30
- package/skills/agent-workflow/commands/export-scripts.md +0 -82
- package/skills/agent-workflow/commands/export-tech-manuals.md +0 -75
- package/skills/agent-workflow/commands/export-tech-note.md +0 -30
- package/skills/agent-workflow/commands/hub-init.md +0 -58
- package/skills/agent-workflow/commands/migrate.md +0 -56
- package/skills/agent-workflow/commands/patch.md +0 -49
- package/skills/agent-workflow/commands/project-init.md +0 -60
- package/skills/agent-workflow/commands/resume.md +0 -22
- package/skills/agent-workflow/commands/rules.md +0 -41
- package/skills/agent-workflow/commands/session.md +0 -35
- package/skills/agent-workflow/docs/TEST-PLAN.md +0 -163
- package/skills/agent-workflow/doctrine/README.md +0 -15
- package/skills/agent-workflow/doctrine/compact/SKILL.md +0 -145
- package/skills/agent-workflow/doctrine/doctor/SKILL.md +0 -86
- package/skills/agent-workflow/doctrine/hub-init/SKILL.md +0 -77
- package/skills/agent-workflow/doctrine/hub-init/references/multiroot-manual.md +0 -51
- package/skills/agent-workflow/doctrine/implement/SKILL.md +0 -290
- package/skills/agent-workflow/doctrine/implement/references/branch-verification.md +0 -16
- package/skills/agent-workflow/doctrine/implement/references/design-md-template.md +0 -108
- package/skills/agent-workflow/doctrine/implement/references/rollback-guide.md +0 -83
- package/skills/agent-workflow/doctrine/migrate/SKILL.md +0 -281
- package/skills/agent-workflow/doctrine/project-init/SKILL.md +0 -100
- package/skills/agent-workflow/doctrine/refactor/SKILL.md +0 -208
- package/skills/agent-workflow/doctrine/refactor/references/refactor-md-template.md +0 -108
- package/skills/agent-workflow/doctrine/refactor/references/strangler-checklist.md +0 -116
- package/skills/agent-workflow/doctrine/resume/SKILL.md +0 -199
- package/skills/agent-workflow/doctrine/rules/SKILL.md +0 -250
- package/skills/agent-workflow/doctrine/session/SKILL.md +0 -471
- package/skills/agent-workflow/doctrine/session/references/auto-plan-rules.md +0 -63
- package/skills/agent-workflow/doctrine/session/references/backlog-template.md +0 -95
- package/skills/agent-workflow/doctrine/session/references/branch-verification.md +0 -198
- package/skills/agent-workflow/doctrine/session/references/commits-policy.md +0 -111
- package/skills/agent-workflow/doctrine/session/references/communication-style.md +0 -50
- package/skills/agent-workflow/doctrine/session/references/graduacion-routing.md +0 -88
- package/skills/agent-workflow/doctrine/session/references/lifecycle-deep.md +0 -160
- package/skills/agent-workflow/doctrine/session/references/prompts/C1-specialty-selection.md +0 -11
- package/skills/agent-workflow/doctrine/session/references/prompts/C2-cost-guard.md +0 -14
- package/skills/agent-workflow/doctrine/session/references/prompts/M1-closure-commit-prompt.md +0 -104
- package/skills/agent-workflow/doctrine/session/references/prompts/M10-next-step.md +0 -17
- package/skills/agent-workflow/doctrine/session/references/prompts/M11-context.md +0 -16
- package/skills/agent-workflow/doctrine/session/references/prompts/M13-closure-cleanup.md +0 -61
- package/skills/agent-workflow/doctrine/session/references/prompts/M2-branch-caso-A.md +0 -14
- package/skills/agent-workflow/doctrine/session/references/prompts/M3-branch-caso-C.md +0 -33
- package/skills/agent-workflow/doctrine/session/references/prompts/M4-cross-source-hard-gate.md +0 -33
- package/skills/agent-workflow/doctrine/session/references/prompts/M5-modality-analyze.md +0 -15
- package/skills/agent-workflow/doctrine/session/references/prompts/M6-phase-gate.md +0 -31
- package/skills/agent-workflow/doctrine/session/references/prompts/M7-refactor-legacy-detected.md +0 -28
- package/skills/agent-workflow/doctrine/session/references/prompts/M8-refactor-cleanup.md +0 -16
- package/skills/agent-workflow/doctrine/session/references/prompts/M9-contract-review.md +0 -39
- package/skills/agent-workflow/doctrine/session/references/prompts/S1-type-design.md +0 -15
- package/skills/agent-workflow/doctrine/session/references/prompts/S2-topic-change-detection.md +0 -14
- package/skills/agent-workflow/doctrine/session/references/prompts/S3-flow-detection.md +0 -28
- package/skills/agent-workflow/doctrine/session/references/prompts/S4-resume.md +0 -27
- package/skills/agent-workflow/doctrine/session/references/prompts/S5-post-compact.md +0 -17
- package/skills/agent-workflow/doctrine/session/references/prompts/S6-scope.md +0 -16
- package/skills/agent-workflow/doctrine/session/references/prompts/S7-design-review.md +0 -37
- package/skills/agent-workflow/doctrine/session/references/prompts-catalog.md +0 -213
- package/skills/agent-workflow/doctrine/session/references/sandbox-readonly-rules.md +0 -82
- package/skills/agent-workflow/doctrine/session/references/specialty-decision-tree.md +0 -56
- package/skills/agent-workflow/doctrine/session/references/topic-change-rules.md +0 -67
- package/skills/agent-workflow/exports/README.md +0 -15
- package/skills/agent-workflow/exports/export-arq/SKILL.md +0 -229
- package/skills/agent-workflow/exports/export-arq/references/lexico-tecnico.md +0 -94
- package/skills/agent-workflow/exports/export-arq/references/template-c4.md +0 -293
- package/skills/agent-workflow/exports/export-arq/references/template-plantuml.puml +0 -77
- package/skills/agent-workflow/exports/export-arq/references/template-structurizr.dsl +0 -72
- package/skills/agent-workflow/exports/export-arq/references/validations.md +0 -231
- package/skills/agent-workflow/exports/export-conclusions/SKILL.md +0 -169
- package/skills/agent-workflow/exports/export-conclusions/references/dedup-rules.md +0 -154
- package/skills/agent-workflow/exports/export-conclusions/references/template-conclusions.md +0 -158
- package/skills/agent-workflow/exports/export-plan/SKILL.md +0 -225
- package/skills/agent-workflow/exports/export-plan/references/state-transitions.md +0 -141
- package/skills/agent-workflow/exports/export-plan/references/template-plan.md +0 -132
- package/skills/agent-workflow/exports/export-qa-note/SKILL.md +0 -31
- package/skills/agent-workflow/exports/export-report/SKILL.md +0 -262
- package/skills/agent-workflow/exports/export-report/references/lexico.md +0 -174
- package/skills/agent-workflow/exports/export-report/references/template-a.md +0 -95
- package/skills/agent-workflow/exports/export-report/references/template-b.md +0 -221
- package/skills/agent-workflow/exports/export-report/references/template-c.md +0 -180
- package/skills/agent-workflow/exports/export-report/references/validations.md +0 -255
- package/skills/agent-workflow/exports/export-requirement/SKILL.md +0 -31
- package/skills/agent-workflow/exports/export-scripts/SKILL.md +0 -211
- package/skills/agent-workflow/exports/export-scripts/references/code-scan-recommendations.md +0 -83
- package/skills/agent-workflow/exports/export-scripts/references/deprecation-plan.md +0 -80
- package/skills/agent-workflow/exports/export-scripts/references/lexico-tecnico.md +0 -47
- package/skills/agent-workflow/exports/export-scripts/references/manifest-template.md +0 -265
- package/skills/agent-workflow/exports/export-scripts/references/readme-template.md +0 -49
- package/skills/agent-workflow/exports/export-scripts/references/theme-handling.md +0 -141
- package/skills/agent-workflow/exports/export-scripts/references/validations.md +0 -69
- package/skills/agent-workflow/exports/export-tech-manuals/SKILL.md +0 -214
- package/skills/agent-workflow/exports/export-tech-manuals/references/lexico-tecnico.md +0 -97
- package/skills/agent-workflow/exports/export-tech-manuals/references/template-index.md +0 -123
- package/skills/agent-workflow/exports/export-tech-manuals/references/template-manual.md +0 -143
- package/skills/agent-workflow/exports/export-tech-manuals/references/validations.md +0 -211
- package/skills/agent-workflow/exports/export-tech-note/SKILL.md +0 -31
- package/skills/agent-workflow/hooks/README.md +0 -15
- package/skills/agent-workflow/references/README.md +0 -12
- package/skills/agent-workflow/references/checkpoint.md +0 -59
- package/skills/agent-workflow/references/dev-only.md +0 -50
- package/skills/agent-workflow/references/doctor.md +0 -61
- package/skills/agent-workflow/references/history.md +0 -40
- package/skills/agent-workflow/references/hooks.md +0 -35
- package/skills/agent-workflow/references/legacy-anchors.md +0 -50
- package/skills/agent-workflow/references/mcp.md +0 -34
- package/skills/agent-workflow/references/objetivo-tasks.md +0 -64
- package/skills/agent-workflow/references/orchestration.md +0 -86
- package/skills/agent-workflow/references/profile-parametrization.md +0 -88
- package/skills/agent-workflow/references/self.md +0 -68
- package/skills/agent-workflow/references/session-mgmt.md +0 -109
- package/skills/agent-workflow/references/sources.md +0 -102
- package/skills/agent-workflow/specialties/README.md +0 -14
- package/skills/agent-workflow/specialties/analyze-conclude/SKILL.md +0 -181
- package/skills/agent-workflow/specialties/analyze-conclude/references/incident-classification.md +0 -61
- package/skills/agent-workflow/specialties/analyze-investigate/SKILL.md +0 -148
- package/skills/agent-workflow/specialties/analyze-investigate/references/cost-guard.md +0 -85
- package/skills/agent-workflow/specialties/analyze-synthesize/SKILL.md +0 -127
- package/skills/agent-workflow/specialties/design-brief/SKILL.md +0 -90
- package/skills/agent-workflow/specialties/design-deliver/SKILL.md +0 -121
- package/skills/agent-workflow/specialties/design-develop/SKILL.md +0 -115
- package/skills/agent-workflow/specialties/design-discover/SKILL.md +0 -103
- package/skills/agent-workflow/standards/README.md +0 -12
- package/skills/agent-workflow/standards/coding-standards/SKILL.md +0 -102
- package/skills/agent-workflow/standards/coding-standards/references/angular-typescript.md +0 -266
- package/skills/agent-workflow/standards/coding-standards/references/database-conventions.md +0 -170
- package/skills/agent-workflow/standards/coding-standards/references/fe-be-integration.md +0 -300
- package/skills/agent-workflow/standards/coding-standards/references/frontend-structure.md +0 -182
- package/skills/agent-workflow/standards/coding-standards/references/java-spring.md +0 -244
- package/skills/agent-workflow/standards/coding-standards/references/project-structure.md +0 -197
- package/skills/agent-workflow/standards/frontend-design/SKILL.md +0 -62
- package/skills/agent-workflow/standards/frontend-design/references/feedback-toasts-patterns.md +0 -249
- package/skills/agent-workflow/standards/frontend-design/references/form-patterns.md +0 -278
- package/skills/agent-workflow/standards/frontend-design/references/list-patterns.md +0 -256
- package/skills/agent-workflow/standards/frontend-design/references/modal-patterns.md +0 -220
- package/skills/agent-workflow/standards/frontend-design/references/navigation-patterns.md +0 -224
- package/skills/agent-workflow/standards/redaccion-simple/SKILL.md +0 -128
- package/skills/agent-workflow/standards/sql-rollback-generator/SKILL.md +0 -158
- package/skills/agent-workflow/standards/sql-rollback-generator/references/irreversible-checklist.md +0 -161
- package/skills/agent-workflow/standards/sql-rollback-generator/references/release-rollback.md +0 -133
- package/skills/agent-workflow/standards/sql-rollback-generator/references/rollback-patterns.md +0 -257
- package/skills/agent-workflow/standards/sql-script-organizer/SKILL.md +0 -243
- package/skills/agent-workflow/standards/sql-script-organizer/references/bundle-readme-template.md +0 -82
- package/skills/agent-workflow/standards/sql-script-organizer/references/categorization-rules.md +0 -122
- package/skills/agent-workflow/standards/sql-script-organizer/references/consolidation-cross-session.md +0 -125
- package/skills/agent-workflow/standards/sql-script-organizer/references/scripts-sql-format.md +0 -140
- package/skills/agent-workflow/standards/testing-strategy/SKILL.md +0 -113
- package/skills/agent-workflow/standards/testing-strategy/references/test-levels.md +0 -255
- package/skills/agent-workflow/workflows/README.md +0 -12
- package/skills/agent-workflow/workflows/analyze-workflow/SKILL.md +0 -94
- package/skills/agent-workflow/workflows/design-workflow/SKILL.md +0 -79
- package/skills/agent-workflow/workflows/dev-workflow/SKILL.md +0 -172
|
@@ -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`.
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: testing
|
|
3
|
+
description: >
|
|
4
|
+
Estrategia y ejecución de pruebas: selecciona niveles (unit / integration / e2e),
|
|
5
|
+
resuelve comandos por stack detectado, guía la convención de nombres y estructura de tests.
|
|
6
|
+
Pregunta al humano antes de ejecutar; nunca lanza el test runner sin confirmación explícita.
|
|
7
|
+
Compuesta por plan-exec-loop y quick-loop durante la fase de validación de cambios.
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# testing — Test strategy and execution capability
|
|
11
|
+
|
|
12
|
+
## Role
|
|
13
|
+
|
|
14
|
+
`testing` — implementación built-in por defecto. Rebindeable a otra skill (de tercero o `off`) en `.workflow/skills.toml`.
|
|
15
|
+
|
|
16
|
+
## Purpose
|
|
17
|
+
|
|
18
|
+
Dar a los loops la capacidad de razonar sobre tests: qué nivel aplicar, con qué comando, con qué convención. **No ejecuta tests de forma autónoma** — primero pregunta al humano si quiere que el loop los corra, o si los correrá manualmente, o si no hacen falta en esta sesión.
|
|
19
|
+
|
|
20
|
+
## Composed by
|
|
21
|
+
|
|
22
|
+
| Loop | Cuándo la compone |
|
|
23
|
+
|---|---|
|
|
24
|
+
| `plan-exec-loop` | durante validation de cada task ejecutada |
|
|
25
|
+
| `quick-loop` | cuando el cambio quick requiere verificación |
|
|
26
|
+
|
|
27
|
+
## Knowledge
|
|
28
|
+
|
|
29
|
+
### Execution rule
|
|
30
|
+
|
|
31
|
+
Por defecto, **no ejecutar pruebas automáticamente**. Antes de correr cualquier test runner:
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
AskUserQuestion:
|
|
35
|
+
"¿Correr los tests?"
|
|
36
|
+
[a] Sí, el loop los ejecuta
|
|
37
|
+
[b] Los corro yo manualmente
|
|
38
|
+
[c] No hace falta en esta sesión
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Solo saltear la pregunta si el workspace declara `Validation mode: auto` en `.workflow/config.toml`.
|
|
42
|
+
|
|
43
|
+
### Test levels
|
|
44
|
+
|
|
45
|
+
Tres niveles universales (adaptados al stack detectado):
|
|
46
|
+
|
|
47
|
+
| Nivel | Alcance | Cuándo usarlo |
|
|
48
|
+
|---|---|---|
|
|
49
|
+
| **a) Unit** | Lógica aislada (servicios, utils, mappers) | Fix puntual, lógica sin dependencias externas |
|
|
50
|
+
| **b) Integration** | Unit + capa de API/controladores | Endpoint nuevo o modificado |
|
|
51
|
+
| **c) Full** | Integration + contexto completo + e2e | Feature completa, flujo crítico, integración entre capas |
|
|
52
|
+
|
|
53
|
+
### Stack resolution
|
|
54
|
+
|
|
55
|
+
El stack se detecta por archivos de manifest presentes en el workspace. Precedencia: si el bloque `WORKSPACE → Stack` declara override de build/wrapper, usarlo.
|
|
56
|
+
|
|
57
|
+
#### Spring Boot (Maven)
|
|
58
|
+
|
|
59
|
+
| Nivel | Framework | Comando |
|
|
60
|
+
|---|---|---|
|
|
61
|
+
| a) Unit | JUnit 5 + Mockito | `./mvnw test -Dtest=ClaseTest` |
|
|
62
|
+
| b) Integration | + MockMvc | `./mvnw test` |
|
|
63
|
+
| c) Full | + @SpringBootTest | `./mvnw verify` |
|
|
64
|
+
|
|
65
|
+
> Windows: `mvnw.cmd` en lugar de `./mvnw`.
|
|
66
|
+
|
|
67
|
+
#### Spring Boot (Gradle)
|
|
68
|
+
|
|
69
|
+
| Nivel | Comando |
|
|
70
|
+
|---|---|
|
|
71
|
+
| a) Unit | `./gradlew test --tests ClaseTest` |
|
|
72
|
+
| b) Integration | `./gradlew test` |
|
|
73
|
+
| c) Full | `./gradlew integrationTest` (o `check`) |
|
|
74
|
+
|
|
75
|
+
#### Angular
|
|
76
|
+
|
|
77
|
+
| Nivel | Framework | Comando |
|
|
78
|
+
|---|---|---|
|
|
79
|
+
| a) Unit | Jasmine + Karma (o Jest) | `ng test --watch=false` |
|
|
80
|
+
| b) Integration | + TestBed + ComponentFixture | `ng test --watch=false` |
|
|
81
|
+
| c) Full | + Cypress/Playwright si configurado | `npm run e2e` |
|
|
82
|
+
|
|
83
|
+
#### Node / TypeScript genérico
|
|
84
|
+
|
|
85
|
+
| Nivel | Comando |
|
|
86
|
+
|---|---|
|
|
87
|
+
| a) Unit | `npm test` (script `test` en `package.json`) |
|
|
88
|
+
| b) Integration | `npm test` con suites de integración |
|
|
89
|
+
| c) Full | `npm run test:e2e` o según config |
|
|
90
|
+
|
|
91
|
+
#### Resolución automática
|
|
92
|
+
|
|
93
|
+
1. `mvnw` / `mvnw.cmd` → Maven wrapper.
|
|
94
|
+
2. `gradlew` → Gradle wrapper.
|
|
95
|
+
3. `angular.json` → `ng test`.
|
|
96
|
+
4. `package.json` con script `test` → `npm test`.
|
|
97
|
+
5. Si hay override en `WORKSPACE → Stack` → usarlo.
|
|
98
|
+
|
|
99
|
+
### Naming conventions
|
|
100
|
+
|
|
101
|
+
**Java:** clase `[Objetivo]Test.java`, método `[metodo]_[escenario]_[resultado]`. Estructura Arrange-Act-Assert.
|
|
102
|
+
|
|
103
|
+
```java
|
|
104
|
+
@Test
|
|
105
|
+
void enviar_conEmailValido_retornaExito() {
|
|
106
|
+
// Arrange
|
|
107
|
+
var request = new NotificacionRequest("user@example.com", "Asunto", "template", Map.of());
|
|
108
|
+
when(emailProvider.send(any())).thenReturn(true);
|
|
109
|
+
// Act
|
|
110
|
+
var resultado = service.enviar(request);
|
|
111
|
+
// Assert
|
|
112
|
+
assertThat(resultado).isTrue();
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
**Angular / TypeScript:** archivo `[nombre].spec.ts`, bloques `describe` / `it`. Usar `TestBed` para componentes.
|
|
117
|
+
|
|
118
|
+
```typescript
|
|
119
|
+
describe('AuthService', () => {
|
|
120
|
+
it('should return token on login', () => {
|
|
121
|
+
// ...
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Level selection prompt (to show the human)
|
|
127
|
+
|
|
128
|
+
Adaptar al stack resuelto. Ejemplo para Spring Boot:
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
¿Qué nivel de pruebas aplicamos?
|
|
132
|
+
a) Unitarios — JUnit 5 + Mockito (rápido, aislado)
|
|
133
|
+
b) Integración — + MockMvc controllers
|
|
134
|
+
c) Completo — + @SpringBootTest (contexto Spring completo)
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
El humano puede cambiar de nivel en cualquier momento o decidir no ejecutar desde el loop.
|
|
138
|
+
|
|
139
|
+
### Execution and logging
|
|
140
|
+
|
|
141
|
+
1. Confirmar que el humano quiere ejecución desde el loop (ver "Execution rule").
|
|
142
|
+
2. Ejecutar el comando resuelto según stack y nivel.
|
|
143
|
+
3. Registrar resultado en `TEST_LOG.md` **solo si** el humano pidió registro formal o la ejecución fue desde el loop.
|
|
144
|
+
4. Si el humano ya validó manualmente, no repetir; anotar una línea breve si aporta trazabilidad.
|
|
145
|
+
5. Si hay fallos y el humano quiere continuar: corregir y re-ejecutar.
|
|
146
|
+
|
|
147
|
+
### TestBuilder pattern (Java)
|
|
148
|
+
|
|
149
|
+
Para construir fixtures reutilizables sin acoplar los tests al constructor de producción:
|
|
150
|
+
|
|
151
|
+
```java
|
|
152
|
+
public class NotificacionTestBuilder {
|
|
153
|
+
private String destinatario = "test@example.com";
|
|
154
|
+
private String estado = "PENDIENTE";
|
|
155
|
+
|
|
156
|
+
public static NotificacionTestBuilder builder() { return new NotificacionTestBuilder(); }
|
|
157
|
+
|
|
158
|
+
public NotificacionTestBuilder destinatario(String val) { this.destinatario = val; return this; }
|
|
159
|
+
public NotificacionTestBuilder estado(String val) { this.estado = val; return this; }
|
|
160
|
+
|
|
161
|
+
public Notificacion build() {
|
|
162
|
+
var e = new Notificacion();
|
|
163
|
+
e.setDestinatario(destinatario);
|
|
164
|
+
e.setEstado(estado);
|
|
165
|
+
return e;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## Output
|
|
171
|
+
|
|
172
|
+
No produce artefactos de forma autónoma. Cuando el humano confirma ejecución:
|
|
173
|
+
- Corre el comando resuelto y reporta el resultado inline.
|
|
174
|
+
- Escribe `TEST_LOG.md` en la sesión activa solo si fue pedido explícitamente.
|
|
175
|
+
|
|
176
|
+
No gradua a `docs/` (invariant #1).
|
|
177
|
+
|
|
178
|
+
## Source
|
|
179
|
+
|
|
180
|
+
Reciclado de `agent-workflow/standards/testing-strategy/` del bundle viejo (v0.1.0). Se conserva: los tres niveles (a/b/c), la regla de confirmación antes de ejecutar, la resolución de stack por manifest, los naming conventions, la tabla de comandos por framework. Se descarta: la referencia al bloque `AW-PROJECT → Stack` (reemplazado por `WORKSPACE → Stack`), el `TEST_LOG.md` obligatorio, el sandbox-readonly-rules legacy, referencias a `plan mode` del sistema anterior.
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tools
|
|
3
|
+
description: >
|
|
4
|
+
Capacidad de autoría de herramientas y utilidades que el plan crea: scripts, CLIs, helpers,
|
|
5
|
+
configuraciones reutilizables. Produce el código de la herramienta y su documentación en
|
|
6
|
+
docs/tools/. Compuesta por plan-exec-loop cuando una task crea una utilidad nueva (no un
|
|
7
|
+
cambio de producto). No aplica a código de producto — solo a tooling auxiliar.
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# tools — Tool authoring capability
|
|
11
|
+
|
|
12
|
+
## Role
|
|
13
|
+
|
|
14
|
+
`tools` — implementación built-in por defecto. Rebindeable a otra skill (de tercero o `off`) en `.workflow/skills.toml`.
|
|
15
|
+
|
|
16
|
+
## Purpose
|
|
17
|
+
|
|
18
|
+
Dar al `plan-exec-loop` la capacidad de crear herramientas y utilidades auxiliares con una estructura consistente: el código de la tool + su documentación en `docs/tools/`. Cubre scripts de automatización, CLIs auxiliares, helpers de CI/CD, configuraciones reutilizables, y cualquier artefacto de tooling que el plan genere como producto de una task.
|
|
19
|
+
|
|
20
|
+
**Distinciones clave:**
|
|
21
|
+
|
|
22
|
+
| Tipo | Rol | ¿Quién lo maneja? |
|
|
23
|
+
|---|---|---|
|
|
24
|
+
| Código de producto (services, controllers, components) | cambio en el repo fuente | `plan-exec-loop` + `coding-standards` |
|
|
25
|
+
| Tool / utilidad auxiliar creada por el plan | herramienta de soporte | esta skill (`tools`) |
|
|
26
|
+
| Script SQL de migración | dato persistente | `sql` + `export-scripts` |
|
|
27
|
+
|
|
28
|
+
## Composed by
|
|
29
|
+
|
|
30
|
+
| Loop | Cuándo la compone |
|
|
31
|
+
|---|---|
|
|
32
|
+
| `plan-exec-loop` | cuando una task del plan crea una herramienta nueva (helper, script CLI, configuración reutilizable) |
|
|
33
|
+
|
|
34
|
+
## Knowledge
|
|
35
|
+
|
|
36
|
+
### Tool vs. product code
|
|
37
|
+
|
|
38
|
+
Una **tool** es cualquier artefacto que el plan crea para soportar el trabajo, no para el usuario final del producto:
|
|
39
|
+
|
|
40
|
+
- Scripts de seed/fixtures para desarrollo local.
|
|
41
|
+
- CLIs auxiliares (`validate-schema.js`, `sync-env.sh`).
|
|
42
|
+
- Helpers de CI/CD (scripts de deploy, linters de configuración).
|
|
43
|
+
- Configuraciones reutilizables (templates de entorno, fixtures de test).
|
|
44
|
+
- Generadores o scaffolders para tareas repetitivas.
|
|
45
|
+
|
|
46
|
+
Si el artefacto es lógica de negocio del producto → no es una tool, es código de producto.
|
|
47
|
+
|
|
48
|
+
### Tool anatomy
|
|
49
|
+
|
|
50
|
+
Cada tool tiene dos partes:
|
|
51
|
+
|
|
52
|
+
1. **El código** — en el repo fuente apropiado (en su carpeta natural: `scripts/`, `tools/`, `bin/`, etc.).
|
|
53
|
+
2. **La doc** — en `docs/tools/NNN-<slug>.md` del workspace (invariant #2: PLAN escribe `docs/tools`).
|
|
54
|
+
|
|
55
|
+
### docs/tools/NNN-<slug>.md schema
|
|
56
|
+
|
|
57
|
+
```markdown
|
|
58
|
+
# <Nombre de la tool>
|
|
59
|
+
|
|
60
|
+
> **Tipo**: <script | cli | helper | config-template | generator>
|
|
61
|
+
> **Repo**: <alias de la fuente donde vive el código>
|
|
62
|
+
> **Path**: <path relativo al repo>
|
|
63
|
+
> **Creada en**: <sesion-slug>
|
|
64
|
+
|
|
65
|
+
## Purpose
|
|
66
|
+
|
|
67
|
+
[1-2 oraciones: qué hace y cuándo usarla.]
|
|
68
|
+
|
|
69
|
+
## Usage
|
|
70
|
+
|
|
71
|
+
```<lenguaje o bash>
|
|
72
|
+
<ejemplo de invocación>
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Parameters
|
|
76
|
+
|
|
77
|
+
| Param | Tipo | Requerido | Default | Descripcion |
|
|
78
|
+
|---|---|---|---|---|
|
|
79
|
+
| `--foo` | string | sí | — | ... |
|
|
80
|
+
|
|
81
|
+
## Output
|
|
82
|
+
|
|
83
|
+
[Qué produce: archivos, stdout, efectos secundarios.]
|
|
84
|
+
|
|
85
|
+
## Dependencies
|
|
86
|
+
|
|
87
|
+
- <prerequisito 1: binario, env var, servicio>
|
|
88
|
+
- <prerequisito 2>
|
|
89
|
+
|
|
90
|
+
## Examples
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
# Caso de uso principal
|
|
94
|
+
./scripts/validate-schema.sh --env staging
|
|
95
|
+
|
|
96
|
+
# Caso edge
|
|
97
|
+
./scripts/validate-schema.sh --env staging --dry-run
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Notes
|
|
101
|
+
|
|
102
|
+
[Advertencias, limitaciones, cuándo NO usar.]
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Numbering
|
|
106
|
+
|
|
107
|
+
`docs/tools/` usa numeración secuencial `NNN` (001, 002, ...). Consultar el número siguiente con el filesystem antes de escribir; no asumir el siguiente en base a lo que el loop ya sabe.
|
|
108
|
+
|
|
109
|
+
### Git-safe authoring (invariant #5)
|
|
110
|
+
|
|
111
|
+
- Verificar la rama esperada antes de escribir código.
|
|
112
|
+
- Proponer el commit; nunca hacer `push`/`--amend`/`--no-verify` autónomamente.
|
|
113
|
+
- Si la tool modifica scripts ya existentes: leer el archivo completo primero.
|
|
114
|
+
|
|
115
|
+
### DB scripts rule (invariant #4)
|
|
116
|
+
|
|
117
|
+
Si la tool genera o manipula SQL:
|
|
118
|
+
- Nunca generar DML/DDL que se ejecute inline — el SQL va a `SCRIPTS.sql` y se entrega vía `export-scripts`.
|
|
119
|
+
- Una tool puede generar un archivo `.sql`; no puede ejecutarlo contra la BD.
|
|
120
|
+
|
|
121
|
+
### Code quality baseline
|
|
122
|
+
|
|
123
|
+
Al autorar el código de la tool, aplicar lo que la capacidad `coding-standards` del workspace establezca. Si `coding-standards` está `off` o no está configurada, usar los estándares del lenguaje detectado:
|
|
124
|
+
- **Shell**: shellcheck-compatible, variables entre comillas, `set -euo pipefail`.
|
|
125
|
+
- **Node/TS**: tipado explícito, sin `any` salvo justificación, error handling explícito.
|
|
126
|
+
- **Python**: type hints, docstring en funciones públicas, manejo de excepciones específico.
|
|
127
|
+
- **Java**: Javadoc mínimo en clases públicas, excepciones tipadas.
|
|
128
|
+
|
|
129
|
+
### Self-contained tools
|
|
130
|
+
|
|
131
|
+
Preferir tools que declaren explícitamente sus dependencias (en doc + en el propio script). Una tool que falla silenciosamente porque le falta un binario es peor que una que no existe.
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
# Pattern: check dependencies al inicio
|
|
135
|
+
command -v jq >/dev/null 2>&1 || { echo "jq requerido: brew install jq"; exit 1; }
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## Output
|
|
139
|
+
|
|
140
|
+
Por cada tool creada:
|
|
141
|
+
- **Código**: en el repo fuente, en la carpeta que corresponda (`scripts/`, `tools/`, `bin/`).
|
|
142
|
+
- **Doc**: en `docs/tools/NNN-<slug>.md` del workspace.
|
|
143
|
+
|
|
144
|
+
Writes `docs/tools/` (invariant #2: PLAN es el dueño de esta carpeta). No gradua a ninguna otra carpeta de `docs/`.
|
|
145
|
+
|
|
146
|
+
## Source
|
|
147
|
+
|
|
148
|
+
Autoria original (no hay skill equivalente en el bundle viejo). Basado en la descripción del rol en `workflow-skills/README.md` y en el invariant #2 del diseño (`docs/tools/` es del flujo PLAN). Las convenciones de estructura de doc (`## Purpose`, `## Usage`, `## Parameters`, `## Output`, `## Examples`) siguen el patrón de calidad del bundle.
|