fad4006f60
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
140 lines
4.2 KiB
Markdown
140 lines
4.2 KiB
Markdown
---
|
|
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 <subcomando> "$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 <subcomando> [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 <slug> --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.
|