--- id: "0103" title: "Taxonomia + slash commands /issue /flow /work" status: pendiente type: feature domain: - meta scope: registry-only priority: alta depends: [] blocks: [] related: [] created: 2026-05-17 updated: 2026-05-17 tags: [] --- # 0103 — Taxonomia + slash commands /issue /flow /work **Status:** pendiente **Created:** 2026-05-16 **Type:** feature **Priority:** alta **Domain:** meta **Scope:** registry-only **Depends:** 0100 (frontmatter ya canonico), 0101 (dev_console binary) **Blocks:** 0102 (work dashboard usa los slash desde la tab) **Related:** todos los issues + flows ## Problema Sin taxonomia formal, todo issue/flow se mezcla en un saco. `dev_console` (issue 0101) necesita un schema concreto para filtros: que dominios existen, que tipos son validos, que estados, que scopes. Y los slash commands `/issue *` / `/flow *` / `/work *` necesitan existir como archivos en `.claude/commands/` para que Claude Code los reconozca. ## Objetivo ### A) Taxonomia documentada Crear `dev/TAXONOMY.md` con la lista canonica: **Dominios** (allowlist): ``` meta, cpp-stack, kanban, trading, gamedev, osint, data-ingest, registry-quality, notify, imagegen, apps-infra, dev-ux, deploy, frontend, mcp, browser, telemetry, docs ``` **Tipos**: ``` app | feature | bugfix | refactor | chore | docs | spike | epic | infra | planning ``` **Estados**: ``` pendiente | in-progress | bloqueado | completado | deferred ``` **Scopes**: ``` registry-only | app-scoped | multi-app | cross-stack ``` **Prioridades**: ``` alta | media | baja ``` **Flow patterns**: ``` smoke-cron | prod-data | event-driven | manual-deep | gitops | realtime-loop ``` ### B) Slash commands Crear `.claude/commands/issue.md`, `flow.md`, `work.md`. Cada uno con frontmatter que define `tool: Bash` + un `command:` que llama a `dev_console "$ARGS"`. Mientras 0101 no este listo: stub que avisa. ```yaml # .claude/commands/issue.md --- description: Gestiona issues del registry (list, show, status, board, done, ...) allowed-tools: [Bash] --- Usage: /issue [args] Subcomandos: - list [--domain X] [--status Y] [--prio P] - show NNNN - status NNNN - board - dep NNNN - roadmap NNNN - tag NNNN +X -Y - done NNNN - stale [--days N] - create --type T --domain D Run: !`./apps/dev_console/dev_console issue $ARGUMENTS` ``` ### C) Aplicar tags retroactivos Pipeline `tag_existing_issues_bash_pipelines` que, basado en heuristicas (nombre del archivo, contenido), propone `domain` y `scope` para los 71 issues. Output: lista para review humano (no escribe sin confirmacion). Heuristicas iniciales: - `cpp-*` -> domain `cpp-stack` - `kanban-*` -> domain `kanban` - `trading-*` -> domain `trading` - `gamedev-*` -> domain `gamedev` - `osint-*`, `odr-*` -> domain `osint` - `cpp-app-*`, `apps-*`, `init-*-app` -> scope `app-scoped` - `roadmap` en el title -> type `epic` ## Acceptance - [ ] `dev/TAXONOMY.md` creado con todas las listas + descripcion 1-frase por valor. - [ ] `.claude/commands/{issue,flow,work}.md` existen y son visibles a Claude Code. - [ ] `fn doctor issues` (subcomando de 0100) valida `domain` y `scope` contra la allowlist. - [ ] Pipeline de tags retroactivos corre + produce reporte. - [ ] >=80% de los 71 issues quedan clasificados sin intervencion humana. ## Definition of Done ### Generico - [ ] **Repetibilidad**: pipeline + slash commands estables; no varian salida. - [ ] **Observabilidad**: cada slash command pasa por hook PostToolUse -> `call_monitor.calls`. - [ ] **Error-path**: dominio invalido -> error claro + sugerencia ("did you mean ...?"). - [ ] **Idempotencia**: pipeline 2x = 0 cambios despues de primera pasada. - [ ] **Secrets**: N/A. - [ ] **Docs**: TAXONOMY referenciado desde `.claude/rules/INDEX.md`. - [ ] **Registry-first**: pipeline reusa parsers existentes. - [ ] **INDEX + status**: issue cerrado. ### User-facing - [ ] **User-facing**: usuario teclea `/issue list --domain trading` en Claude Code y ve los 10 sub-issues del roadmap trading. - [ ] **User-facing repeat**: comandos disponibles desde cualquier sesion, no estado por sesion. - [ ] **User-facing onboarding**: `.claude/commands/issue.md` autodescribe los subcomandos (Claude Code los muestra al tipear `/issue` + tab). - [ ] **User-facing latencia**: <500ms por slash command.