---
name: gd-workflow
description: >
  Token-economy orchestrator for /gd:* commands. Prevents double-read anti-pattern,
  enforces multi-provider model routing (Claude/Qwen/Gemini/Codex), session checkpointing,
  scope caps, and lazy delegation. The single source of truth for cost control.
  Triggers on explicit /gd-workflow call, bloated sessions (>8k words), or any /gd:* via gd-command-governance step 4.
license: MIT
metadata:
  author: good4d
  version: "3.1-dual-flow"
---

# Skill: gd-workflow
**Slugs:** `--change="<slug>"` `--dev-brief="<path>"` `--tenant="<tenantId>"` (JWT, nunca body/query)

## Propósito
Orquestar el flujo de trabajo del Arquitecto: gate de tokens, routing de modelos, generación de Dev-Ready Brief para el equipo de desarrollo.

## Cuándo activar
- El Arquitecto ejecuta `/gd-workflow "descripción"` para analizar un problema y delegar implementación
- Sesión > 8k palabras (auto-gate)
- Cualquier `/gd:*` command pasa por aquí via gd-command-governance paso 4

## Cuándo NO activar
- El desarrollador intenta ejecutar este SKILL directamente → redirigir a `DEV-BRIEF.md` + su IDE
- La tarea es exploración pura sin implementación → usar `/gd:explore`

## Continuous Learning Contract
Post-ejecución: si el Brief generado requirió más de 3 iteraciones o el desarrollador reportó ambigüedad, guardar la decisión de formato en Engram con `mem_add type=decision`.

> **IMPORTANTE — 2 flujos separados**
> Este SKILL es solo para el **Arquitecto (Claude Code)**.
> Los desarrolladores reciben un Dev-Ready Brief y lo ejecutan en su IDE. No corren este comando.

**Gate:** `node scripts/workflow-orchestrator.mjs full-gate "<prompt>" --zero-cost --json`

## Protocolo Arquitecto (6 pasos)

```
1. TOKEN GATE  → node scripts/workflow-orchestrator.mjs token-gate --framework --json
   BLOCK si economyScore < 70 o cap exceeded
2. SESSION GATE → node scripts/workflow-orchestrator.mjs session-gate --words=<N> --json
   WARN ≥2000 palabras · BLOCK ≥4000 palabras → /clear obligatorio
3. MODEL ROUTE  → node scripts/workflow-orchestrator.mjs model-route --task=<tipo> --provider=<p> --json
4. DELEGATE     → pasar solo paths al sub-agente, NUNCA contenido de archivos
5. DEV-BRIEF    → generar el/los bloque(s) Dev-Ready Brief (ver formato abajo)
6. WORKER HANDOFF → ensamblar SIEMPRE y de forma AUTOMÁTICA el Worker Handoff Package:
   mensajes listos para pegar en el IDE del obrero + persistir en <change>/DEV-BRIEF.md
   (ver sección "Worker Handoff Package"). Es el cierre obligatorio del flujo.
```

## Model Tiers (usar siempre el más barato que funcione)

| Tier | Claude | OpenCode Go | Gemini | Codex |
|------|--------|-------------|--------|-------|
| 1 cheap | Haiku 4.5 | DeepSeek V4 Flash | Gemini Flash | Codex Mini |
| 2 balanced | Sonnet 4.6 | Qwen3.7 Plus | Gemini 2.5 Flash | Codex |
| 3 power | Opus 4.8 | Qwen3.7 Max | Gemini 2.5 Pro | GPT-4o |

Alt tier-1: Qwen3.6 Plus · Kimi K2.5 · MiniMax M2.5 · MiMo V2.5 · GLM-5  
Alt tier-2: DeepSeek V4 Pro · Kimi K2.6 · MiniMax M2.7 · MiMo V2.5 Pro · GLM-5.1  
Alt tier-3: MiniMax M3

Task→Tier: explore/search/status=1 · test/doc/impl/review/debug=2 · architect/security=3

## Regla anti-double-read (CRÍTICA)

```
CORRECTO:  briefing = "Fix bug in src/cartera/service.ts"
INCORRECTO: briefing = "Fix bug in [contenido completo del archivo...]"
```
El sub-agente lee lo que necesita. Nunca pre-leer para incluir en el briefing.

## Dev-Ready Brief — salida obligatoria del Arquitecto (Paso 5)

**Siempre** terminar con este bloque. Es lo único que el desarrollador necesita.
≤100 palabras · sin análisis · sin snippets · copy-paste directo en cualquier IDE.

```
---
## 🔧 Brief: [título máx 8 palabras]
**Modelo**: `[modelo]` (tier-[N]) | **Carpeta**: `[path/microservicio/]`

**Archivos** — copiar en @Files o abrir en IDE:
- `[path/relativo/Archivo1.ext]` → [qué cambiar, 1 línea]
- `[path/relativo/Archivo2.ext]` → [qué cambiar, 1 línea]
- `[path/relativo/Archivo3.ext]` → [qué cambiar, 1 línea]  (máx 3 Cursor / 4 Codex)

**Tests**: `[comando exacto de ejecución]`
**Coverage** ≥ 85% · tenantId del JWT · sin snippets en la respuesta
---
```

## Worker Handoff Package — cierre obligatorio del flujo (Paso 6)

> **Lineamiento permanente.** Al finalizar CUALQUIER flujo que delega implementación al obrero
> (Cursor/OpenCode/Qwen CLI/Codex), el Arquitecto SIEMPRE genera, de forma automática, el conjunto de
> **mensajes de arranque listos para pegar** en el IDE del obrero. Nunca se entrega el flujo sin él.
> No se le pide al usuario; se produce solo como último paso.

### Estándar de calidad (correcto · profesional · maduro · enriquecido · automático)
- **Correcto**: paths verificados con `find`/`ls`, comandos de test ejecutables, IDs CA/EE/RN reales del spec.
- **Profesional**: tono operativo, sin relleno, numerado y autocontenido (el obrero no vuelve al chat del arquitecto).
- **Maduro**: incluye Paso 0 (rama `feature/<slug>`, gate SCM-BRANCH, nunca main/develop) y orden de dependencia entre mensajes.
- **Enriquecido**: reglas no negociables (tenantId JWT, append-only/patrones del dominio, TDD ≥85%, ResponseBuilder), criterios CA/EE por archivo, riesgos a confirmar al iniciar.
- **Automático**: se emite al cierre sin solicitarlo + se persiste en `openspec/changes/<slug>/DEV-BRIEF.md`.

### Estructura del Package (un mensaje por capa/track, en orden de ejecución)
```
ENCABEZADO (una vez): change, tenant, estado de gates, repos/carpetas, artefactos de referencia, reglas globales.
PASO 0 (primer mensaje del repo): comandos de creación de rama + verificación (gate SCM-BRANCH).
MENSAJE N (uno por Brief/track):
  - Modelo + tier · Carpeta del microservicio
  - @Files a abrir (los del Brief)
  - Qué implementar por archivo, cada ítem trazado a CA/EE/RN
  - Comando de tests exacto
  - Marca de dependencia: "ARRANCA AQUÍ" / "tras Mensaje X" / "en paralelo con X"
RIESGOS a confirmar al iniciar (flags del arquitecto).
CIERRE (OpenCode/Qwen CLI vía /gd-brief): el obrero SÍ corre la certificación técnica completa —
  implement → test → playwright → e2e → review-3x → verify → living-doc-certify (DOC-01) → docusaurus
  build-prep (DOC-02) — con reporte de estado a Slack + Jira + ClickUp en cada stage. Solo quedan
  exclusivos del Arquitecto: /gd:document (README/ADR/CHANGELOG), /gd:git (push real), /gd:deploy
  (AWS real), /gd:score, /gd:archive y /gd:living-doc-wiki (DOC-03). Ver `.opencode/commands/gd-brief.md`.
CIERRE (Cursor/VSCode/Codex — sin /gd-brief): Track de verificación completo (/gd:review, /gd:verify,
  cobertura, /gd:e2e) lo corre el Arquitecto, NO el obrero — esos IDEs no tienen el flujo de 8 stages.
```

> **Nota de formato.** El Brief atómico (Paso 5) es ≤100 palabras y sin código. El mensaje de arranque
> del Package (Paso 6) es el prompt operativo del obrero: puede ser más extenso y enriquecido, pero
> **sigue prohibido incluir snippets de código** — solo instrucciones, paths, criterios y comandos.

### IDEs de destino y cómo usar el Brief

| IDE | Acción del desarrollador |
|-----|--------------------------|
| **Cursor** | Abrir carpeta del microservicio → pegar Brief en chat → agregar @Files |
| **OpenCode** | `opencode` en carpeta → pegar Brief y usar `/gd-brief "[Brief]"` — corre los 8 stages de certificación técnica (`.opencode/commands/gd-brief.md`) |
| **Qwen CLI** | `qwen` en carpeta → `/gd-brief "[Brief]"` — mismo flujo de 8 stages (`.qwen/commands/gd-brief.md`, contrato canónico en OpenCode) |
| **VSCode + Copilot** | Abrir archivos del Brief → Copilot Chat → pegar Brief |
| **Codex CLI** | `codex --file archivo1 --file archivo2 "[Brief en 1 párrafo]"` |

## Formato estricto del Brief (validación)

```
Brief máx 100 palabras
PROHIBIDO:
  ✗ Bloques de código (``` ... ```)
  ✗ Análisis RC-1/RC-2 (eso queda en el diagnóstico del Arquitecto)
  ✗ Snippets "ANTES/DESPUÉS"
  ✗ @Codebase o @Folder
  ✗ Más de 3 archivos para Cursor / 4 para Codex
```

## Session Checkpointing (Arquitecto)

| Evento | Acción |
|--------|--------|
| >15min | Generar resumen de puntos clave |
| ≥2000 palabras | WARN — planear /clear |
| ≥4000 palabras | BLOCK — /clear obligatorio ahora |
| Nuevo tema | Nueva sesión siempre |

## Fail si

- Sesión ≥ 4000 palabras sin /clear
- economyScore < 70 sin STOP
- Brief contiene código o análisis técnico
- Brief supera 100 palabras
- Desarrollador intenta ejecutar este SKILL directamente (→ redirigir a IDE + Brief)
- **El flujo se cierra sin generar el Worker Handoff Package (Paso 6) ni persistirlo en `<change>/DEV-BRIEF.md`**
- **El Handoff omite Paso 0 (rama), orden de dependencia, reglas globales o trazabilidad CA/EE**
- **El Handoff incluye snippets de código (solo instrucciones, paths, criterios y comandos)**
