book-workflow — Distillation → Diagramme → Audit → Feu vert / Retour en cuve
Conventions de chemins (à lire d'abord)
- Racine du plugin (= racine du dépôt) = deux niveaux au-dessus du répertoire contenant ce SKILL.md (
skills/book-workflow/→../../), notée$PLUGIN. - Espace de travail = racine du projet actuellement ouvert par l'utilisateur (cwd), notée
$WS. Les artefacts de distillation (books/,.work/,tools/,.dsh/) sont tous placés dans$WS. - Les scripts de pontage/d'audit ne sont pas dans l'espace de travail : lors de l'appel, vous devez passer
--ws $WS, sinon ils ne trouveront pas la racine de l'espace de travail. - Principe : auditer d'abord, compiler ensuite — la compilation de l'étape 5 ne s'applique qu'aux Bundles dont toutes les portes sont vertes.
cangjie distillation (étapes 0-4) → diagramme SVG (sur demande) → pontage (vérification mot à mot par rapport à la source) → audit à quatre portes → compile feu vert livraison
▲ │
└────────────────── retour en cuve (mappage par verdict) ◀── rouge ────────────┘
Étape 0 — Amorçage de l'espace de travail (une fois par espace de travail, idempotent)
python3 $PLUGIN/scripts/bootstrap.py $WS
Crée $WS/.venv (Python ≥3.10 + PyYAML + PyMuPDF), installe la suite de portes dsh ($WS/tools/ et $WS/.dsh/), et vérifie la présence de node (dépendance de svg-lint pour la porte graphique ; si manquant, la porte est jugée « non applicable »). Toutes les commandes ultérieures utiliseront $WS/.venv/bin/python (noté $PY ci-dessous).
Étape 1 — Distillation cangjie (côté génération)
Commencez par confirmer les entrées : texte du livre original (chemin PDF/EPUB/TXT/transcription — s'il n'y a pas de texte, arrêtez-vous et demandez à l'utilisateur, ne décomposez pas de mémoire), titre + auteur + année de publication, objectif d'utilisation (étude/consultation → single ; intégration quotidienne/combinaison entre livres → pack).
Ensuite, lisez complètement $PLUGIN/vendor/cangjie-skill/SKILL.md et exécutez-le strictement (cinq étapes RIA-TV++ : compréhension Adler du livre entier → extraction parallèle sur 5 voies → triple validation → porte de progression → fiche de capacité RIA++ → Zettelkasten → tests de résistance). Ce workflow exige :
- Les artefacts se trouvent dans
$WS/books/<slug>/(contenantverified.md,candidates/,rejected/,.cangjie/capabilities/) ; - Arrêtez-vous après l'étape 4 (tests de résistance) et avant l'étape 5 (compilation et livraison), puis passez aux diagrammes et à l'audit de ce workflow ;
- Conservez toutes les traces d'audit ; l'état de reprise après interruption (
PIPELINE_STATE.md) est mis à jour à chaque étape.
Étape 1.5 — Diagramme (svg-diagram, sur demande)
Pour les fiches de capacité de type cadre/flux/calcul ou DIGEST nécessitant un diagramme, lisez d'abord $PLUGIN/vendor/svg-diagram/SKILL.md pour les règles avant de dessiner le SVG à la main (pile de polices CJK, cinq groupes de couleurs sémantiques, hauteur de boîte = taille de police × 3, espacement entre boîtes ≥ 25 px, lignes de connexion C/Q, faites-le correctement du premier coup). Emplacements :
| Scénario | Emplacement | Méthode de référence |
|---|---|---|
| Diagramme de fiche de capacité | $WS/books/<slug>/.cangjie/capabilities/resources/<cap-slug>.svg | Écrire le nom de la ressource dans le corps de la fiche + déclaration resources: dans le Bundle de cette capacité |
| Diagramme DIGEST/OVERVIEW | $WS/books/<slug>/assets/<nom>.svg | Chemin relatif  |
Auto-vérification (les erreurs doivent être à zéro) :
node $PLUGIN/vendor/svg-diagram/tools/svg-lint/bin/svg-lint.mjs <diagramme.svg>
Étape 2 — Pontage (vérification mot à mot par rapport à la source)
$PY $PLUGIN/bridge/cangjie_to_dsh.py --book-dir $WS/books/<slug> --source <livre_original.txt|.md|.pdf> --task <slug> --ws $WS
Place le texte original dans $WS/.work/<task>/book_text.md (extraction automatique du PDF — l'objet d'ancrage de l'audit est toujours le texte original du livre), analyse les citations de la section R de chaque fiche de capacité, les compare caractère par caractère après suppression des espaces, crée un pool d'identifiants stables (CJ-NNN), génère les pools au format dsh et une copie d'audit des skills. Toute citation qui ne correspond pas ⇒ rc=1 carton rouge, retour à l'étape 1 pour corriger la couche R.
Étape 3 — Audit à quatre portes (verdict)
$PY $PLUGIN/bridge/run_audit.py --task <slug> --ws $WS
Exécute successivement : constructeur du dossier de preuves → couverture du pool G-66 → cohérence d'ancrage G-67 → clôture des preuves G-68 → porte graphique (intégrité des références SVG + conformité svg-lint). Le verdict est ajouté à $WS/.work/<task>/audit-verdict.md (chronologie de l'audit).
Étape 4 — Feu vert ou retour en cuve
| Verdict | Action |
|---|---|
| Tout vert | Feu vert → $PY $PLUGIN/vendor/cangjie-skill/scripts/cangjie.py compile --bundle $WS/books/<slug>/.cangjie/capabilities --out <cible d'installation confirmée par l'utilisateur> --output auto |
| Rouge pontage source / Rouge G-67 | Retour à l'étape 2 de cangjie (correction des citations / ancres de date dans la couche R), relancer le pontage |
| Rouge G-66 (élément sélectionné non tombé dans la couche R) | Retour à l'étape 1/1.5 de cangjie (ré-échantillonnage des candidats / révision des éliminations), relancer le pontage |
| Rouge G-68 (clôture/dérive) | D'abord relancer l'entrée d'audit ; si toujours rouge, vérifier le mapping d'IDs des étapes 3/4 |
| Rouge porte graphique | Corriger le diagramme ou ajouter des références selon les règles, relancer l'entrée d'audit |
Le retour en cuve est normal, pas un échec — corrigez de manière ciblée avec les éléments d'échec spécifiques fournis par la porte (quelle citation, quel ID, quel diagramme), ne refaites pas l'intégralité du volume.
Définitions des critères (qui vérifie quoi)
- Retour à la source : une citation, après suppression des espaces, doit être une sous-chaîne caractère par caractère du texte original — empêche les « citations qui n'existent pas dans l'original ».
- G-66 : les citations des capacités critical/high (marquées « cadre général » par le pontage) doivent se trouver dans la couche R d'une fiche — empêche les omissions silencieuses d'unités importantes.
- G-67 : le couple « date × citation » d'une même ligne doit coexister dans une fenêtre de 400 caractères du texte original — empêche les ancres temporelles erronées.
- G-68 : chaque ID de pool référencé par un skill a une clôture sha256 et le pool ne dérive pas — empêche les « références à un original introuvable / pool modifié sans reconstruction ».
- Porte graphique : tout SVG référencé doit exister, tous les SVG doivent passer lint avec error=0 — empêche les liens brisés et les diagrammes défectueux.
Lignes rouges de qualité
- Pas de texte original, pas de distillation ; citations ≤ 150 caractères/paragraphe (anglais ≤ 100 mots).
- Les exercices synthétiques ne doivent pas se faire passer pour des cas du livre ; en A1, sans cas du livre original, indiquez-le honnêtement.
- Pas de compile, pas d'installation avant que l'audit ne soit entièrement vert.
- Les éléments éliminés (
rejected/) conservent leur motif ; les lacunes importantes sont honnêtement enregistrées, pas de fausse déclaration de zéro omission. - Le diagramme doit être cohérent avec le texte — si les données changent, le diagramme doit suivre ; un diagramme en contradiction avec le texte est pire que pas de diagramme du tout.
- La conformité des droits d'auteur est à la discrétion de l'utilisateur selon la licence du livre original ; ce workflow ne garantit que « les règles sont exécutables, les citations sont vérifiables ».
Positionnement écologique
- cangjie-skill (inclus dans
$PLUGIN/vendor/) : définition faisant autorité de la méthodologie et du processus de distillation. - dsh-distillation-director (idem) : implémentation faisant autorité des trois portes de verdict, scripts locaux sans coût API.
- svg-diagram (idem) : règles de diagramme et lint.
- Ce skill ne fait que l'orchestration et la clôture des verdicts ; les spécifications en amont sont celles des SKILL.md/README des trois vendors. En cas de conflit, la version du vendor prévaut, et les écarts sont enregistrés ici.