with one click
bukuzo
LuaLaTeX + Python matplotlib で技術書・社内教科書を作成・編集する
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
LuaLaTeX + Python matplotlib で技術書・社内教科書を作成・編集する
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
優しい偉人キャラクターとして思考を深め、プロジェクト管理をサポートする
hanzo・HANZO・foodiesプロダクトの仕様・実装・DBテーブルに関する質問に回答する。蓄積済み知見→ドキュメント→ソースコード→DBの優先順位で参照し、素早く正確に回答して知見を蓄積する。「hanzoの〇〇の仕様は?」「このテーブルの役割は?」「〇〇の実装はどうなってる?」のような質問時に使う
/miru で起動。直前のClaudeの回答が理解できない時に、段階を踏んで理解度を確認しながら理解へ導く
staging/hotfix/production環境のPostgreSQLにSSHトンネル経由で読み取り専用クエリを実行する
Redash APIを使ってクエリ情報・結果を取得・分析する。ユーザーがRedashのURLを貼った場合、「Redashを確認して」「このクエリを見て」などRedashへのアクセスが必要な場面で自動的に使用する。
マルクス・アウレリウスとして仕事のプロジェクト・タスクを管理し、日次の進捗を導く
| name | bukuzo |
| description | LuaLaTeX + Python matplotlib で技術書・社内教科書を作成・編集する |
| disable-model-invocation | true |
LuaLaTeX(MacTeX)と Python matplotlib を使って、技術書・社内教科書を作成・編集するスキルです。 複数のソース(ナレッジベース、コードベース、外部ドキュメント)から内容を収集し、PDF にまとめます。
╭── bukuzo ────────────────────────────╰────────────────────────────────────────以下の思考が浮かんだら、それは手抜きのサインである。右列に従うこと。
| 言い訳 | 現実 |
|---|---|
| 「この図は前回確認したので今回の目視チェックは不要」 | 再生成・再コンパイルした図は毎回Read ツールで開いて全項目チェックする |
| 「コンパイルは1回通ったので完了でよい」 | 参照解決のため必ず2回実行し、Undefined references = 0 を確認する |
| 「エージェントの要約にそう書いてあったので本文に書いてよい」 | 機構・因果の断定はソースコード本体を直接読んで反証確認してから書く |
| 「図の確認が終わっていないがコンパイル成功を報告したい」 | 全図の確認が完了するまでコンパイル報告をしない |
| 「章を書き終えたが品質チェックは後でまとめてやればよい」 | 章追加後の品質チェック(\pageref カバレッジ・用語集・コンパイル確認)は章ごとに実行する |
| 「RULES.md は前に読んだから今回は読まなくてよい」 | セッション開始時に必ず読み込み、執筆中は常に参照する |
| 呼び出し形式 | 動作 |
|---|---|
/bukuzo (引数なし) | AskUserQuestion で「新規作成 / 既存を開く / キャンセル」を提示 |
/bukuzo new | 新規作成フローを直接開始 |
/bukuzo <キーワード> | キーワードで既存プロジェクトを検索し選択 |
| 書籍プロジェクトディレクトリ内で実行 | 自動的に再開フロー |
書籍プロジェクトディレクトリの判定: カレントディレクトリ(またはその親)に .book/LOG.md が存在する場合。
ltjsbook では以下の4階層を使う:
| LaTeX コマンド | 日本語呼称 | 番号例 |
|---|---|---|
\part{...} | 部 | 第1部、第2部 |
\chapter{...} | 章 | 第1章、第2章 |
\section{...} | 節 | 1.1、1.2 |
\subsection{...} | 項 | 1.1.1、1.1.2 |
\appendix 以降に \chapter として配置書籍プロジェクトの作業ディレクトリは以下の構成とする:
<workdir>/
├── main.tex # マスターLaTeXファイル(\part・\chapter の \input を列挙)
├── chapters/ # 章ごとの .tex ファイル(1ファイル = 1章)
│ ├── p1_ch01_xxx.tex # 第1部 第1章
│ ├── p1_ch02_xxx.tex # 第1部 第2章
│ ├── p2_ch03_xxx.tex # 第2部 第3章
│ └── appendix_a.tex # 付録A(用語集など)
├── figures/ # 生成済み PNG 図
├── scripts/ # Python matplotlib スクリプト
│ └── fig_xxx.py
└── .book/ # プロジェクト管理ファイル(必須)
├── SUMMARY.md # 書籍概要(ユーザーが参照)
├── RULES.md # 編集ルール・用語統一表・スタイル設定
├── TODO.md # 作業タスク
└── LOG.md # セッション間の引き継ぎログ(Claude 用)
\part{人件費管理の課題とHANZO}
\input{chapters/p1_ch01_xxx}
\input{chapters/p1_ch02_xxx}
\part{主要機能詳解}
\input{chapters/p2_ch03_xxx}
\appendix
\input{chapters/appendix_a}
.book/ ファイルの役割編集ルールを集約するファイル。ユーザーが「〇〇してほしい」と指示したルールをここに追記していく。
ルールはユーザーの指示があったタイミングで追記する。セッション開始時に読み込み、執筆中は常に参照する。
~/work/google_drive/bukuzou/<タイトル>/ を提案<書籍タイトル>.pdf\jobname ではなく、コンパイル時に -jobname オプションで指定する:
lualatex -jobname="出力ファイル名(拡張子なし)" main.tex
p{部番号}_ch{章番号}_{英名}.tex 形式.book/ ファイルを作成references/latex-setup.md を読み、ltjsbook クラス、\part/\chapter 構造、カラー定義、tcolorbox スタイル込みの雛形を作る.book/LOG.md, .book/SUMMARY.md, .book/TODO.md, .book/RULES.md を読み込むls ~/work/google_drive/bukuzou/ を実行.book/LOG.md が存在するディレクトリを書籍プロジェクトとして抽出.book/SUMMARY.md の1行目(タイトル)も取得export PATH="/Library/TeX/texbin:$PATH"
# 出力ファイル名を指定する場合(デフォルト: 書籍タイトル.pdf)
lualatex -interaction=nonstopmode -jobname="出力ファイル名(拡張子なし)" main.tex
lualatex -interaction=nonstopmode -jobname="出力ファイル名(拡張子なし)" main.tex # 参照解決のため2回実行
figures/ への相対パスのため)-jobname を省略すると main.pdf が生成される(書籍タイトルにしたい場合は必ず指定)main.log を確認する図の内容によってツールを使い分ける。TikZ のプリアンブル設定・graphviz のセットアップ手順は references/latex-setup.md を参照。
| 図の種類 | ツール | 記法 |
|---|---|---|
| データ可視化(折れ線・散布図・棒グラフ) | matplotlib(Python) | scripts/fig_xxx.py → figures/fig_xxx.png |
| フロー図・概念図・タイムライン(箱と矢印) | TikZ(LaTeX ネイティブ) | .tex ファイル内に直接記述 |
| シンプルな DAG・依存関係図 | graphviz(dot) | scripts/fig_xxx.dot → figures/fig_xxx.png |
python scripts/fig_xxx.py
scripts/fig_*.py を LaTeX コンパイル前に実行するfigures/ に統一するHiragino Sans(日本語対応)図を新規作成・更新したあと、またはコンパイル後に、全ての図を目視確認する。
# figures/ 内の全 PNG を確認する
ls figures/*.png
Read ツールで各 PNG ファイルを開き、以下の項目をチェックする:
| チェック項目 | 確認内容 |
|---|---|
| 凡例(legend)の重なり | 凡例がデータ・軸ラベル・タイトルと重なっていないか |
| 矢印のずれ | 矢印の始点・終点がボックスやノードから外れていないか |
| 矢印とデータ線の整合 | ax.annotate の arrowhead が折れ線の対応する点に乗っているか。matplotlib ループで「発注追加 → annotate → 消費 → append」の順だと arrowhead が消費分だけ浮く(ズレバグ)。消費・append の後に annotate するか、フラグで遅延させること |
| テキストの切れ | ラベル・タイトル・軸の文字が枠外にはみ出していないか |
| フォントの文字化け | 日本語が豆腐(□)になっていないか |
| 余白の過不足 | 上下左右に極端な空白・はみ出しがないか |
| 色の視認性 | 似た色が隣り合って区別しにくくなっていないか |
問題が見つかった場合はスクリプト(または TikZ コード)を修正して再生成し、再度チェックする。 全図の確認が完了するまでコンパイル報告をしない。
main.tex 雛形(推奨パッケージ一式)、部・章・節・項の番号ルール、tcolorbox スタイル3種、TikZ/graphviz のセットアップは references/latex-setup.md にまとめてある。新規プロジェクト作成時・プリアンブル編集時に必ず読むこと。
章内で新用語を定義するとき:
\phantomsection\label{term:用語名}
用語集(appendix_a.tex)でページ参照:
\pageref{term:用語名} ページ参照
新しい章を書き終えたタイミングで以下を自動チェックする:
\pageref カバレッジ: 用語集の全エントリに対応する \label が存在するか確認Undefined references が 0 であることを確認全章の執筆が一通り完了した後、用語集(appendix_a.tex)を正として本文全体の表記を統一するレビューを行う。
実行時は references/terminology-review.md を読み、そのフロー(抽出→収集→自動修正→ユーザー相談→最終コンパイル)に従うこと。
| ソース種別 | 取得方法 | 使い方 |
|---|---|---|
| Markdown ナレッジファイル | Read ツールで直接読む | 内容をまとめて章原稿に変換 |
| コードベース | Bash/Grep でシンボル・コメントを収集 | 実装の説明・図の元データに使用 |
| 外部 URL | WebFetch で取得 | 概念説明・参考資料として引用 |
| ユーザーのテキスト | 会話から直接取得 | そのまま章原稿として整形 |
ソースが多い場合は、章単位でソースを割り当て、エージェントで並列処理することを推奨。
ユーザーが「終わり」「今日はここまで」などと言った場合:
.book/LOG.md を更新(作業状況・次のアクション).book/TODO.md を更新(完了タスクにチェック、残タスクを整理).book/SUMMARY.md を更新(ページ数・章構成の現在状態)コマンド開始時に以下を実行する:
printf "\n\033[1;93m╔════════════════════════════════════════════════╗\033[0m\n"
printf "\033[1;93m║ \033[1;92m📖 BUKUZO \033[1;95mACTIVATED\033[1;93m ║\033[0m\n"
printf "\033[1;93m╚════════════════════════════════════════════════╝\033[0m\n\n"
引数($ARGUMENTS)と現在のディレクトリを確認し、上記のルールに従って動作してください。