book-workflow — Destilación → Diagrama → Auditoría → Aprobación/Reelaboración
Convenciones de rutas (léase primero)
- Raíz del plugin (= raíz del repositorio) = dos niveles por encima del directorio que contiene este SKILL.md (
skills/book-workflow/->../../), se denota como$PLUGIN. - Espacio de trabajo = raíz del proyecto abierto por el usuario (cwd), se denota como
$WS. Todos los productos de destilación (books/,.work/,tools/,.dsh/) deben estar en$WS. - Los scripts de puente/auditoría NO están dentro del espacio de trabajo; al invocarlos se debe usar
--ws $WS, de lo contrario no encontrarán la raíz del espacio de trabajo. - Principio: auditar antes de compilar — el
compilede la fase 5 solo se ejecuta sobre Bundles cuyo estado de compuerta sea completamente verde.
destilación Cangjie (fases 0-4) → diagrama SVG (opcional) → puente (verificación palabra por palabra) → auditoría de cuatro compuertas → compile verde → entrega
▲ │
└────────────────── reelaboración (según mapeo de estado) ◀── rojo ────────────┘
Fase 0 — Bootstrap del espacio de trabajo (una vez por espacio de trabajo, idempotente)
python3 $PLUGIN/scripts/bootstrap.py $WS
Crea $WS/.venv (Python ≥3.10 + PyYAML + PyMuPDF), instala el conjunto de compuertas dsh ($WS/tools/ y $WS/.dsh/), y verifica node (el linter SVG de la compuerta de diagramas; si falta, esa compuerta se marca como "no aplicable"). Los comandos posteriores usarán $WS/.venv/bin/python (en adelante $PY).
Fase 1 — Destilación Cangjie (generación)
Primero confirma la entrada: texto del libro original (ruta a PDF/EPUB/TXT/transcripción — si no hay texto, detente y pídelo al usuario; no destiles de memoria), título + autor + año de publicación, propósito de uso (estudio/consulta → single; integración diaria/entre libros → pack).
Luego lee completamente $PLUGIN/vendor/cangjie-skill/SKILL.md y ejecútalo estrictamente (cinco fases RIA-TV++: comprensión completa Adler → extracción paralela en 5 direcciones → triple verificación → puerta de ascenso → tarjeta de capacidad RIA++ → Zettelkasten → prueba de estrés). Este flujo de trabajo requiere:
- Los productos deben estar en
$WS/books/<slug>/(que contieneverified.md,candidates/,rejected/,.cangjie/capabilities/); - Ejecutar hasta después de la fase 4 (prueba de estrés), pero detenerse antes de la fase 5 (compilar/entregar), para ingresar primero a la etapa de diagramas y auditoría de este flujo;
- Conservar toda la traza de auditoría; el estado de reanudación (PIPELINE_STATE.md) se actualiza en cada fase.
Fase 1.5 — Diagramas (svg-diagram, opcional)
Para tarjetas de capacidad de tipo marco/flujo/cálculo o DIGEST que requieran diagramas, primero lee las reglas de $PLUGIN/vendor/svg-diagram/SKILL.md y luego dibuja el SVG a mano (pila de fuentes CJK, cinco grupos de colores semánticos, altura de caja = tamaño de letra × 3, espacio entre cajas ≥25px, conexiones curvas C/Q, dibujado correcto de una sola vez). Ubicación:
| Escenario | Ubicación | Cómo referenciar |
|---|---|---|
| Diagrama para tarjeta de capacidad | $WS/books/<slug>/.cangjie/capabilities/resources/<cap-slug>.svg | El texto de la tarjeta escribe el nombre del recurso + declaración resources: en el Bundle de esa capacidad |
| Diagrama para DIGEST/OVERVIEW | $WS/books/<slug>/assets/<nombre>.svg | Ruta relativa  |
Autoverificación (los errores deben ser cero):
node $PLUGIN/vendor/svg-diagram/tools/svg-lint/bin/svg-lint.mjs <diagrama.svg>
Fase 2 — Puente (verificación palabra por palabra contra fuente)
$PY $PLUGIN/bridge/cangjie_to_dsh.py --book-dir $WS/books/<slug> --source <libro_original.txt|.md|.pdf> --task <slug> --ws $WS
Coloca el texto original en $WS/.work/<task>/book_text.md (extracción automática de PDF — el objeto de anclaje de auditoría es siempre el texto original del libro), analiza las citas en la sección R de cada tarjeta de capacidad y las compara palabra por palabra, ignorando espacios en blanco, genera IDs de pool estables (CJ-NNN) y crea pools en formato dsh y copias de auditoría de las habilidades. Cualquier cita que no coincida ⇒ rc=1 tarjeta roja, retorna a la fase 1 para corregir la capa R.
Fase 3 — Auditoría de cuatro compuertas (evaluación de estado)
$PY $PLUGIN/bridge/run_audit.py --task <slug> --ws $WS
Ejecuta en orden: compuerta de construcción del paquete de evidencia → compuerta de cobertura del pool G-66 → compuerta de consistencia de anclaje G-67 → compuerta de cierre de evidencia G-68 → compuerta de diagramas (referencias SVG completas + cumplimiento de svg-lint). El estado se agrega a $WS/.work/<task>/audit-verdict.md (línea de tiempo de auditoría).
Fase 4 — Aprobación o reelaboración
| Estado | Acción |
|---|---|
| Todo verde | Aprobar → $PY $PLUGIN/vendor/cangjie-skill/scripts/cangjie.py compile --bundle $WS/books/<slug>/.cangjie/capabilities --out <destino de instalación confirmado por el usuario> --output auto |
| Puente: rojo por fuente / G-67 rojo | Volver a la fase 2 de Cangjie (corregir citas de la capa R / anclas de fecha), re-ejecutar el puente |
| G-66 rojo (selección no reflejada en capa R) | Volver a la fase 1/1.5 de Cangjie (recopilar candidatos faltantes / revisar descartes), re-ejecutar el puente |
| G-68 rojo (cierre/deriva) | Primero re-ejecutar la entrada de auditoría; si aún rojo, revisar el mapeo de IDs en las fases 3/4 |
| Compuerta de diagramas roja | Corregir el diagrama o agregar la referencia según las reglas, re-ejecutar la entrada de auditoría |
La reelaboración es normal, no un fracaso — con los elementos fallidos específicos proporcionados por las compuertas (qué cita, qué ID, qué diagrama) se corrige de forma dirigida, sin rehacer todo el libro.
Criterios de evaluación (quién revisa qué)
- Verificación contra fuente: la cita, después de eliminar espacios en blanco, debe ser una subcadena exacta del texto original (carácter por carácter) — evita "citar algo que no está en el original".
- G-66: las capacidades críticas/altas (marcadas como "esquema" por el puente) deben tener sus citas en la capa R de alguna tarjeta — evita que unidades importantes se omitan silenciosamente.
- G-67: en la misma línea, "fecha × cita" debe coocurrir dentro de una ventana de 400 caracteres del texto original — evita anclajes temporales erróneos.
- G-68: cada ID de pool referenciado por una habilidad debe tener un cierre sha256, y el pool no debe haber derivado — evita "referencia sin texto original" / "pool modificado sin reconstruir".
- Compuerta de diagramas: cada SVG referenciado debe existir, y todos los SVG deben pasar el lint con error=0 — evita enlaces rotos y diagramas defectuosos.
Línea roja de calidad
- Sin texto original, no hay destilación; citas ≤150 caracteres/párrafo (≤100 palabras en inglés).
- Los ejercicios sintéticos no deben hacerse pasar por casos reales del libro; en A1, si no hay casos originales, indícalo honestamente.
- No compilar ni instalar hasta que la auditoría esté completamente verde.
- Los elementos descartados (
rejected/) deben conservar el motivo; los vacíos importantes deben registrarse honestamente, sin falsa afirmación de cero omisiones. - Los diagramas deben ser coherentes con el texto — si los datos cambian, el diagrama debe cambiar; un diagrama que contradice el texto es peor que ningún diagrama.
- El cumplimiento de derechos de autor es responsabilidad del usuario según la licencia del libro original; este flujo de trabajo solo garantiza "criterios ejecutables, citas verificables".
Nicho ecológico
- cangjie-skill (incluido en
$PLUGIN/vendor/): definición autorizada de la metodología y el proceso de destilación. - dsh-distillation-director (ibíd.): implementación autorizada de las tres compuertas de evaluación, scripts locales sin coste de API.
- svg-diagram (ibíd.): reglas de diagramas y linter.
- Este skill solo realiza orquestación y cierre de evaluación; las especificaciones ascendentes se rigen por los SKILL.md/README de los tres vendor; en caso de conflicto, prevalece el texto original del vendor, y aquí se registra la desviación.