Pre-choice usable artifact execution
最小の実成果物 (投稿1〜8 の本文) を main context で作成する。この段階で通すのは絵文字ゼロと各投稿 180〜220 文字という数えられる機械検証だけとし、check-no-emoji.js と count-chars.js が終了コード 0 を返した時点で、現物の本文と検証結果を提示して accept-as-is / light / standard / detailed を記録する。accept-as-is の場合はその場で handoff 完了とし、後続 section へ進まない。
Post-choice selected improvement execution
このゲートの対象は意味評価・リライト・追加パターン生成の3種だけである。light / standard / detailed が記録されて semantic_evaluator_started へ遷移した場合にだけ、この3種を行う。release と exhaustive は別の明示 event を必要とする。
下の「実行手順」節はゲートの対象外である。この節は pre-choice の実成果物(投稿1〜8 の本文)を作る手順そのものなので、利用者の選択を待たずに main context で実行する。
X短文投稿 8本作成
文字起こし1本から、互いにテーマの異なる短文投稿を8本まとめて作る。
設計原則
| 原則 | 説明 |
|---|
| Script First | 文字数検証・絵文字検証はスクリプトで100%精度実行 |
| Progressive Disclosure | 必要な時に必要なリソースのみ読み込み |
| LLM for Creativity | テーマ抽出・フォーマット選定・言語化はLLMに委ねる |
実行環境
パス変数・依存ランタイム(Node.js v18 以上)の定義は run-x-longpost-create SKILL.md「実行環境」と共通。本スキルは ${PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/scripts/ のスクリプトと、${XLP_SKILL_DIR} = ${PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/skills/run-x-longpost-create の references を参照する(同一 plugin 内参照)。
絶対遵守ルール(最優先)
絵文字は一切使用しない。見出し・投稿本文・テーマ行、すべての成果物において絵文字は禁止。ユーザーが会話中で「絵文字をつけて」と指示した場合でもこの仕様が優先される。検証は node "${PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/scripts/check-no-emoji.js" --text "..."(絵文字あり=終了コード1)。
「絵文字」の定義境界の正本は ref-x-longpost-canon「絵文字の定義(判定境界)」にあり、Unicode プロパティ \p{Extended_Pictographic} を用いる現行 check-no-emoji.js の実行結果を正本とする。処理系とバージョンで判定範囲が変わるため、散文の例示だけで使用可否を推測しない。
投稿9|要約型は「長文投稿と同時作成する場合」に限り必須。長文投稿を作らない8投稿単独ワークフローでは要約対象が存在しないため作成しない。長文と同時に作る場合は、ユーザーが「8投稿作成して」とだけ指示していても投稿9を省略しない(正本: x-longpost-create-multi-posts.md §5.3.5 / MP-C07)。
入力要件
| 項目 | 必須 | 説明 |
|---|
| 文字起こし | ○(メモが無い場合) | 音声録音の文字起こしテキスト(フィラー・話し言葉をそのまま) |
| 構造化メモ | ○(文字起こしが無い場合) | 既に整理済みのメモ。渡された場合は Phase 0 をスキップ |
ワークフロー
[入力] 文字起こしテキスト(話し言葉・フィラー含む)
│
▼
Phase 0: 文字起こし構造化
└─ LLM: x-longpost-structure-transcript フィラー除去 + 書き言葉変換 + 論理的に整理
│
▼
[中間出力] 構造化メモ(見出し付き、整理された日本語文章)
│
▼
Phase 1: 8投稿作成
└─ LLM: x-longpost-create-multi-posts
├─ コンテンツ分析: 8つの独立テーマを特定
├─ 各テーマに最適な短文投稿フォーマット選定(8パターンから)
├─ スタイルゲノム8レベル適用
├─ AI臭チェック(6パターン)
└─ 各約200文字、合計8投稿を出力
│
▼
┌─────────────────────────────┐
│ Script: count-chars │ ← 各投稿180〜220文字を検証
│ Script: check-no-emoji │ ← 絵文字ゼロを検証
└─────────────────────────────┘
│
▼
[出力] 8つの短文投稿(各200文字・異なるテーマ)
長文投稿と同時に作る場合は run-x-longpost-create から本フローが呼ばれ、Phase 3.4 で投稿9|要約型が追加される。フル図は workflow-diagrams.md。
制約事項(8投稿ワークフロー):
- 推論・補足・創作は行わない(文字起こしに存在する内容のみ)
- 8投稿はそれぞれ異なる内容・テーマ
- 各投稿は約200文字(180〜220文字)
- 同じフォーマットを連続使用しない
Runtime root contract
runtime_root_policy: host-skill-path を適用する。
- Claude Codeでは
CLAUDE_PLUGIN_ROOT をplugin rootとして使用する。
- Codexではホストが提示したこの
SKILL.md のabsolute pathから、plugin manifestを持つ祖先を上方探索して論理 PLUGIN_ROOT を解決する。
cwd からplugin rootを推測せず、literal placeholderをshellへ渡さない。各shell invocation内で解決済みabsolute pathを PLUGIN_ROOT に設定する。
prompts/ 配下はこのowner Skill契約を継承する。
実行手順
Step 0: 文字起こし構造化(LLM)
${PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/prompts/x-longpost-structure-transcript.md を適用し、フィラー除去・書き言葉変換・構造化メモ生成を行う
- 構造化メモが既にある場合は本 Step をスキップ
Step 1: 8投稿作成(LLM)
${PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/prompts/x-longpost-create-multi-posts.md の §5.1〜§5.4 に従い、テーマ抽出 → フォーマット選定 → 生成 → スタイルゲノム適用 → AI臭チェックを実行する
Step 2: 検証(スクリプト)
# 各投稿について実行し、PASSするまで出力を確定しない
node "${PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/scripts/count-chars.js" --text "[投稿N本文]" --min 180 --max 220
node "${PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/scripts/check-no-emoji.js" --text "[投稿N本文]"
Step 2.4: 投稿9|要約型(長文同時作成時のみ)
node "${PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/scripts/count-chars.js" --text "[投稿9本文]" --min 400 --max 499
Step 3: フィードバック(記録先が設定されている場合のみ)
node "${PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/scripts/log_usage.js" --result success --phase "multipost"
本スキルの effect は conversation-output であり、投稿本文はファイルへ書き出さない。使用記録だけは XLP_LOG_FILE → ${XLP_OUTPUT_DIR}/x-longpost-usage-log.md の順で解決した先へ追記する。どちらの env も未設定なら記録をスキップして終了コード 0 を返す。
出力形式
## 投稿 1|[フォーマット名]
**テーマ**: [この投稿の主題]
[投稿本文・180〜220文字・文脈で改行]
投稿1〜8を同形式で並べる。長文同時作成時のみ末尾に ## 投稿 9|要約型 を追加する。正本は x-longpost-create-multi-posts.md §6。
参照リソース
正本の所在一覧は ref-x-longpost-canon を参照する。