Skip to content

koukikki/mybook

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

mybook

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/ から上書きコピーされる。 カスタマイズしたいときは スキル本体側 を編集する。

CLI セットアップ

# シンボリックリンクを 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 Code から記録する

セッションの終わり際に Claude へリクエスト:

mybook --add

Claude が会話履歴を読み、

  1. 学習トピックを抽出(必要に応じて複数ファイルに分割)
  2. プロジェクト固有名詞を取り除いて「一般化された解説」を生成
  3. 解説に基づく 4択問題(3〜6問) を作成
  4. ~/.claude/mybook/notes/ に Markdown を保存
  5. index.json を再生成

クイズサイトを開く

CLI からでも、Claude Code からでも OK:

mybook            # = mybook --open
mybook --open

ローカルで python3 -m http.server 8765 が起動し、 ブラウザで http://localhost:8765/site/ が開く。

サーバーを停止

mybook --stop

自動リマインダー(オプション)

mybook --add を打ち忘れる人向けに、Claude Code セッション終了時に 「mybook --add でクイズ化できます」というリマインダーを 1 回だけ表示する設定。 ~/.claude/settings.jsonhooks.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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors