Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3.1 KiB
description
| description |
|---|
| Gestiona issues del registry en dev/issues/. Subcomandos: list, show, status, board, dep, roadmap, tag, done, stale, create. Frontmatter YAML canonico (issue 0100). |
/issue — Gestionar issues del registry
Issues viven en dev/issues/NNNN-<slug>.md con frontmatter YAML canonico (id, title, status, type, domain, scope, priority, depends, blocks, related, created, updated, tags).
Allowlists en dev/TAXONOMY.md (no inventar valores).
Diferencia con dev/flows/:
- Issues = bugs, features, refactors, chores, epics de implementacion.
- Flows = casos de uso end-to-end multi-app.
Sintaxis
/issue list [--domain X] [--type Y] [--status Z] [--prio P] [--epic NNNN]
/issue show NNNN
/issue status NNNN # acceptance % + estado deps
/issue board # kanban pendiente/in-progress/bloqueado/done
/issue dep NNNN # arbol bloquea/depende
/issue roadmap NNNN # epic + sub-IDs (NNNNa, NNNNb, ...)
/issue tag NNNN +X -Y # mantenimiento tags/domain
/issue done NNNN # mueve a completed/, valida deps
/issue stale [--days 30]
/issue create <slug> --type T --domain D [--prio P] [--depends NNNN]
Implementacion
Fase 1 (manual via Claude):
El agente lee dev/issues/*.md, parsea frontmatter YAML con yaml.safe_load, aplica el filtro, imprime tabla.
import yaml, pathlib, re
issues = []
for f in pathlib.Path("dev/issues").glob("*.md"):
if f.name in {"README.md", "template.md"}: continue
txt = f.read_text()
m = re.match(r"^---\n(.*?)\n---", txt, re.S)
if not m: continue
fm = yaml.safe_load(m.group(1)) or {}
fm["_path"] = str(f)
issues.append(fm)
# filter + print
Fase 2 (cuando 0101 dev_console exista):
Cada subcomando se mapea a ./apps/dev_console/dev_console issue <subcomando> $ARGS.
Subcomandos clave
list
Imprime tabla id | title | status | type | domain | priority | depends_pending. Filtrable por flags.
show NNNN
Read directo del .md + render del frontmatter como tabla + body como markdown.
status NNNN
Cuenta checkboxes en ## Acceptance + chequea si todos los depends estan en status: completado. Si alguno no, marca bloqueado.
board
Tabla 4 columnas (pendiente / in-progress / bloqueado / completado_hoy). Card por issue: id + title + prio. Status bloqueado se calcula on-the-fly desde depends.
roadmap NNNN
Si type: epic: lista sub-issues NNNNa, NNNNb, etc. con su estado. Si no epic: error "not an epic".
done NNNN
- Lee frontmatter.
- Verifica todos
dependscerrados (sino, error). - Cuenta
## Acceptance100% (sino, error). git mv dev/issues/NNNN-*.md dev/issues/completed/.- Actualiza
status: completado+updated: today.
create <slug> --type T --domain D
Genera siguiente ID libre (max existing + 1, zero-padded 4). Scaffold desde plantilla minima con frontmatter rellenado.
Reglas
- Domain debe estar en
dev/TAXONOMY.mdallowlist. - Scope/type/priority idem.
idsiempre string"NNNN"(zero-padded, sub-IDs con sufijoa-z).- Modificar frontmatter SIEMPRE preserva campos no tocados (no overwrite).