Claude Code セッションで行った作業を「一般化された解説 + 4択クイズ」として記録し、 ローカルのクイズサイトで反復学習するための 記録帳・問題集 スキル。
「動かしただけで終わらせない」が合言葉。 セッションごとに学んだ概念を Markdown ノートに変換し、 ブラウザのクイズで何度でも復習できる。
| やりたいこと | 入り口 | 実行場所 |
|---|---|---|
| 今のセッションを記録(解説 + 4択問題を生成) | mybook --add |
Claude Code セッション内のみ |
| クイズサイトを開く | mybook --open / mybook |
スキル経由 / ターミナル CLI |
| ローカルサーバーを停止 | mybook --stop |
スキル経由 / ターミナル CLI |
--add は会話履歴の抽出が必要なため Claude Code セッション専用。
--open / --stop は CLI からも直接実行できる。
~/.claude/skills/mybook/ # スキル本体(配布物)
├── README.md # このファイル
├── SKILL.md # スキル定義 + 実行フロー
├── bin/
│ └── mybook # CLI エントリ(シェルスクリプト)
└── site/ # クイズサイトのテンプレート
├── index.html
├── app.js
└── style.css
~/.claude/mybook/ # 実行時データ(自動生成)
├── notes/
│ ├── {YYYY-MM-DD}-{NNN}-{slug}.md
│ └── index.json # 全ノートのメタ情報
└── site/ # スキル本体から同期されたコピー
notes/がユーザーデータの本体。バックアップしたいのはここ。site/はスキル実行時に毎回~/.claude/skills/mybook/site/から上書きコピーされる。 カスタマイズしたいときは スキル本体側 を編集する。
# シンボリックリンクを PATH の通った場所に置く(例: PNPM_HOME)
ln -sf "$HOME/.claude/skills/mybook/bin/mybook" "$HOME/Library/pnpm/mybook"確認:
mybook --help~/Library/pnpm 以外でも ~/.local/bin、/usr/local/bin など
PATH の通った任意の場所に symlink すれば動く。
セッションの終わり際に Claude へリクエスト:
mybook --add
Claude が会話履歴を読み、
- 学習トピックを抽出(必要に応じて複数ファイルに分割)
- プロジェクト固有名詞を取り除いて「一般化された解説」を生成
- 解説に基づく 4択問題(3〜6問) を作成
~/.claude/mybook/notes/に Markdown を保存index.jsonを再生成
CLI からでも、Claude Code からでも OK:
mybook # = mybook --open
mybook --openローカルで python3 -m http.server 8765 が起動し、
ブラウザで http://localhost:8765/site/ が開く。
mybook --stopmybook --add を打ち忘れる人向けに、Claude Code セッション終了時に
「mybook --add でクイズ化できます」というリマインダーを 1 回だけ表示する設定。
~/.claude/settings.json の hooks.SessionEnd に追加する:
{
"hooks": {
"SessionEnd": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "echo '{\"systemMessage\":\"📚 mybook --add で今のセッションをクイズ化できます (mybook --open で復習)\"}'"
}
]
}
]
}
}- 既存の
hooksオブジェクトに マージ する(他フックを上書きしない) - セッションを
/exitやウィンドウ閉じで終了したときに 1 回だけ出る - 反映には Claude Code の再起動か
/hooks画面を一度開く必要がある
うるさく感じたら SessionEnd ブロックごと削除すれば元に戻る。
各ノートは frontmatter + 解説 + 4択問題の Markdown:
---
title: トピック名
slug: topic-slug
tags: [tag1, tag2]
date: 2026-04-27
---
# トピック名
## 解説
(プロジェクト固有名詞を排した一般化された説明)
## 4択問題
### Q1. 問題文
- A) ...
- B) ...
- C) ...
- D) ...
**正解**: B
**解説**: なぜそれが正解か / 他がなぜ誤りか問題作成のルール(詳細は SKILL.md 参照):
- 問題文に固有名詞を残さない
- 誤答も「もっともらしい」内容にする
- 正解の位置はランダム化(A→B→C→D の機械的並びを避ける)
- 必ず解説を添える
| やりたいこと | 編集する場所 |
|---|---|
| クイズサイトの見た目を変える | ~/.claude/skills/mybook/site/{index.html,app.js,style.css} |
| 問題生成ルールを変える | ~/.claude/skills/mybook/SKILL.md |
| ノート本体を編集 | ~/.claude/mybook/notes/*.md(編集後は mybook --add で再生成不要、ブラウザを再読込) |
ノートを手で編集した場合は index.json を再生成すると問題数が反映される。
Claude に「mybook の index.json を再生成」と頼めば実行する。
| 症状 | 対処 |
|---|---|
mybook: command not found |
symlink が PATH の通った場所にあるか確認 (which mybook) |
| ポート 8765 が使用中 | mybook --stop で停止後に再実行 |
| サイトに何も表示されない | ~/.claude/mybook/notes/index.json が空でないか確認 |
| サイトが古いまま | mybook --open を再実行(毎回 site/ を再同期する) |
- スキル定義:
SKILL.md - CLI スクリプト:
bin/mybook - サイト本体:
site/index.html,site/app.js,site/style.css