book-workflow — 蒸留 → 作図 → 監査 → リリース/再蒸留
パス規約(最初に読むこと)
- プラグインルート(=リポジトリルート) = この SKILL.md が配置されているディレクトリの2階層上(
skills/book-workflow/の../../)。$PLUGINと表記します。 - ワークスペース = ユーザーが現在開いているプロジェクトルート(cwd)。
$WSと表記します。蒸留成果物(books/、.work/、tools/、.dsh/)はすべて$WSに配置されます。 - ブリッジ/監査スクリプトはワークスペース外にあります。呼び出すときは必ず
--ws $WSを指定してください。指定しないとワークスペースルートを見つけられません。 - 原則:監査してからコンパイルする — フェーズ5の compile は、判態がすべて「緑」のバンドルに対してのみ実行します。
cangjie 蒸留(フェーズ0-4) → svg 作図(必要に応じて) → ブリッジ(一字一句原文照合) → 4ゲート監査 → 全緑で compile して提供
▲ │
└────────────────── 再蒸留(判態マッピングに従う) ◀── 赤 ────────────┘
フェーズ 0 — ワークスペースブートストラップ(ワークスペースごとに1回、冪等)
python3 $PLUGIN/scripts/bootstrap.py $WS
これにより $WS/.venv(Python ≥3.10 + PyYAML + PyMuPDF)が作成され、dsh ゲートセット($WS/tools/ と $WS/.dsh/)がインストールされ、node(図監査ゲートの svg-lint 依存関係。ない場合は「該当なし」と判定)がチェックされます。以降のコマンドはすべて $WS/.venv/bin/python(以下 $PY と表記)を使用します。
フェーズ一 — cangjie 蒸留(生成側)
最初に入力を確認します:原書テキスト(PDF/EPUB/TXT/書き起こしファイルのパス。テキストがない場合は停止してユーザーに要求し、記憶だけで本を分解しない)、書名+著者+出版年、使用目的(学習・参照→single;日常利用/複数書籍の組み合わせ→pack)。
次に、$PLUGIN/vendor/cangjie-skill/SKILL.md を完全に読み、厳密にそれに従って実行します(RIA-TV++ 5フェーズ:Adler による書籍全体の理解 → 5並列抽出 → 3重検証 → 昇格ゲート → RIA++ 能力カード → Zettelkasten → ストレステスト)。本ワークフローでは以下が必要です:
- 成果物は
$WS/books/<slug>/に配置(verified.md、candidates/、rejected/、.cangjie/capabilities/を含む); - フェーズ4(ストレステスト)の後、フェーズ5(コンパイル&提供)の前で停止し、本ワークフローの作図と監査に入ります;
- すべての監査跡を保持し、チェックポイント再開状態(PIPELINE_STATE.md)は各フェーズごとに更新します。
フェーズ 1.5 — 作図(svg-diagram、必要に応じて)
フレームワーク/フロー/計算系の能力カードまたは DIGEST に図が必要な場合、最初に $PLUGIN/vendor/svg-diagram/SKILL.md のルールを読んでから手描きで SVG を作成します(CJKフォントスタック、5グループのセマンティックカラー、ボックス高さ=フォントサイズ×3、ボックス間隔≥25px、C/Q 曲線接続、一発で正確に描く)。配置場所:
| シナリオ | 場所 | 参照方法 |
|---|---|---|
| 能力カード用図 | $WS/books/<slug>/.cangjie/capabilities/resources/<cap-slug>.svg | カード本文にリソース名を記載 + バンドルの該当能力の resources: 宣言 |
| DIGEST/OVERVIEW 用図 | $WS/books/<slug>/assets/<名前>.svg |  相対パス |
セルフチェック(error は必ずゼロに):
node $PLUGIN/vendor/svg-diagram/tools/svg-lint/bin/svg-lint.mjs <図.svg>
フェーズ二 — ブリッジ(一字一句原文照合)
$PY $PLUGIN/bridge/cangjie_to_dsh.py --book-dir $WS/books/<slug> --source <原書.txt|.md|.pdf> --task <slug> --ws $WS
このスクリプトは原文を $WS/.work/<task>/book_text.md に配置し(PDF は自動抽出 — 監査のアンカー対象は常に元の書籍テキスト)、各能力カードの R セクション引用文を解析し、空白を除去して一字一句比較し、安定したプールID(CJ-NNN)を作成して dsh 形式のプールとスキル監査コピーを生成します。いずれかの引用文が一致しない場合 ⇒ rc=1 赤札、フェーズ一に戻って R 層を修正します。
フェーズ三 — 4ゲート監査(判態判定)
$PY $PLUGIN/bridge/run_audit.py --task <slug> --ws $WS
順に実行:証拠パッケージビルダー → G-66 プールカバレッジ → G-67 アンカー一致 → G-68 証拠閉包 → 図監査ゲート(SVG 参照の完全性 + svg-lint 準拠)。判態は $WS/.work/<task>/audit-verdict.md に追記されます(監査タイムライン)。
フェーズ四 — リリースまたは再蒸留
| 判態 | 処置 |
|---|---|
| 全緑 | リリース → $PY $PLUGIN/vendor/cangjie-skill/scripts/cangjie.py compile --bundle $WS/books/<slug>/.cangjie/capabilities --out <ユーザー確認済みインストール先> --output auto |
| ブリッジ原文照合赤 / G-67 赤 | cangjie フェーズ2 に戻る(R 層の引用文/日付アンカーを修正)、ブリッジを再実行 |
| G-66 赤(選択漏れが R 層にない) | cangjie フェーズ1/1.5 に戻る(候補を追加取得/選別結果を再確認)、ブリッジを再実行 |
| G-68 赤(閉包/ドリフト) | 最初に監査エントリを再実行;それでも赤ならフェーズ3/4 の ID マッピングを確認 |
| 図監査ゲート赤 | ルールに従って図を修正するか、参照を追加し、監査エントリを再実行 |
再蒸留は失敗ではなく正常なプロセスです — ゲートが示した具体的な失敗項目(どの引用文、どの ID、どの図か)を特定して部分的に修正し、全体をやり直さないでください。
判定基準(誰が何をチェックしているか)
- 原文照合:引用文から空白を除去したものが、原文の部分文字列と一字一句一致する必要があります — 「引用したが原文にない」を防ぎます。
- G-66:critical/high の能力(ブリッジが「総綱」とマーク)の引用文は、いずれかのカードの R 層に存在する必要があります — 重要なユニットが静かに漏れるのを防ぎます。
- G-67:同一行の「日付×引用文」は原文の400字ウィンドウ内で共起する必要があります — 日付の混同を防ぎます。
- G-68:スキルが参照する各プール ID には sha256 閉包があり、プールがドリフトしていない必要があります — 「参照したが原文が見つからない/プール変更後に再構築されていない」を防ぎます。
- 図監査ゲート:参照されている SVG が存在し、すべての SVG が lint error=0 を通過する必要があります — リンク切れと不良図を防ぎます。
品質のレッドライン
- 原文なしで蒸留しない;引用文は150字/段落以内(英語は100語以内)。
- 合成演習を実際の本のケースと偽らない;A1 に実際のケースがない場合は正直にその旨を記載する。
- 監査が全緑になるまで compile しない、インストールしない。
- 除外項目(
rejected/)には理由を残す;重要なギャップは正直に記録し、ゼロ欠落と偽装しない。 - 図と本文は一致していること — データが変われば図もそれに合わせて変更する;本文と矛盾する図は、図がないよりも悪い。
- 著作権のコンプライアンスは、利用者が原書の許諾に基づいて判断する;本ワークフローは「基準が実行可能で、引用文が検証可能である」ことのみを保証する。
エコシステム上の位置づけ
- cangjie-skill(
$PLUGIN/vendor/に同梱):蒸留の方法論とプロセスの権威ある定義。 - dsh-distillation-director(同上):3ゲート判定の権威ある実装。ローカルスクリプトで API コストはゼロ。
- svg-diagram(同上):作図ルールと lint。
- 本スキルはオーケストレーションと判態の取りまとめのみを行います;上流の仕様は3つの vendor の SKILL.md/README を基準とし、矛盾がある場合は vendor 原文を優先し、ここに差異を記録します。