@tacuchi/agent-workflow-cli 12.4.0 → 12.6.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/dist/adapters/git-cli.d.ts +1 -0
- package/dist/adapters/git-cli.d.ts.map +1 -1
- package/dist/adapters/git-cli.js +21 -0
- package/dist/adapters/git-cli.js.map +1 -1
- package/dist/application/humanize-es.d.ts +18 -0
- package/dist/application/humanize-es.d.ts.map +1 -0
- package/dist/application/humanize-es.js +71 -0
- package/dist/application/humanize-es.js.map +1 -0
- package/dist/application/merge-state-service.d.ts +37 -0
- package/dist/application/merge-state-service.d.ts.map +1 -0
- package/dist/application/merge-state-service.js +89 -0
- package/dist/application/merge-state-service.js.map +1 -0
- package/dist/application/session-close-service.d.ts.map +1 -1
- package/dist/application/session-close-service.js +4 -1
- package/dist/application/session-close-service.js.map +1 -1
- package/dist/application/status-service.d.ts +74 -0
- package/dist/application/status-service.d.ts.map +1 -0
- package/dist/application/status-service.js +336 -0
- package/dist/application/status-service.js.map +1 -0
- package/dist/application/templates/session.d.ts +4 -2
- package/dist/application/templates/session.d.ts.map +1 -1
- package/dist/application/templates/session.js +15 -11
- package/dist/application/templates/session.js.map +1 -1
- package/dist/cli/commands/merge-state.d.ts +3 -0
- package/dist/cli/commands/merge-state.d.ts.map +1 -0
- package/dist/cli/commands/merge-state.js +28 -0
- package/dist/cli/commands/merge-state.js.map +1 -0
- package/dist/cli/commands/status.d.ts +3 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +10 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/help-groups.d.ts.map +1 -1
- package/dist/cli/help-groups.js +2 -1
- package/dist/cli/help-groups.js.map +1 -1
- package/dist/cli/main.js +4 -0
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/tui/data/workflow-content.d.ts.map +1 -1
- package/dist/cli/tui/data/workflow-content.js +2 -1
- package/dist/cli/tui/data/workflow-content.js.map +1 -1
- package/dist/ports/git.d.ts +5 -0
- package/dist/ports/git.d.ts.map +1 -1
- package/package.json +1 -1
- package/skills/w/README.md +6 -3
- package/skills/w/SKILL.md +25 -9
- package/skills/w/artifacts/README.md +10 -9
- package/skills/w/artifacts/artifacts-core/BACKLOG.md +5 -8
- package/skills/w/artifacts/artifacts-core/CHECKPOINT.md +14 -13
- package/skills/w/artifacts/artifacts-core/SESSION.md +10 -11
- package/skills/w/artifacts/artifacts-core/TASKS.md +5 -5
- package/skills/w/artifacts/{artifacts-dev → artifacts-exec}/DECISION.md +3 -3
- package/skills/w/artifacts/{artifacts-dev → artifacts-exec}/TECHNICAL-NOTE.md +15 -15
- package/skills/w/artifacts/artifacts-research/ANALYSIS-FILE.md +14 -27
- package/skills/w/artifacts/artifacts-research/CONCLUSIONS.md +10 -13
- package/skills/w/commands/README.md +16 -10
- package/skills/w/commands/fix-git.md +33 -0
- package/skills/w/commands/plan-exec.md +4 -4
- package/skills/w/commands/plan-new.md +9 -7
- package/skills/w/commands/quick.md +1 -1
- package/skills/w/commands/spec-new.md +19 -15
- package/skills/w/commands/spec-refine.md +7 -5
- package/skills/w/commands/status.md +50 -0
- package/skills/w/exports/README.md +2 -2
- package/skills/w/exports/export-diagrams/SKILL.md +1 -1
- package/skills/w/exports/export-manuals/SKILL.md +2 -2
- package/skills/w/exports/export-reports/SKILL.md +1 -1
- package/skills/w/exports/export-scripts/SKILL.md +1 -1
- package/skills/w/harness/SKILL.md +85 -0
- package/skills/w/loops/README.md +22 -21
- package/skills/w/loops/plan-exec-loop/SKILL.md +60 -58
- package/skills/w/loops/plan-new-loop/SKILL.md +47 -41
- package/skills/w/loops/quick-loop/SKILL.md +23 -20
- package/skills/w/loops/spec-refine-loop/SKILL.md +116 -82
- package/skills/w/roles/README.md +2 -2
- package/skills/w/roles/git/SKILL.md +28 -7
- package/skills/w/roles/research/SKILL.md +22 -82
- package/skills/w/roles/testing/SKILL.md +2 -2
- package/skills/w/roles/ui-spec/SKILL.md +58 -48
|
@@ -28,10 +28,10 @@ Dar a los loops la capacidad de razonar sobre tests: qué nivel aplicar, con qu
|
|
|
28
28
|
|
|
29
29
|
### Execution rule
|
|
30
30
|
|
|
31
|
-
Por defecto, **no ejecutar pruebas automáticamente**. Antes de correr cualquier test runner
|
|
31
|
+
Por defecto, **no ejecutar pruebas automáticamente**. Antes de correr cualquier test runner, preguntar al humano vía *structured-choice* (capacidad del arnés — ver `../../harness/SKILL.md`). En **Claude Code** es `AskUserQuestion` (máx 4 preguntas/llamada → **≤3 preguntas de contenido + 1 control `flow`**); en un arnés sin elección estructurada, degrada a **markdown numerado**.
|
|
32
32
|
|
|
33
33
|
```
|
|
34
|
-
|
|
34
|
+
structured-choice:
|
|
35
35
|
"¿Correr los tests?"
|
|
36
36
|
[a] Sí, el loop los ejecuta
|
|
37
37
|
[b] Los corro yo manualmente
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
name: ui-spec
|
|
3
3
|
description: >-
|
|
4
4
|
UI spec authoring — built-in default for the `ui-design` capability. Given a UI
|
|
5
|
-
requirement, author a structured, framework-agnostic screen specification
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
requirement, author a structured, framework-agnostic screen specification as
|
|
6
|
+
**Markdown** (single output format). Knows the conceptual screen structure, the
|
|
7
|
+
kind/region vocabulary, the authoring rules, design-system / theme / variant
|
|
8
|
+
handling, and the exact Markdown render format. Use when a loop is refining a spec
|
|
9
|
+
that involves screens, forms, dashboards, modals or any UI surface — primarily
|
|
10
|
+
`spec-refine-loop`. Recycled from the `ui-spec-generator` service.
|
|
11
11
|
---
|
|
12
12
|
|
|
13
13
|
# ui-spec — UI spec authoring
|
|
@@ -18,37 +18,31 @@ description: >-
|
|
|
18
18
|
|
|
19
19
|
## Purpose
|
|
20
20
|
|
|
21
|
-
Dado un requerimiento de UI, autorar una **
|
|
21
|
+
Dado un requerimiento de UI, autorar una **descripción estructurada en Markdown** de las pantallas y sus componentes — descriptiva (qué hay y para qué) y estructurada (regiones → componentes, con vocabulario consistente), agnóstica de framework. **Reemplaza** al servicio single-shot `ui-spec-generator`: ahora la IA la autora **nativamente**, guiada por esta skill. No hay endpoint que llamar; el saber del servicio vive aquí. **Salida en un solo formato: Markdown** (sin representación JSON paralela).
|
|
22
22
|
|
|
23
23
|
## Composed by
|
|
24
24
|
|
|
25
|
-
La carga el **`spec-refine-loop`** (ver `../../loops/spec-refine-loop.md`) cuando el requerimiento involucra UI. El loop aporta lo que el servicio viejo no tenía:
|
|
25
|
+
La carga el **`spec-refine-loop`** (ver `../../loops/spec-refine-loop/SKILL.md`) al resolver el gap **UI sin especificar** (cuando el requerimiento involucra UI). El loop aporta lo que el servicio viejo no tenía:
|
|
26
26
|
|
|
27
|
-
- **Pregunta al humano** (design-system, tema, ambigüedades de pantalla) vía `AskUserQuestion
|
|
27
|
+
- **Pregunta al humano** (design-system, tema, ambigüedades de pantalla) vía *structured-choice* (capacidad del arnés — ver `../../harness/SKILL.md`). En **Claude Code** es `AskUserQuestion` (máx 4 preguntas/llamada → **≤3 preguntas de contenido + 1 control `flow`**); en un arnés sin elección estructurada, degrada a **markdown numerado**.
|
|
28
28
|
- **Itera** gap-driven hasta converger.
|
|
29
29
|
- Ofrece **variantes** y **cura** el resultado.
|
|
30
30
|
|
|
31
|
-
Cualquier loop podría componerla; el caso primario es SPEC.
|
|
31
|
+
Cualquier loop podría componerla; el caso primario es SPEC. La descripción Markdown aterriza como una sección dentro del documento spec (`docs/specs/NNN-spec-<slug>.md`) — nunca como artefacto suelto (invariante 3: el spec es un documento).
|
|
32
32
|
|
|
33
33
|
## Knowledge
|
|
34
34
|
|
|
35
|
-
###
|
|
35
|
+
### Estructura conceptual (universal, recursiva)
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
platform: string # web (default), mobile, ...
|
|
42
|
-
description?: string
|
|
43
|
-
regions?: Region[] # pantallas complejas
|
|
44
|
-
components?: Component[] # pantallas simples
|
|
45
|
-
} # usar regions O components, no ambos
|
|
46
|
-
Region { type: string, components: Component[] }
|
|
47
|
-
Component { kind: string, role?: string, label?: string, children?: Component[] } # recursive
|
|
48
|
-
```
|
|
37
|
+
Una **pantalla** tiene: `nombre`, `tipo` (propósito semántico: auth, dashboard, form, list, detail, error, …), `plataforma` (web por default, mobile, …), `descripción` opcional, y **o bien regiones** (pantalla compleja) **o bien componentes** directos (pantalla simple) — **no ambos**.
|
|
38
|
+
|
|
39
|
+
- Una **región** agrupa componentes y tiene un `type`.
|
|
40
|
+
- Un **componente** tiene un `kind`, y opcionalmente `role`, `label` y `children` (anidables, recursivos).
|
|
49
41
|
|
|
50
|
-
|
|
51
|
-
|
|
42
|
+
Es un modelo conceptual para guiar la autoría; **no se serializa a JSON** — la única salida es el render Markdown (ver Output).
|
|
43
|
+
|
|
44
|
+
- `type` (región) ∈ `header · main · footer · sidebar · filters · summary`
|
|
45
|
+
- `kind` (componente) por categoría:
|
|
52
46
|
- **Contenedores**: `card · panel · modal`
|
|
53
47
|
- **Datos**: `table · list · grid`
|
|
54
48
|
- **Visualización**: `chart · metric · badge · image`
|
|
@@ -57,8 +51,6 @@ Component { kind: string, role?: string, label?: string, children?: Component[]
|
|
|
57
51
|
- **Navegación**: `navBar · tabs · breadcrumb`
|
|
58
52
|
- **Feedback**: `alert · progress`
|
|
59
53
|
|
|
60
|
-
JSON serializado en **camelCase**, **claves null omitidas** (no emitir `"description": null`).
|
|
61
|
-
|
|
62
54
|
### Rules
|
|
63
55
|
|
|
64
56
|
1. **Conciso** — solo lo esencial. Nada de relleno ni componentes especulativos.
|
|
@@ -66,11 +58,11 @@ JSON serializado en **camelCase**, **claves null omitidas** (no emitir `"descrip
|
|
|
66
58
|
3. Pantalla compleja (dashboard, mantenimiento CRUD) → `regions` para organizar.
|
|
67
59
|
4. `role` es **opcional** — solo si aporta claridad (`role:"logo"`, `role:"primary"`).
|
|
68
60
|
5. Límites: **≤100 componentes**, **≤5 niveles** de anidación.
|
|
69
|
-
6.
|
|
61
|
+
6. Una sola pantalla por bloque `#`; si el requerimiento son varias pantallas, se listan una tras otra (cada una con su `#`).
|
|
70
62
|
|
|
71
63
|
### Design options (las pregunta el loop al humano)
|
|
72
64
|
|
|
73
|
-
Estas opciones **guían contenido/labels**;
|
|
65
|
+
Estas opciones **guían contenido/labels**; la estructura de la pantalla es **agnóstica** de design-system y NO las lleva como parte del modelo. Se **anotan en el spec** (encabezado de la sección):
|
|
74
66
|
|
|
75
67
|
- **Design system**: `material3 · bootstrap5 · tailwind3 · antDesign · chakraUI · custom`.
|
|
76
68
|
- **Tema**: `light · dark · auto`.
|
|
@@ -80,11 +72,11 @@ Estas opciones **guían contenido/labels**; el modelo `Screen` es **agnóstico**
|
|
|
80
72
|
|
|
81
73
|
### Variants
|
|
82
74
|
|
|
83
|
-
Cuando el requerimiento admite más de un layout razonable (ej. tabla vs. grid de cards; tabs vs. acordeón), ofrecer **2-3 variantes** como
|
|
75
|
+
Cuando el requerimiento admite más de un layout razonable (ej. tabla vs. grid de cards; tabs vs. acordeón), ofrecer **2-3 variantes** como pantallas Markdown alternativas y pedir al humano que elija. Una sola variante se cura y queda; las descartadas no se persisten.
|
|
84
76
|
|
|
85
77
|
### Disambiguation
|
|
86
78
|
|
|
87
|
-
Antes de autorar, resolver ambigüedades con
|
|
79
|
+
Antes de autorar, resolver ambigüedades con *structured-choice* (lo dispara el loop; ver `../../harness/SKILL.md`):
|
|
88
80
|
|
|
89
81
|
- Pantalla simple o compleja (¿necesita `regions`?).
|
|
90
82
|
- Qué acciones primarias/secundarias existen.
|
|
@@ -95,27 +87,45 @@ Si el humano no responde, asumir el caso más simple coherente con la descripci
|
|
|
95
87
|
|
|
96
88
|
### Examples (few-shot)
|
|
97
89
|
|
|
98
|
-
|
|
99
|
-
// Simple (sin regions)
|
|
100
|
-
{"name":"Recuperar Contraseña","purpose":"auth","platform":"web","components":[{"kind":"image","role":"logo"},{"kind":"textInput","label":"Correo electrónico"},{"kind":"button","label":"Enviar enlace"},{"kind":"link","label":"Volver al login"}]}
|
|
90
|
+
**Simple (sin regiones)** — "Recuperar Contraseña" (auth, web):
|
|
101
91
|
|
|
102
|
-
|
|
103
|
-
|
|
92
|
+
```markdown
|
|
93
|
+
# Recuperar Contraseña
|
|
94
|
+
**Tipo**: auth | **Plataforma**: web
|
|
95
|
+
|
|
96
|
+
## Componentes
|
|
97
|
+
- **logo** (image)
|
|
98
|
+
- **Correo electrónico** (textInput)
|
|
99
|
+
- **Enviar enlace** (button)
|
|
100
|
+
- **Volver al login** (link)
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
**Complejo (con regiones)** — "Dashboard" (web):
|
|
104
|
+
|
|
105
|
+
```markdown
|
|
106
|
+
# Dashboard
|
|
107
|
+
**Tipo**: dashboard | **Plataforma**: web
|
|
108
|
+
|
|
109
|
+
## Summary
|
|
110
|
+
- **Total** (metric)
|
|
111
|
+
- **Pendientes** (metric)
|
|
112
|
+
|
|
113
|
+
## Main
|
|
114
|
+
- **Registros** (table)
|
|
104
115
|
```
|
|
105
116
|
|
|
106
|
-
## Output — sección `## UI spec` dentro del spec (`docs/specs/NNN-spec
|
|
117
|
+
## Output — sección `## UI spec` dentro del spec (`docs/specs/NNN-spec-<slug>.md`)
|
|
107
118
|
|
|
108
|
-
La escribe el loop (no esta skill por sí sola). Encabezar la sección con las opciones de diseño elegidas (design system, tema, idioma) en una línea. Luego
|
|
119
|
+
**Salida en un solo formato: Markdown.** La escribe el loop (no esta skill por sí sola). Encabezar la sección con las opciones de diseño elegidas (design system, tema, idioma) en una línea. Luego el render Markdown, con estas reglas exactas (recicladas del `MarkdownFormatter`):
|
|
109
120
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
- `children` indentados **2 espacios por nivel**.
|
|
121
|
+
- `# {nombre}`
|
|
122
|
+
- `**Tipo**: {tipo} | **Plataforma**: {plataforma}`
|
|
123
|
+
- `descripción` como párrafo aparte (solo si existe).
|
|
124
|
+
- Con regiones: un `## {Type capitalizado}` por región (capitalizar la primera letra del `type`).
|
|
125
|
+
- Sin regiones: un único `## Componentes`.
|
|
126
|
+
- Cada componente: `- **{label || role || kind}**`, seguido de ` ({kind})` **solo si** había `label` o `role`.
|
|
127
|
+
- `children` indentados **2 espacios por nivel**.
|
|
128
|
+
- Si hay varias pantallas, se listan una tras otra (cada una con su `#`).
|
|
119
129
|
|
|
120
130
|
Ejemplo de render para el dashboard de arriba:
|
|
121
131
|
|
|
@@ -133,4 +143,4 @@ Ejemplo de render para el dashboard de arriba:
|
|
|
133
143
|
|
|
134
144
|
## Source
|
|
135
145
|
|
|
136
|
-
Reciclada de `ui-spec-generator` (Spring Boot/Kotlin). Se **conservan**: el prompt de sistema (vocabulario, kinds, reglas),
|
|
146
|
+
Reciclada de `ui-spec-generator` (Spring Boot/Kotlin). Se **conservan**: el prompt de sistema (vocabulario, kinds, reglas), la estructura conceptual pantalla/región/componente, los pocos-shot (ahora en Markdown), el enum de design systems, los constraints (theme/density/maxWidth) y las reglas exactas del `MarkdownFormatter` (su render era exactamente este). Se **descarta**: la **serialización JSON `Screen`** (segunda representación, ahora innecesaria), el transporte HTTP, OpenRouter/Gemini y el modo single-shot — los reemplaza la iteración del `spec-refine-loop`. El endpoint del servicio deja de usarse. También absorbe los principios UX de la vieja skill `standards/frontend-design/` cuando el spec describe mantenimientos CRUD (formularios, listados, modales, navegación, feedback).
|