Skill: Planificar tarea de historia de usuario
Guía para
crear o actualizar tareas
bajo una historia de usuario existente.
Alcance de un TK: La tarea es un documento de especificación técnica. Describe qué lograr, cómo implementarlo y sus dependencias dentro de la unidad de trabajo. No implementa código, no ejecuta pruebas, no crea ADRs. Lo que no está acordado va en Observaciones o se pregunta al usuario — nunca se inventa.
La plantilla canónica está en
(léela antes de escribir cualquier TK).
Subagente requerido
Este skill debe ejecutarse bajo el agente/subagente (
agents/docs-specialist.md
; en el proyecto destino instalar como
.cursor/agents/docs-specialist.md
). No ejecutar el flujo normativo de TK sin ese contexto.
Cómo preguntar al usuario
Cuando este skill indique preguntar, pedir, confirmar, validar o sugerir algo al usuario, hacerlo mediante la herramienta de preguntas estructuradas que ofrezca el cliente (la que renderiza opciones tappables o un selector de respuesta) en lugar de redactar la pregunta como prosa libre. Reglas:
- Opciones cortas y mutuamente excluyentes (2–4 por pregunta) cuando la respuesta admita categorías; usar entrada libre solo si no hay forma razonable de enumerar opciones (p. ej. el objetivo breve de un stub).
- No repreguntar lo que ya está respondido en el contexto, en , en el de la US o en las existentes de su carpeta.
- Recopilación inicial (modo A, antes de redactar): una sola tanda con hasta tres preguntas por bloque; no ir descubriendo huecos turno a turno.
- Modo B — confirmación de stubs (paso 6): una pregunta por turno con opciones / / ; no crear archivos antes de confirmación.
- Fallback: si el cliente no expone esta herramienta, formular la pregunta en prosa con opciones enumeradas (1, 2, 3…).
Cada sección posterior que diga preguntar al usuario, validar con el usuario, confirmar o sugerir al usuario asume este mecanismo; no se vuelve a repetir.
Resolución de idioma
Orden canónico compartido con el resto del ciclo de historias. Detenerse en el primer paso que aplique:
- (raíz del repo) → línea
preferred language: <ISO 639-1>
(p. ej. , ). Si no existe esa línea pero hay claves legacy (, , ), usarlas solo como fallback al leer MEMORY antiguo.
- Idioma del turno del usuario (mensaje actual).
- Preguntar al usuario qué idioma prefiere y persistir la respuesta en con
preferred language: <código>
.
Modos de invocación
El skill reconoce dos modos según lo que entregue el usuario. El modo determina el flujo a aplicar.
| Modo | Disparador | Flujo a aplicar |
|---|
| A. Tarea específica | El usuario describe una tarea concreta (objetivo, unidad, alcance) o pide editar una existente. | Flujo: Crear stub, Flujo: Crear TK completa o Flujo: Actualizar una TK existente según corresponda. |
| B. Stubs desde US | El usuario entrega solo una referencia a una historia (p. ej. «US-004», «crea las tareas para US-007», «planifica esta historia») sin describir tareas específicas. | Flujo: Sugerir stubs desde una US — propósito por defecto: proponer un conjunto de stubs agrupados por unidad de trabajo que cubra los SC y considere las BR de la US. |
En caso de duda entre A y B: preguntar al usuario antes de continuar. No combinar ambos modos en una misma ejecución.
Ubicación de archivos
| Artefacto | Ruta |
|---|
| Tarea | docs/specs/user-stories/US-XXX-[nombre-corto]/TK-XXX-[kebab-case].md
|
| Unidades de trabajo | |
| ADR | |
| Documentación técnica | docs/specs/technical-docs/
|
| Glosario | |
Convenciones del nombre de archivo
- Formato:
TK-XXX-[nombre-descriptivo].md
con en mayúsculas.
- : número secuencial por historia (no global); tres dígitos con cero a la izquierda.
- Nombre descriptivo: minúsculas, kebab-case, corto y descriptivo.
- Ejemplos:
TK-001-modelo-dominio-receta.md
, TK-002-endpoint-crear-receta.md
.
Información requerida antes de redactar
Antes de crear o editar cualquier TK, el agente debe tener clara la siguiente información. No inventar nada — si algún dato no es explícito, preguntar al usuario.
| Dato | Cómo obtenerlo | Si no está disponible |
|---|
| US padre | Indicada por el usuario | Sin de US existente no se puede crear el TK |
| Modo de invocación | Inferir del mensaje: ¿tarea específica (A) o solo referencia a US (B)? | Si es ambiguo, preguntar al usuario |
| Intención (solo modo A) | Del mensaje del usuario | Preguntar: ¿solo anclaje (stub) o TK completa lista para Ready? |
| Objetivo del TK (solo modo A) | Del mensaje del usuario | Para stub: basta un objetivo breve. Para TK completa: preguntar hasta tener contexto suficiente |
| BR y SC de la US (solo modo B) | Leer la sección Criterios de aceptación del de la US padre (subsecciones Reglas de negocio y Escenarios) | Si faltan BR-XX o SC-XX explícitos: bloquear modo B y reportar — no crear stubs |
| Unidad de trabajo | Inferir del repo o indicada por el usuario | Stub: puede quedar . TK completa: obligatoria; sin ella el estado no puede ser |
| Contexto técnico (solo TK completa) | ADRs existentes, technical-docs, descripción del usuario | Si falta decisión técnica relevante: sugerir ADR al usuario, no crearlo |
| Referencia de UI (solo TK de interfaz) | Figma, wireframe o imagen de alta fidelidad aportados por el usuario | Obligatoria para ; sin ella el TK de UI no puede salir de |
| Idioma de preferencia | Ver Resolución de idioma | Preguntar y persistir en con preferred language: <código>
|
Leer siempre el
de la US y
todas las
existentes en la carpeta antes de crear o editar cualquier tarea. Detectar solapamientos y resolverlos con el usuario antes de continuar.
Validación antes de crear
Antes de crear archivos, verificar las siguientes condiciones. Si alguna falla, no crear — informar al usuario y resolver primero.
¿Qué verificar?
- US padre existe y está Ready: la carpeta tiene con . No se pueden crear TKs sobre una US en Draft.
- ID disponible: el número propuesto no existe ya en la carpeta.
- Solapamiento de alcance: leer todas las de la carpeta de la US padre y comparar su objetivo con el de la nueva tarea. Si alguna ya cubre el mismo alcance: informar al usuario indicando cuál es el conflicto y preguntar si prefiere actualizar la existente o ajustar el alcance de la nueva.
- Unidad definida (solo TK completa): si la unidad sigue siendo tras preguntar, publicar como stub en Draft, no como TK completa.
Si hay conflicto:
⚠️ No es posible crear la tarea todavía:
- <razón concreta>
- [TK-XXX: Título](TK-XXX-nombre.md) — <razón del solapamiento, si aplica>
Flujo: Crear stub (anclaje de ID)
Un stub reserva el ID y el vínculo a la US. No requiere contexto técnico completo.
- Inferir el siguiente libre listando archivos en la carpeta de la US.
- Crear
TK-XXX-[nombre-descriptivo].md
con:
- : enlace a la US .
- : la conocida o .
- : indicado por el usuario; si no, inferir con ; omitir la línea si no aplica.
- Descripción: objetivo breve acordado — el qué, sin el cómo.
- Plan de implementación: vacío o ausente si no hay pasos definidos.
- Observaciones: pendientes reales; no rellenar con texto genérico.
- Actualizar solo si la unidad del stub no es (ver paso 2 del flujo de TK completa).
- Parar aquí. No continuar con los pasos de TK completa.
- Handoff: stub en — completar a con Flujo: Crear TK completa (modo A) antes de .
Flujo: Crear TK completa
Una TK completa puede alcanzar
si cumple todas las condiciones del checklist.
- Inferir el siguiente libre en la carpeta de la US.
- Gestionar :
- Crear desde
assets/work-units-template.md
si el archivo no existe.
- Si la unidad es nueva: añadir sección con párrafo de alcance. Si el alcance no está claro, preguntar antes de añadirla.
- No listar TKs, DTOs ni technical-docs dentro de ; solo nombre de unidad y párrafo de alcance.
- Redactar el TK siguiendo :
- Metadatos: con enlace ; indicado por el usuario, o inferido con , u omitido si no aplica.
- Descripción: qué lograr — objetivo claro, tono imperativo y verificable; sin «podría», «quizá», «tal vez».
- Dependencias: solo piezas dentro de la unidad de trabajo — componentes, servicios, modelos, librerías. No incluir aquí ADRs, technical-docs, contratos ni referencias de diseño; esos van exclusivamente en Referencias.
- Referencias: ADRs existentes, technical-docs, diseño. No crear ADRs; si falta una decisión, sugerirlo al usuario en Observaciones.
- Plan de implementación: pasos concretos acordados o derivados de fuentes citadas en Referencias. Si los pasos no se conocen aún, no inventar — indicar en Observaciones qué información falta para poder redactarlos.
- Observaciones: solo si hay pendientes reales (prerrequisitos no cumplidos, información pendiente, decisiones por tomar). Si no hay nada pendiente, omitir la sección. Si el equipo lo exige, una línea Sin pendientes documentados. Con pendientes reales: .
- Actualizar technical-docs y glossary si aplica (entradas breves; glossary no es sustituto de ADR ni technical-doc).
- Verificar el checklist antes de asignar .
- Handoff: si todas las TK del alcance acordado están , sugerir . Si otras TK siguen en , listar cuáles completar antes de implementar.
Flujo: Actualizar una TK existente
- Identificar el archivo — por número, nombre o título.
- Leer el contenido actual completo antes de editar.
- Leer el de la US y las demás TKs para detectar solapamientos con los cambios propuestos.
- Aplicar los cambios solicitados por el usuario. Reglas invariantes:
- Si hay conflicto entre el TK y el de la US: la US prevalece. Corregir el TK, no la historia.
- Si el usuario cambia el estado a Ready: verificar todas las condiciones del checklist antes de guardar.
- Si se añaden pasos al Plan: mantener tono imperativo y verificable; sin supuestos no acordados.
- Confirmar mostrando las secciones modificadas.
Flujo: Sugerir stubs desde una US
Aplica cuando el input es solo una referencia a una historia (modo B). El propósito es proponer un conjunto coherente de stubs que cubra los SC y considere las BR, sin redactar TKs completas.
Precondiciones de bloqueo — si alguna falla, no crear archivos e informar al usuario indicando la condición incumplida:
- La carpeta existe y su tiene .
- El contiene la sección Criterios de aceptación con al menos una regla de negocio () en la subsección Reglas de negocio.
- El mismo bloque contiene al menos un escenario () en la subsección Escenarios.
Pasos:
- Leer el de la US completo y todas las existentes en su carpeta.
- Verificar las precondiciones de bloqueo. Si alguna falla, no continuar: reportar al usuario qué falta y sugerir el skill correspondiente ( para alinear la US, etc.).
- Identificar unidades de trabajo a partir del alcance de la US, los SC y las BR. Una unidad puede ser un módulo, servicio, paquete, componente UI, etc. No inventar unidades no soportadas por la US; lo no claro queda o se pregunta.
- Cubrir los SC y considerar las BR. Asegurar que cada queda cubierto por al menos un stub propuesto. Las se consideran como restricciones que condicionan el alcance de los stubs (validaciones, invariantes, autorizaciones); no se replican literalmente en el TK.
- Presentar la propuesta de stubs al usuario, agrupada por unidad de trabajo. Por cada stub incluir: tentativo (siguiente libre en secuencia), nombre de archivo, unidad de trabajo (o ), objetivo breve y qué cubre. No es 1 stub por SC: varios SC pueden caer en un mismo stub si comparten unidad y alcance; un SC amplio puede dividirse si abarca varias unidades. No crear archivos en este turno — dejar explícito al final del mensaje.
- Confirmar con el usuario mediante la herramienta de preguntas estructuradas: / / . Si elige ajustar, revisar la propuesta y repetir pasos 5–6. No continuar sin confirmación explícita, salvo que el mensaje inicial ya describiera la descomposición con detalle suficiente para considerarla aprobada.
- Crear cada stub de la propuesta confirmada siguiendo el Flujo: Crear stub (Estado: Draft, descripción breve sin referenciar identificadores / en el documento, plan vacío).
- Reportar al usuario la lista de stubs creados, agrupados por unidad de trabajo, indicando brevemente qué cubre cada uno.
- Handoff: si los stubs quedaron en , indicar al usuario que debe completar cada TK a con (modo A) antes de invocar . No sugerir implementación mientras las TK del alcance sigan en Draft.
Reglas invariantes:
- No redactar Plan de implementación, ni Dependencias detalladas, ni Referencias técnicas: son stubs, no TKs completas.
- No incluir identificadores / dentro de los archivos . La consideración es del agente, no del documento.
- No crear archivos antes de la confirmación del paso 6. La traza SC/BR → stub vive en la propuesta (paso 5) y en el reporte (paso 8), no dentro de los archivos.
- Si la US es ambigua respecto a unidades de trabajo: preguntar al usuario antes de crear stubs; no inferir unidades por cuenta propia.
- Si dos stubs se solapan: consolidarlos en la propuesta (paso 5) o preguntar al usuario antes de confirmar.
Checklist antes de redactar
Información:
Ejemplos
Ejemplo 1 — Stub
- Entrada: «Solo quiero reservar TK-003, sin diseño técnico todavía.»
- Salida: en Draft, unidad , descripción mínima del objetivo, Plan vacío, Observaciones con los pendientes reales. sin cambios.
Ejemplo 2 — TK completa
- Entrada: «TK para el diálogo de selección de ítem usando Material; la US tiene criterios; el ADR de UI está en .»
- Salida: TK con unidad concreta, Plan con pasos verificables, referencias al ADR con ruta relativa, actualizado si la unidad es nueva. si Observaciones está limpia; si quedan pendientes.
Ejemplo 3 — Información incompleta
- Entrada: «TK-005 para la API Z.»
- Comportamiento: El agente identifica que faltan contratos, endpoints y DTOs para redactar una TK completa. Pregunta al usuario antes de continuar. Si el usuario solo quiere reservar el ID: crea un stub en Draft. No redacta TK completa con supuestos.
Ejemplo 4 — Stubs desde una US (modo B)
- Entrada: «Crea las tareas necesarias para implementar US-004.» (sin describir tareas específicas).
- Comportamiento — turno 1: El agente activa el Flujo: Sugerir stubs desde una US. Verifica que está en y contiene BR y SC en Criterios de aceptación. Lee la US completa, identifica unidades de trabajo, y presenta la propuesta agrupada por unidad (paso 5) con tentativo, nombre de archivo, objetivo breve y cobertura de SC por stub. Pregunta con opciones / / . No crea archivos.
- Comportamiento — turno 2: Tras confirmación, crea cada stub en sin referencias a / en el archivo (paso 7) y reporta rutas creadas con cobertura SC (paso 8).
- Salida: Stubs a en Draft; actualizado solo si alguna unidad es nueva y su alcance está claro. Handoff: completar cada TK a con antes de .
Ejemplo 5 — US no Ready o sin BR/SC
- Entrada: «Tareas para US-009.» — pero está en o no tiene SC documentados en Criterios de aceptación.
- Comportamiento: El agente bloquea, no crea ningún stub. Reporta al usuario qué falta (estado, BR, SC) y sugiere usar para alinear la US antes de planificar tareas.
Anti-patterns
- Implementar features, migraciones o tests mientras se redacta el TK.
- Crear ADRs sin pedido explícito del usuario; solo referenciar existentes o sugerir su creación.
- Publicar en un stub sin criterios ni contexto técnico.
- Publicar con pendientes en Observaciones.
- Ignorar las TKs existentes en la carpeta; duplicar o contradecir su alcance.
- Meter listas de TKs, DTOs o technical-docs largos en .
- Inventar flujos, entidades o integraciones en lugar de preguntar.
- Usar como especificación técnica o sustituto de ADR.
- Rellenar secciones con supuestos o ejemplos genéricos; dejar pendientes reales sin listar en Observaciones.
- Narrar el trabajo realizado en el mensaje al usuario («leí la US», «creé el TK», «actualicé work-units»); solo reportar resultados y pendientes.
- Modo B: crear stubs desde una US en , o sin / explícitos en Criterios de aceptación de su — debe bloquear y reportar.
- Modo B: incluir identificadores / dentro del archivo ; la cobertura se reporta al usuario, no se documenta en el TK.
- Modo B: forzar un mapeo 1 stub = 1 SC; los stubs se agrupan por unidad de trabajo, no por escenario.
- Modo B: redactar Plan de implementación, Dependencias o Referencias detalladas en stubs propuestos desde una US — son stubs, no TKs completas.
- Modo B: crear stubs sin haber presentado la propuesta (paso 5) y recibido confirmación (paso 6).
- Lanzar preguntas al usuario como prosa libre cuando el cliente expone una herramienta de preguntas estructuradas; o ir descubriendo huecos turno a turno en lugar de agrupar las preguntas pendientes en una sola tanda al inicio.
Notas
Handoffs del ciclo
Posición:
planificación — entre
e
.
| |
|---|
| Entrada | US con y Criterios de aceptación (, ) en su . Si la US está en Draft o faltan BR/SC: bloquear y devolver handoff a . |
| Salida mínima (modo B) | Stubs en + cobertura SC reportada al usuario. |
| Salida para implementar | Cada TK del alcance acordado en (Plan, Dependencias y Referencias según checklist). Stubs en Draft no habilitan . |
| Siguiente paso | — solo cuando US Ready y las TK a ejecutar están Ready. Sugerir al cerrar la última TK Ready del alcance. |
| Regreso desde define | Cambio funcional en la US → releer y actualizar TKs afectadas antes de continuar. |
| Regreso desde implement | TK fuera de alcance o ambigüedad técnica → ajustar el TK aquí; no modificar el de la US. Si el conflicto es funcional, escalar a . |
work-units.md
Cada sección
contiene solo el nombre de la unidad y una descripción
corta — lo estrictamente necesario para entender su alcance: qué cubre y, si reduce ambigüedad, qué queda fuera. No es un índice de tareas ni un inventario de artefactos técnicos. Cuando la unidad de un stub es
, no es obligatorio crear la sección hasta que se concrete.
Mensaje al usuario
Solo resultados y lo que el usuario debe saber o decidir. No incluir razonamiento interno, cadenas de pensamiento ni narración del trabajo en curso. Si hay pendientes o aclaraciones, listarlos en viñetas agrupadas por TK.