Skills Hub
エージェントスキルを一度インポートすれば、どこでも使えます。Chronicle はすべてのスキルを 1 つの中央ディレクトリに保存し、シンボリックリンクで各ツールへ配布します。そのため、1 つの実ファイルが Claude Code、Cursor、Codex、Gemini を同時に支えます。
エージェントスキル(SKILL.md とその補助ファイル)は、MCP サーバーと同じ断片化の問題を抱えています。スキルを ~/.claude/skills にコピーし、さらに ~/.cursor/skills にもコピーすると、途端に食い違う 2 つのコピーを維持することになります。Skills Hub は、これをパッケージマネージャーと同じやり方で解決します。中央ストレージに 1 つの正典コピーを置き、それを各ツールへシンボリックリンクで配ります。中央のファイルを編集すればすべてのツールが変更を認識し、あるツールで見つけたスキルがすべてのツールで使えるようになります。これは MCP Hub と同じ Takeover → Centralize → Distribute パターンであり、厳密に加算的 です。Chronicle が、あなたがすでに持っているスキルを上書きすることは決してなく、削除するのは自身が作成したシンボリックリンクのみです。
Local-first: スキャン、インポート、タグ付け、評価はすべてあなたのマシン上で行われます。唯一のネットワークアクションは、あなたが選んだ公開リポジトリの明示的な GitHub インポート です。あなたのスキルに関する情報がアップロードされることはありません。
配布の仕組み
中央ストアは ~/.chronicle/skills/ に置かれます(server/skills.js の CENTRAL_SKILLS)。スキルをインポートするとそのディレクトリがそこへコピーされ、それを 配布 すると、各ツールのスキルディレクトリからその 1 つの中央コピーへの シンボリックリンク が作成されます。
~/.chronicle/skills/my-skill/ ← the one real directory
SKILL.md
...
~/.claude/skills/my-skill → ~/.chronicle/skills/my-skill (symlink)
~/.cursor/skills/my-skill → ~/.chronicle/skills/my-skill (symlink)ツールはシンボリックリンク越しに読み取るため、編集すべきファイルはちょうど 1 つ であり、同期を保つべきコピーはありません。Chronicle はリンク時に実ディレクトリや別由来のシンボリックリンクを置き換えることを拒否し、リンク解除時には自身の中央コピーを指すリンク のみ を削除します。ツールフォルダ内の実スキルディレクトリに手を触れることは決してありません。Windows では、ディレクトリのシンボリックリンクの代わりに(管理者権限を必要としない)ジャンクションを使います。
配布先: ~/.claude/skills、~/.cursor/skills、~/.codex/skills、~/.gemini/skills。
スキャンとインポート
Skills Hub → Scan & import を開くと、マシンからスキルを掃き集めます。Chronicle は標準のツールディレクトリに加えて ~/.agents/skills 慣習ディレクトリをスキャンし、各 SKILL.md のフロントマターから name と description を解析して、見つけたものを分類します。
| ステータス | 意味 |
|---|---|
| importable | 有効な SKILL.md を持つ実スキルで、まだ中央ストレージにない。 |
| managed | すでに Chronicle の中央ストアへのシンボリックリンク。することはない。 |
| duplicate | この名前のスキルがすでに中央に存在する。 |
| broken | SKILL.md がない、または壊れた(ぶら下がった)シンボリックリンク。 |
ソースグループの Import をクリックすると、その importable なスキルが中央ストレージへコピーされます。オリジナルには手を触れません(インポートはリンクをたどって実体をコピーします)。名前の衝突は数値のサフィックス(my-skill-2)で区別されます。インポートされると、スキルは Library に現れます。
ライブラリ
Library は、以下を備えたスキルカードのグリッドです。
- 名前、説明、タグを横断する 検索。
- ツールごとのリンク状態 — 4 つのツールそれぞれについて、🔗 リンク済み、📁 実ディレクトリ(Chronicle 由来でないスキルがすでにある)、⚠️ 別由来のリンク、· なし、を示すピル。ピルをクリックすると、そのツールをその場でリンク/リンク解除できます。
- ローカル限定のタグとスター評価 — スキルを整理してランク付けします。これらは Chronicle のデータベースに存在し、どこにも アップロードされることはありません。
- 詳細ビュー — 中央パス、ファイル一覧、レンダリングされた
SKILL.md、バージョン履歴、そして GitHub からインポートされたスキルについては上流チェックを表示します。
GitHub インポート
公開リポジトリから直接スキルをインポートできます(Skills Hub → Scan & import → GitHub)。公開の HTTPS リポジトリ URL、任意のブランチ(デフォルトは main)、任意のサブパスを指定します。Chronicle は次を行います。
- リポジトリを 浅くクローン します(
git clone --depth 1 --branch …)。一時ディレクトリへ展開します。 - クローンした正確な コミット SHA を記録します。
SKILL.mdを含むすべてのディレクトリを求めて ツリーを走査 します(最大 5 階層の深さまで、.gitとnode_modulesはスキップ)。- それぞれを 中央ストレージへインポートし、リポジトリ URL、ブランチ、SHA を刻印し、恒久的なスナップショットを取ります。
- 一時クローンを削除します。
後で、GitHub からインポートしたスキルの Check upstream を実行すると、git ls-remote(クローンなし)が走り、記録済みの SHA を現在のブランチ先端と比較します。上流が動いていた場合は、再インポートして新しいバージョンを取り込みます。
バージョン履歴
インポートされた各スキルは、~/.chronicle/snapshots/ の下にローリング式のバージョン履歴を持つので、編集や上流の更新から復元できます。
importedスナップショットはインポート時に取られ、恒久的に保持 されます。fs_changeスナップショットは、中央コピーを編集したときに自動的に取られ(~/.chronicle/skills/上のファイルシステムウォッチャーが、スキルごとに 500 ms デバウンス)、スキルごとに ローリング 50 件 として保持されます。- 内容が同一のスナップショットはハッシュで 重複排除 されるため、変更のない保存が積み上がることはありません。
詳細ビューの Version history タイムラインは、スナップショットを新しい順に、トリガー、ハッシュ、サイズとともに一覧表示します。Restore は中央コピーを任意のスナップショットへ巻き戻します。その際、まず現在の状態をスナップショットするため、復元自体も取り消し可能です。ツールはシンボリックリンクを通じて中央コピーを指しているため、復元は再リンクなしでどこにでも反映されます。
パターンの全体像
- Takeover — ツールディレクトリ(および公開 GitHub リポジトリ)をスキャンし、スキルを 1 つの中央ストアへインポートします。
- Centralize — 検索、タグ付け、評価、スナップショット、復元を 1 箇所で行います。スキルごとに 1 つの実ファイルを編集します。
- Distribute — 各スキルを、持つべきツールへシンボリックリンクで配ります。設計上、加算的です。すでに持っているものが上書きされることはなく、ハブからスキルを削除しても、削除されるのは Chronicle 自身のリンクだけです。
ストアのレイアウト、シンボリックリンクのファンアウト実装、スナップショットエンジンの内部構造については、以下のアーキテクチャノートを参照してください。
関連項目
- MCP Hub — MCP サーバーに適用された、同じ Takeover → Centralize → Distribute パターン。
- セキュリティと共有 — リダクション、pre-tool-use ガード、そして安全な共有リンク。
- MCP と Skills の内部構造 — 中央ストア、シンボリックリンクのファンアウト、そしてスナップショット/バージョン履歴エンジン。