@tacuchi/agent-workflow-cli 6.1.0 → 7.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 +65 -12
- package/dist/application/profile/profile-service.d.ts +53 -0
- package/dist/application/profile/profile-service.d.ts.map +1 -0
- package/dist/application/profile/profile-service.js +210 -0
- package/dist/application/profile/profile-service.js.map +1 -0
- package/dist/application/render/history-row.d.ts.map +1 -1
- package/dist/application/render/history-row.js +5 -0
- package/dist/application/render/history-row.js.map +1 -1
- package/dist/application/self/bootstrap.js +2 -1
- package/dist/application/self/bootstrap.js.map +1 -1
- package/dist/application/self/detect-hosts.d.ts +18 -0
- package/dist/application/self/detect-hosts.d.ts.map +1 -0
- package/dist/application/self/detect-hosts.js +37 -0
- package/dist/application/self/detect-hosts.js.map +1 -0
- package/dist/application/self/install-hooks.d.ts +30 -0
- package/dist/application/self/install-hooks.d.ts.map +1 -0
- package/dist/application/self/install-hooks.js +253 -0
- package/dist/application/self/install-hooks.js.map +1 -0
- package/dist/application/self/install-skill.d.ts +2 -0
- package/dist/application/self/install-skill.d.ts.map +1 -1
- package/dist/application/self/install-skill.js +69 -3
- package/dist/application/self/install-skill.js.map +1 -1
- package/dist/application/session-close-service.d.ts +10 -0
- package/dist/application/session-close-service.d.ts.map +1 -1
- package/dist/application/session-close-service.js +87 -10
- package/dist/application/session-close-service.js.map +1 -1
- package/dist/cli/commands/self.d.ts.map +1 -1
- package/dist/cli/commands/self.js +9 -1
- package/dist/cli/commands/self.js.map +1 -1
- package/dist/cli/commands/session-close.d.ts.map +1 -1
- package/dist/cli/commands/session-close.js +11 -0
- package/dist/cli/commands/session-close.js.map +1 -1
- package/dist/cli/tui/tabs/skills-tab.d.ts.map +1 -1
- package/dist/cli/tui/tabs/skills-tab.js +100 -24
- package/dist/cli/tui/tabs/skills-tab.js.map +1 -1
- package/package.json +2 -2
- package/skills/agent-workflow/commands/README.md +24 -0
- package/skills/agent-workflow/commands/agent-workflow-compact.md +24 -0
- package/skills/agent-workflow/commands/agent-workflow-doctor.md +100 -0
- package/skills/agent-workflow/commands/agent-workflow-export-arq.md +77 -0
- package/skills/agent-workflow/commands/agent-workflow-export-conclusions.md +78 -0
- package/skills/agent-workflow/commands/agent-workflow-export-plan.md +74 -0
- package/skills/agent-workflow/commands/agent-workflow-export-qa-note.md +30 -0
- package/skills/agent-workflow/commands/agent-workflow-export-report.md +78 -0
- package/skills/agent-workflow/commands/agent-workflow-export-requirement.md +30 -0
- package/skills/agent-workflow/commands/agent-workflow-export-scripts.md +92 -0
- package/skills/agent-workflow/commands/agent-workflow-export-tech-manuals.md +75 -0
- package/skills/agent-workflow/commands/agent-workflow-export-tech-note.md +30 -0
- package/skills/agent-workflow/commands/agent-workflow-hub-init.md +82 -0
- package/skills/agent-workflow/commands/agent-workflow-migrate.md +56 -0
- package/skills/agent-workflow/commands/agent-workflow-project-init.md +60 -0
- package/skills/agent-workflow/commands/agent-workflow-resume.md +22 -0
- package/skills/agent-workflow/commands/agent-workflow-rules.md +40 -0
- package/skills/agent-workflow/commands/agent-workflow-session.md +35 -0
- package/skills/agent-workflow/doctrine/README.md +15 -0
- package/skills/agent-workflow/doctrine/compact/SKILL.md +145 -0
- package/skills/agent-workflow/doctrine/doctor/SKILL.md +86 -0
- package/skills/agent-workflow/doctrine/doctor/SKILL.md.tmp +0 -0
- package/skills/agent-workflow/doctrine/hub-init/SKILL.md +157 -0
- package/skills/agent-workflow/doctrine/hub-init/SKILL.md.tmp +0 -0
- package/skills/agent-workflow/doctrine/hub-init/references/multiroot-manual.md +51 -0
- package/skills/agent-workflow/doctrine/implement/SKILL.md +290 -0
- package/skills/agent-workflow/doctrine/implement/references/branch-verification.md +16 -0
- package/skills/agent-workflow/doctrine/implement/references/design-md-template.md +108 -0
- package/skills/agent-workflow/doctrine/implement/references/rollback-guide.md +81 -0
- package/skills/agent-workflow/doctrine/migrate/SKILL.md +281 -0
- package/skills/agent-workflow/doctrine/migrate/SKILL.md.tmp +0 -0
- package/skills/agent-workflow/doctrine/project-init/SKILL.md +100 -0
- package/skills/agent-workflow/doctrine/project-init/SKILL.md.tmp +0 -0
- package/skills/agent-workflow/doctrine/refactor/SKILL.md +208 -0
- package/skills/agent-workflow/doctrine/refactor/references/refactor-md-template.md +108 -0
- package/skills/agent-workflow/doctrine/refactor/references/strangler-checklist.md +116 -0
- package/skills/agent-workflow/doctrine/resume/SKILL.md +199 -0
- package/skills/agent-workflow/doctrine/rules/SKILL.md +224 -0
- package/skills/agent-workflow/doctrine/rules/SKILL.md.tmp +0 -0
- package/skills/agent-workflow/doctrine/session/SKILL.md +383 -0
- package/skills/agent-workflow/doctrine/session/references/auto-plan-rules.md +63 -0
- package/skills/agent-workflow/doctrine/session/references/backlog-template.md +95 -0
- package/skills/agent-workflow/doctrine/session/references/branch-verification.md +198 -0
- package/skills/agent-workflow/doctrine/session/references/commits-policy.md +111 -0
- package/skills/agent-workflow/doctrine/session/references/communication-style.md +50 -0
- package/skills/agent-workflow/doctrine/session/references/graduacion-routing.md +88 -0
- package/skills/agent-workflow/doctrine/session/references/lifecycle-deep.md +160 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/C1-specialty-selection.md +11 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/C2-cost-guard.md +14 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/M1-closure-commit-prompt.md +104 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/M10-next-step.md +17 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/M11-context.md +16 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/M2-branch-caso-A.md +14 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/M3-branch-caso-C.md +33 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/M4-cross-source-hard-gate.md +33 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/M5-modality-analyze.md +15 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/M6-phase-gate.md +31 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/M7-refactor-legacy-detected.md +28 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/M8-refactor-cleanup.md +16 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/M9-contract-review.md +39 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/S1-type-design.md +15 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/S2-topic-change-detection.md +14 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/S3-flow-detection.md +28 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/S4-resume.md +27 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/S5-post-compact.md +17 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/S6-scope.md +16 -0
- package/skills/agent-workflow/doctrine/session/references/prompts/S7-design-review.md +37 -0
- package/skills/agent-workflow/doctrine/session/references/prompts-catalog.md +210 -0
- package/skills/agent-workflow/doctrine/session/references/sandbox-readonly-rules.md +82 -0
- package/skills/agent-workflow/doctrine/session/references/specialty-decision-tree.md +56 -0
- package/skills/agent-workflow/doctrine/session/references/topic-change-rules.md +67 -0
- package/skills/agent-workflow/exports/README.md +15 -0
- package/skills/agent-workflow/exports/export-arq/SKILL.md +229 -0
- package/skills/agent-workflow/exports/export-arq/SKILL.md.tmp +0 -0
- package/skills/agent-workflow/exports/export-arq/references/lexico-tecnico.md +94 -0
- package/skills/agent-workflow/exports/export-arq/references/template-c4.md +293 -0
- package/skills/agent-workflow/exports/export-arq/references/template-plantuml.puml +77 -0
- package/skills/agent-workflow/exports/export-arq/references/template-structurizr.dsl +72 -0
- package/skills/agent-workflow/exports/export-arq/references/validations.md +231 -0
- package/skills/agent-workflow/exports/export-conclusions/SKILL.md +169 -0
- package/skills/agent-workflow/exports/export-conclusions/references/dedup-rules.md +154 -0
- package/skills/agent-workflow/exports/export-conclusions/references/template-conclusions.md +158 -0
- package/skills/agent-workflow/exports/export-plan/SKILL.md +225 -0
- package/skills/agent-workflow/exports/export-plan/references/state-transitions.md +141 -0
- package/skills/agent-workflow/exports/export-plan/references/template-plan.md +132 -0
- package/skills/agent-workflow/exports/export-qa-note/SKILL.md +31 -0
- package/skills/agent-workflow/exports/export-report/SKILL.md +262 -0
- package/skills/agent-workflow/exports/export-report/SKILL.md.tmp +0 -0
- package/skills/agent-workflow/exports/export-report/references/lexico.md +174 -0
- package/skills/agent-workflow/exports/export-report/references/template-a.md +95 -0
- package/skills/agent-workflow/exports/export-report/references/template-b.md +221 -0
- package/skills/agent-workflow/exports/export-report/references/template-c.md +180 -0
- package/skills/agent-workflow/exports/export-report/references/validations.md +255 -0
- package/skills/agent-workflow/exports/export-requirement/SKILL.md +31 -0
- package/skills/agent-workflow/exports/export-scripts/SKILL.md +324 -0
- package/skills/agent-workflow/exports/export-scripts/references/code-scan-recommendations.md +83 -0
- package/skills/agent-workflow/exports/export-scripts/references/deprecation-plan.md +80 -0
- package/skills/agent-workflow/exports/export-scripts/references/lexico-tecnico.md +80 -0
- package/skills/agent-workflow/exports/export-scripts/references/manifest-template.md +253 -0
- package/skills/agent-workflow/exports/export-scripts/references/readme-template.md +79 -0
- package/skills/agent-workflow/exports/export-scripts/references/theme-handling.md +168 -0
- package/skills/agent-workflow/exports/export-scripts/references/validations.md +242 -0
- package/skills/agent-workflow/exports/export-tech-manuals/SKILL.md +214 -0
- package/skills/agent-workflow/exports/export-tech-manuals/references/lexico-tecnico.md +97 -0
- package/skills/agent-workflow/exports/export-tech-manuals/references/template-index.md +123 -0
- package/skills/agent-workflow/exports/export-tech-manuals/references/template-manual.md +143 -0
- package/skills/agent-workflow/exports/export-tech-manuals/references/validations.md +211 -0
- package/skills/agent-workflow/exports/export-tech-note/SKILL.md +31 -0
- package/skills/agent-workflow/hooks/README.md +15 -0
- package/skills/agent-workflow/hooks/hooks.template.json +90 -0
- package/skills/agent-workflow/references/README.md +12 -0
- package/skills/agent-workflow/references/legacy-anchors.md +50 -0
- package/skills/agent-workflow/references/profile-parametrization.md +88 -0
- package/skills/agent-workflow/specialties/README.md +14 -0
- package/skills/agent-workflow/specialties/analyze-conclude/SKILL.md +175 -0
- package/skills/agent-workflow/specialties/analyze-conclude/references/incident-classification.md +61 -0
- package/skills/agent-workflow/specialties/analyze-investigate/SKILL.md +148 -0
- package/skills/agent-workflow/specialties/analyze-investigate/SKILL.md.tmp +0 -0
- package/skills/agent-workflow/specialties/analyze-investigate/references/cost-guard.md +85 -0
- package/skills/agent-workflow/specialties/analyze-synthesize/SKILL.md +127 -0
- package/skills/agent-workflow/specialties/design-brief/SKILL.md +90 -0
- package/skills/agent-workflow/specialties/design-deliver/SKILL.md +121 -0
- package/skills/agent-workflow/specialties/design-develop/SKILL.md +115 -0
- package/skills/agent-workflow/specialties/design-discover/SKILL.md +103 -0
- package/skills/agent-workflow/standards/README.md +12 -0
- package/skills/agent-workflow/standards/coding-standards/SKILL.md +102 -0
- package/skills/agent-workflow/standards/coding-standards/SKILL.md.tmp +0 -0
- package/skills/agent-workflow/standards/coding-standards/references/angular-typescript.md +266 -0
- package/skills/agent-workflow/standards/coding-standards/references/database-conventions.md +170 -0
- package/skills/agent-workflow/standards/coding-standards/references/fe-be-integration.md +300 -0
- package/skills/agent-workflow/standards/coding-standards/references/frontend-structure.md +182 -0
- package/skills/agent-workflow/standards/coding-standards/references/java-spring.md +244 -0
- package/skills/agent-workflow/standards/coding-standards/references/project-structure.md +197 -0
- package/skills/agent-workflow/standards/frontend-design/SKILL.md +62 -0
- package/skills/agent-workflow/standards/frontend-design/references/feedback-toasts-patterns.md +249 -0
- package/skills/agent-workflow/standards/frontend-design/references/form-patterns.md +278 -0
- package/skills/agent-workflow/standards/frontend-design/references/list-patterns.md +256 -0
- package/skills/agent-workflow/standards/frontend-design/references/modal-patterns.md +220 -0
- package/skills/agent-workflow/standards/frontend-design/references/navigation-patterns.md +224 -0
- package/skills/agent-workflow/standards/redaccion-simple/SKILL.md +128 -0
- package/skills/agent-workflow/standards/sql-rollback-generator/SKILL.md +197 -0
- package/skills/agent-workflow/standards/sql-rollback-generator/references/irreversible-checklist.md +161 -0
- package/skills/agent-workflow/standards/sql-rollback-generator/references/release-rollback.md +131 -0
- package/skills/agent-workflow/standards/sql-rollback-generator/references/rollback-patterns.md +255 -0
- package/skills/agent-workflow/standards/sql-script-organizer/SKILL.md +244 -0
- package/skills/agent-workflow/standards/sql-script-organizer/references/bundle-readme-template.md +82 -0
- package/skills/agent-workflow/standards/sql-script-organizer/references/categorization-rules.md +122 -0
- package/skills/agent-workflow/standards/sql-script-organizer/references/consolidation-cross-session.md +125 -0
- package/skills/agent-workflow/standards/sql-script-organizer/references/scripts-sql-format.md +140 -0
- package/skills/agent-workflow/standards/testing-strategy/SKILL.md +113 -0
- package/skills/agent-workflow/standards/testing-strategy/references/test-levels.md +255 -0
- package/skills/agent-workflow/workflows/README.md +12 -0
- package/skills/agent-workflow/workflows/analyze-workflow/SKILL.md +107 -0
- package/skills/agent-workflow/workflows/design-workflow/SKILL.md +100 -0
- package/skills/agent-workflow/workflows/dev-workflow/SKILL.md +195 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
{
|
|
2
|
+
"hooks": {
|
|
3
|
+
"SessionStart": [
|
|
4
|
+
{
|
|
5
|
+
"matcher": "startup|resume|clear",
|
|
6
|
+
"hooks": [
|
|
7
|
+
{
|
|
8
|
+
"type": "command",
|
|
9
|
+
"command": "sh -c 'CONFIG_SRC=\"${CLAUDE_PLUGIN_ROOT}/config/agent-workflow-runtime.json\"; CONFIG_DST=\"$HOME/.workflow/agent-workflow/runtime.json\"; if [ -f \"$CONFIG_SRC\" ]; then mkdir -p \"$(dirname \"$CONFIG_DST\")\"; cp -f \"$CONFIG_SRC\" \"$CONFIG_DST\" 2>/dev/null; fi; NS_FILE=\"$HOME/.config/agent-workflow/namespace\"; mkdir -p \"$(dirname \"$NS_FILE\")\" 2>/dev/null; printf \"workflow\\n\" > \"$NS_FILE\" 2>/dev/null; exit 0'",
|
|
10
|
+
"timeout": 5
|
|
11
|
+
}
|
|
12
|
+
]
|
|
13
|
+
}
|
|
14
|
+
],
|
|
15
|
+
"PreToolUse": [
|
|
16
|
+
{
|
|
17
|
+
"matcher": "Edit|Write|MultiEdit|NotebookEdit",
|
|
18
|
+
"hooks": [
|
|
19
|
+
{
|
|
20
|
+
"type": "command",
|
|
21
|
+
"command": "agent-workflow hook branch-check",
|
|
22
|
+
"timeout": 15
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"matcher": "mcp__.*__execute_sql",
|
|
28
|
+
"hooks": [
|
|
29
|
+
{
|
|
30
|
+
"type": "command",
|
|
31
|
+
"command": "agent-workflow hook sql-mutation-guard",
|
|
32
|
+
"timeout": 10
|
|
33
|
+
}
|
|
34
|
+
]
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"matcher": "Bash",
|
|
38
|
+
"hooks": [
|
|
39
|
+
{
|
|
40
|
+
"type": "command",
|
|
41
|
+
"command": "agent-workflow hook git-commit-advisor",
|
|
42
|
+
"timeout": 10
|
|
43
|
+
}
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
],
|
|
47
|
+
"SessionEnd": [
|
|
48
|
+
{
|
|
49
|
+
"matcher": "",
|
|
50
|
+
"hooks": [
|
|
51
|
+
{
|
|
52
|
+
"type": "command",
|
|
53
|
+
"command": "agent-workflow auto-compact-on-close",
|
|
54
|
+
"timeout": 10
|
|
55
|
+
}
|
|
56
|
+
]
|
|
57
|
+
}
|
|
58
|
+
],
|
|
59
|
+
"PreCompact": [
|
|
60
|
+
{
|
|
61
|
+
"matcher": "",
|
|
62
|
+
"hooks": [
|
|
63
|
+
{
|
|
64
|
+
"type": "command",
|
|
65
|
+
"command": "agent-workflow checkpoint-write",
|
|
66
|
+
"statusMessage": "Escribiendo CHECKPOINT.md antes de compactar... (tip: `/agent-workflow:compact` sintetiza el resumen con contexto vivo)",
|
|
67
|
+
"timeout": 10
|
|
68
|
+
}
|
|
69
|
+
]
|
|
70
|
+
}
|
|
71
|
+
],
|
|
72
|
+
"PostCompact": [
|
|
73
|
+
{
|
|
74
|
+
"matcher": "",
|
|
75
|
+
"hooks": [
|
|
76
|
+
{
|
|
77
|
+
"type": "command",
|
|
78
|
+
"command": "agent-workflow resume-summary",
|
|
79
|
+
"statusMessage": "Recuperando estado tras compact...",
|
|
80
|
+
"timeout": 10
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"type": "prompt",
|
|
84
|
+
"prompt": "Contexto compactado. El JSON anterior es output de `agent-workflow resume-summary`. Si hay `active_sessions`, invocá `/agent-workflow:resume` para sintetizar CHECKPOINT.md y presentar resumen. Si está vacío, terminá."
|
|
85
|
+
}
|
|
86
|
+
]
|
|
87
|
+
}
|
|
88
|
+
]
|
|
89
|
+
}
|
|
90
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# references/
|
|
2
|
+
|
|
3
|
+
Documentación de referencia consumida por skills universal y por la AI. Ya existente desde v6.x; se mantiene como anclaje canónico para `[[name]]` linking.
|
|
4
|
+
|
|
5
|
+
Contenido (existing + esperado T2):
|
|
6
|
+
|
|
7
|
+
- `*-cheatsheet.md` — atajos por familia de comandos.
|
|
8
|
+
- `flow-*.md` — guías por flow (dev/design/analyze).
|
|
9
|
+
- `phase-*.md` — guías por fase (planning/execution/validation/closure).
|
|
10
|
+
- `lifecycle-state-machine.md` — diagrama oficial de transiciones.
|
|
11
|
+
|
|
12
|
+
A diferencia de `doctrine/` (reglas activas), `references/` es documentación leída a demanda. Linkear desde doctrine/* con `[[name]]`.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Legacy anchors — alias permanentes `qtc:<topic>` → `agent-workflow:<topic>`
|
|
2
|
+
|
|
3
|
+
Política definida en `docs/especificaciones/003-migracion-lifecycle-a-aw/MAPPING.md` §"Política de anchors": el SKILL universal expone anchors `agent-workflow:<topic>` como nombre canónico. Los anchors `qtc:<topic>` se mantienen como **aliases permanentes** dentro del SKILL universal para que CLAUDE.md / AGENTS.md / READMEs / docs históricos que referencien `qtc:*` no rompan.
|
|
4
|
+
|
|
5
|
+
## Tabla de aliases
|
|
6
|
+
|
|
7
|
+
| Legacy anchor | Anchor canónico | Razón |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| `qtc:commits-policy` | `agent-workflow:commits-policy` | doctrina universal de commit messages |
|
|
10
|
+
| `qtc:sandbox-readonly` | `agent-workflow:sandbox-readonly` | plan mode read-only |
|
|
11
|
+
| `qtc:mcp-readonly` | `agent-workflow:mcp-readonly` | MCP SELECT/EXPLAIN/\d only |
|
|
12
|
+
| `qtc:redaccion-simple` | `agent-workflow:redaccion-simple` | estilo de prosa |
|
|
13
|
+
| `qtc:coding-standards` | `agent-workflow:coding-standards` | estándares por stack |
|
|
14
|
+
| `qtc:graduacion-routing` | `agent-workflow:graduacion-routing` | routing kind por hub/fuente |
|
|
15
|
+
| `qtc:branch-verification` | `agent-workflow:branch-verification` | gate de rama por fuente |
|
|
16
|
+
|
|
17
|
+
## Anchors de skills (agent-workflow:*)
|
|
18
|
+
|
|
19
|
+
Los nombres de skill también funcionan como anchors:
|
|
20
|
+
|
|
21
|
+
| Legacy | Canónico |
|
|
22
|
+
|---|---|
|
|
23
|
+
| `qtc:session` | `agent-workflow:session` |
|
|
24
|
+
| `qtc:resume` | `agent-workflow:resume` |
|
|
25
|
+
| `qtc:compact` | `agent-workflow:compact` |
|
|
26
|
+
| `qtc:rules` | `agent-workflow:rules` |
|
|
27
|
+
| `qtc:doctor` | `agent-workflow:doctor` |
|
|
28
|
+
| `qtc:migrate` | `agent-workflow:migrate` |
|
|
29
|
+
| `qtc:project-init` | `agent-workflow:project-init` |
|
|
30
|
+
| `qtc:hub-init` | `agent-workflow:hub-init` |
|
|
31
|
+
| `qtc:export-*` (9 commands) | `agent-workflow:export-*` |
|
|
32
|
+
| `qtc:dev-workflow` / `qtc:design-workflow` / `qtc:analyze-workflow` | `agent-workflow:dev-workflow` / etc. |
|
|
33
|
+
|
|
34
|
+
## Empresas que quieran shadow propios
|
|
35
|
+
|
|
36
|
+
Cualquier empresa puede inyectar sus propios anchors `<empresa>:<topic>` via `profile.custom_anchors[]`:
|
|
37
|
+
|
|
38
|
+
```json
|
|
39
|
+
{
|
|
40
|
+
"custom_anchors": [
|
|
41
|
+
{ "anchor": "acme:special-rule", "target": "profiles/anchors/acme-special-rule.md" }
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
El skill `agent-workflow:rules` los renderiza al final del bundle bajo "## Anchors específicos del profile".
|
|
47
|
+
|
|
48
|
+
## Política de retiro
|
|
49
|
+
|
|
50
|
+
Los aliases `qtc:*` documentados aquí son **permanentes**. No hay ventana de retiro planeada. El skill `agent-workflow:rules` los expone automáticamente cuando el profile QTC está activo (detectado via `profile.namespace === "qtc"` o cuando `profile.mcp_databases[]` contiene los nombres legacy).
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# Profile parametrization — guía para los 10 skills sensibles a empresa
|
|
2
|
+
|
|
3
|
+
Este documento centraliza qué campos de `profile.json` (resuelto por `src/application/profile/profile-service.ts`) drivean el comportamiento de cada skill parametrizado.
|
|
4
|
+
|
|
5
|
+
Profile cascade (de mayor a menor precedencia):
|
|
6
|
+
1. Flag `--profile <path>`
|
|
7
|
+
2. Env `AW_PROFILE`
|
|
8
|
+
3. `~/.config/agent-workflow/profile.json` (XDG-ish, user-level)
|
|
9
|
+
4. `<cwd>/.<namespace>/profile.json` (workspace-level)
|
|
10
|
+
5. `DEFAULT_PROFILE` embebido (todos los campos en valores agnósticos)
|
|
11
|
+
|
|
12
|
+
Schema completo en `src/application/profile/profile-service.ts:Profile`.
|
|
13
|
+
|
|
14
|
+
## Skills parametrizados (10)
|
|
15
|
+
|
|
16
|
+
### 5 antes-QTC (D4 ampliado — session082)
|
|
17
|
+
|
|
18
|
+
#### 1. `doctrine/project-init/`
|
|
19
|
+
- **Campo**: `profile.claude_md_block` (default `AW-PROJECT`; QTC profile: `QTC-PROJECT`).
|
|
20
|
+
- **Behavior**: el bloque insertado en `CLAUDE.md`/`AGENTS.md` lleva el marker `<!-- <claude_md_block>-START -->` / `<!-- <claude_md_block>-END -->`.
|
|
21
|
+
- **Detección legacy**: `<!-- QTC-WORKFLOW-START -->` (pre-v0.8) se detecta sin importar el profile; si presente, recomendar `/agent-workflow:migrate`.
|
|
22
|
+
|
|
23
|
+
#### 2. `doctrine/hub-init/`
|
|
24
|
+
- Idem `project-init` para el marker del bloque hub.
|
|
25
|
+
- Adicional: detección de "modo hub vs project" sigue siendo agnóstica.
|
|
26
|
+
|
|
27
|
+
#### 3. `doctrine/doctor/`
|
|
28
|
+
- **Campo**: `profile.mcp_databases[]`.
|
|
29
|
+
- **Behavior**: la sección "MCP connectivity check" itera sobre `profile.mcp_databases[]`. Si el array está vacío, la sección se omite ("no MCP configured, skip BD section").
|
|
30
|
+
|
|
31
|
+
#### 4. `doctrine/migrate/`
|
|
32
|
+
- **Campo**: `profile.migrate_legacy_rules[]`.
|
|
33
|
+
- **Behavior**: la lista de reglas legacy → moderno se carga del profile. Profile QTC trae ~10 reglas (`.claude/sessions/` → `.workflow/sessions/`, ES headers → EN, `QTC-WORKFLOW` → `claude_md_block`, etc.). Profile vacío → migrate es no-op.
|
|
34
|
+
- **Reglas hard-coded en el skill**: cero. Lo que migre depende 100% del profile.
|
|
35
|
+
|
|
36
|
+
#### 5. `doctrine/rules/`
|
|
37
|
+
- **Campo**: `profile.custom_anchors[]`.
|
|
38
|
+
- **Behavior**: el bundle de anchors universales (`agent-workflow:commits-policy`, `agent-workflow:sandbox-readonly`, etc.) se renderiza siempre. Los anchors del profile se agregan al final del bundle bajo "## Anchors específicos del profile". Profile QTC inyecta `qtc:mcp-readonly` (legacy alias) automáticamente si `profile.mcp_databases[]` no está vacío.
|
|
39
|
+
|
|
40
|
+
### 5 ambiguos (parametrizados por contexto)
|
|
41
|
+
|
|
42
|
+
#### 6. `specialties/analyze-investigate/`
|
|
43
|
+
- **Campo**: `profile.mcp_databases[]`.
|
|
44
|
+
- **Behavior**: la fase "BD investigation" enumera las MCPs disponibles desde el profile. Si vacío, advierte "no MCP configured, skip BD section" y prosigue con read-only de código.
|
|
45
|
+
|
|
46
|
+
#### 7. `standards/coding-standards/`
|
|
47
|
+
- **Campo**: `profile.mcp_databases[]` (sección BD) + `profile.examples_path` (ejemplos override).
|
|
48
|
+
- **Behavior**: sección "BD vía MCP" se renderiza dinámicamente desde el profile. Las secciones Angular/Spring/Node + FE-BE R1-R6 son agnósticas; profile.examples_path permite override de ejemplos para empresas que no usan Angular/Spring.
|
|
49
|
+
|
|
50
|
+
#### 8. `exports/export-arq/`
|
|
51
|
+
- **Campo**: `profile.mcp_databases[]` (paso 4 BD esquemas).
|
|
52
|
+
- **Behavior**: el paso "Resolución BD" extrae esquemas iterando sobre `profile.mcp_databases[]`. C4 model conceptual es agnóstico.
|
|
53
|
+
|
|
54
|
+
#### 9. `exports/export-report/`
|
|
55
|
+
- **Campo**: `profile.lexicon_path` (default `null` = sin lexicon).
|
|
56
|
+
- **Behavior**: si `profile.lexicon_path` apunta a un archivo, se carga como léxico empresa-específico y se aplica a la prosa del export. Profile QTC apunta a su archivo de léxico; profile vacío → no se aplica léxico.
|
|
57
|
+
|
|
58
|
+
#### 10. `specialties/refactor/`
|
|
59
|
+
- **Campo**: `profile.examples_path` (override de ejemplos Strangler Fig).
|
|
60
|
+
- **Behavior**: la doctrina (Strangler Fig + 4 fases) es agnóstica. Los ejemplos en cada fase se cargan desde `profile.examples_path` si está definido. Profile QTC carga ejemplos QTC; profile vacío → ejemplos genéricos.
|
|
61
|
+
|
|
62
|
+
## Hook adicional
|
|
63
|
+
|
|
64
|
+
#### `hooks/hooks.template.json` — `sql-mutation-guard` matcher
|
|
65
|
+
- **Campo**: `profile.mcp_databases[]`.
|
|
66
|
+
- **Behavior**: el matcher `mcp__<db>__execute_sql` se compila dinámicamente desde el profile. Sin profile → matcher disabled, hook no se registra (skip silencioso).
|
|
67
|
+
|
|
68
|
+
## Cómo cargar el profile en un skill (para devs)
|
|
69
|
+
|
|
70
|
+
Patrón canónico en TypeScript:
|
|
71
|
+
|
|
72
|
+
```typescript
|
|
73
|
+
import { resolveProfile } from "../../application/profile/profile-service.js";
|
|
74
|
+
|
|
75
|
+
const resolved = await resolveProfile(fs, env, { flagPath: args.values.get("profile") });
|
|
76
|
+
if ("code" in resolved) {
|
|
77
|
+
// PROFILE_NOT_FOUND / PROFILE_INVALID_JSON / PROFILE_INVALID_SCHEMA
|
|
78
|
+
return errorResult(resolved);
|
|
79
|
+
}
|
|
80
|
+
const { profile, source, path } = resolved;
|
|
81
|
+
// Use profile.mcp_databases, profile.claude_md_block, etc.
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Para skills en markdown (sin código), referenciar este documento en el frontmatter o en una sección "## Profile parametrization" del SKILL.md específico.
|
|
85
|
+
|
|
86
|
+
## Anchors legacy
|
|
87
|
+
|
|
88
|
+
Los anchors `qtc:<topic>` se mantienen como alias permanentes en `references/legacy-anchors.md` para que CLAUDE.md históricos no rompan. Anchor canónico nuevo: `agent-workflow:<topic>`.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# specialties/
|
|
2
|
+
|
|
3
|
+
Kinds graduables al cerrar sesión. Cada specialty declara cómo se materializa el artefacto final y su routing (hub vs fuente).
|
|
4
|
+
|
|
5
|
+
Contenido esperado (T2 PR2):
|
|
6
|
+
|
|
7
|
+
- `decision.md` — decisión arquitectónica (hub).
|
|
8
|
+
- `manual.md` — manual técnico (fuente).
|
|
9
|
+
- `script.md` — script SQL/bash (fuente).
|
|
10
|
+
- `especificacion.md` — spec de feature/system (hub).
|
|
11
|
+
- `conclusion.md` — conclusión de analyze (hub).
|
|
12
|
+
- `release.md` — release notes (fuente).
|
|
13
|
+
|
|
14
|
+
Routing automático lo provee `agent-workflow graduation-routing` según `workspace_mode` y kind. Sólo estos 6 graduan al cerrar — el resto queda en sesión.
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: analyze-conclude
|
|
3
|
+
description: "Produce CONCLUSIONS.md como cierre del análisis para las 3 modalidades (technical/incident/data). Una sola estructura: summary + conclusions con evidencia + recommendations con responsable + traceability. Vive en la sesión, no se gradúa por defecto. Invocado al final de execution en sesiones analyze cuando ya existe FINDINGS.md. Reemplaza a analyze-rfc, analyze-data y analyze-postmortem."
|
|
4
|
+
version: 2.1.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# analyze-conclude — qtc v2.1+
|
|
8
|
+
|
|
9
|
+
Specialty skill **analyze**: produce el cierre del análisis para cualquier modalidad (technical / incident / data). Última fase de execution para sesiones analyze.
|
|
10
|
+
|
|
11
|
+
> **v2.0+ unifica el output**: reemplaza a `analyze-rfc`, `analyze-data` y `analyze-postmortem`. Las 3 modalidades comparten una sola estructura (`CONCLUSIONS.md`) con la sección `## Modality` embebida. La diferencia entre modalidades queda en el contenido de Conclusions / Recommendations, no en archivos separados.
|
|
12
|
+
|
|
13
|
+
## Cuándo se invoca
|
|
14
|
+
|
|
15
|
+
- Composición desde `agent-workflow:session` al final de execution si OBJECTIVE declara `## Modality: technical|incident|data` (legacy: `## Modalidad: tecnica|incidente|datos`) y existe `FINDINGS.md` (legacy: `HALLAZGOS.md`).
|
|
16
|
+
- NL del usuario: "armá las conclusiones", "cerrá el análisis", "documentá las recomendaciones", "armá la propuesta", "spec final del análisis", "armá el post-mortem", "armá el informe".
|
|
17
|
+
|
|
18
|
+
## Acción
|
|
19
|
+
|
|
20
|
+
Producir `.workflow/sessions/<folder>/CONCLUSIONS.md` con la estructura canónica única.
|
|
21
|
+
|
|
22
|
+
### Estructura canónica de CONCLUSIONS.md
|
|
23
|
+
|
|
24
|
+
```markdown
|
|
25
|
+
# Conclusions — sessionNNN-analyze-<slug>
|
|
26
|
+
|
|
27
|
+
## Modality
|
|
28
|
+
|
|
29
|
+
<technical | incident | data>
|
|
30
|
+
|
|
31
|
+
## Summary
|
|
32
|
+
|
|
33
|
+
[1-3 oraciones: qué se investigó, qué se concluyó, qué hacer al respecto.]
|
|
34
|
+
|
|
35
|
+
## Conclusions
|
|
36
|
+
|
|
37
|
+
- **C1**: <conclusión + link a evidencia (`EVIDENCE.md#section` o `FINDINGS.md#patron`)>
|
|
38
|
+
- **C2**: <conclusión + evidencia>
|
|
39
|
+
- **C3**: ...
|
|
40
|
+
|
|
41
|
+
## Recommendations
|
|
42
|
+
|
|
43
|
+
- **R1**: <acción concreta + responsable + cuándo (fecha objetivo o ventana)>
|
|
44
|
+
- **R2**: <acción + responsable + cuándo>
|
|
45
|
+
- **R3**: ...
|
|
46
|
+
|
|
47
|
+
## Traceability
|
|
48
|
+
|
|
49
|
+
- EVIDENCE: `.workflow/sessions/<folder>/EVIDENCE.md`
|
|
50
|
+
- FINDINGS: `.workflow/sessions/<folder>/FINDINGS.md`
|
|
51
|
+
- queries/: lista de archivos si aplica
|
|
52
|
+
- Decisiones derivadas: <DEC-NNN si aplica> (en DECISIONS.md de la sesión)
|
|
53
|
+
|
|
54
|
+
## Open (gaps) [opcional]
|
|
55
|
+
|
|
56
|
+
- <pregunta sin respuesta que requiere más investigación>
|
|
57
|
+
- <hipótesis sin probar>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Reglas comunes a las 3 modalidades
|
|
61
|
+
|
|
62
|
+
- **Conclusions con evidencia**: cada `**CN**` enlaza al artefacto que lo sustenta (EVIDENCE o FINDINGS). Sin evidencia no se afirma.
|
|
63
|
+
- **Recommendations accionables**: cada `**RN**` declara responsable (persona/equipo, no "alguien") y cuándo (fecha objetivo o ventana, no "pronto").
|
|
64
|
+
- **Sin código de implementación**: el documento describe QUÉ hacer, no CÓMO. La implementación es de flow=dev (otra sesión, vía handoff `--from analyze:NNN`).
|
|
65
|
+
- **Honest gaps**: si quedan preguntas sin responder, va `## Open (gaps)`. No esconder debilidades del análisis.
|
|
66
|
+
- **Modality embebida**: la sección `## Modality` declara el sabor (technical / incident / data). El contenido del cuerpo se modula por modalidad pero la estructura no cambia.
|
|
67
|
+
|
|
68
|
+
## Modulación por modalidad
|
|
69
|
+
|
|
70
|
+
La estructura es única. Lo que cambia es el peso y el contenido de cada sección.
|
|
71
|
+
|
|
72
|
+
### Modality: technical (propuesta tradicional)
|
|
73
|
+
|
|
74
|
+
- **Summary**: qué decisión técnica se recomienda y por qué.
|
|
75
|
+
- **Conclusions**: opciones evaluadas con tradeoffs (pros/cons/costo S/M/L). Cada CN puede ser una opción descartada con su razón o la opción recomendada con su justificación.
|
|
76
|
+
- **Recommendations**: típicamente una `**R1**` que describe la decisión final + acciones de seguimiento (handoff a dev, ajustes de doctrina).
|
|
77
|
+
- **Open**: dependencias externas, decisiones que dependen de otra sesión.
|
|
78
|
+
|
|
79
|
+
Reglas específicas:
|
|
80
|
+
- **3 opciones es óptimo**: si el espacio es claro, 2 alcanza. Si hay ambigüedad alta, hasta 4. Más es ruido.
|
|
81
|
+
- **Tradeoffs explícitos**: nunca "ventaja: bueno". Cada Pro/Con específico.
|
|
82
|
+
- **Costo estimado obligatorio**: S/M/L de implementación.
|
|
83
|
+
- **Decisión recomendada con justificación**: no presentar opciones sin elegir. Si genuinamente no hay una mejor, declararlo y describir cómo decidir (ej. "depende de tolerancia a downtime: A si 0, B si <1h").
|
|
84
|
+
|
|
85
|
+
### Modality: incident (post-mortem tradicional)
|
|
86
|
+
|
|
87
|
+
- **Summary**: qué pasó, cuándo, impacto, causa raíz, qué se hizo. Incluir severidad declarada (SEV1/2/3/4) con justificación de 1 línea.
|
|
88
|
+
- **Conclusions**: timeline (`**C1**`: timeline), causa raíz (`**C2**`: causa raíz), impacto cuantificado (`**C3**`: impacto), lo que funcionó / no funcionó (`**C4**`/`**C5**`).
|
|
89
|
+
- **Recommendations**: acciones inmediatas hechas (`**R1**`), acciones preventivas con owner + fecha (`**R2**`/`**R3**`/...). Priorizar P1 = bloqueo de SEV similar futuro; P2 = reduce probabilidad; P3 = mejora detección/respuesta.
|
|
90
|
+
- **Open**: lecciones aprendidas pendientes de socializar.
|
|
91
|
+
|
|
92
|
+
Reglas específicas:
|
|
93
|
+
- **Sin culpas**: foco en sistemas y procesos, no personas. "El deploy no tenía smoke test" > "Juan deployó sin testear".
|
|
94
|
+
- **Timeline en hora local + UTC si cross-timezone**.
|
|
95
|
+
- **Acciones preventivas con owner + fecha**: vagueness mata follow-up.
|
|
96
|
+
- **Honest about gaps**: si no se sabe la causa raíz exacta, decirlo.
|
|
97
|
+
|
|
98
|
+
Para detalles de severidad, impacto cuantitativo y timeline de comunicación, ver `references/incident-classification.md`.
|
|
99
|
+
|
|
100
|
+
### Modality: data (informe de análisis)
|
|
101
|
+
|
|
102
|
+
- **Summary**: qué se midió, qué se encontró, qué hacer al respecto.
|
|
103
|
+
- **Conclusions**: hallazgos numéricos con valor + comparación + tendencia (`**C1**`: métrica X = ..., +33% vs período anterior, link a query). Interpretación en contexto del negocio.
|
|
104
|
+
- **Recommendations**: acciones SUGERIDAS basadas en los datos (técnicas, de producto/proceso, investigación adicional).
|
|
105
|
+
- **Traceability**: agregar `queries/*.sql` con cada métrica enlazada a la query que la produjo.
|
|
106
|
+
- **Open**: limitaciones del análisis (sample size, sesgos conocidos, datos faltantes).
|
|
107
|
+
|
|
108
|
+
Reglas específicas:
|
|
109
|
+
- **Números siempre con unidad y contexto**: "2.4M" sin más es ruido; "2.4M solicitudes en Q1 2026 (vs 1.8M Q4 2025, +33%)" tiene contenido.
|
|
110
|
+
- **Citar queries**: cada métrica enlaza a la query que la produjo. Reproducibilidad.
|
|
111
|
+
- **Metodología documentada**: tamaño de muestra, ventana, manejo de nulos, outliers, tests de hipótesis si aplican. Sin metodología los números son indefendibles.
|
|
112
|
+
- **Limitaciones honestas**: si hay sample bias, datos faltantes, ventana corta, decirlo en `## Open`.
|
|
113
|
+
- **Acciones SUGERIDAS, no ordenadas**: el informe propone; el usuario/equipo decide qué accionar.
|
|
114
|
+
|
|
115
|
+
#### Metodología estadística (modality=data)
|
|
116
|
+
|
|
117
|
+
Decisiones metodológicas que el documento debe declarar al elegir modality=data:
|
|
118
|
+
|
|
119
|
+
- **Tamaño de muestra**: `n = X (universo|sample, ventana <fecha>–<fecha>)`. Para sampling: `n ≥ 384` para 95% confianza, ±5% margen sobre proporción 0.5 (peor caso).
|
|
120
|
+
- **Intervalos de confianza**: default 95%. Reportar como `valor ± margen` o `[lower, upper]`. Wilson/Clopper-Pearson para proporciones; t-Student si n<30; Poisson exact CI para conteos.
|
|
121
|
+
- **Manejo de nulos**: excluir (<5% sin bias), imputar (<15% con justificación), reportar separado (≥15% o estado-nulo informativo), o bloquear análisis si invalida conclusiones.
|
|
122
|
+
- **Outliers**: IQR (default), z-score (normal), percentil 1/99 (robustez), o domain rule. Reportar cuántos hay y su impacto.
|
|
123
|
+
- **Tests de hipótesis** (opcional): H0/H1 explícitas, p-value + tamaño de efecto, α=0.05 default, Bonferroni si múltiples comparaciones.
|
|
124
|
+
|
|
125
|
+
## Loop de iteración
|
|
126
|
+
|
|
127
|
+
1. Primer draft de CONCLUSIONS.md.
|
|
128
|
+
2. Mostrar al usuario.
|
|
129
|
+
3. Iterar (Edit, no recreación) hasta que el usuario confirme: "OK, lo dejo así".
|
|
130
|
+
|
|
131
|
+
## Cierre y graduación
|
|
132
|
+
|
|
133
|
+
**Default: no graduar.** CONCLUSIONS.md vive en la sesión (`.workflow/sessions/<folder>/CONCLUSIONS.md`). La sesión cierra y el artefacto queda como referencia consultable; las recommendations accionables se ejecutan vía sesiones de handoff (`--from analyze:NNN`) o quedan en backlog informal.
|
|
134
|
+
|
|
135
|
+
**Si el usuario pide graduarlo explícitamente**: usar `kind = conclusion` (uno de los 6 kinds del modelo nuevo):
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
agent-workflow graduate --kind conclusion --session <CODE> --slug <kebab>
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Destino:
|
|
142
|
+
- **workspace_mode=hub** → `<hub>/docs/conclusiones/NNN-<slug>.md`.
|
|
143
|
+
- **workspace_mode=project** → `<project>/docs/conclusiones/NNN-<slug>.md`.
|
|
144
|
+
|
|
145
|
+
La regla canónica DEC-002 manda destino sin prompt por sesión: hub mode → hub root; project mode → cwd. Sin override.
|
|
146
|
+
|
|
147
|
+
Sugerir handoff post-cierre: `/agent-workflow:session --from analyze:NNN "<acción de implementación>"`.
|
|
148
|
+
|
|
149
|
+
> Regla canónica de routing: `agent-workflow/skills/session/references/graduacion-routing.md`.
|
|
150
|
+
|
|
151
|
+
## Composición con otras skills
|
|
152
|
+
|
|
153
|
+
| Skill | Cuándo |
|
|
154
|
+
|---|---|
|
|
155
|
+
| `analyze-synthesize` | pre-requisito (FINDINGS.md debe existir) |
|
|
156
|
+
| `analyze-investigate` | si surge nueva pregunta durante el cierre, retroceder con queries adicionales |
|
|
157
|
+
| `agent-workflow:session --from analyze:NNN` | post-cierre, para implementar acciones |
|
|
158
|
+
|
|
159
|
+
## Sandbox read-only
|
|
160
|
+
|
|
161
|
+
Reglas universales en `../session/references/sandbox-readonly-rules.md`. En plan mode esta skill describe en el plan file:
|
|
162
|
+
|
|
163
|
+
- **Path destino**: `.workflow/sessions/<folder>/CONCLUSIONS.md`.
|
|
164
|
+
- **Modality declarada** en OBJECTIVE (`technical`/`incident`/`data` requerido; legacy ES `tecnica`/`incidente`/`datos` se normaliza). Si falta o es otra, plan dice "preguntar al usuario".
|
|
165
|
+
- **Esqueleto de CONCLUSIONS.md**: secciones canónicas (Modality, Summary, Conclusions, Recommendations, Traceability, Open opcional). Modulación según modalidad.
|
|
166
|
+
- **Investigación previa requerida**: si hay sub-preguntas pendientes en FINDINGS, listar para que el usuario decida si invoca `analyze-investigate` antes.
|
|
167
|
+
|
|
168
|
+
NO ejecuta: `Write` sobre CONCLUSIONS.md, queries MCP costosas (>10k filas estimadas), `agent-workflow graduate`.
|
|
169
|
+
|
|
170
|
+
## Recursos
|
|
171
|
+
|
|
172
|
+
- **`references/incident-classification.md`** — severidad SEV1/2/3/4, impacto cuantitativo, timeline de comunicación, trazabilidad de acciones (aplica a modality=incident).
|
|
173
|
+
- shared-contract §10 — handoff `--from analyze:NNN`.
|
|
174
|
+
- shared-contract §11 — convención `## Modality`.
|
|
175
|
+
- shared-contract §14 — fase execution del lifecycle universal.
|
package/skills/agent-workflow/specialties/analyze-conclude/references/incident-classification.md
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Clasificación del incidente — severidad, impacto, comunicación
|
|
2
|
+
|
|
3
|
+
Aplica a `analyze-conclude` con `## Modality: incident` (legacy: `## Modalidad: incidente`). Toda CONCLUSIONS.md de incidente debe declarar severidad, impacto cliente cuantificado y timeline de comunicación. Sin estos campos, las conclusiones son incompletas.
|
|
4
|
+
|
|
5
|
+
## Severidad
|
|
6
|
+
|
|
7
|
+
| Nivel | Criterio | Ejemplos | Comunicación esperada |
|
|
8
|
+
|---|---|---|---|
|
|
9
|
+
| **SEV1** | Crítico — sistema o flujo principal caído >1h, datos comprometidos, multas regulatorias | Login down >1h, BD principal corrupta, leak de PII | Status page + email a clientes + regulador (si aplica) en <30 min de detección |
|
|
10
|
+
| **SEV2** | Degradado — feature secundaria caída, flujo principal degradado >15min y <1h | Latencia 5x normal en endpoint clave, una región caída | Status page + Slack interno; email cliente si dura >30 min |
|
|
11
|
+
| **SEV3** | Limitado — afecta <10% usuarios o feature no-crítica | Bug en pantalla específica, error intermitente bajo volumen | Slack interno; sin comunicación externa salvo cliente afectado pregunte |
|
|
12
|
+
| **SEV4** | Cosmético / interno — sin impacto en producción visible | Job batch atrasado pero recuperable, alerta interna falsa | Solo Slack del equipo; no requiere post-mortem formal salvo aprendizaje notable |
|
|
13
|
+
|
|
14
|
+
Declarar la severidad en el **Resumen** y justificar en una línea: "SEV2 — flujo de pago degradado 35 min para 8% de usuarios".
|
|
15
|
+
|
|
16
|
+
## Impacto cliente — cuantitativo
|
|
17
|
+
|
|
18
|
+
Cada CONCLUSIONS.md de incidente documenta dentro de **Conclusiones** una `**CN**: Impacto` con las siguientes magnitudes (si no aplica una, decir "no aplica"; nunca dejar vacío):
|
|
19
|
+
|
|
20
|
+
| Métrica | Cómo cuantificar |
|
|
21
|
+
|---|---|
|
|
22
|
+
| **Duración total** | Desde primer evento hasta servicio restaurado (no desde detección — el cliente sintió desde el primer evento) |
|
|
23
|
+
| **Usuarios afectados** | Número absoluto (preferido) o estimación con metodología clara (ej. "5% de usuarios activos del día = ~12k") |
|
|
24
|
+
| **Transacciones impactadas** | Perdidas, duplicadas, en estado inconsistente — separadas. Cantidad + valor monetario si aplica |
|
|
25
|
+
| **Datos comprometidos** | Sí/no/qué tipo. Si sí, declarar acción de notificación regulatoria |
|
|
26
|
+
| **Costo financiero** | Refunds, créditos, penalidades, costo de remediación. Estimación con rango si no es preciso |
|
|
27
|
+
| **Reputación / soporte** | Tickets abiertos relacionados, menciones en redes, NPS si se mide |
|
|
28
|
+
|
|
29
|
+
Si los datos no están disponibles inmediatamente, CONCLUSIONS.md **declara** que se actualizará con números finales en una fecha objetivo.
|
|
30
|
+
|
|
31
|
+
## Timeline de comunicación
|
|
32
|
+
|
|
33
|
+
Bloque obligatorio dentro de la conclusión `**CN**: Timeline` — registra **cuándo y a quién** se comunicó:
|
|
34
|
+
|
|
35
|
+
| Evento | Canal | Audiencia | Hora (UTC) | Quién |
|
|
36
|
+
|---|---|---|---|---|
|
|
37
|
+
| Detección interna | Slack #incidents | Equipo on-call | HH:MM | sistema/persona |
|
|
38
|
+
| Activación incident commander | Llamada/Slack | Equipo extendido | HH:MM | IC asignado |
|
|
39
|
+
| Primer aviso interno | Slack #general | Toda la org | HH:MM | IC |
|
|
40
|
+
| Primer aviso externo | Status page | Clientes | HH:MM | Comms / IC |
|
|
41
|
+
| Aviso regulador (SEV1 con datos) | Email/portal regulatorio | <ente> | HH:MM | Compliance |
|
|
42
|
+
| Resolución comunicada externamente | Status page + email | Clientes | HH:MM | Comms |
|
|
43
|
+
| Post-mortem público (si compromete confianza) | Blog/email | Clientes | YYYY-MM-DD | Comms |
|
|
44
|
+
|
|
45
|
+
### Reglas de comunicación
|
|
46
|
+
|
|
47
|
+
- **SEV1**: status page actualizada cada 30 min hasta resolución. Cliente dueño de los datos comprometidos contactado directamente <2h.
|
|
48
|
+
- **SEV2**: status page actualizada al menos 2 veces (inicio + resolución). Email a clientes si dura >30 min.
|
|
49
|
+
- **SEV3**: Slack interno + ticket si cliente lo reporta. Sin proactivo externo.
|
|
50
|
+
- **Honestidad**: no minimizar en comunicación pública. "Estamos investigando un incidente que afecta a algunos usuarios" es preferible a silencio o promesas vacías.
|
|
51
|
+
|
|
52
|
+
## Trazabilidad de acciones
|
|
53
|
+
|
|
54
|
+
Cada `**RN**` (Recomendación) preventiva cumple:
|
|
55
|
+
|
|
56
|
+
- **Owner nombrado** (persona o equipo, no "alguien").
|
|
57
|
+
- **Fecha objetivo** en formato YYYY-MM-DD.
|
|
58
|
+
- **Criterio de "hecho"** medible (ej. "alerta dispara con dataset de prueba" no "mejorar alerting").
|
|
59
|
+
- **Priorizada**: P1 = bloqueo de SEV similar futuro; P2 = reduce probabilidad; P3 = mejora detección/respuesta.
|
|
60
|
+
|
|
61
|
+
CONCLUSIONS.md de incidente se considera **cerrable** sólo cuando todas las recomendaciones P1 tienen owner y fecha.
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: analyze-investigate
|
|
3
|
+
description: Recolección de evidencia divergente sin juicio. Lee código, corre queries read-only contra <mcp-cert>/<mcp-prod> (MCPs), tracea logs, cava git history. Produce EVIDENCE.md + queries/. Invocado en execution de sesiones analyze (cualquier modalidad). Pre-requisito de analyze-synthesize en analyze sessions.
|
|
4
|
+
version: 1.2.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
> **Profile parametrization**: lee `mcp_databases[]` de `profile.json` (resuelto vía cascade 5 capas). Ver [`references/profile-parametrization.md`](../../references/profile-parametrization.md) para el contrato completo y comportamiento por defecto cuando el profile está vacío.
|
|
8
|
+
|
|
9
|
+
# analyze-investigate — qtc v1.1+
|
|
10
|
+
|
|
11
|
+
Specialty skill **analyze**: investigación divergente. Primer paso de `execution` para sesiones analyze (cualquier modalidad). **Read-only**.
|
|
12
|
+
|
|
13
|
+
## Rama base — verificar antes de leer/queries
|
|
14
|
+
|
|
15
|
+
Antes de lecturas extensivas o queries (`Grep`, `Read`, MCP `<mcp-cert>`/`<mcp-prod>`), confirmar que cada fuente está en su `main_branch` (default `certificacion`). El análisis sobre otra rama puede divergir de producción y producir conclusiones erradas.
|
|
16
|
+
|
|
17
|
+
- El lifecycle ya valida esto al entrar a execution (skill `session`, bloque "Verificación interactiva de ramas"). Si no se ejecutó, correr `agent-workflow sources` antes de la primera evidencia.
|
|
18
|
+
- Si una fuente está en otra rama, **avisar** explícitamente en `EVIDENCE.md` que el análisis se hizo sobre `<current_branch>` y aclarar el riesgo de divergencia.
|
|
19
|
+
- Para decidir editar código durante la investigación, ver Caso C en `../session/references/branch-verification.md` (no aplica a este skill — es read-only).
|
|
20
|
+
|
|
21
|
+
## Cuándo se invoca
|
|
22
|
+
|
|
23
|
+
- Composición desde `agent-workflow:session` en `execution` cuando es sesión `analyze` y todavía no existe `EVIDENCE.md` (legacy: `EVIDENCIA.md`).
|
|
24
|
+
- NL: "investigá", "buscar evidencia", "qué dice el código sobre X", "corré la query".
|
|
25
|
+
- Devuelta por `specialty-choose --phase execution` cuando OBJECTIVE menciona análisis/investigación/propuesta/post-mortem.
|
|
26
|
+
|
|
27
|
+
## Acción
|
|
28
|
+
|
|
29
|
+
Producir `.workflow/sessions/<folder>/EVIDENCE.md` + opcionalmente `queries/*.sql`.
|
|
30
|
+
|
|
31
|
+
### Estructura de EVIDENCE.md
|
|
32
|
+
|
|
33
|
+
```markdown
|
|
34
|
+
# Evidence — sessionNNN-analyze-<slug>
|
|
35
|
+
|
|
36
|
+
## Original question
|
|
37
|
+
|
|
38
|
+
[Copiar `## Question` del OBJECTIVE.md.]
|
|
39
|
+
|
|
40
|
+
## Sources consulted
|
|
41
|
+
|
|
42
|
+
- Código: <repo+path/file.java líneas X-Y>
|
|
43
|
+
- Logs: <archivo o sistema>
|
|
44
|
+
- BD (<mcp-cert> / <mcp-prod>): <queries en queries/>
|
|
45
|
+
- Git history: <commits relevantes con SHA y fecha>
|
|
46
|
+
- Refs externas: <links si aplica>
|
|
47
|
+
|
|
48
|
+
## Raw finding 1: <título>
|
|
49
|
+
|
|
50
|
+
- **Qué se observó**: ...
|
|
51
|
+
- **Dónde**: <link/path>
|
|
52
|
+
- **Cuándo**: <fecha si aplica>
|
|
53
|
+
|
|
54
|
+
## Raw finding 2: ...
|
|
55
|
+
|
|
56
|
+
## Notes / tentative hypotheses
|
|
57
|
+
|
|
58
|
+
- [hipótesis sin compromiso, para revisar en analyze-synthesize]
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Lectura estructurada del OBJECTIVE
|
|
62
|
+
|
|
63
|
+
Para extraer la pregunta original sin leer todo el archivo:
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
agent-workflow objetivo-data --code <CODE>
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Devuelve `{titulo, tipo, modalidad, brief, criterios_aceptacion, fuentes_mencionadas, origen}`. El `brief` aplica como "Original question" para sesiones analyze. El comando lee tanto `OBJECTIVE.md` (canónico EN) como `OBJETIVO.md` (legacy ES) vía bilingual readers de R1.
|
|
70
|
+
|
|
71
|
+
### Reglas para queries (modalidad=datos o tecnica con datos)
|
|
72
|
+
|
|
73
|
+
- **Read-only siempre**: SELECT, no DML. Los MCP servers `<mcp-cert>` y `<mcp-prod>` lo enforcan a nivel server.
|
|
74
|
+
- **Guardar en `.workflow/sessions/<folder>/queries/NNN-<slug>.sql`** con header:
|
|
75
|
+
```sql
|
|
76
|
+
-- Query: <propósito>
|
|
77
|
+
-- Server: <mcp-cert> | <mcp-prod>
|
|
78
|
+
-- Fecha: 2026-04-26
|
|
79
|
+
-- Sesión: sessionNNN-analyze-<slug>
|
|
80
|
+
-- Costo estimado: <filas|N/A>; índices usados: <lista|none>
|
|
81
|
+
```
|
|
82
|
+
- **Numerar secuencialmente** por orden de ejecución.
|
|
83
|
+
- **Resultado resumido en EVIDENCE.md**, no el dump completo (puede ser MB).
|
|
84
|
+
|
|
85
|
+
### Cost guard — antes de ejecutar (v1.1+)
|
|
86
|
+
|
|
87
|
+
Las queries contra `<mcp-cert>` / `<mcp-prod>` tienen costo real (latencia, I/O, hold de conexión). Aplicar el cost guard antes de cualquier query no-trivial.
|
|
88
|
+
|
|
89
|
+
**Resumen de categorías**:
|
|
90
|
+
- **Barata**: COUNT(*) ≤ 1.000 filas o PK lookup → ejecutar directo.
|
|
91
|
+
- **Moderada**: 1.000-10.000 filas o seq scan sobre tabla pequeña → avisar al usuario tamaño + duración estimada antes.
|
|
92
|
+
- **Costosa**: > 10.000 filas o seq scan sobre >100k → **confirmación explícita** del usuario antes.
|
|
93
|
+
- **Bloqueada**: UPDATE/INSERT/DELETE → refusarse.
|
|
94
|
+
|
|
95
|
+
Procedimiento completo (4 pasos: estimar tamaño con COUNT(*) + EXPLAIN; clasificar; aviso al usuario con formatos exactos; registrar costo real en header) + excepciones permitidas + anti-patrones en **`references/cost-guard.md`**.
|
|
96
|
+
|
|
97
|
+
### Reglas para lectura de código
|
|
98
|
+
|
|
99
|
+
- Usar `Grep` y `Read` extensivamente. NUNCA `Edit/Write` durante investigate (read-only).
|
|
100
|
+
- Citar paths con líneas: `mscore-solicitud-spring/src/main/java/.../Foo.java:142`.
|
|
101
|
+
- Si el código está disperso, usar `Glob` + `Grep` para zoom.
|
|
102
|
+
|
|
103
|
+
### Reglas para logs y git history
|
|
104
|
+
|
|
105
|
+
- Logs: si hay acceso (SSH o herramienta del proyecto), describir la query/comando. Capturar timestamps relevantes.
|
|
106
|
+
- Git: `git log --oneline --since="<fecha>" -- <path>` para acotar. Capturar SHA + fecha + autor + mensaje. Si modalidad=incidente, capturar commit "culpable" destacado.
|
|
107
|
+
- **Solo git read-only**: `log`, `show`, `diff`, `blame`, `branch --show-current`. NUNCA ejecutar `git commit`/`push`/`merge`/`rebase`/`tag`/`reset --hard`/`checkout` durante investigate. Ver `agent-workflow:commits-policy`.
|
|
108
|
+
|
|
109
|
+
## Loop de investigación
|
|
110
|
+
|
|
111
|
+
```
|
|
112
|
+
[hipótesis] → [buscar evidencia] → [actualizar EVIDENCE.md] → [nueva hipótesis o convergencia]
|
|
113
|
+
↓
|
|
114
|
+
[→ analyze-synthesize cuando hay suficiente]
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Iterar hasta material suficiente para sintetizar.
|
|
118
|
+
|
|
119
|
+
## Reglas
|
|
120
|
+
|
|
121
|
+
- **NO juzgar durante investigate**: capturar lo que es, no lo que "debería ser". El juicio viene en `analyze-synthesize`.
|
|
122
|
+
- **Sin escribir código**: read-only. NUNCA Edit/Write durante investigate.
|
|
123
|
+
- **Honest about gaps**: si una fuente no está disponible, declararlo en EVIDENCE.
|
|
124
|
+
- **Sospechar de la pregunta original**: si surge evidencia que sugiere que la pregunta del OBJECTIVE está mal formulada, marcarlo en "Notes / tentative hypotheses".
|
|
125
|
+
|
|
126
|
+
## Composición con otras skills
|
|
127
|
+
|
|
128
|
+
| Skill | Cuándo |
|
|
129
|
+
|---|---|
|
|
130
|
+
| `analyze-synthesize` | siguiente paso una vez EVIDENCE tiene material suficiente |
|
|
131
|
+
| `analyze-conclude` | después de synthesize, produce CONCLUSIONS.md modulado por modalidad (technical/incident/data) |
|
|
132
|
+
|
|
133
|
+
## Sandbox read-only
|
|
134
|
+
|
|
135
|
+
`../session/references/sandbox-readonly-rules.md` (canon). En plan mode describe en el plan file:
|
|
136
|
+
|
|
137
|
+
- **Paths destino**: `.workflow/sessions/<folder>/EVIDENCE.md` + `queries/*.sql`.
|
|
138
|
+
- **Fuentes a consultar**: archivos de código (paths), tablas BD (schema + nombre), logs/dashboards (con ventanas), git history.
|
|
139
|
+
- **Queries propuestas**: lista con SELECT + tabla + ventana + costo estimado. Marcar costosas para que decida el usuario.
|
|
140
|
+
- **Estructura de EVIDENCE.md**: hallazgos crudos sin sintetizar.
|
|
141
|
+
|
|
142
|
+
NO ejecuta: queries MCP (aunque sean read-only — respetar plan mode), `Read` está permitido pero limitado a navegación, `Write` sobre EVIDENCE.md o queries/.
|
|
143
|
+
|
|
144
|
+
## Recursos
|
|
145
|
+
|
|
146
|
+
- **`references/cost-guard.md`** — protocolo completo de cost guard (4 pasos + excepciones + anti-patrones).
|
|
147
|
+
- MCP servers `<mcp-cert>` y `<mcp-prod>` — read-only por server config.
|
|
148
|
+
- shared-contract §14 — fase execution del lifecycle universal.
|
|
File without changes
|