mcpField
S
skill-extractor

skill-extractor

github.com/trailofbitsエージェントワークフロー522157 回インストール15 週間前に更新
リポジトリ

skill-extractor について

作業セッションで得た、検証済みで再利用できる知見をClaude Codeのスキルとして保存するスキルです。既存スキルとの重複を確認し、知見の評価から作成・検証までを案内します。

主な機能

  1. 01セッションから再利用可能な知見を抽出
  2. 02関連する既存スキルの確認
  3. 03再利用性と検証状況の評価
  4. 04スキル作成と検証の案内
  5. 05ユーザー単位またはプロジェクト単位で保存

活用シーン

  1. 01検証済みのデバッグ手順の保存
  2. 02今後のセッション向けのプロジェクトパターンの記録
  3. 03関連スキルへの新たなエッジケースの追加

インストール

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

$npx skills add https://github.com/trailofbits/skills-curated --skill skill-extractor

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
quality-guide.md
skill-lifecycle.md
skill-template.md

詳細

スキル抽出ツール

作業セッションから再利用可能な知識を抽出し、Claude Code のスキルとして保存します。

使用するタイミング

  • 調査を通じて、すぐには分からない問題を解決した
  • 試行錯誤が必要な回避策を見つけた
  • 同様の状況で役立つデバッグ手法を見つけた
  • 保存する価値のある、プロジェクト固有のパターンを学んだ
  • 根本原因がすぐには分からなかったエラーを修正した

使用しないタイミング

  • 簡単なドキュメント検索(ドキュメントをブックマークしてください)
  • 些細な修正(誤字や明らかなエラー)
  • 一度限りのプロジェクト固有の設定
  • すでに他の場所で十分に文書化されている知識
  • 未検証の解決策(実際に動作するまで待ってください)

抽出候補を見つける

次のプロンプトを使って、抽出する価値のある知識を特定します。

  • 「始める前には分からなかったことで、今学んだことは何ですか?」
  • 「まったく同じ問題にもう一度直面したら、何を知っておきたいですか?」
  • 「ここにたどり着くきっかけとなったエラーメッセージや症状は何で、実際の原因は何でしたか?」
  • 「このパターンはこのプロジェクトに固有のものですか、それとも同様のプロジェクトでも役立ちますか?」
  • 「同じ問題に直面した同僚に、何を伝えますか?」

少なくとも2つの質問に対して、重要な答えを出せない場合は、おそらく抽出する価値はありません。

コマンド

/skill-extractor [--project] [context hint]
  • デフォルト:~/.claude/skills/[name]/SKILL.md に保存します
  • --project:.claude/skills/[name]/SKILL.md に保存します
  • コンテキストヒントを指定すると、抽出の対象を絞り込めます(例:/skill-extractor the cyclic data DoS fix)

抽出プロセス

ステップ 0:既存のスキルを確認する

新しいスキルを作成する前に、同じ内容を扱っている可能性のある既存のスキルを検索します。

# Check user skills
ls ~/.claude/skills/

# Check project skills
ls .claude/skills/

# Search by keyword
grep -r "keyword" ~/.claude/skills/ .claude/skills/ 2>/dev/null

関連するスキルがある場合は、新しく作成するのではなく、更新することを検討してください。更新するか新しく作成するかの指針については、skill-lifecycle.md を参照してください。

ステップ 1:学びを特定する

$ARGUMENTS にコンテキストヒント(例:「循環データの DoS 修正」)が含まれている場合は、その特定のトピックに抽出の対象を絞ります。

会話を分析して、以下を特定します。

  • どのような問題を解決しましたか?
  • 解決策のどこがすぐには分かりにくかったですか?
  • 次回、より早く解決するために、何を知っておく必要がありますか?
  • 正確な発生条件(エラーメッセージ、症状)は何ですか?

ユーザーに簡単な概要を提示します。

I identified this potential skill:

**Problem:** [Brief description]
**Key insight:** [What made it non-obvious]
**Triggers:** [Error messages or symptoms]
ステップ 2:品質を評価する

候補となるスキルを、次の基準に照らして評価します。

基準合格?根拠
再利用可能 - 今回だけでなく、今後のタスクにも役立つ[理由]
重要性がある - ドキュメント検索ではなく、調査や発見を必要とした[理由]
検証済み - 解決策が実際に機能した[証拠]
具体的なトリガー - 正確なエラーメッセージや状況がある[内容]
理由を説明する - 手順だけでなく、トレードオフや判断を説明する[方法]
付加価値がある - Claude が調べれば分かる事実ではなく、判断の仕方を教える[方法]

評価をユーザーに提示し、次のように尋ねます。「抽出を進めますか?[yes/no]」

合格した基準の数にかかわらず、続行するかどうかはユーザーが決定します。ユーザーの判断を尊重してください。「yes」と答えた場合は抽出し、「no」と答えた場合はスキップします。

ステップ 3:詳細を収集する

ユーザーに次の内容を尋ねます。

  1. スキル名 - コンテキストに基づいてケバブケースの名前を提案し、変更も可能にします
  2. スコープ - ユーザーレベル(デフォルト)またはプロジェクトレベル(--project)
ステップ 4:任意の調査

トピックに特定のライブラリやフレームワークが関係する場合:

  • ウェブ検索で最新のベストプラクティスを確認します
  • 利用可能であれば Context7 MCP を使って公式ドキュメントを確認します
  • 関連する情報源を「参考資料」セクションに含めます

次の場合は調査を省略します。

  • プロジェクト固有の内部パターン
  • 一般的なプログラミングの概念
  • 時間の経過に影響されやすい抽出内容
ステップ 5:スキルを生成する

skill-template.md のテンプレートを使用します。

品質基準: スキルが長期的な価値を提供できるよう、quality-guide.md に従ってください。重要なポイント:

  • 参考情報を羅列するのではなく、行動の指針を示す
  • 何をするかだけでなく、なぜそうするかを説明する
  • 他のスキルより優先して適用されるよう、具体的なトリガーを示す
ステップ 6:保存前に検証する

skill-template.md の検証チェックリストに沿って確認します。検証に失敗した場合は、保存する前に問題を修正します。

ステップ 7:スキルを保存する

ディレクトリを作成して保存します。

  • ユーザーレベル:~/.claude/skills/[name]/SKILL.md
  • プロジェクトレベル:.claude/skills/[name]/SKILL.md

成功を報告します。

Skill saved to: [path]

The skill will be available in future sessions when the context matches:
"[first line of description]"

メモリの統合

抽出するときは、新しい知識と既存のスキルとの関係を検討します。

統合するか、分けるか?

  • 新しい知識が既存のスキルのバリエーションまたはエッジケースであれば、統合します
  • 明確に異なるトリガー条件がある、または根本的に異なる問題を解決する場合は、分けます
  • 判断に迷う場合は、まず別にします。後からいつでも統合できます

更新するか、新規作成するか:

  • エッジケースの追加、より良い解決策、または訂正を発見した場合は、既存のスキルを更新します
  • 関連する分野であっても、知識のトリガー条件が異なる場合は、新しいスキルを作成します

相互参照:

  • 関連はあるものの別々のスキルであれば、それらにリンクする「関連項目」セクションを追加します
  • 例:「接続プールの枯渇をデバッグする」スキルから、「サーバーレスのコールドスタートを最適化する」スキルにリンクできます

スキルのライフサイクル

スキルは永久に使い続けるものではありません。以下については、skill-lifecycle.md を参照してください。

  • 新たな発見を反映してスキルを更新する
  • ツールやパターンが変わったときにスキルを非推奨にする
  • 関連性がなくなったスキルをアーカイブする

却下すべき合理化

次のように考えていることに気づいたら、抽出してはいけません。

  • 「いつか役に立つかもしれない」—検証済みで再利用可能な知識だけを抽出します
  • 「とりあえず全部保存しよう」—量より質を重視します
  • 「ユーザーの確認はないけれど、価値がありそう」—必ず明示的な確認を得ます
  • 「『使用しない場合』のセクションは省略しよう」—優れたスキルには必須です
  • 「説明は曖昧でもかまわない」—発見されるためには、具体的なトリガーが不可欠です

抽出例

シナリオ: ユーザーが、自己参照するリストなど、循環参照を含むシリアライズ済みファイルを解析すると AST ビジターが RecursionError でクラッシュすることを発見しました。

特定した学び:

  • 循環データ構造は循環 AST を作り出します
  • 循環を追跡しないビジターパターンは無限再帰を引き起こします
  • 訪問済みノードを追跡するか、深度制限を設ける必要があります

生成されたスキル名: cyclic-ast-visitor-hardening

主なセクション:

  • 使用する場合:「AST ビジターで RecursionError が発生する」「信頼できないシリアライズ済み入力を解析する」
  • 使用しない場合:「循環していないものの、深くネストされた構造による再帰」
  • 問題:ビジターが訪問済みノードを追跡せず、循環で無限ループに入る
  • 解決策:visited: set パラメーターを追加し、再帰する前に確認する
  • 検証:循環テストケースが RecursionError を発生させずに完了する

コメント