mcpField
L
learning

learning

github.com/desplega-ai生産性36277 回インストール1 日前に更新
リポジトリ

learning について

learning は、セッションやプロジェクトをまたいで組織の知見を管理するスキルです。知見の記録、検索、レビュー、昇格に対応し、既定ではローカルに保存し、qmd と agent-fs も選択できます。

主な機能

  1. 01知見の記録と分類
  2. 02設定済みバックエンドの検索
  3. 03知見を CLAUDE.md に昇格
  4. 04記録のレビュー、アーカイブ、削除
  5. 05ローカル、qmd、agent-fs のバックエンド

活用シーン

  1. 01後のセッション向けに技術上の注意点を記録
  2. 02特定のトピックに関する既存の知見を検索
  3. 03繰り返し使うルールを CLAUDE.md に昇格
  4. 04保存済みの知見をレビューしてアーカイブ

MCP 対応

qmd を MCP サーバーとして設定すると、qmd MCP ツールでインデックス済みの知見を検索・取得できます。qmd CLI に切り替えることもできます。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/desplega-ai/ai-toolbox --skill learning

インストール後、Claude Code で/learningを入力して読み込まれたか確認します。

同梱ファイルtemplate.md

詳細

学習

組織のナレッジを管理します。知見を記録し、過去の学びを検索し、重要なパターンを恒久的な参照先として CLAUDE.md に反映します。

使用するタイミング

このスキルは、次の場合に有効になります。

  • ユーザーが /learning コマンドを実行したとき
  • 別のスキルが desplega:learning を参照したとき
  • ユーザーが「これを記録しましょう」「X について何を学びましたか」など、ナレッジ管理に関する表現を使ったとき

サブコマンドの振り分け

最初の引数を解析して、実行するフローを判断します。

引数フロー
(引数なし) または statusセットアップ/ステータス
capture [insight]記録
recall <topic>呼び出し
promote [id-or-topic]昇格
reviewレビュー

セットアップ/ステータス(引数なしの /learning)

  1. 設定を確認:~/.agentic-learnings.json を読み込みます。
  2. 見つからない場合(初回実行):
    • 学習システムについて簡潔に説明します。「Learning スキルは、セッションやプロジェクトをまたいで組織のナレッジを記録、検索、昇格します。構造化されたフロントマターを含む Markdown ファイルとして学びを保存します。」
    • ローカルバックエンドを使い、デフォルトのスキーマ(下記の設定ファイルスキーマを参照)で ~/.agentic-learnings.json を作成します。
    • AskUserQuestion を使用します:「追加のバックエンドを設定しますか?(セマンティック検索用の qmd、リモートチームストレージ用の agent-fs)」選択肢:["ローカルのみ(デフォルト)", "qmd を設定", "agent-fs を設定", "両方を設定"]
    • qmd が選択された場合:
      • qmd MCP ツールが利用可能か確認します(mcp__qmd__status を試します)。設定に "accessMode": "mcp" または "cli" として記録します。
      • AskUserQuestion を使用します:「学びを検索する qmd コレクションはどれですか?(カンマ区切りで名前を入力してください。例:'ai-toolbox, my-notes')」
    • agent-fs が選択された場合は、手順に沿って設定します。
      • AskUserQuestion を使用します:「agent-fs API キーは設定済みですか?」選択肢:["はい、環境変数(AGENT_FS_API_KEY)に設定済みです", "はい、今入力します", "いいえ、まず設定する必要があります"]
      • 今入力する場合:AskUserQuestion を使用します:「agent-fs API キーを入力してください」
      • 設定が必要な場合:取得方法を説明し、一旦待機します。
      • AskUserQuestion を使用します:「学びを保存する agent-fs 組織はどれですか?」選択肢:["既存の組織を使う(名前を入力します)", "学び用の新しい組織を作成する"]
      • 既存の組織を使う場合:AskUserQuestion を使用します:「組織名を入力してください」
      • 新しい組織を作成する場合:AskUserQuestion を使用します:「新しい組織の名前は何にしますか?」— その後、Bash で agent-fs org create <name> を実行します。
      • AskUserQuestion を使用します:「学びを保存するドライブはどれですか?」選択肢:["既存のドライブを使う(名前を入力します)", "新しい 'learnings' ドライブを作成する"]
      • 既存のドライブを使う場合:AskUserQuestion を使用します:「ドライブ名を入力してください」
      • 新しいドライブを作成する場合:Bash で agent-fs drive create learnings --org <org> を実行します。
    • CLAUDE.md の初期設定:設定の作成後、AskUserQuestion を使用します:「今後のセッションで学習システムについて把握できるよう、プロジェクトの CLAUDE.md に Learning System セクションを追加しますか?」選択肢:["はい、プロジェクトの CLAUDE.md に追加する", "はい、グローバルの ~/.claude/CLAUDE.md に追加する", "いいえ、スキップする"]
    • はいの場合、選択した CLAUDE.md に次のセクションを追加します。
      ## Learning System
      Use `/learning recall <topic>` before research/planning to check for prior learnings.
      Use `/learning capture` to record significant insights, decisions, and gotchas.
      Config: `~/.agentic-learnings.json`
      
  3. 見つかった場合(再訪ユーザー):
    • 設定済みバックエンドと、それぞれのステータス(有効/無効)を表示します。
    • バックエンドごとの学びの件数を数えます(ローカル:Glob の件数、agent-fs:agent-fs ls の件数)。
    • 最近の学びを新しい順に 5 件表示します(ファイル名とフロントマターのトピック)。

記録(/learning capture)

ステップ 1:気づきを取得する
  • インラインテキストとともに呼び出された場合(例:/learning capture "qmd requires manual update"):そのテキストを気づきとして使用します
  • テキストが指定されていない場合:AskUserQuestion を使用します:「記録したい気づきや学びは何ですか?」
ステップ 2:重要性を確認する

先に進む前に、以下のデフォルトの判断基準に基づいて評価します。

  1. 将来のセッションで、ほかの人の役に立つか?(最優先の基準)
  2. これはすでに CLAUDE.md またはコードコメントに記載されているか?(記載済みならスキップ)
  3. ユーザーがエージェントの進め方を修正したか?(必ず記録)
  4. 予想外に難しかったことや、正常に動作しなかったことがあったか?(通常は記録)

例外:プロジェクトまたはグローバルの CLAUDE.md に ## Learning Capture Rules セクションがある場合は、そのルールを上記のデフォルトより優先します。

気づきが重要性の基準を満たさない場合は、その旨をユーザーに伝えたうえで、記録するかどうかを尋ねます。最終的な判断はユーザーに委ねます。

ステップ 3:分類する

AskUserQuestion を使用します:「この学びに最も適したカテゴリはどれですか?」次の選択肢を提示します。

  • product-decisions — アーキテクチャ上の選択、トレードオフ、なぜ X ではなく Y を選んだのか
  • technical-gotchas — バグ、注意点、予想外の動作、回避策
  • human-nudges — ユーザーによる修正、ワークフローの好み、コミュニケーションのスタイル
  • patterns — 発見された再利用可能なアプローチ、規約、ベストプラクティス
  • mistakes — 発生した問題と、次回に向けた改善点
ステップ 4:共有範囲を決める

AskUserQuestion を使用します:「この学びは個人用と共有用のどちらにしますか?」次の選択肢を提示します。

  • Personal — thoughts/{user}/learnings/ に保存され、このユーザーのコンテキストでのみ表示されます
  • Shared — thoughts/shared/learnings/ に保存され、Git で追跡され、すべての共同作業者(人間とエージェント)に表示されます
ステップ 5:学びを記録する
  1. ファイル名を生成します:YYYY-MM-DD-<slug>.md
    • スラッグ:トピックから作成し、小文字、ハイフン区切りで、最大 50 文字にします
    • 共有範囲に記録する場合は、複数ユーザー間の競合を避けるため、スラッグに作成者名を含めます(例:2026-03-19-taras-qmd-indexing.md)
  2. 収集した情報を使って、cc-plugin/base/skills/learning/template.md のテンプレートに記入します
  3. Write ツールを使い、適切なパスに書き込みます
  4. バックエンドを同期します:
    • qmd バックエンドが有効な場合:Bash 経由で qmd update を実行します
    • agent-fs バックエンドが有効な場合:Bash 経由で agent-fs write /learnings/<filename> --content "<content>" を実行します
  5. ファイルパスを示して、記録が完了したことを確認します

再確認(/learning recall)

ステップ 1:トピックを取得する
  • トピックを指定して呼び出された場合(例:/learning recall qmd indexing):そのトピックを使用します
  • トピックが指定されていない場合:AskUserQuestion を使用します:「どのトピックを検索しますか?」
ステップ 2:設定済みのすべてのバックエンドを並行して検索する

有効なバックエンドすべてに同時に問い合わせます。

  • ローカル:thoughts/{user}/learnings/ と thoughts/shared/learnings/ からトピックを Grep で検索します
  • qmd:設定済みのコレクションを対象に、[{type:'lex', query:'<topic>'}, {type:'vec', query:'<topic>'}] を指定して mcp__qmd__query を使用します
  • agent-fs:Bash 経由で agent-fs search --query "<topic>" または agent-fs fts --query "<topic>" を実行します
ステップ 3:結果を提示する
  • 関連度順に並べます(完全一致を先に、意味的な一致を次に表示)
  • 各結果について、日付、カテゴリ、トピック、1 行の要約を表示します
  • ローカルの結果には file:line 形式の参照を含めます
  • 学びの全文を読むか、アクション(昇格、アーカイブ)を行うかを提案します

昇格(/learning promote)

ステップ 1:学びを選択する
  • ファイルパスが指定された場合:その学びを直接読み込みます
  • トピックが指定された場合:まず再確認を実行し、昇格する学びをユーザーに選択してもらいます
  • 引数が指定されていない場合:トピックを指定せずに再確認を実行し(最近の学びを一覧表示)、ユーザーに選択してもらいます
ステップ 2:昇格先を選択する

AskUserQuestion を使用します:「この学びをどこに昇格しますか?」次の選択肢を提示します。

  • Project CLAUDE.md — 現在のプロジェクトの CLAUDE.md に追加します
  • Global ~/.claude/CLAUDE.md — グローバルの CLAUDE.md に追加します
ステップ 3:整形して追記する
  1. 学習ファイル全体を読みます
  2. CLAUDE.md に適した簡潔なルール(1~3 行)として整形します
  3. 書き込む前に、AskUserQuestion を使って整形したルールを確認します
  4. 選択した CLAUDE.md の適切なセクションに追記します(必要に応じてセクションを作成します)
  5. 学習ファイルのフロントマターを更新し、promoted_to: に対象パスを設定します(例:promoted_to: "CLAUDE.md" または promoted_to: "~/.claude/CLAUDE.md")

レビュー(/learning review)

ステップ 1:すべての学習内容を一覧表示する
  • デフォルトのバックエンドにある学習内容をすべて(新しい順に)一覧表示します
  • 1 行の要約を表示します:日付、カテゴリ、トピック、昇格状況
  • ローカルバックエンドを使用します:Glob thoughts/{user}/learnings/*.md + thoughts/shared/learnings/*.md
ステップ 2:レビューする項目を選択する

AskUserQuestion(multiSelect)を使用し、学習内容の一覧とともに「レビューする学習内容を選んでください」と尋ねます

ステップ 3:選択した学習内容をそれぞれ処理する

選択した学習内容ごとに:

  1. 全文を表示します
  2. AskUserQuestion を使用し、次の選択肢とともに「この学習内容をどうしますか?」と尋ねます:
    • Keep — 変更しません
    • Promote — この学習内容の昇格フローを実行します
    • Archive — thoughts/{user}/learnings/archive/(または共有領域の同等の場所)に移動します
    • Delete — ファイルを完全に削除します
ステップ 4:代替手段 — ファイルレビュー

file-review が利用可能な場合(コマンドが存在するか確認してください)、一括レビューの代替手段として提示します:

  • 「代わりに file-review を使って、画面上で一括レビューしますか?」
  • はいの場合:一時的な要約ファイルを作成し、file-review を起動します
ステップ 5:報告する

選択した学習内容をすべて処理した後、次の形式で報告します:「保持 N 件、昇格 N 件、アーカイブ N 件、削除 N 件。」


バックエンドアダプターのリファレンス

すべてのバックエンドで、write、search、list、delete の 4 つの操作をサポートします。

ローカルバックエンド
操作実装
writeWrite ツールを thoughts/{user}/learnings/ または thoughts/shared/learnings/ に使用して書き込みます
search個人用と共有用の両方の学習ディレクトリを対象に、トピックを Grep/Glob で検索します
listGlob thoughts/{user}/learnings/*.md + Glob thoughts/shared/learnings/*.md
deleteBash rm <path>(学習ファイルはローカルファイルにすぎません)
qmd バックエンド

qmd は、Markdown ドキュメントを対象とするローカル検索エンジンです。MCP ツール(MCP サーバーとして設定されている場合)または CLI から利用できます。

  • インストール:npm install -g @tobilu/qmd(または bun install -g @tobilu/qmd) — github.com/tobi/qmd
  • MCP アクセス:mcp__qmd__query、mcp__qmd__get、mcp__qmd__multi_get ツールを使用します(qmd MCP サーバーが設定されている場合に利用可能)
  • CLI アクセス:Bash から qmd query、qmd get、qmd update を実行します(インストール済みであれば常に利用可能)
操作実装
writeローカルと同様(qmd はローカルファイルをインデックス化します)。その後、Bash から qmd update を実行して再インデックス化します
searchMCP:設定済みコレクションを対象に、lex+vec サブクエリーを指定して mcp__qmd__query を使用します。CLI:Bash から qmd query --collection <name> "<topic>" を実行します
listMCP:glob パターン(例:learnings/*.md)を指定して mcp__qmd__multi_get を使用します。CLI:Bash から qmd get "learnings/*.md" を実行します
deleteローカルファイルを削除し、Bash から qmd update を実行します(qmd が再インデックス化してエントリーを削除します)

利用可能な場合は MCP ツールを優先してください(出力がより充実しており、シェルのエスケープ処理も不要です)。MCP が設定されていない場合は CLI を使用します。

agent-fs バックエンド

agent-fs は、セマンティック検索に対応した、チーム全体で利用できるリモートファイルストレージを提供します。アクセスは CLI 経由のみです。

  • インストール:bun add -g @desplega.ai/agent-fs — github.com/desplega-ai/agent-fs
  • CLI でのアクセス:すべての操作は Bash 経由で agent-fs <command> を使用します
操作実装
書き込みBash 経由で agent-fs write /learnings/<filename> --content "<content>"
検索Bash 経由で agent-fs search --query "<topic>"(セマンティック検索)または agent-fs fts --query "<topic>"(キーワード検索)
一覧表示Bash 経由で agent-fs ls /learnings/
削除Bash 経由で agent-fs rm /learnings/<filename>

設定ファイルのスキーマ

設定ファイルは ~/.agentic-learnings.json にあります:

{
  "defaultBackend": "local",
  "backends": {
    "local": { "enabled": true, "basePath": "thoughts/{user}/learnings/" },
    "qmd": { "enabled": false, "accessMode": "mcp", "collections": [] },
    "agentFs": { "enabled": false, "apiKey": "", "org": "", "drive": "" }
  }
}
  • defaultBackend:書き込みに使用するバックエンド(初期設定では常に "local")
  • backends.local.basePath:パスのテンプレート。{user} は実行時に現在のユーザー名に置き換えられます
  • backends.qmd.accessMode:"mcp"(推奨。MCP ツールを使用)または "cli"(代替。Bash 経由で qmd CLI を使用)
  • backends.qmd.collections:検索する qmd コレクション名のリスト
  • backends.agentFs:agent-fs の接続情報(リモートのチームストレージを使用する場合のみ必要)
  • backends.agentFs.apiKey:API キー。ここで設定するか、環境変数 AGENT_FS_API_KEY で設定できます

このスキルが該当しないもの

  • チャットボットのメモリではありません — 学びは意図的に整理された知識であり、会話履歴ではありません
  • 自動ではありません — エージェントが自動で記録することはありません。サブスキルの参照を通じて促し、ユーザーまたはエージェントが判断します
  • CLAUDE.md の代替ではありません — 学びは一時的な保存場所であり、重要なものは CLAUDE.md に昇格されます
  • brain ではありません — brain は個人用の別のナレッジツールです。このスキルは、プロジェクトやチームの組織的な知識のためのものです

コメント