create-hu-shortcut
Skill para crear Historias de Usuario (HU) en Shortcut usando el CLI short, con flujo interactivo.
Prerequisitos: short CLI instalado (npm install -g @shortcut-cli/shortcut-cli) y SHORTCUT_API_TOKEN en env.
Flujo de trabajo
- Recopilar contexto tecnico
Explorar el codebase para encontrar archivos, lineas y snippets relevantes. Usar agentes explore o herramientas Grep/Glob.
- Preguntar al usuario (AskUserQuestion)
Antes de crear la historia, hacer estas preguntas en un solo bloque:
AskUserQuestion({ questions: [ { question: "A que equipo debe ir esta historia?", header: "Equipo", options: [ { label: "Returns", description: "Equipo de devoluciones" }, { label: "Atlas", description: "Equipo de plataforma" }, { label: "Integrations", description: "Equipo de integraciones" }, { label: "AI", description: "Equipo de IA" } ], multiSelect: false }, { question: "En que sprint debe ir?", header: "Sprint", options: [ { label: "Siguiente sprint", description: "Se asigna al proximo sprint disponible" }, { label: "Sprint actual", description: "Se asigna al sprint en curso" }, { label: "Sin sprint", description: "Se deja en backlog sin sprint asignado" } ], multiSelect: false }, { question: "Que labels deberia llevar esta historia?", header: "Labels", options: [ { label: "Frontend", description: "Cambios en merchants-frontend" }, { label: "Backend", description: "Cambios en el backend" }, { label: "Ambos", description: "Requiere cambios en frontend y backend" } ], multiSelect: true }, { question: "En que estado debe quedar la historia?", header: "Estado", options: [ { label: "Ready for Product Definition", description: "Pendiente de definicion de producto" }, { label: "Ready for Sprint", description: "Lista para ser planificada en un sprint" }, { label: "Ready for Development", description: "Lista para desarrollo" } ], multiSelect: false } ] })
- Obtener datos de Shortcut
Segun las respuestas del usuario, ejecutar en paralelo:
# Siempre: obtener teams con UUIDs
short teams
# Si eligio sprint actual o siguiente: listar iteraciones
short iterations
# Para labels
short labels
# Para obtener el ID del workflow state elegido
short workflows
- Crear la historia
short create \
--title "Titulo corto sin tildes ni ñ" \
--type feature \
--team <UUID-del-equipo> \
--description "## Contexto\n\n...\n\n---\n\n## Propuesta\n\n..."
- Post-creacion
Asignar labels, iteration y estado si no se pudieron establecer en el create:
# Asignar labels
short story <ID> --label "frontend"
short story <ID> --label "backend"
# Asignar iteration (sprint)
short story <ID> --iteration <ITER_ID>
# Mover a estado correcto
short story <ID> --state "Ready for Development"
Plantilla de descripcion
Contexto
[Por que se necesita el cambio. Quien lo solicito. Comportamiento actual.]
Frontend (repo)
ruta/al/archivo.jsx- Descripcion del codigo afectado
Backend (repo)
ruta/models.py- Campo/validacion afectada- Endpoint afectado:
PATCH /ruta/del/endpoint
Propuesta
Frontend
- Cambios concretos por archivo
Backend
- Cambios concretos por archivo
Notas
- Consideraciones adicionales
Gotchas
| Problema | Solucion |
|---|---|
| Error 400 al crear story | --team DEBE ser UUID, NO mention_name. Obtener de short teams |
| Encoding roto en titulo | Sin tildes ni ñ en --title, ok en --description |
| Labels no se asignan al crear | Usar short story <ID> --label "name" despues de crear |
| Sprint "siguiente" ambiguo | short iterations devuelve lista, elegir el correcto por fechas |
| State no se asigna en create | Usar short story <ID> --state "State Name" despues |
URL de la historia
El CLI devuelve el ID. El link es: https://app.shortcut.com/reveniio/story/{ID}
Flujo completo resumido
- Explorar codebase -> contexto tecnico
- AskUserQuestion -> equipo, sprint, labels, estado
short teams+short iterations+short labels+short workflows-> IDs realesshort create-> historia creadashort story <ID> --label/--iteration/--state-> metadata asignada- Devolver link al usuario