Claude Code のスキルをシンボリックリンクで管理する CLI ツール
Note
このプロジェクトは Claude Code を使ったバイブコーディングで作られています。
sklink は、Claude Code のスキルを GitHub リポジトリから取得し、シンボリックリンクで .claude/skills/ へ配置するツールです。
複数のスキルリポジトリを横断して管理し、プロジェクトごとに使いたいスキルを柔軟にオン/オフできます。
$ sklink add https://github.com/example/my-skills
クローン中: https://github.com/example/my-skills...
3 件のスキルが見つかりました:
+ code-review (skills/code-review)
+ write-tests (skills/write-tests)
+ refactor (skills/refactor)
グループ "my-skills" を 3 件のスキルで追加しました。
- GitHub リポジトリからワンコマンドで追加 — URL を渡すだけで clone・スキャン・リンク作成を自動化
- スキルの個別オン/オフ — TUI または CLI で使いたいスキルだけ有効化
- 複数リポジトリの横断管理 — グループ単位で複数のスキルソースを管理
- 相対シンボリックリンク — リポジトリをどこに置いても動作するポータブルな設計
- ローカルパス対応 — パスを渡すだけで自動判定、開発中のスキルをクローン不要でリンク
- ブランチ指定・更新 —
git pullで最新スキルへワンコマンド更新
go install github.com/Syy9/sklink/cmd/sklink@latestスキルを管理したいプロジェクトのルートで実行します。
sklink init.sklink/config.toml と .claude/skills/ が作成されます。
ヒント:
.sklink/を.gitignoreに追加することを推奨します(clone したリポジトリが含まれるため)。
sklink add https://github.com/example/my-skillsリポジトリ内の SKILL.md を持つディレクトリが自動検出され、全スキルが有効な状態で追加されます。
リポジトリの特定ブランチや特定ディレクトリを指定することも可能です。
# ブランチを指定
sklink add https://github.com/example/my-skills --branch develop
# URL にブランチ・パスを含めて指定
sklink add https://github.com/example/my-skills/tree/develop/path/to/skillsローカルパスを指定するとクローンせずにリンクします(開発中のスキルに便利)。
# ローカルパス(自動判定)
sklink add ./path/to/my-skill-repo
sklink add /absolute/path/to/my-skill-reposklink listmy-skills (main)
● code-review
● write-tests
○ refactor
● が有効(リンクあり)、○ が無効(リンクなし)です。
# TUI で対話的に切り替え
sklink toggle
# CLI で直接指定
sklink toggle refactor
sklink toggle refactor --on
sklink toggle refactor --offsklink - Skill Manager
my-skills (main)
[●] code-review
[●] write-tests
[ ] refactor
↑/↓: move Space: toggle Tab: toggle group Enter: apply :q: quit
| キー | 動作 |
|---|---|
↑ / ↓ / j / k |
カーソル移動 |
Space |
スキルをトグル |
Tab |
グループ全体をトグル |
/ |
検索フィルタ |
Enter |
変更を適用して終了 |
Esc / :q |
変更を破棄して終了 |
カレントディレクトリで sklink を初期化します。
sklink init [--force]| フラグ | 説明 |
|---|---|
--force |
既存の設定を上書きする |
GitHub リポジトリまたはローカルパスからスキルを追加します。
引数がローカルパス(/path/... や ./path/...)の場合はクローンせず直接リンクします。
sklink add <url-or-path> [flags]| フラグ | 説明 |
|---|---|
-b, --branch |
クローンするブランチ(デフォルト: main) |
-n, --name |
グループのカスタム名 |
-p, --path |
リポジトリ内のスキル検索対象サブディレクトリ |
# GitHub リポジトリを追加
sklink add https://github.com/example/my-skills
# ローカルパスを追加(自動判定)
sklink add ./path/to/my-skill-repo
sklink add /absolute/path/to/my-skill-repo全スキルの一覧と有効/無効状態を表示します。
sklink list [flags]| フラグ | 説明 |
|---|---|
--json |
JSON 形式で出力 |
-g, --group |
特定グループのみ表示 |
--enabled |
有効なスキルのみ表示 |
--disabled |
無効なスキルのみ表示 |
スキルの有効/無効を切り替えます。
sklink toggle # TUI を起動
sklink toggle my-skill # 直接トグル
sklink toggle my-skill --on # 明示的に有効化
sklink toggle my-skill --off # 明示的に無効化
sklink toggle --group my-skills # グループ内全スキルをトグル
sklink toggle --group my-skills --on # グループ内全スキルを有効化リモートリポジトリから最新の変更を取得します。
sklink update # 全グループを更新
sklink update my-skills # 指定グループのみ更新
sklink update --branch dev # ブランチを変更して更新更新後、新規スキルが検出された場合は通知されます(デフォルトは無効状態で追加)。
グループを削除します(リンク・リポジトリ・設定をすべて削除)。
sklink remove my-skills
sklink remove my-skills --yes # 確認スキップconfig.toml の enabled 状態に基づいてシンボリックリンクを再同期します。
sklink sync
sklink sync --dry-run # 変更内容のみ表示(適用しない)手動で config.toml を編集した後や、リンクが壊れた場合に使います。
スキルの利用状況サマリを表示します。
sklink status設定・リンク・リポジトリの整合性をチェックします。
sklink doctor問題が見つかった場合はその内容と修正手順を表示します。
シェル補完スクリプトを生成します。
sklink completion bash
sklink completion zsh
sklink completion fishスキルとして認識されるには、各スキルのディレクトリに SKILL.md ファイルを配置します。
my-skills/
code-review/
SKILL.md ← Claude Code のスキル定義
prompt.md ← (任意)プロンプトファイルなど
write-tests/
SKILL.md
utils/
refactor/
SKILL.md ← ネストも可
SKILL.md の書き方は Claude Code ドキュメント を参照してください。
# GitHub リポジトリ
https://github.com/user/repo
https://github.com/user/repo/tree/branch
https://github.com/user/repo/tree/branch/path/to/skills
git@github.com:user/repo.git
# ローカルパス(自動判定)
./relative/path/to/skills
../sibling/skills-repo
/absolute/path/to/skills
.sklink/config.toml を直接編集することもできます。
[settings]
skills_dir = ".claude/skills"
[[groups]]
name = "my-skills"
url = "https://github.com/example/my-skills"
branch = "main"
[[groups.skills]]
name = "code-review"
path = "skills/code-review"
enabled = true
[[groups.skills]]
name = "write-tests"
path = "skills/write-tests"
enabled = false手動編集後は sklink sync を実行してシンボリックリンクに反映してください。
.claude/skills/
code-review -> ../../.sklink/repos/my-skills/skills/code-review/
write-tests -> ../../.sklink/repos/my-skills/skills/write-tests/
相対パスでリンクを作成するため、プロジェクトディレクトリをどこに移動しても動作します。
# リポジトリをクローン
git clone https://github.com/Syy9/sklink
cd sklink
# ビルド
go build -o sklink ./cmd/sklink
# テスト
go test ./...
# 開発中の実行
go run ./cmd/sklink <command>| ライブラリ | 用途 |
|---|---|
| cobra | CLI フレームワーク |
| bubbletea | TUI フレームワーク |
| lipgloss | TUI スタイリング |
| go-git | Git 操作 |
| toml | 設定ファイル |
| color | ターミナルカラー出力 |