fad4006f60
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
94 lines
3.1 KiB
Markdown
94 lines
3.1 KiB
Markdown
---
|
|
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.
|
|
|
|
```python
|
|
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`
|
|
|
|
1. Lee frontmatter.
|
|
2. Verifica todos `depends` cerrados (sino, error).
|
|
3. Cuenta `## Acceptance` 100% (sino, error).
|
|
4. `git mv dev/issues/NNNN-*.md dev/issues/completed/`.
|
|
5. 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.md` allowlist.
|
|
- Scope/type/priority idem.
|
|
- `id` siempre string `"NNNN"` (zero-padded, sub-IDs con sufijo `a-z`).
|
|
- Modificar frontmatter SIEMPRE preserva campos no tocados (no overwrite).
|