Agent Skillsの運用を楽にし、Claude以外のAgentでも利用可能にするOSS『SkillPort』を作った話

に公開

仕様駆動開発ツール「cc-sdd」、おかげさまで⭐︎2,000到達しました!
その更新をストップして取り組んでいたプロジェクトが完成したので紹介します。

SkillPort
https://x.com/gota_bara/status/1997862652358594858

Agent Skillsで今後発生しうる"運用面"と"コンテキスト肥大化"の課題を解消するために開発しました。
Agent Skillsを組織の「共有資産」として管理し、どのAgentからでも利用できるようにする仕組みと機能を提供するOSSです。

今回はAgent Skillsの強みや課題からSkillPortの特徴まで紹介できればと思います。

Claude CodeやCodexなどすでにSkillsを利用可能なツールのSkillの運用・管理にも便利な機能も提供していますので、是非使ってフィードバックくださると嬉しいです!
https://github.com/gotalab/skillport

Agent Skills 超訳 (詳細は公式ドキュメント!)

AI Agentが特定のタスクを行うために必要な指示、スクリプト、知識等を一つのフォルダにまとめたものがAgent Skillsです。
AI Agentの課題であるコンテキストウィンドウの制約を解消するための必要な時に必要な情報を読み込む仕組みが特徴です。

Agent Skillsの強みは下記の3つです。

1. 段階的にコンテキストを読み込む仕組み

専門知識やドメイン知識は複雑化しており、本1冊分となる膨大なコンテキストを扱う場合も多々あります。LLMのコンテキストウィンドウには上限がありますし、コンテキスト汚染を避けた方が基本的には精度が上がります。また、Slash commands等で複雑な手順を構築しようとすると、無駄なコンテキストを読み込むことになりがちです。

そういった状況にも対応できるようにAgent Skillsでは必要な時に必要なコンテキストのみ段階的に読み込む仕組みが提供されています。

alt text

詳細はAnthropicの公式ドキュメントを参照してください。
Equipping agents for the real world with Agent Skills

2. 業務に必要な知識や手順をSkill内のみで完結させられる変更容易性

これまでのAI Agent開発では、業務に必要な知識や道具がバラバラに散らばっており、特化型エージェントを作るために独自のカスタマイズや調整を行う必要がありました。

しかし、直近のLLMモデルのAgenticな性能の向上とClaude Codeの汎用エージェントとしてのハーネスの強さが広まってきたことで、エージェントアーキテクチャを変更しなくとも、タスクに必要な知識や道具、アセットを変えるだけでタスク完了まで行えるようになりました。

タスクに必要なもの全てをまとめたものがSkillsです。Skillsだけを変えれば非エンジニアでも簡単にタスク特化型エージェントを構築できます。ドメイン知識を持っているのはビジネス側であるため、シンプルなタスクであればビジネスサイドでSkillsの作成も可能です。そして、もし変更があった時もSkills内のみを変更するだけ修正が完了します!

Skillsを変えるだけで誰でも特化型エージェントを作れることがSkillsが持つ大きな価値です。

ただしAI Agentの出力はモデル依存であり、モデルを変える場合は調整が必要です。

3. 圧倒的な柔軟性

Agent Skillsはただのファイルシステムのフォルダです。
Skills配下に様々なSkillのディレクトリがあり、その中にSKILL.mdと関連ファイルが存在するのみです。

ただのファイルシステムのため、テキストだけではなくスクリプトやPDF、画像、音声、フォントなど様々なファイル形式を扱うことも可能です。大体どんなことでもできます!

例えば動画編集を行うようなSkillsを作る場合、下記のようにさまざまなファイルを柔軟に扱えます。

video-edit-skill/
├── SKILL.md               # メイン指示(トリガー時にロード)
├── FORMS.md               # 入力テンプレ(目的/尺/比率/素材パス等を埋める)
├── examples.md            # 使い方・プロンプト例(必要に応じてロード)
├── assets/                # 素材置き場(画像/音声/フォント/LUTなど何でもOK)
│   ├── fonts/             # フォント
│   ├── luts/              # LUT
│   └── sfx/               # 効果音
├── presets/               # 設定置き場(書き出し/字幕スタイル等)
│   ├── youtube.json       # 例:YouTube用書き出し設定
│   └── tiktok.json        # 例:TikTok用書き出し設定
└── scripts/               # 実行スクリプト群(実行、ロードなし)
    ├── cut.py             # 例:無音検出→粗編集
    ├── subtitles.py       # 例:文字起こし→字幕生成
    └── export.py          # 例:ffmpeg等で書き出し

Agent Skillsに賭ける価値ありますよね!!!!!!!!!

(12/19追記)そしてなんとAgent Skillsがオープンスタンダートになりました🎉🎉🎉
https://agentskills.io/home

Skillsの詳細は Anthropicが解説を色々出してますのでそちらをご覧ください。Anthropicの公式解説は控えめに言って神です。

Agent Skillsで起こりうる課題

賭ける価値があるのは間違いないのですが、MCPやこれまでのCoding Agent周りで起こってきた歴史を考えると、Agent Skillsで今後起こりうる課題も見えてきます。

1. Agent Skillsが使えるエージェントはまだ少ない

現段階でSkillsを使えるエージェントはClaudeとCodex, Github Copilot Agentなどでまだまだ対応していないものが多いです。

そしてClaude Codeの仕様が事実上のデファクトスタンダートになりつつありますが、CodexではCodex用にSkillディレクトリを作る必要がありますし、KiroにもSkillと同様の仕組みがありますがPowersと命名されてます。

ベンダーロックインを避けたい身としてはこれは辛いです。そして単純にCursorやWindsurf, AntigravityでもSkillsを使いたい!!

2. Skillsはプロジェクトごとにサイロ化、セキュリティリスク等運用面に大きな問題がある

プロジェクトに特化したSkillsであれば問題ありませんが、複数のプロジェクトを跨いでの利用や複数のエージェントから呼び出しを行いたいことが多いです。

複数のプロジェクトでSkillを利用する時にもしバラバラに管理することになると、企業のドメイン知識を含む知識の共有やバージョン管理、セキュリティリスクを持つSkillの管理が難しくなる可能性があります。

Skillsは理想的にはGithub等で管理され、様々なエージェントに最新のSkillを提供できるようにしておきたいところ。組織でSkillを利用していくための運用の仕組みがあった方が良いです。

3. Skillsが増えると結局無駄なコンテキストが増える

Claude Codeの場合、SkillsがSystem Promptに差し込まれます。Skills数が増加するにつれてコンテキストが増加します。SkillsでもMCPサーバーを多く接続した時と同じ未来が待っているだけ...

AnthropicはAI Agentのツール数増加によるコンテキストウィンドウの増加に対処するため、Tool Search Tool の提供を発表しました。Skillsでも同様の仕組みが必要です。

alt text

その他にも様々な課題があるんですが、今回は省略します。


SkillPortならこれらの課題を解決できます!

skillport
https://github.com/gotalab/skillport

SkillPortの特徴

1. 一度Skillsを作れば、CLI/MCP経由でどのエージェントでも提供することが可能

MCPサーバーの接続、またはシェルコマンドが使えるエージェントであれば、Skillsをどのエージェントでも利用することが可能です。Cursor, Windsurf, Cline, Antigravity, 自作エージェントなどなど...

AnthropicのSkillsの仕様に準拠しているため、Claudeで作成した既存のSkillsを別のエージェントで利用できます。MCPサーバーですと下記のように設定するのみで使えます!

{
  "mcpServers": {
    "skillport": {
      "command": "uvx",
      "args": ["skillport"],
      "env": { "SKILLPORT_SKILLS_DIR": "path/to/.claude/skills" }
    }
  }
}

CLIの場合はGithubのREADMEを参照してください。

2. Skillsの運用・管理を容易に (Claude CodeやCodexでも役にたつ!)

SkillPortのもう一つの目玉機能がAgent Skillsの運用・管理を容易にすることです。
現在、SkillPortには下記のような運用・管理の機能を提供しています。

  1. Skillを任意のGithub URLからインストール、アップデートが可能
  2. 作成したSkillの検証が可能
  3. CLAUDE.md / AGENTS.mdを簡単に作成可能

1. Skillを任意のGithub URLからインストール、アップデートが可能

Githubリポジトリやローカルのフォルダから任意のSkillsを直接プロジェクトのフォルダに追加、更新できると運用上楽になりますよね!それがSkillPortでできます。

# GithubからSkillsの追加
skillport add https://github.com/huggingface/skills/tree/main/hf-llm-trainer/skills/model-trainer
# Skillsの更新
skillport update

skillport add

Skill updateではgithubやローカルskillsに更新があれば、書き込み先のskillsフォルダのskillsを更新することができます!

2. 作成したSkillの検証が可能

Skillsには厳密な仕様が存在しており、その仕様が守られないとClaude Skillsには読み込まれません。
SkillPortはその検証を行うためのコマンドskillport lintを提供しています。
(12/19追記)Agent Skillsのオープンスタンダートに従い、skillport validateに変更し、skillport lintはdeprecatedになります。

細かい仕様やSKILL.mdの推奨事項の検証が可能です!

skillport lint

Skills仕様はこちらに公開されています。

3. AGENTS.mdを簡単に作成可能

Agent SkillsをCLIのコーディングエージェントで利用する場合やAgentのクライアントを開発する場面では、指示にSkillsの概要を挿入する必要があります。

SkillPortは、skillsディレクトリ内のskills一覧からAGENTS.mdや任意のファイルへの出力を簡単に作成するためのコマンドskillport doc --skills-onlyを提供しています。必要なskillのみを選択してAGENTS.mdを作成することも可能です。

skillport doc --skills-only

Github上やローカルのSkillsの追加・更新やSkillの検証など、既にSkillsの機能を標準で持つClaude Code、CodexやGithub Copilotでも役に立ちます。SkillPortのSkillsの運用・管理面は今後さらに強化していく予定です。

3. Skill Search Tool / 必要なSkillのみ配信することが可能

Tool Search Toolならぬ、Skill Search ToolでSkillsを最初から読み込まず、必要なときにSkillsを検索してSkillを利用することが可能です。

例えば、フロントエンドのデザインをしたい場合、search_skillsで検索をし必要なSkillの候補のみを検索、それから必要なSkillを動的に読み込んでSkillを利用可能です。これにより、Skillの数が増えてもコンテキストウィンドウを無駄に消費することがなくなります。

tool search tool / skill search tool

常に利用したいSkillがある場合は、最初からMCPサーバーのdescriptionに利用可能Skillとして登録することも可能です。(CLIならAGENTS.mdに記載できるコマンドあり)

それだけではありません。基本的にタスクを行うときに必要なSkillsのみをMCPサーバーを接続時にフィルタリングして配信することが可能です。そのため必要なSkillsのみの接続や似たようなSkillの除外、不要なSkillを除外することも可能です。

{
  "mcpServers": {
    "skillport": {
      "command": "uvx",
      "args": ["skillport"],
      "env": { 
        "SKILLPORT_ENABLED_CATEGORIES": "development,testing",
        "SKILLPORT_ENABLED_NAMESPACES": "anthropic-skills"
        }
    }
  }
}

例えば下記のような感じです!

  • 開発チームのCursor
    • development, testing カテゴリだけ有効化
  • ドキュメント執筆用のCopilot Agent
    • writing, research カテゴリだけ有効化
  • CSチームのサポート向けエージェント
    • 顧客対応テンプレート関連のスキルだけ有効化

これにより「Skillsは1箇所で管理しているのに、各クライアントから見ると自分に必要なものだけが見える」という状態が作れます。

カテゴリ情報は各SkillのSKILL.mdのfrontmatterに付与するだけ!

---
name: my-skill
description: What this skill does
metadata:
  skillport:
    category: development
    tags: [testing, quality]
    alwaysApply: true
---

その他にも紹介しきれませんでしたが、Agent Skillsの将来的に発生しうる運用とコンテキストエンジニアリングの課題を解決するための機能がまだまだあります。

使い方

CLIモードでの使い方をご紹介します。3分くらいで使えます!

MCPサーバー経由での使い方はREADMEを参考にしてください。

CLIモードは、シェルコマンドが使えるコーディングエージェント(Cursor, Windsurf, Cline, Copilot, Codexなど)向けです。SkillsはAGENTS.mdに記載され、skillport show経由で読み込まれます。MCP設定は不要です。

1. SkillPortをインストール

uv tool install skillport

2. プロジェクトを初期化(プロジェクトディレクトリ内で実行)

skillport init
# → Skillsディレクトリと指示ファイルを対話的に選択
# → .skillportrcを作成し、利用するエージェントが対応するプロジェクトメモリ(AGENTS.md)にSkills一覧を生成

alt text

3. Skillを追加(.skillportrcのskills_dirを使用)

# 単体のSkillを追加
skillport add hello-world

# Anthropicの公式スキルをまとめて追加
skillport add https://github.com/anthropics/skills/tree/main/skills

# 特定のSkillのみを追加
skillport add https://github.com/anthropics/skills/tree/main/skills/frontend-design

あとはコーディングエージェントで利用するだけです!

エージェントはAGENTS.mdのSkills一覧を読み、skillport show <id>を実行して完全な指示を段階的に読み込みます。

まとめ

SkillPortを作るときに強く意識したのは、「Skillをベンダーロックインさせず、その人やチームの長期的な共有資産にしたい」ということです。
どこまでOSSでやるかは迷いどころですが、より価値提供ができるような形に更新していきます。

Skills自体を試したことがない方は、まずはClaude CodeでSkillsを使ってみることをおすすめします。Claude Codeのみを使う場合はSkills単体というより、CLAUDE.md、rules、Slash Commands、Hooks、場合によってはSubagentsを組み合わせて活用して専門家エージェントを構築し、チームにplugin機能として配布するのがベストだと思います。

SkillPort、Skillの運用・管理の機能も色々あるのでぜひ使ってくれたら嬉しいです!

https://github.com/gotalab/skillport

p.s. cc-sddもAgent Skills込みのClaude Code用pluginをいつか提供する予定です!

Discussion