Skip to content

Syy9/sklink

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sklink

Claude Code のスキルをシンボリックリンクで管理する CLI ツール

Note

このプロジェクトは Claude Code を使ったバイブコーディングで作られています。

Go License: MIT Platform


概要

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

クイックスタート

1. 初期化

スキルを管理したいプロジェクトのルートで実行します。

sklink init

.sklink/config.toml.claude/skills/ が作成されます。

ヒント: .sklink/.gitignore に追加することを推奨します(clone したリポジトリが含まれるため)。

2. スキルリポジトリを追加

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-repo

3. スキルの確認

sklink list
my-skills (main)
  ● code-review
  ● write-tests
  ○ refactor

が有効(リンクあり)、 が無効(リンクなし)です。

4. スキルのオン/オフ

# TUI で対話的に切り替え
sklink toggle

# CLI で直接指定
sklink toggle refactor
sklink toggle refactor --on
sklink toggle refactor --off

TUI の操作

sklink - 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 init

カレントディレクトリで sklink を初期化します。

sklink init [--force]
フラグ 説明
--force 既存の設定を上書きする

sklink add <url-or-path>

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

全スキルの一覧と有効/無効状態を表示します。

sklink list [flags]
フラグ 説明
--json JSON 形式で出力
-g, --group 特定グループのみ表示
--enabled 有効なスキルのみ表示
--disabled 無効なスキルのみ表示

sklink toggle [skill-name...]

スキルの有効/無効を切り替えます。

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 [group-name]

リモートリポジトリから最新の変更を取得します。

sklink update              # 全グループを更新
sklink update my-skills    # 指定グループのみ更新
sklink update --branch dev # ブランチを変更して更新

更新後、新規スキルが検出された場合は通知されます(デフォルトは無効状態で追加)。

sklink remove <group-name>

グループを削除します(リンク・リポジトリ・設定をすべて削除)。

sklink remove my-skills
sklink remove my-skills --yes  # 確認スキップ

sklink sync

config.toml の enabled 状態に基づいてシンボリックリンクを再同期します。

sklink sync
sklink sync --dry-run  # 変更内容のみ表示(適用しない)

手動で config.toml を編集した後や、リンクが壊れた場合に使います。

sklink status

スキルの利用状況サマリを表示します。

sklink status

sklink doctor

設定・リンク・リポジトリの整合性をチェックします。

sklink doctor

問題が見つかった場合はその内容と修正手順を表示します。

sklink completion <shell>

シェル補完スクリプトを生成します。

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 ターミナルカラー出力

ライセンス

MIT License

作者

@Syy9

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages