@factor_ec/ai-tools 0.1.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.
@@ -0,0 +1,125 @@
1
+ ---
2
+ name: work-item-develop
3
+ description: Implementa trabajo desde docs/product (US-XXX y/o TK-XXX). Si solo se da TK-XXX, pregunta primero a qué US pertenece. Respeta unidad de trabajo e implementador, progress.md, una tarea por vez y sin tests hasta el final. Usar al desarrollar o ejecutar ítems de producto.
4
+ ---
5
+
6
+ # Desarrollar ítem de trabajo (US / TK)
7
+
8
+ ## Cuándo aplicar
9
+
10
+ Cuando el usuario pida **implementar**, **desarrollar** o **ejecutar** trabajo descrito en documentación de producto: referencia **US-XXX**, **TK-XXX**, ruta a `docs/product/US-.../` o a un `TK-....md` concreto.
11
+
12
+ Las especificaciones siguen las convenciones de **user-story-create** y **user-story-add-task** (`README.md` + `TK-XXX-....md` bajo `docs/product/US-XXX-[nombre]/`).
13
+
14
+ ## Entrada del usuario (resolver el alcance)
15
+
16
+ Aceptar cualquiera de:
17
+
18
+ - Identificador de historia: `US-001`, `US-123` (buscar carpeta `docs/product/US-XXX-*` que coincida en número).
19
+ - Identificador de tarea: `TK-001` — ver regla obligatoria siguiente.
20
+ - Ruta a carpeta de historia o a un archivo `TK-*.md`.
21
+
22
+ ### Solo se indica el número de tarea (`TK-XXX`)
23
+
24
+ Si el usuario **solo** especifica una tarea (p. ej. «implementa **TK-002**») **sin** decir a qué historia pertenece **ni** dar una ruta de archivo/carpeta que fije la US, **no** buscar ni implementar todavía: **preguntar explícitamente** de qué historia de usuario **`US-XXX`** corresponde esa tarea y **solo continuar** cuando el usuario la identifique (o proporcione ruta equivalente).
25
+
26
+ **No aplica** esta pregunta cuando ya está claro el vínculo, por ejemplo: el usuario menciona **US-XXX y TK-XXX** en el mismo mensaje; la entrada es una **ruta** a `docs/product/US-.../TK-....md`; o el archivo abierto en contexto ya asocia la tarea a una carpeta `US-XXX-*` y el usuario lo confirma.
27
+
28
+ Si hay ambigüedad adicional (varias carpetas con el mismo `US-XXX`, varios archivos que coinciden), **preguntar** antes de implementar.
29
+
30
+ ## Archivo `progress.md` (obligatorio en el flujo)
31
+
32
+ **Ubicación:** `docs/product/US-XXX-[nombre-corto]/progress.md` (junto al `README.md` de esa historia).
33
+
34
+ **Antes de implementar:**
35
+
36
+ 1. **Buscar** si `progress.md` ya existe en esa carpeta.
37
+ 2. Si existe: **leerlo** y respetar tareas **done** (no repetir implementación); si hay **in-progress**, revisar `notes` y archivos listados para continuar desde el estado real del repo.
38
+ 3. Si no existe: **crearlo** al iniciar con estructura mínima (ver plantilla abajo).
39
+
40
+ **Durante el trabajo:** actualizar `progress.md` al cambiar de estado de cada tarea (`pending` → `in-progress` → `done`) y al añadir archivos tocados o notas.
41
+
42
+ **Identificador de tarea en el progreso:** usar **`TK-XXX`** (mismo que el prefijo del archivo), no alias arbitrarios.
43
+
44
+ ### Plantilla sugerida
45
+
46
+ ```markdown
47
+ # Progress
48
+
49
+ ## user-story: US-XXX
50
+ status: in-progress
51
+ work-unit: "[opcional: unidad filtrada, p. ej. name del package.json]"
52
+ implementador-filter: "[opcional: nombre si solo aplica a ese implementador]"
53
+
54
+ ### tasks
55
+
56
+ - id: TK-001
57
+ title: Título breve de la tarea
58
+ status: pending
59
+ implementador-previsto: "[si consta en el TK]"
60
+ files: []
61
+ notes: []
62
+
63
+ - id: TK-002
64
+ title: ...
65
+ status: in-progress
66
+ files:
67
+ - src/ejemplo.ts
68
+ notes:
69
+ - Subpaso o decisión técnica puntual
70
+ ```
71
+
72
+ Valores de **status** recomendados: `pending`, `in-progress`, `done`, `skipped` (si el usuario acuerda omitir).
73
+
74
+ ## Qué implementar (filtros)
75
+
76
+ ### 1) Entrada solo **US-XXX**
77
+
78
+ - Leer `README.md` y **todos** los `TK-*.md` de la carpeta + referencias enlazadas (`../technical-docs/`, `docs/adr/`, código citado).
79
+ - **Unidad de trabajo actual:** inferir la del contexto de ejecución (p. ej. `name` del `package.json` del workspace o paquete abierto en el IDE). **Solo** encolar tareas cuyo campo **Unidad de trabajo** del TK coincida con esa unidad (comparación razonable: igualdad o prefijo `@scope/pkg`). Si no se puede inferir, **preguntar** al usuario qué unidad usar.
80
+ - **Implementador previsto:** obtener `git config user.name`. Si el TK incluye **Implementador previsto**, solo ejecutar tareas donde ese campo coincida de forma razonable con el nombre de git o con un nombre que el usuario haya indicado en el chat **antes** de filtrar. Si el TK **no** tiene implementador, puede entrar en la cola salvo otras reglas.
81
+ - **Excepciones por instrucción del usuario:** si dice explícitamente **todas** las tareas, **una lista** (`TK-001`, `TK-003`) o **un nombre** de persona distinto, **priorizar** esa instrucción sobre el filtro por git.
82
+
83
+ ### 2) Entrada **TK-XXX** o archivo de tarea
84
+
85
+ - Cumplir primero [Solo se indica el número de tarea](#solo-se-indica-el-número-de-tarea-tk-xxx): si hacía falta, ya se conoce la **US** vinculada.
86
+ - Implementar **esa** tarea (y solo esa), salvo que el usuario pida explícitamente más. Actualizar solo la entrada correspondiente en `progress.md`.
87
+
88
+ ### 3) Orden
89
+
90
+ - Respetar orden numérico `TK-001`, `TK-002`, … salvo dependencias obvias en el texto; si hay conflicto, **preguntar**.
91
+
92
+ ## Ritmo de implementación (una tarea por vez)
93
+
94
+ 1. Completar **una** tarea TK según su descripción, alcance y criterios de aceptación.
95
+ 2. Validar con **lint** o **build** del paquete/unidad de trabajo afectada si existe en el proyecto.
96
+ 3. **No** añadir ni ejecutar **pruebas unitarias ni E2E** durante este ciclo.
97
+ 4. Marcar la tarea en `progress.md` como **done** (o actualizar **in-progress** con notas si quedó a medias).
98
+ 5. **Preguntar al usuario** si desea continuar con la siguiente tarea. **No** arrancar la siguiente sin confirmación explícita.
99
+
100
+ ## Validación sin tests
101
+
102
+ Mientras dure el desarrollo por tareas:
103
+
104
+ - Permitido: linters, typecheck, `npm run build` / equivalente del stack.
105
+ - No permitido: escribir o lanzar suites de tests unitarios o E2E hasta la fase final acordada.
106
+
107
+ ## Cierre: pruebas (solo si el usuario acepta)
108
+
109
+ Cuando no queden tareas pendientes en el alcance acordado (o el usuario detiene el flujo):
110
+
111
+ 1. **Preguntar** si debe implementarse **prueba unitaria** (y en su caso E2E) para el trabajo realizado.
112
+ 2. Si acepta: basar casos en los **criterios de aceptación** más relevantes del **`README.md`** de la US **y** de cada **TK** ejecutado; no duplicar cobertura superflua.
113
+ 3. Si rechaza: dejar constancia en `progress.md` (nota bajo la historia o tarea).
114
+
115
+ ## Pasos resumidos para el agente
116
+
117
+ 1. Si la entrada es solo `TK-XXX` sin US ni ruta explícita, **preguntar la historia `US-XXX`** y detenerse hasta tenerla.
118
+ 2. Resolver ruta de la historia US y lista de TK afectados; leer `progress.md` o crearlo.
119
+ 3. Aplicar filtros (unidad de trabajo, implementador, instrucciones explícitas del usuario).
120
+ 4. Para **cada** tarea en orden: implementar → lint/build → actualizar `progress.md` → **preguntar si continúa**.
121
+ 5. Al terminar el conjunto acordado: ofrecer fase de tests según criterios de la US y TK.
122
+
123
+ ## Relación con otros skills
124
+
125
+ - **user-story-add-task** define el formato de los TK (metadatos, unidad de trabajo, implementador previsto); este skill **consume** esas especificaciones para código real, no para redactar TK nuevos salvo correcciones menores acordadas con el usuario.