Claude-skill-registry book-writer
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/book-writer" ~/.claude/skills/majiayu000-claude-skill-registry-book-writer && rm -rf "$T"
skills/data/book-writer/SKILL.mdBook Writer
books リポジトリ用の技術文書作成ワークフロー。論文・技術文書などを効率的に
.qmd 形式の構造化ドキュメントへ変換する。
ワークフロー概要
Phase 0: 執筆準備(言語・本確認・ディレクトリ作成) ↓ Phase 1: メイン文書作成 (00-overview.qmd) ↓ Phase 2: 補足文書の並列生成(サブエージェント) ↓ Phase 3: Callout 補足の追加 ↓ Phase 4: index.qmd と _quarto.yml の設定 ↓ Phase 5: 最終確認・リンク整備
リファレンス
書式ルール(サブエージェント向け)
重要: サブエージェントに補足文書を作成させる際は、必ず
assets/formatting-rules.md を読ませてください。
- assets/formatting-rules.md: 書式ルール完全版(Box drawings、Quarto 記法、ファイル命名、リンク等)
- Box drawings 内は半角英数字のみ使用(日本語禁止)
- 実在するファイルへのリンクのみ
- Callout の適切な使用方法
Quarto 機能リファレンス
詳細な Quarto 機能については、
references/ ディレクトリのリファレンスファイルを参照してください:
- callouts.md: Callout の詳細オプション(appearance, icon, collapse, cross-reference 等)
- cross-references.md: 図表・セクション・数式等への相互参照システム(
,@fig-
,@tbl-
等)@sec- - figures.md: 図の挿入・サイズ調整・サブフィギュア・lightbox 等
- tables.md: 表の作成(pipe tables, list tables, 計算表)・スタイリング・サブテーブル等
- diagrams.md: Mermaid・Graphviz によるダイアグラム作成
これらは技術文書作成時に頻繁に参照することになります。特に cross-references.md は、図表参照を多用する技術文書では必須です。
Phase 0: 執筆準備
目的
執筆開始前に必要な情報を確認し、ディレクトリ構造を準備する。
手順
-
執筆言語の確認: 日本語(
)か英語(ja/
)かen/- ユーザーに確認: 「日本語で執筆しますか?それとも英語ですか?」
- 回答に応じてディレクトリを決定:
またはja/{book}/en/{book}/
-
本の名前の確認: ディレクトリ名となる本(ケバブケース)
- 例:
,olmo-3
,deepseek-r1
,molmo2qwen-3
- 例:
-
元文書の確認: 論文 URL、PDF パス、テキストファイルなど
-
ディレクトリ作成:
と{lang}/{book}/
を作成{lang}/{book}/images/ -
_metadata.yml を作成:
sidebar: book-name
には本の名前(ケバブケース)を指定sidebar- この値は
の_quarto.yml
と一致させるid
注意:
index.qmd は Phase 4(補足文書が確定した後)に作成します。
ディレクトリ構成
基本構成:
{lang}/{book}/ ├── _metadata.yml # サイドバーID指定 ├── index.qmd # 本のランディングページ(Phase 4で作成) ├── 00-overview.qmd # メイン文書(概要・全体像) ├── 01-concept-a.qmd # 補足文書1 ├── 02-concept-b.qmd # 補足文書2 ├── 03-concept-c.qmd # 補足文書3 ├── ... └── images/ # 画像ディレクトリ └── figure.png
ファイル命名規則
- 00-overview.qmd: メイン文書(概要・全体の流れ)
- 01-xx.qmd, 02-xx.qmd...: 補足文書(連番、トピック名をケバブケース)
- images/: 画像は専用ディレクトリに配置
- 拡張子:
を使用(Quarto の機能をフル活用).qmd
参考例: ja/olmo-3/
ja/olmo-3/ ├── _metadata.yml ├── index.qmd ├── 00-overview.qmd ├── 01-sliding-window-attention.qmd ├── 02-deduplication.qmd ├── 03-data-mixing.qmd ├── 04-midtraining.qmd ├── 05-long-context.qmd ├── 06-grpo-olmorl.qmd └── images/ └── olmo-3.png
Phase 1: メイン文書作成 (00-overview.qmd)
目的
全体の流れを把握できるメイン文書を作成する。詳細は後で補足文書に分離。
手順
- 構造分析: 元テキストの章立て・主要トピックを把握
- 骨格作成: 見出し構成を決定(
→## セクション
)### サブセクション - 本文執筆: 各セクションの要点を簡潔に記述
- 補足候補マーク: 詳細解説が必要な概念・用語に
を仮置き> 詳細: [補足文書名](path.qmd)
出力例
# {本の名前} Technical Report まとめ ## 概要 このモデルは... ## アーキテクチャ ### 特徴的な機構 効率的な Attention 機構を採用し... > 詳細: [Sliding Window Attention](01-sliding-window-attention.qmd) ### その他の特徴 ...
リンク記法
メイン文書から補足文書へのリンクは相対パス:
> 詳細: [補足文書タイトル](01-concept-name.qmd)
図表・ダイアグラム・クロスリファレンス
技術文書では図表やダイアグラムが頻繁に登場します。Quarto の強力な機能を活用しましょう:
- 図の挿入:
で図を挿入し、{#fig-name}
で参照@fig-name - 表の作成: Pipe tables や List tables で複雑な表を作成し、
で参照@tbl-name - ダイアグラム: Mermaid や Graphviz でフローチャート・シーケンス図を作成
- クロスリファレンス:
,@fig-
,@tbl-
,@sec-
による統一的な参照システム@eq- - 数式: KaTeX(LaTeX 記法)を使用(
でインライン、$x^2$
でディスプレイ)$$\sum_{i=1}^{n}$$
詳細:
,references/cross-references.md,references/figures.md,references/tables.mdを参照してください。references/diagrams.md
Phase 2: 補足文書の並列生成
目的
メイン文書でマークした概念・用語について、サブエージェント(Task tool)で補足文書を並列生成。
手順
- 補足候補の抽出: メイン文書から
でマークした箇所をリストアップ> 詳細: - サブエージェント起動: 各補足文書を並列で生成
Task tool を複数同時に呼び出し: - Agent 1: 01-sliding-window-attention.qmd を作成 - Agent 2: 02-deduplication.qmd を作成 - Agent 3: 03-data-mixing.qmd を作成
- 結果確認: 各サブエージェントの出力を確認し、必要に応じて修正
サブエージェントへのプロンプト例
重要: サブエージェントには必ず書式ルールを読ませてから作業させること。
あなたは book-writer スキルのサブエージェントです。 まず、以下の書式ルールを確認してください: {.claude/skills/book-writer/assets/formatting-rules.md の内容を読み込む} **CRITICAL ルール**(厳守): - 日本語(`ja/`)の場合は**である調**で記述(ですます調禁止) - Box drawings 内は半角英数字のみ使用(日本語禁止) - **リスト前に必ず空行を挿入**(箇条書き、順序付きリスト、チェックリスト全て) - **blockquote(`>`で始まる引用ブロック)の前にも空行を挿入** - リンクは実在するファイルのみ(存在しないファイルへのリンク禁止) - 拡張子は必ず `.qmd` - Callout は適切に開閉(`:::` の対応確認) --- 以下の概念について補足文書を作成してください: - ファイル: {lang}/{book}/01-sliding-window-attention.qmd - 対象概念: Sliding Window Attention - 元文書の該当箇所: [引用] - 含めるべき内容: - 概念の定義と動機 - 仕組みの解説(図解があれば言及) - 他手法との比較(Quarto callout で記載) **記法**: - タイトル: `# Sliding Window Attention` - 表・図があれば Quarto 記法で記述 - 他手法との比較は `.callout-note collapse="true"` で記載
補足文書の構成
- タイトル:
# 概念名 - 内容: 概念の定義、動機、仕組み、比較など
- Callout: 発展的内容や比較は Quarto callout で追加
Phase 3: Callout 補足の追加
目的
本筋から逸れるが知っておきたい補足情報を Quarto callout で追加。
Callout の使いどころ
- 他モデル・他手法との比較
- 発展的な内容(論文では触れられていない応用など)
- 参考情報(本文を読む上で必須ではないもの)
- 出典・参考文献への言及
記法
::: {.callout-note collapse="true"} ## 他モデルとの比較: Qwen3, DeepSeek Qwen3 は SWA を採用せず Full Attention を使用... **参考**: [Qwen3 Technical Report](https://arxiv.org/abs/...) :::
Callout の種類:
: 補足情報(デフォルト、青色).callout-note
: ヒント・Tips(緑色).callout-tip
: 重要な情報(赤色).callout-important
: 警告(オレンジ色).callout-warning
: 注意(赤色).callout-caution
オプション:
: 折りたたみ可能にするcollapse="true"
: デフォルトで展開(省略時はこれ)collapse="false"
詳細: より高度な Callout の使い方(appearance, icon, cross-reference 等)は
を参照してください。references/callouts.md
手順
- メイン文書を走査: 比較・発展内容を追加できる箇所を特定
- 補足文書を走査: 同様に callout 追加箇所を特定
- Callout 追加: 各文書に callout を挿入
Phase 4: index.qmd と _quarto.yml の設定
目的
補足文書が確定したので、本のランディングページ(index.qmd)を作成し、サイト全体のナビゲーションに統合する。
4.1: index.qmd の作成
Phase 2 で確定した補足文書をもとに、
index.qmd を作成します。
テンプレート
--- title: "本のタイトル" description: "本の説明(1行)" date: "YYYY-MM-DD" author: "Naoto Iwase" categories: [カテゴリ1, カテゴリ2, カテゴリ3] image: "images/cover-image.png" --- モデル/技術の簡単な説明(1-2段落) **論文**: [arXiv:XXXX.XXXXX](https://arxiv.org/abs/XXXX.XXXXX) **Tech Report**: URL(もしあれば) ## 目次 - [全体像](00-overview.qmd) - [補足文書1のタイトル](01-xxx.qmd) - [補足文書2のタイトル](02-xxx.qmd) - ...
フィールド説明
- title: 本のタイトル(モデル名など)
- description: 1行の説明文(簡潔なひと言で)
- date: 作成日または論文の公開日(YYYY-MM-DD形式)
- 重要: 現在の日付は Bash ツールで
を実行して確認することdate +%Y-%m-%d - タイポを防ぐため、手動で年を書かずに必ずコマンド結果を使用する
- 重要: 現在の日付は Bash ツールで
- author: "Naoto Iwase"(固定)
- categories: 適切なカテゴリを最大2つまでリスト形式で指定
- 重要: まず既存カテゴリを確認して表記揺れを防ぐ:
python .claude/skills/book-writer/scripts/list_categories.py . - 既存カテゴリがあれば優先的に使用し、新規カテゴリは必要な場合のみ追加
- 例:
[LLM, Reasoning] - 例:
[VLM, Multimodal] - 例:
[Deep Learning, Statistical Physics]
- 重要: まず既存カテゴリを確認して表記揺れを防ぐ:
- image: カバー画像のパス(
ディレクトリ内)images/
本文
- モデル/技術の簡単な紹介(1-2段落)
- 論文へのリンク(arXiv URLなど)
- Tech ReportやブログのURL(あれば)
- 目次: 00-overview.qmd と Phase 2 で作成した全ての補足文書へのリンク
4.2: _quarto.yml のサイドバー設定
新しい本を
_quarto.yml の sidebar セクションに追加します。index.qmd の目次と一致させます。
sidebar: - id: new-book title: "New Book Title" style: "docked" contents: - section: "New Book Title" href: ja/new-book/index.qmd contents: - text: "全体像" href: ja/new-book/00-overview.qmd - text: "概念A" href: ja/new-book/01-concept-a.qmd - text: "概念B" href: ja/new-book/02-concept-b.qmd # ... 他の補足文書も同様に追加
注意点:
は一意の識別子(本の名前、id
の_metadata.yml
と同じ)sidebar
はサイドバーに表示されるタイトルtitle
は必ず相対パスで記述href- 補足文書の
は日本語の場合は日本語、英語の場合は英語で記述text
の目次とサイドバーの内容を一致させることindex.qmd- 既存のサイドバーエントリ(例:
,olmo-3
)を参考にすることmolmo2
Phase 5: 最終確認・リンク整備
目的
すべての文書とリンクが正しく整備されているか最終確認を行う。
手順
5.1: Box Drawings の自動修正
最初に必ず実行: LLMは文字幅を正確に認識できないため、Box drawingsの修正は自動化ツールに任せます。
python .claude/skills/book-writer/scripts/fix_box_drawings.py {lang}/{book}
このスクリプトは:
- 全角文字と半角文字の表示幅を正しく計算(ASCII=1, 全角=2)
- Box drawingsの右端を自動で揃える
- 修正が必要なファイルのみ上書き
5.2: リストとblockquote前の空行の自動修正
次に必ず実行: LLMは箇条書きやblockquote前の空行を見落としやすいため、自動化ツールで修正します。
python3 .claude/skills/book-writer/scripts/fix_spacing.py {lang}/{book}
このスクリプトは:
- 箇条書き(
,-
,*
)と順序付きリスト(+
,1.
など)の直前に空行がない箇所を検出2. - blockquote(
で始まる引用ブロック)の直前に空行がない箇所を検出> - 自動的に空行を挿入
- 修正が必要なファイルのみ上書き
5.3: チェックリスト
自動修正ツールの実行後、以下を確認:
- 日本語(
)の場合はである調で記述されているかja/ -
が作成されているか(_metadata.yml
形式)sidebar: book-name -
が作成されているか(目次が全章を網羅しているか)index.qmd -
のサイドバーに追加されているか_quarto.yml -
の目次とindex.qmd
のサイドバーが一致しているか_quarto.yml - メイン文書から補足文書へのリンクが正しいか(
拡張子).qmd - 補足文書の番号が連番になっているか(01, 02, 03...)
- リスト前に空行が挿入されているか(箇条書き、順序付きリスト、チェックリスト全て)
- リスト項目内の引用(blockquote)の前にも空行が挿入されているか
- Quarto callout が正しく閉じているか(
の対応)::: - 画像は
ディレクトリに配置されているかimages/
リンク形式の確認
メイン文書から補足文書:
> 詳細: [Sliding Window Attention](01-sliding-window-attention.qmd)
画像の参照:

ローカルプレビュー(オプション)
Quarto でローカルプレビューして確認:
quarto preview
Tips
コンテキスト管理
- 元テキストが長い場合、Phase 1 では要点のみ抽出し、詳細は Phase 2 で各サブエージェントに分担
- サブエージェントには必要な部分のみ渡す(元テキスト全体を渡さない)
並列度の調整
- 補足文書が多い場合は 3-5 個ずつバッチで生成
- 依存関係がある場合は順次生成(例: 用語 A の説明に用語 B が必要)
一貫性の確保
- 用語の統一(メイン文書で定義した表記を補足文書でも使用)
- ファイル命名の連番は 00, 01, 02... のように2桁にする
Box drawings の使用
図表やフロー図を Box drawings(罫線文字)で表現する際の注意点:
- 半角文字のみを使用: Box drawings 内に日本語などの全角文字を入れると、文字幅が揃わずレイアウトが崩れるため、Box drawings 内は英数字・記号のみで記述
- .qmd でも同じ: Quarto でも ASCII box drawings は同様に機能する
- サブエージェントへの注意: サブエージェントに Box drawings を含む文書を作成させる際は、必ず
の該当セクションを読ませることassets/formatting-rules.md - 自動修正: Phase 5で
を必ず実行(LLMは文字幅を認識できないため)scripts/fix_box_drawings.py - 例:
Good (半角のみ): ┌─────────────────────────────────────────────────────────────┐ │ Stage 1: Pretraining │ │ - Data: Dolma 3 Mix (6T tokens) │ │ - Goal: General language understanding & generation │ └─────────────────────────────────────────────────────────────┘ Bad (全角文字混在): ┌─────────────────────────────────────────────────────────────┐ │ ステージ 1: 事前学習 │ ← 崩れる │ - データ: Dolma 3 Mix (6T tokens) │ ← 崩れる └─────────────────────────────────────────────────────────────┘
言語別の注意点
日本語 (ja/) の場合
- 文体: である調(断定調)を使用
- 例: 「〜である」「〜する」「〜となる」
- ですます調は使用しない
- 専門用語は初出時に英語を併記: 「強化学習(Reinforcement Learning, RL)」
- 論文タイトルや固有名詞は原語表記を優先
- Callout 内も日本語で記述
英語 (en/) の場合
- 明確で簡潔な表現を心がける
- 専門用語は略語の初出時に展開: "Reinforcement Learning (RL)"
- Callout 内も英語で記述