Skip to content

Commit 7396e71

Browse files
authored
Merge pull request #24 from gtrabanco/feat/06-design-feature
feat(06-design-feature): product definition splits into design-feature (plan-feature 2.0.0, major)
2 parents 505346c + 7335fa3 commit 7396e71

26 files changed

Lines changed: 1873 additions & 321 deletions

File tree

CHANGELOG.es.md

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -164,9 +164,15 @@ Cómo funciona el pinning realmente, **verificado** contra el CLI `skills`:
164164
| 1.1.0 | 2026-06-05 | menor | La revisión cada 2 fases pasa de auto-ejecución en turno a **hand-off** (corre en su propio tier) |
165165
| 1.0.0 | 2026-06-05 || Primer release versionado |
166166

167+
#### `design-feature`
168+
| Versión | Fecha | Tipo | Qué cambió |
169+
|---|---|---|---|
170+
| 1.0.0 | 2026-07-09 || Nueva skill: definición de producto, separada de `plan-feature`. Incorpora la entrevista de idea en crudo y recorre un checklist fijo de **cierre de capacidades** (por entidad: CRUD + transiciones de estado, cada una con UI + API + test, o `n/a: <razón>` explícito; por capacidad: punto de entrada + ACL; por rol: asignado/revocado/visto dónde) hacia la mitad de producto del SPEC + criterios de aceptación, sellando `## Design status: designed`. Hace upsert al reejecutarse (nunca destruye `decisions.md`); `<slug>` sin más revisa y pregunta, `<slug> "<instrucción>"` aplica directamente. |
171+
167172
#### `plan-feature`
168173
| Versión | Fecha | Tipo | Qué cambió |
169174
|---|---|---|---|
175+
| 2.0.0 | 2026-07-09 | mayor | **Cambio incompatible:** la definición de producto (entrevista de idea en crudo + cierre de capacidades) se traslada a la nueva skill `design-feature`. `plan-feature` ahora es solo planificación de ingeniería, elimina el flag `--interview` y el paso interno `plan-feature-interview` (borrado), y añade una **puerta de redirección sin flag de bypass**: una feature sin diseñar (sin `SPEC.md`, `## Design status` no `designed`, o Cierre de capacidades vacío) PARA y señala `/design-feature <slug>`. Nota de migración en `docs/workflow/MIGRATION.md`. |
170176
| 1.6.0 | 2026-07-05 | menor | Envelope máquina: cada invocación termina ahora con un bloque JSON fijo (state, unit, phase, pr, findings, blockers, dependencies, next + pista de tier de modelo) para orquestación programática — esquema en la skill interna `orchestration-envelope`, protocolo en `docs/workflow/ORCHESTRATION.md`. BLOCKED lleva la cadena de dependencias incumplida y el orden de construcción. |
171177
| 1.5.1 | 2026-07-04 | parche | Sin cambio de comportamiento: el frontmatter `model:`/`effort:` de esta skill se trasladó a `docs/workflow/model-routing.yml` (usado solo para construir la rama `#claude`); la guía sobre modelos no-Claude en la descripción se sustituyó por un puntero a `#claude`. |
172178
| 1.5.0 | 2026-07-03 | menor | Casilla de precedencia de idioma de artefactos añadida al contrato de turno. |
@@ -309,15 +315,18 @@ Cómo funciona el pinning realmente, **verificado** contra el CLI `skills`:
309315
| | 1.0.2 | 2026-07-02 | parche | La referencia a revisiones companion ahora apunta al pack de revisión interno (`review-*`) |
310316
| | 1.0.1 | 2026-06-09 | parche | Descripción acortada 96 → 36 palabras (contexto siempre cargado); cuerpo sin cambios |
311317
| | 1.0.0 | 2026-06-05 || El motor de hallazgos + rúbrica de clasificación que compone `review-change` |
312-
| `plan-feature-interview` | 1.2.1 | 2026-07-04 | parche | Sin cambio de comportamiento: el frontmatter `model:`/`effort:` de esta skill se trasladó a `docs/workflow/model-routing.yml` (usado solo para construir la rama `#claude`). |
318+
| `plan-feature-interview` || 2026-07-09 | eliminada | **Retirada.** Su lógica de entrevista de idea en crudo se trasladó a la nueva skill de cara al usuario `design-feature` (la definición de producto es ahora su propia etapa del pipeline, no un detalle interno de enrutado de `plan-feature`). `skills/plan-feature-interview/` borrado. Ver `docs/workflow/MIGRATION.md`. |
319+
| | 1.2.1 | 2026-07-04 | parche | Sin cambio de comportamiento: el frontmatter `model:`/`effort:` de esta skill se trasladó a `docs/workflow/model-routing.yml` (usado solo para construir la rama `#claude`). |
313320
| | 1.2.0 | 2026-07-02 | menor | Reporte de cierre fijo devuelto al router (dimensiones resueltas, preguntas abiertas, issue de tracking) |
314321
| 1.1.0 | 2026-06-09 | menor | Estima el tamaño `XS/S/M/L`; pide una referencia de diseño UI en features con UI |
315322
| | 1.0.0 | 2026-06-05 || Entrevista una idea en crudo hasta un SPEC |
316-
| `plan-feature-from-issue` | 1.2.1 | 2026-07-04 | parche | Sin cambio de comportamiento: el frontmatter `model:`/`effort:` de esta skill se trasladó a `docs/workflow/model-routing.yml` (usado solo para construir la rama `#claude`). |
323+
| `plan-feature-from-issue` | 1.3.0 | 2026-07-09 | menor | Ahora escribe la **mitad de producto** del SPEC (convención de dos mitades) y debe satisfacer el **cierre de capacidades** antes de entregar — un issue delgado sin suficiente contenido para completarlo se entrega a `design-feature` (compuesta en el mismo turno solo si es de tier ≥) en vez de simular `## Design status: designed`. |
324+
| | 1.2.1 | 2026-07-04 | parche | Sin cambio de comportamiento: el frontmatter `model:`/`effort:` de esta skill se trasladó a `docs/workflow/model-routing.yml` (usado solo para construir la rama `#claude`). |
317325
| | 1.2.0 | 2026-07-02 | menor | Reporte de cierre fijo devuelto al router (veredicto, huecos cerrados, Closes #N enlazado) |
318326
| 1.1.0 | 2026-06-09 | menor | Produce un SPEC acotado **dimensionado** con `Closes #N` |
319327
| | 1.0.0 | 2026-06-05 || Issue → SPEC acotado |
320-
| `plan-feature-scaffold` | 1.4.0 | 2026-07-04 | menor | La tarea de cierre del TASKS.md generado ahora dice `gh pr create --body-file <path>` (fichero Markdown), nunca `--body`/heredoc inline — para que los ejecutores no emitan backticks escapados con `\` literales en el cuerpo del PR. |
328+
| `plan-feature-scaffold` | 1.5.0 | 2026-07-09 | menor | Ahora completa solo la **mitad de ingeniería** del SPEC — la mitad de producto (objetivo, contexto, alcance, cierre de capacidades) la escribe `design-feature` / `plan-feature-from-issue` y se verifica `designed` antes de que esta skill se ejecute; para en vez de editar una mitad de producto sin diseñar o ausente. |
329+
| | 1.4.0 | 2026-07-04 | menor | La tarea de cierre del TASKS.md generado ahora dice `gh pr create --body-file <path>` (fichero Markdown), nunca `--body`/heredoc inline — para que los ejecutores no emitan backticks escapados con `\` literales en el cuerpo del PR. |
321330
| `plan-feature-scaffold` | 1.3.1 | 2026-07-04 | parche | Sin cambio de comportamiento: el frontmatter `model:`/`effort:` de esta skill se trasladó a `docs/workflow/model-routing.yml` (usado solo para construir la rama `#claude`). |
322331
| | 1.3.0 | 2026-07-03 | menor | La fase final del TASKS.md generado termina con tareas literales de cierre: abrir PR + imprimir URL en el chat, enlazar la fila del roadmap, commitear y pushear el enlace. |
323332
| 1.2.0 | 2026-07-02 | menor | Reporte de cierre fijo (artefactos escritos, registro en roadmap, nº de fases, preguntas abiertas) |
@@ -348,6 +357,22 @@ Cómo funciona el pinning realmente, **verificado** contra el CLI `skills`:
348357

349358
## Registro cronológico (más reciente primero)
350359

360+
- **2026-07-09 — la definición de producto se separa en `design-feature`.**
361+
Nueva skill de cara al usuario `design-feature` 1.0.0 asume la definición de
362+
producto: incorpora la entrevista de idea en crudo, recorre un checklist fijo
363+
de **cierre de capacidades** (por entidad → CRUD + transiciones de estado +
364+
UI + API + test, o `n/a` explícito; por capacidad → punto de entrada + ACL;
365+
por rol → asignado/revocado/visto) hacia criterios de aceptación exhaustivos,
366+
y escribe la **mitad de producto** del SPEC (`docs/features/_TEMPLATE/SPEC.md`
367+
es ahora un único SPEC en dos mitades). `plan-feature` 2.0.0 (**mayor**,
368+
incompatible) pasa a ser solo planificación de ingeniería: elimina el flag
369+
`--interview`, añade una **puerta de redirección sin flag de bypass**
370+
(feature sin diseñar → PARA → `/design-feature <slug>`), y se borra el paso
371+
interno `plan-feature-interview`. `plan-feature-from-issue` 1.3.0 y
372+
`plan-feature-scaffold` 1.5.0 se alinean a la convención de dos mitades. Nota
373+
de migración en `docs/workflow/MIGRATION.md`. Feature `06-design-feature`
374+
(backlog U3, cierra #13).
375+
351376
- **2026-07-09 — revisión adversarial con contexto limpio.** Endurece la
352377
revisión final obligatoria de fin de unidad contra el fallo de compartir
353378
contexto, donde la conversación que escribió un cambio también lo revisa:

CHANGELOG.md

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -162,9 +162,15 @@ How pinning actually works, verified against the `skills` CLI:
162162
| 1.1.0 | 2026-06-05 | minor | Every-2-phases review changed from in-turn auto-run to **hand-off** (runs at its own tier) |
163163
| 1.0.0 | 2026-06-05 || First versioned release |
164164

165+
#### `design-feature`
166+
| Version | Date | Type | What changed |
167+
|---|---|---|---|
168+
| 1.0.0 | 2026-07-09 || New skill: product definition, split out of `plan-feature`. Folds in the raw-idea interview and walks a fixed **capability-closure** checklist (per entity: CRUD + state transitions, each with UI + API + test, or explicit `n/a: <reason>`; per capability: entry point + ACL; per role: assigned/revoked/viewed) into the SPEC's Product half + Acceptance criteria, stamping `## Design status: designed`. Upserts on re-run (never destroys `decisions.md`); bare `<slug>` reviews and asks, `<slug> "<instruction>"` applies directly. |
169+
165170
#### `plan-feature`
166171
| Version | Date | Type | What changed |
167172
|---|---|---|---|
173+
| 2.0.0 | 2026-07-09 | major | **Breaking:** product definition (raw-idea interview + capability closure) moves to the new `design-feature` skill. `plan-feature` is engineering-planning only, drops the `--interview` flag and the internal `plan-feature-interview` step (deleted), and gains a **redirect gate with no bypass flag**: an undesigned feature (no `SPEC.md`, `## Design status` not `designed`, or empty Capability closure) STOPS and points at `/design-feature <slug>`. Migration note in `docs/workflow/MIGRATION.md`. |
168174
| 1.6.0 | 2026-07-05 | minor | Machine envelope: every invocation now ends with a fixed JSON block (state, unit, phase, pr, findings, blockers, dependencies, next + model-tier hint) for programmatic orchestration — schema in the internal `orchestration-envelope` skill, protocol in `docs/workflow/ORCHESTRATION.md`. BLOCKED carries the unmet dependency chain and build order. |
169175
| 1.5.1 | 2026-07-04 | patch | No behavior change: this skill's `model:`/`effort:` frontmatter moved to `docs/workflow/model-routing.yml` (used only to build the `#claude` branch); the description's non-Claude guidance was replaced with a pointer to `#claude`. |
170176
| 1.5.0 | 2026-07-03 | minor | Artifact-language precedence box added to the turn contract. |
@@ -307,15 +313,18 @@ How pinning actually works, verified against the `skills` CLI:
307313
| | 1.0.2 | 2026-07-02 | patch | Companion-review reference now points at the internal review pack (`review-*`) |
308314
| | 1.0.1 | 2026-06-09 | patch | Description shortened 96 → 36 words (always-loaded context); body unchanged |
309315
| | 1.0.0 | 2026-06-05 || The findings engine + classification rubric `review-change` composes |
310-
| `plan-feature-interview` | 1.2.1 | 2026-07-04 | patch | No behavior change: this skill's `model:`/`effort:` frontmatter moved to `docs/workflow/model-routing.yml` (used only to build the `#claude` branch). |
316+
| `plan-feature-interview` || 2026-07-09 | removed | **Retired.** Its raw-idea-interview logic moved into the new user-facing `design-feature` skill (product definition is now its own pipeline stage, not an internal `plan-feature` routing detail). `skills/plan-feature-interview/` deleted. See `docs/workflow/MIGRATION.md`. |
317+
| | 1.2.1 | 2026-07-04 | patch | No behavior change: this skill's `model:`/`effort:` frontmatter moved to `docs/workflow/model-routing.yml` (used only to build the `#claude` branch). |
311318
| | 1.2.0 | 2026-07-02 | minor | Fixed completion report returned to the router (dimensions resolved, open questions, tracking issue) |
312319
| 1.1.0 | 2026-06-09 | minor | Estimates size `XS/S/M/L`; asks for a UI design reference on UI features |
313320
| | 1.0.0 | 2026-06-05 || Interview a raw idea into a SPEC |
314-
| `plan-feature-from-issue` | 1.2.1 | 2026-07-04 | patch | No behavior change: this skill's `model:`/`effort:` frontmatter moved to `docs/workflow/model-routing.yml` (used only to build the `#claude` branch). |
321+
| `plan-feature-from-issue` | 1.3.0 | 2026-07-09 | minor | Now writes the SPEC's **product half** (two-halves convention) and must satisfy **capability closure** before handing off — a thin issue without enough to fill it is handed to `design-feature` (composed in-turn only at ≥ its tier) rather than faking `## Design status: designed`. |
322+
| | 1.2.1 | 2026-07-04 | patch | No behavior change: this skill's `model:`/`effort:` frontmatter moved to `docs/workflow/model-routing.yml` (used only to build the `#claude` branch). |
315323
| | 1.2.0 | 2026-07-02 | minor | Fixed completion report returned to the router (verdict, gaps closed, Closes #N wired) |
316324
| 1.1.0 | 2026-06-09 | minor | Produces a **sized** scoped SPEC with `Closes #N` |
317325
| | 1.0.0 | 2026-06-05 || Issue → scoped SPEC |
318-
| `plan-feature-scaffold` | 1.4.0 | 2026-07-04 | minor | Generated TASKS.md close-out task now says `gh pr create --body-file <path>` (Markdown file), never inline `--body`/heredoc — so executors don't emit literal `\`-escaped backticks in the PR body. |
326+
| `plan-feature-scaffold` | 1.5.0 | 2026-07-09 | minor | Fills only the SPEC's **engineering half** now — the product half (goal, context, scope, capability closure) is written by `design-feature` / `plan-feature-from-issue` and verified `designed` before this skill ever runs; it stops rather than editing an undesigned or missing product half. |
327+
| | 1.4.0 | 2026-07-04 | minor | Generated TASKS.md close-out task now says `gh pr create --body-file <path>` (Markdown file), never inline `--body`/heredoc — so executors don't emit literal `\`-escaped backticks in the PR body. |
319328
| `plan-feature-scaffold` | 1.3.1 | 2026-07-04 | patch | No behavior change: this skill's `model:`/`effort:` frontmatter moved to `docs/workflow/model-routing.yml` (used only to build the `#claude` branch). |
320329
| | 1.3.0 | 2026-07-03 | minor | Generated TASKS.md final phase ends with literal close-out tasks: open PR + print URL in chat, link the roadmap row, commit & push the link. |
321330
| 1.2.0 | 2026-07-02 | minor | Fixed completion report (artifacts written, roadmap registration, phase count, open questions) |
@@ -346,6 +355,21 @@ How pinning actually works, verified against the `skills` CLI:
346355

347356
## Release log (chronological, newest first)
348357

358+
- **2026-07-09 — product definition splits into `design-feature`.** New
359+
user-facing skill `design-feature` 1.0.0 owns product definition: folds in
360+
the raw-idea interview, walks a fixed **capability-closure** checklist (per
361+
entity → CRUD + state transitions + UI + API + test, or explicit `n/a`; per
362+
capability → entry point + ACL; per role → assigned/revoked/viewed) into
363+
exhaustive acceptance criteria, and writes the SPEC's **product half**
364+
(`docs/features/_TEMPLATE/SPEC.md` is now one SPEC in two halves). `plan-feature`
365+
2.0.0 (**major**, breaking) becomes engineering-planning only: it drops the
366+
`--interview` flag, gains a **redirect gate with no bypass flag** (undesigned
367+
feature → STOP → `/design-feature <slug>`), and the internal
368+
`plan-feature-interview` step is deleted. `plan-feature-from-issue` 1.3.0 and
369+
`plan-feature-scaffold` 1.5.0 align to the two-halves convention. Migration
370+
note in `docs/workflow/MIGRATION.md`. Feature `06-design-feature`
371+
(backlog U3, closes #13).
372+
349373
- **2026-07-09 — adversarial context-clean review.** Hardens the mandatory
350374
end-of-unit review against the context-sharing failure mode where the
351375
conversation that wrote a change also reviews it: `review-implementation`

0 commit comments

Comments
 (0)