コンテンツにスキップ

スキルライフサイクルエンジン

生の会話から洗練された再利用可能なスキルへの6段階。


武道の弟子は段階的に学びます:

  1. 活性化 — 師範が道場を開く。弟子が現れる。
  2. 圧縮 — 一つの技を三通りの長さで書く:技の名前、一行の口訣、完全な分解。思い出せる最短の版で足りる。
  3. 抽出 — 各組手の後、弟子は何がうまくいき何がいかなかったかを振り返る。
  4. 蒸留 — 何年もの修練が、他者に教えられる少数の原則に圧縮される。
  5. 診断 — 師範が見るのは一度の失敗であり、その原因を言い当てる。構えの問題か、それともその返し技をそもそも習っていないのか。
  6. ギャップ分析 — 「防御は強いが、カウンターが弱い。そこを鍛えよう。」

DuDuClawのスキルライフサイクルはこの過程を反映します——生の会話経験を構造化され、再利用可能で、共有可能なスキルに変換します。


エージェント起動時、スキルローダーがSKILLS/ディレクトリを読み込み、インストール済みスキルを有効化:

Agent起動
|
v
SKILLS/ディレクトリをスキャン
|
v
各スキルファイルについて:
- スキル定義を解析
- フォーマットと依存関係を検証
- SkillRegistryに登録
|
v
スキルがAgentのruntimeで利用可能に

ステージ2:圧縮(3層のプログレッシブ読み込み)

Section titled “ステージ2:圧縮(3層のプログレッシブ読み込み)”

圧縮が扱うのは注入コストであり、重複排除ではありません。各スキルは3つの層で保持され、プロンプト構築時には「まだ用を成す一番安い層」が注入されます:

スキルファイル(SKILLS/complaint-handling.md)
|
v
Layer 0 — 名前タグのみ 約5トークン
Layer 1 — 1〜2行の要約 約30トークン
Layer 2 — 完全なmarkdown 約200+トークン
|
v
どの層がプロンプトに届くかは関連度が決める

そのターンでおそらく不要なスキルを視界に残すコストは200ではなく5トークンです。スキルの充実したエージェントが毎ターン蔵書全体の代金を払わずに済むのは、これによります。

成功した会話の後、新しいスキルになりうるパターンを自動抽出:

会話が成功裏に完了
|
v
会話パターンを分析:
- これは新規のアプローチか?
- ユーザーは満足を表明したか?
- このパターンは再現可能か?
|
+--+--+
| |
はい いいえ → スキル抽出なし
|
v
候補スキルを生成:
- トリガー条件を特定
- レスポンスパターンを抽出
- 成功基準を定義
|
v
書き込み前にセキュリティスキャンとvettingゲートを通す

2026-09に削除:「ステージ4——再構築」。 本ページの旧版には、雑然としたスキルの意図をリバースエンジニアリングして原則から作り直すステージが書かれていました。それを担うはずだったモジュール(skill_lifecycle/reconstruction.rs)には呼び出し元が一つもなく——自身のテストからすら呼ばれず——何一つ再構築したことがありませんでした。約束として残すのではなく、コードごと削除しました。スキルが壊れた場合の正直な答えは、それを引退させ、抽出に新しいものを作らせることです。同じ理由で姉妹モジュール2つ(recommender.rs、dependency_resolver.rs、いずれも呼び出し元ゼロ)も一緒に削除されました。スキル一覧に「おすすめ」面がなく、スキル同士に宣言された依存関係がないのはそのためです。

スキルを本質的なルールに圧縮——効果的に適用するために必要な最小限の知識:

完全なスキル(500行、詳細な例)
|
v
本質的ルールを特定:
- コア原則(5-10ルール)
- 重要な制約
- 重要な判断ポイント
|
v
蒸留されたスキル(50行、純粋な原則)

診断師はスキルを採点しません。読むのは予測誤差であり、その原因を言い当てます——LLMコストゼロ、PredictionErrorシグナルに対する純粋なルールです:

PredictionError(Significant / Critical)
|
v
原因を分類:
- StyleMismatch — 口調・長さがユーザーに合わない
- DomainGap — このトピックの知識がない
- PrecisionIssue — 回答が十分に正確でない
- ExpectationMismatch — ユーザーは別の振る舞いを期待していた
- Unknown — 判定不能
|
v
DomainGapかつ、合致するインストール済みスキルが無い
|
v
SkillGap { suggested_name, suggested_description, evidence } を生成

SkillGapになるのは「既存スキルがどれも覆っていないDomainGap」だけです。この記録がステージ6の蓄積対象になります。

最終ステージ。エージェントの全体的なスキルポートフォリオを調査し、欠けている部分を特定:

会話履歴を分析
|
v
Agentが苦戦したパターンを特定:
- 満足度スコアの低いトピック
- クラウドAPIへのフォールバックが必要だったクエリ
- 放棄された会話
|
v
ギャップレポート:
「Agentはクレーム処理は得意(対応スキルあり)だが、
技術的な製品質問で苦戦。
推奨:先週の5つの成功した技術会話からスキルを抽出。」

自己生成スキルに加え、コミュニティからスキルを発見・インストール可能:

GitHub Search APIでリアルタイムにスキルリポジトリを検索:

検索クエリ:"customer-support skill duduclaw"
|
v
GitHub Search API → 結果(24時間キャッシュ)
|
v
加重ランキング:Stars、活動頻度、フォーマット有効性、セキュリティスキャン結果

インストール前に、すべてのスキルが Rust ネイティブの Skill セキュリティスキャナー(skill_lifecycle::security_scanner)を通過:プロンプトインジェクションパターン、システムファイル変更、外部URL参照、難読化コンテンツをチェック。

スキルの出どころは3つ — GitHub、キュレーション済みのスキルハブ、そしてこの環境が自分で学習したスキルバンク — ですが、検索するツールは1つです。skill_search は source パラメータを取ります。

source 検索対象 使いどころ
all(既定) ハブ と 学習済みスキルバンク。スキル名で重複排除 そのスキルがどこにあるか分からないとき。ルールは一言: 分かっている場合を除き source は触らない。
github GitHub ハブのみ 公開 GitHub リポジトリにあると見込まれるとき
hub キュレーション済みレジストリ(anthropic-skills / clawhub / lobehub / skills-sh) 審査済み・ランキング付きの結果だけが欲しいとき
bank 学習済みスキルバンク この環境が自分で学習したものを探しているとき

学習済みスキルバンクはまだ空のインメモリスタブなので、source="bank" は正直に「空である」と返します。ハブの結果でごまかすことはありません。skill_bank_search は source="bank" の非推奨エイリアスでしたが、v1.69.0 で削除されました。代わりに skill_search に source="bank" を付けて呼び出してください — 非推奨と削除を参照。

ツール 用途
skill_search すべてのスキルソース(ハブ+学習済みバンク)を加重ランキングで検索。source で絞り込み
skill_list その社員が実際に読み込むスキル(会社・部署・自分の3層)を一覧表示。その社員でオフにしたスキルは表示しない。指定がなければ呼び出した社員自身(v1.76.0。以前はメインの社員が既定で、部署の層も抜けていた)

スキルライブラリ画面(v1.76.0)

Section titled “スキルライブラリ画面(v1.76.0)”

ダッシュボードの「スキル」画面には、マーケット・チームスキル・マイスキル・ランキングの4つのタブがあります。開いているタブはアドレスに入ります(/skills?tab=shared、?tab=mySkills、?tab=leaderboard)。リンクや再読み込みでも同じタブに戻ります。

並び順。 一覧はブラウザ側で画面の言語の照合規則に従って並べます。大文字小文字は区別せず、step-2 は step-10 より前、中国語や日本語の名前もバイト順ではなくその言語の通常の順になります。並べ替えメニューで名前順・最近使った順・よく使う順・最近追加した順を選べ、選択はブラウザごとに記憶されます。同順位の行の順番は固定です。ゲートウェイも社員を名前順で返すため、再起動のたびに並びが変わることはありません。

検索。 チームスキルとマイスキルの検索欄は、名前・説明・タグ、マイスキルではさらに社員名に一致します。複数の語を入れると、すべての語がどこかに一致する必要があります。

誰が使っているか。 マイスキルの各行のメニューにある「利用している社員」で、そのスキルを持つ社員、社員ごとのオン/オフ、システムがその社員のために有効化した回数と最終日時が見られます。回数は skill_activate イベントから数えます。これは進化ループが「この会話ではこの社員にこのスキルが必要」と判断したときに書かれる記録です。スキル本文は普段から毎回のプロンプトに含まれており、それは数えません。利用記録を読めないときは画面にその旨が出て、回数は 0 と表示されます。

特定の社員でスキルをオフにする。 オフにしたスキルは、その社員のプロンプトに含まれず、skill_list にも表示されず、その社員ではオフィス文書スクリプトを実行できず、自動化ルールからも実行されず、ワークフローに固定することもできません。ほかの社員には影響しません。会社・部署共通のスキルは社員ごとにオフにするだけです。「全 AI 社員」表示では、会社スキルの行に「全社員でオフにする」があります。設定は社員自身のフォルダの外、<home>/skill_state/<agent_id>.json に保存されるため、社員が自分で元に戻すことはできません。このファイルがあるのに読めない場合、その社員は修復または削除されるまでスキルを一切読み込まず、画面に赤い通知が出ます。名前は大文字小文字を区別せずに照合します。オフは読み込む範囲を狭めるだけで、自分のフォルダを読める社員からスキルのファイルを隠すものではなく、そのフォルダからの昇格や共有も止めません。設定は保存されたが社員の再読み込みに失敗した場合、リクエストは成功ではなく「保存しましたが再読み込みに失敗しました。再試行してください」を返します。

社員自身のスキルを削除する。「削除」は社員自身の SKILLS/ フォルダからスキルを取り出し、<home>/skill_archive/<agent_id>/ に保管します。社員設定の「スキル」タブに削除したスキルが並び、「元に戻す」で復元できます。同じファイルがすでにある場合、復元は上書きせずに拒否します。削除も復元もリンクを経由してファイルを動かしません。SKILLS/ や途中のフォルダがシンボリックリンクなら何も動かしません。復元が途中で失敗した場合、すでに戻したファイルはアーカイブに戻します。

権限。 社員の閲覧者(Viewer)はスキル・オン/オフ・削除したスキルを見られます。変更できるのはその社員の担当者(Owner)か管理者です。権限は呼び出しのたびにアカウントデータベースから読み直し、1回のリクエストに権限のない社員が1人でも含まれていれば全体を拒否します(全体拒否は権限についてのみで、書き込み自体は社員ごとに行い、項目ごとの結果を返します)。マーケットタブの検索とランキングも、社員自身のスキルはその社員を閲覧できる人にだけ表示します(動作の変更)。管理者は複数行を選んでまとめてオフ・オン・削除できます。スキルをチームに共有すること、チームのスキルを採用することも、その社員の担当者である必要があります(動作の変更)。変更ごとに監査イベント skill_switched_off、skill_switched_on、skill_removed、skill_restored を記録します。

セキュリティスキャン結果は層と持ち主ごとに記録します。2人の社員の同名スキルが1つの結果を共有することはなくなりました。この変更より前に記録された結果は名前しか持たないため表示されなくなり、再インストールするまで「未スキャン」と表示されます。

社員編集画面の「スキル」タブの「この社員のスキル」にも、その社員だけの同じ一覧があります。


各会話がエージェントに何かを教えます。スキルライフサイクルがその学びをキャプチャし形式化します。

スキルはエージェント間で共有可能。サポートエージェントから抽出されたスキルを営業エージェントにインストールできます。

診断とギャップ分析が、スキルの蓄積だけでなく改善を支えます。ディスクに書き込まれるmarkdownはセキュリティスキャンとvettingゲートを通ります。

マーケットプレイスにより、ゼロからスタートする必要はありません。他者の実戦テスト済みスキルが数分でエージェントをブートストラップできます。


  • 進化エンジン:スキルが予測エンジンに情報を提供。スキルが充実したAgentは予測エラーが少ない。
  • GVUループ:成功したGVUサイクル後にスキル抽出がトリガーされることが多い。
  • メモリシステム:スキルはメモリを補完——メモリは何が起きたかを覚え、スキルは何をすべきかを覚える。
  • CONTRACT.toml:スキルは契約境界内で動作する必要がある。実際にディスクへ書かれるmarkdownはセキュリティスキャンとvettingゲートを通る。
  • Dashboard:スキルマーケットプレイス、インストール済みスキル、ギャップ分析レポートがWebインターフェースで閲覧可能。

スキルは生の経験と信頼できる能力の間の架け橋です。6段階のライフサイクルは、成功した会話を再利用可能なスキルに、繰り返す失敗を名前の付いたギャップに変えます——抽出し、スキャンし、共有する。エージェントは今日の会話を処理するだけでなく、明日の会話をより良く処理するために成長します。