メインコンテンツまでスキップ

ui

視覚的な Skill 管理のための Web ダッシュボードを起動します。

skillshare ui                  # フォアグラウンドで実行
skillshare ui start # バックグラウンドサーバーを起動(既存があれば再利用)
skillshare ui stop # バックグラウンドサーバーを停止

デフォルトブラウザで http://127.0.0.1:19420 を開きます。

モード

モード動作
skillshare ui(デフォルト)UI サーバーをフォアグラウンドで実行。Ctrl+C で停止
skillshare ui startUI サーバーをバックグラウンドプロセスとして起動し、シェルの制御を返す。再度 start を実行した場合、既存のプロセスが正常であればそれを再利用
skillshare ui stopskillshare ui start で起動したバックグラウンド UI サーバーを停止

使うタイミング

  • Skill、Target、sync を視覚的な Web インターフェースで管理したい
  • CLI フラグを覚えずに Skill を閲覧・インストールしたい
  • 視覚的な検出結果レポート付きでセキュリティ監査を実行したい
  • CLI に不慣れなチームメンバーとダッシュボードビューを共有したい

フラグ

フラグデフォルト説明
-p, --projectProject mode で実行(.skillshare/ を使用)
-g, --globalグローバルモードで実行(~/.config/skillshare/ を使用)
--port <port>19420HTTP サーバーのポート
--host <host>127.0.0.1バインドアドレス(Docker の場合は 0.0.0.0 を使用)
-b, --base-path <path>リバースプロキシ用のサブパス(例: /skillshare
--no-openfalseブラウザを自動的に開かない
--appfalse可能な場合、ダッシュボードをデスクトップ風の Chromium アプリウィンドウとして開く(start モードのみ)
--clear-cacheフォアグラウンド形式の場合: キャッシュされた UI アセットをクリアして終了。start と組み合わせた場合: キャッシュをクリアしてからバックグラウンドで起動
自動検出

カレントディレクトリに .skillshare/config.yaml が存在する場合、ダッシュボードは自動的に Project mode で起動します。グローバルモードを強制するには -g を使用してください。

# デフォルト: localhost:19420 でブラウザを開く(フォアグラウンド)
skillshare ui

# Project mode(.skillshare/ の Skill を管理)
skillshare ui -p

# カスタムポート
skillshare ui --port 8080

# Docker / リモートアクセス
skillshare ui --host 0.0.0.0 --no-open

# バックグラウンドで起動し、シェルに制御を戻す
skillshare ui start

# デスクトップ風のクロームレスアプリウィンドウとして起動
skillshare ui start --app

# バックグラウンドサーバーを停止(記憶されている host/port を使用)
skillshare ui stop

# キャッシュされた UI アセットをクリアしてからバックグラウンドで新規起動
skillshare ui start --clear-cache

ダッシュボードのページ

サイドバーはページをタスクごとにグループ化します: sync すること、管理しているもの、同期先、メンテナンス。名前の下の行にはモードとそのフォルダ(例: Global · ~/.config/skillshare)が表示されます。

一部のページは、対応が必要な場合にサイドバーに件数を表示します。この件数は、ダッシュボードのタブが開いている間、15 秒ごとに更新されます。

  • Sync: sync によって適用される変更
  • Git Sync: 未コミットのファイル、またはツリーがクリーンな場合はまだプッシュされていないコミット
  • Audit: 直近のスキャンでブロックされた Skill と Agent(スキャンを実行した後に表示)
ページ説明
DashboardSkill、Agent、Extras、MCP サーバー、Plugin、Target の件数、および対応が必要な項目
Sync書き込む前に、Target ごとにすべての変更をプレビュー。含める項目を選択(Skills、Agents、Extras、MCP)。Target 内で編集されたファイルは、Force がオンでない限り保持される。Target にのみ存在する項目は、ここから Source に collect し戻せる。各 sync は最初に Target フォルダをバックアップする
Git SyncSource リポジトリのコミットとプッシュ、remote にまだないコミットのプッシュ、プルを実行。プルはリポジトリのスコープ(skillsagentsextras、または root)が保持するものを sync する。詳細は pull を参照。最初のプルが remote とマージできない場合、remote ブランチでローカルファイルを置き換える force pull を提案する
HubsSkills ページから移動。Browse は hub をフィルタしてそこからインストール、My hubs はインストール済み Skill からインデックスを組み立て、検証してエクスポートする。hub を参照
Skills / Agentsインストール済みの項目、Updates タブ、Trash タブ。Skills にはさらに、Target のコンテキストに Skill が追加するトークン数を見積もる Analyze タブがある。Install は GitHub を検索するか、URL やパスからインストールする。+ New Skill は作成ウィザードを開く。disable-model-invocation: true を持つ Skill は、一覧・タイル・詳細ページで manual only タグが付く。これは listM キーが切り替えるのと同じ状態。Skill エディタでは、Add field が各フロントマターフィールドの説明を表示する
ExtrasSkill と一緒に sync される rules、commands、その他のフォルダ
MCPサーバーごとに 1 行表示され、sync 先の Agent がトグルとして並ぶ。Add server は URL、コマンド、貼り付けたスニペット、またはファイルを受け付ける。Import はインストール済みの Agent が既に持っているものを読み込む。各サーバーのメニューには View what each Agent gets があり、未保存の編集を含む Agent ごとのネイティブ設定を表示する。コンフリクトは Import か Replace を選べ、バックアップは復元前にプレビューできる。デフォルトmcp.targetsmcp.directTools を編集する。
PluginsPlugin ごとに 1 行表示され、その Agent がトグルとして並ぶ。行を展開すると、そのソースが対応する他の Agent も一覧され、いずれかにチェックを入れるとインストールのプレビューが表示される。行のメニューから sync、update、削除ができ、Skillshare がレビューしたローカルコピーを読み取り専用で閲覧する View files も開ける。Manage plugins across tools を参照
Targetsステータス付きの Target 一覧。各 Target のページで include/exclude フィルタを編集し、ローカルのみの Skill を Source に collect し戻せる
Projectsglobal mode のみ。global config が sync する project フォルダーで、projectsmcp.projects から一覧される。プロジェクトを追加 はフォルダー、その target、sync する内容を指定する。各 project には SkillsAgents タブがあり、フィルター、プレビュー、書き込まれるフォルダーを表示する。MCP タブでは、そのフォルダー内で global サーバーをオフにしたり、その project 独自のサーバーを追加したりできる。すでに project フォルダーを指している Target は変換できる
AuditSkill と Agent のセキュリティスキャン。重大度別の検出結果を表示。Rules タブでは、カテゴリごとにすべてのルールを閲覧できる: ルールをオフにする、重大度を変更する、カテゴリ全体に重大度を適用する、スキャンプロファイル(defaultstrictpermissive)を選ぶ、カスタム audit-rules.yaml のエディタを開く、のいずれかができる
Settingsタブ分け: General(Source パス、sync モード、外観)、Backup(スナップショットと復元)、Log(操作履歴)、Healthdoctor と同じチェック)、Extensions(sync 時のファイル変換)、Filesconfig.yaml.skillignore.agentignore の直接編集)

/collect/install/search/trash/analyze/backup/log/doctor などの古いリンクは、新しい場所にリダイレクトされます。

Files タブでは、エディタの横にパネルが表示されます。config.yaml の場合、カーソル位置のフィールドが何をするか、ファイルの構造、未保存の変更が表示されます。ignore ファイルの場合、現在のパターンが何を隠しているかが一覧表示されます。Cmd+S / Ctrl+S で保存します。Audit -> Rules -> Edit YAML のルールエディタには同じパネルに加え、貼り付けた行に対してルールの正規表現を実行する Test タブがあります。

テーマシステム

ダッシュボードは、サイドバーの Theme ボタンで切り替え可能な 2 つのビジュアルスタイルと 3 つのカラーモードに対応しています。

設定選択肢デフォルト
StyleClean(プロフェッショナル)、Playful(太いアウトライン、ハードシャドウ、手書き風の見出し)Playful
ModeLightDarkSystem(OS の設定に従う)Light

テーマの設定はセッションをまたいで localStorage に保持されます。

Project mode の違い

Project mode(-p)で実行すると、ダッシュボードは以下のように適応します。

  • サイドバー に名前の下に Project · <project path> が表示される
  • Git Sync ページ は非表示(Project の Skill は Project 自体の git を使用するため)
  • Syncskillshare sync -p と同様、Agent の Target フォルダのみバックアップする
  • Backup タブ は Settings 内で非表示(代わりにバージョン管理を使用すること)
  • Tracked Repos セクション は Dashboard から非表示(該当しないため)
  • Settings -> Files は、グローバル版の代わりに .skillshare/config.yaml と Project レベルの .skillignore を表示する
  • Available targets は Project レベルの Target(例: プロジェクトルートからの相対パス .claude/skills/)を一覧する
  • Install は Project 設定の skills: エントリを自動的に整合させる

UI プレビュー

Install flowDashboard overviewSkills browserSkill detail viewSync controlsGitHub search view

REST API

Web ダッシュボードは /api/ に REST API を公開しています。すべてのエンドポイントは JSON を返します。

メソッドパス説明
GET/api/overviewSkill/Target の件数、モード、バージョン、設定フォルダ(configDir
GET/api/skillsメタデータ付きですべての Skill を一覧
GET/api/skills/{name}Skill の詳細 + SKILL.md の内容
GET/api/skills/templatesSkill 作成に利用可能なパターンとカテゴリを取得
POST/api/skills新しい Skill を作成(name、pattern、category、scaffoldDirs)
DELETE/api/skills/{name}Skill をアンインストール
GET/api/targetsステータス、include/exclude フィルタ、Target ごとの想定件数付きで Target を一覧
POST/api/targetsTarget を追加
DELETE/api/targets/{name}Target を削除
POST/api/syncsync を実行(dryRunforcekind に対応)。dryRun が指定されていない限り、まず Target をバックアップする
POST/api/git/commitSource リポジトリからプッシュせずにローカル git commit を作成
GET/api/git/statusまだプッシュされていないコミット(ahead)を含む、Source リポジトリの状態
POST/api/push変更をコミットしてからプッシュ。初回プッシュ時は upstream を設定する
POST/api/pullプルしてから、リポジトリのスコープが保持するものを sync する。最初のプルがマージできない場合、エラーコード merge_failed で失敗する。force: true で再試行すると、remote ブランチでローカルファイルを置き換える
GET/api/diffSource と Target 間の差分
GET/api/search?q=GitHub で Skill を検索
POST/api/installソースから Skill をインストール
GET/api/auditすべての Skill をセキュリティ脅威についてスキャン
GET/api/audit/rulesカスタム監査ルールの YAML を取得
PUT/api/audit/rulesカスタム監査ルールを保存(正規表現を検証)
POST/api/audit/rulesスターター用の audit-rules.yaml を作成
GET/api/audit/rules/compiled組み込みルールとカスタムルールをマージした後のすべてのルール、および有効なプロファイル
POST/api/audit/rules/toggleルールまたはパターン全体を有効化・無効化・再評価
POST/api/audit/rules/resetカスタムルールを削除し、組み込みのデフォルトに戻す
PATCH/api/audit/policyblockThresholdprofile、またはその両方を設定
GET/api/logオプションのフィルタ付きでログエントリを一覧
GET/api/config設定を YAML として取得
PUT/api/config設定 YAML を更新
GET/api/skillignore.skillignore の内容 + ignore の統計を取得
PUT/api/skillignore.skillignore の内容を更新
GET/api/doctorすべてのヘルスチェックを実行(JSON)
GET/api/health死活監視プローブ。サーバーの準備ができると 200 を返す
GET/api/version現在/最新バージョンとアップグレードの可否
POST/api/upgradeskillshare upgrade をその場で実行(バイナリが開発ビルドの場合は devMode: true を返す)
POST/api/restartローカル UI サーバーを再起動。任意の { "clearCache": true } ボディでキャッシュされた UI アセットを先にクリア

インプレースアップグレード

ダッシュボードが新しい CLI リリースが利用可能であることを検出すると、Update ダイアログと Doctor ページの Version カードの両方に Update now ボタンが表示されます。

  1. UI が POST /api/upgrade を呼び出し、ホスト上で skillshare upgrade を実行します。
  2. 新しいバイナリが配置されると、UI が POST /api/restart を呼び出してローカルサーバーを再起動します。
  3. ブラウザは GET /api/health をポーリングし、新しいサーバーの準備ができ次第、自動的にリロードします。

実行中のバイナリが開発ビルド(version == "dev")である場合、upgrade エンドポイントは devMode: true を返し、UI はディスク上の何も変更せずに再起動をシミュレートします。

自動リロードが完了しない場合、ダイアログは skillshare ui start を実行してバックグラウンドサーバーを復旧するよう案内します。

リバースプロキシ

共有サーバー(ホームラボ、社内ツールプラットフォームなど)でダッシュボードを実行し、リバースプロキシの背後に置く場合は、--base-path を使って他のサービスと並ぶサブパスの下で配信できます。

skillshare ui --base-path /skillshare --host 0.0.0.0 --no-open

または環境変数を使う場合:

SKILLSHARE_UI_BASE_PATH=/skillshare skillshare ui --host 0.0.0.0 --no-open

Nginx

location /skillshare/ {
proxy_pass http://127.0.0.1:19420;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}

Caddy

handle_path /skillshare/* {
reverse_proxy 127.0.0.1:19420
}
ヒント

--base-path を使わない場合、ダッシュボードは従来どおり動作します — localhost:19420 への直接アクセスに追加の設定は不要です。

MCP settings

MCP ページは、ブラウザが localhost または http://192.168.1.20:19420 のような IP アドレスでダッシュボードを開いている場合にのみ動作します。リバースプロキシを含め、ドメイン名経由の場合、MCP のリクエストは 403 を返します: DNS リバインディング攻撃は常にドメイン名を使うためです。リモートマシンで MCP の設定を管理するには、ssh -L 19420:127.0.0.1:19420 HOST でポートをフォワードし、http://localhost:19420 を開いてください。

Docker での使用

Docker 内で Web UI を使うには(初回の UI ダウンロードにネットワークアクセスが必要):

make playground

# コンテナ内で:
skillshare ui --host 0.0.0.0 --no-open

その後、ホストマシンで http://localhost:19420 を開きます(ポート 19420 は自動的にマッピングされます)。

Project mode

Web ダッシュボードは Project レベルの Skill を完全にサポートしています。

cd my-project
skillshare ui -p

または .skillshare/config.yaml が存在する場合は、単に skillshare ui(自動検出)でも構いません。

ダッシュボードは .skillshare/config.yaml を読み書きし、Project ローカルの Target に sync し、インストール後にリモートの Skill エントリを整合させます — CLI と同様です。

ランタイム UI ダウンロード

skillshare ui は、初回起動時に対応する GitHub Release からビルド済みの UI アセットを自動的にダウンロードします。アセットは ~/.cache/skillshare/ui/<version>/XDG_CACHE_HOME を尊重)にキャッシュされるため、以降の起動は即座かつオフラインで行われます。

  • 初回実行 には UI アセット(約 1 MB)をダウンロードするためのインターネット接続が必要です
  • 以降の実行 はキャッシュされたアセットを使用します — ネットワーク不要
  • アップグレード時、古いキャッシュ済みバージョンは自動的にクリーンアップされます。新しい UI は skillshare upgrade の際に事前ダウンロードされます
  • キャッシュを手動でクリアする には skillshare ui --clear-cache を実行してください

Homebrew に関する補足

すべてのインストール方法(Homebrew、インストーラースクリプト、手動バイナリ)はランタイム UI ダウンロードを使用します。skillshare ui を実行すると、初回起動時に GitHub から UI アセットが自動的にダウンロードされます。以降はキャッシュされたアセットがオフラインで使用されます。

ダウンロード済みの UI キャッシュをクリアするには:

skillshare ui --clear-cache

アーキテクチャ

Web UI は、対応する GitHub Release からランタイムにダウンロードされ、ディスクキャッシュ(~/.cache/skillshare/ui/<version>/)から配信される単一ページの React アプリケーションです。

skillshare ui
├── Go HTTP server (net/http)
│ ├── /api/* → REST API handlers
│ └── /* → Cached React SPA (runtime download)
└── Browser opens http://127.0.0.1:19420

関連項目

  • status — CLI のステータスチェック
  • sync — CLI の sync コマンド
  • Project Setup — Project mode のセットアップガイド
  • Docker Sandbox — Docker で UI を実行