Skill Hub

Skill Hub

Enables organizations to centrally manage and distribute Claude Code skills, allowing members to connect and use the latest skill instructions via a single command.

Category
Visit Server

README

Skill Hub

社内の「AIが得意な人」が Claude Code 用のスキル(指示書+参照資料)を1箇所に登録し、社員は コマンド1行を Claude Code に貼るだけ でそのスキル群を使えるようにする、1社1インスタンスのテンプレートです。Cloudflare Workers + D1 上で動く単一Workerアプリで、自社のCloudflareアカウントにデプロイして使います。

これは何か(正直に)

スキルは「ファイル配布」ではなく「サーバーから都度配信」です。この違いが価値の中心です。

  • 導入がコマンド1行で終わる
  • 中央でスキルを更新すれば、次の利用から全員が最新版を使う
  • 退職・異動時はトークンを失効させれば即座に使えなくなる
  • リポジトリごと渡さないので、組織外への再配布が起きにくい

MCP応答は利用者の会話に平文として渡ります。「読めない秘匿」ではありません。読もうと思えば読める人には読めます。この仕組みが守っているのは「配布経路」と「失効の即時性」であり、完全に隠したいロジックはこの仕組みの対象外です(そういう用途はv2のサーバー実行型ツールで扱う想定です)。

Claude Code純正スキルとの違い

配信されるのは「指示書として読ませるテキスト」です。純正スキルの frontmatter 機能・/スラッシュ起動・同梱スクリプトの実行はできません。純正の自動発動に近づけるため、スキル登録時の「説明」にツールの発動条件を書く運用にしてください(MCPツールの description としてそのまま使われます)。

アーキテクチャ

[Claude Code (member)] --Streamable HTTP MCP--> POST /mcp ┐
[ブラウザ (admin/editor/member)] --Bearer--> /api/* + 静的UI ├─ Cloudflare Worker (Hono/TS)
[招待リンク] --> /join (明示ボタンPOSTでclaim・1回表示)      ┘        │
                                                D1: tokens/skills/skill_files/skill_versions/invites/audit_log

単一Worker・単一D1データベース。KV/Durable Objectsは使いません。静的UI(public/)もWorker経由で配信し、全応答にセキュリティヘッダを付与します。

セットアップ

前提: Node.js 20以上、Cloudflareアカウント。

git clone <このリポジトリ>
cd skill-hub
npm ci
npx wrangler login      # 唯一の手作業(ブラウザでCloudflareにログイン)
node scripts/setup.mjs --seed

setup.mjs は冪等です。何度実行しても安全で、既にある状態はスキップします。

  • D1データベース skill-hub-db を確認/作成し、wrangler.jsoncdatabase_id を書き換えます
  • マイグレーションを適用します(未適用分のみ)
  • Workerをデプロイします
  • 有効なadminトークンが0件の場合のみ、初期adminトークンを1回だけ発行して表示します(このトークンは二度と表示されません。必ず控えてください
  • --seed を付けると skills-samples/ の3本のサンプルスキルを投入します

複数のCloudflareアカウントを持っている場合は CLOUDFLARE_ACCOUNT_ID 環境変数で対象を指定してください。

使い方(役割別)

役割 できること
admin AI推進担当(導入企業側) スキル登録・メンバー招待・トークン発行/失効・監査ログ閲覧。何でもできる最上位権限
editor スキルを作る人 自分のgroups内のスキルを作成・更新・削除・ロールバック。下書き保存も可能
member 一般社員 招待リンクからトークンを発行し、Claude Codeにスキルを1コマンドで接続する

memberの手順

  1. 管理者から届いた招待リンク(https://<host>/join?code=...)を開く
  2. 「トークンを発行する」ボタンを押す(GETでは何も起きません。ボタンを押した時だけトークンが発行されます)
  3. 表示されたコマンドをコピーして、Claude Codeのターミナルに貼る
claude mcp add --transport http --scope user skillhub https://<host>/mcp --header "Authorization: Bearer <token>"

--scope user なので、以後は全プロジェクトでスキルが使えます。**表示は1回だけです。**この画面を閉じると二度と見られないので、必ずその場でコピーしてください。

権限マトリクス(サーバー側で全て強制。UIの出し分けは補助でしかありません)

操作 member editor admin
MCP tools/list・call(自groups内のpublishedのみ)
GET /api/me・GET /api/skills(可視のみ)
スキル作成/更新/削除/添付/公開切替/ロールバック ✅(対象skillのgroups⊆自groups)
下書き閲覧 ✅(同上)
トークン発行/一覧/失効・招待発行/一覧/取消
監査ログ閲覧

groupsの可視判定はOR判定ですskill.groupstoken.groups の積が空でない、またはどちらかが "*" なら見える)。複数groupsを指定しても「絞り込み」にはなりません。機密スキルは専用グループ1つで運用してください。

新しいスキルの発見は新しいセッションからです。MCPは tools/listChanged を送らないため、Claude Codeを起動したまま裏でスキルを追加しても、そのセッションのツール一覧には出てきません(本文の更新は既存セッションでも次回呼び出し時に反映されます)。反映させたい場合はClaude Codeを再起動してください。

無料枠と課金

Cloudflare Workers / D1 とも無料枠があります(Workers: 10万リクエスト/日、D1: 500万行読み取り/日・10万行書き込み/日が目安、いずれもCloudflareの料金ページで最新値を確認してください)。数十人規模の社内利用であれば通常は無料枠に収まりますが、超えた場合は自動で有料プラン(Workers Paid)への移行が必要になります。利用状況はCloudflareダッシュボードで確認できます。

v1のスコープ外(正直な制約)

  • OAuth/SSO・IdP連携はしていません(トークン方式のみ)。Cloudflare Accessを前段に置く場合、CLIからのアクセスがブラウザ認証チャレンジで止まることがあるため、Access併用時は事前に確認してください
  • スキルの二者承認ワークフローはありません。editorは信頼前提で、監査ログとバージョン履歴・ロールバックで事後対処します
  • 可視スキルが40本を超えるとMCPの tools/list が肥大化します。大規模組織向けの二段検索方式(search_skills)はv2予定です
  • バイナリ添付ファイルは非対応(テキストのみ)
  • D1のリージョン/jurisdiction選択はセットアップスクリプトの手動オプション案内のみです
  • CIは含まれていません

ライセンス

MIT。詳細は LICENSE を参照してください。

もっと詳しく

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured