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

analyze

各 Target の Skill について、コンテキストウィンドウの使用量と Skill の品質を分析します。

skillshare analyze                    # インタラクティブ TUI(デフォルト)
skillshare analyze claude # 単一 Target の詳細
skillshare analyze --verbose # 説明文が最も長い上位 10 件
skillshare analyze --json # 機械可読な出力
skillshare analyze -p # Project mode

使うタイミング

コンテキスト予算を最適化する

どの Skill がコンテキストウィンドウのトークンを最も消費しているかを特定する。

skillshare analyze           # すべての Target をインタラクティブに閲覧

Target 間で比較する

Target 間(例: Claude と Cursor)でコンテキスト使用量がどう違うかを確認する。

skillshare analyze           # TUI 内で Tab キーを押して Target を切り替え

Skill の品質を確認する

フィールドの欠落、説明文の短さ、トリガーフレーズの欠如がある Skill を見つける。

skillshare analyze           # TUI 内に Lint アイコン(✗/⚠)が表示される

CI/スクリプト

機械可読なコンテキストメトリクスと Lint 結果を取得する。

skillshare analyze --json | jq '.targets[].always_loaded.estimated_tokens'
skillshare analyze --json | jq '.targets[].skills[] | select(.lint_issues | length > 0)'

実行内容

analyze は各 Skill について、2 層のコンテキストコストを計算します。

  1. 常時ロード — SKILL.md のフロントマターにある name + description(Skill マッチングのため、すべてのリクエストでコンテキストにロードされる)
  2. オンデマンド — フロントマター以降の Skill 本文(Skill がトリガーされたときのみロードされる)

トークン数の見積もりには近似値として chars / 4 を使用します。

Skill 品質 Lint

トークン分析に加えて、analyze はすべての Skill に対して組み込みの Lint エンジンを実行します。Lint ルールは SKILL.md の構造と説明文の品質をチェックし、問題を TUI と JSON 出力に直接表示します。

ルール重大度チェック内容
missing-nameerrorname フィールドが空または欠落している
missing-descriptionerrordescription フィールドが空または欠落している
empty-bodyerrorSkill 本文(フロントマター以降)が空である
description-too-shortwarning説明文が 50 文字未満
description-too-longwarning説明文が目標上限の 1024 文字を超えている
description-near-limitwarning説明文が 900〜1024 文字の範囲にある
no-trigger-phrasewarning説明文にトリガーフレーズ(例: "Use when…")がない

TUI では、Lint 上の問題がある Skill は名前の横に ✗(error)または ⚠(warning)アイコンが表示されます。詳細パネルには、すべての検出結果を一覧する Quality セクションが含まれます。

インタラクティブ TUI

デフォルトでは、analyze は以下を備えたインタラクティブ TUI を起動します。

  • 左パネル — トークンコスト順にソートされた Skill 一覧。パーセンタイルごとに色分けされたドット(赤/黄/緑)付き
  • 右パネル — 詳細ビュー: トークン内訳、Lint による品質問題、パス、トラッキング状態、説明文プレビュー
  • 下部バー — Target セレクター(Tab/Shift+Tab で切り替え)+ トークン合計 + 見積もり計算式

TUI 操作

キー動作
/Skill リストを移動
/ページ送り/戻し
Tab / Shift+TabTarget を切り替え
/名前で Skill をフィルタ
sソートを切り替え: トークン数↓ → トークン数↑ → 名前 A→Z → 名前 Z→A
Ctrl+d / Ctrl+u詳細パネルをスクロール
q終了

色分け

トークン消費量のレベルは、Target ごとに動的なパーセンタイル閾値を使用します。

意味
🔴 赤P75 以上(消費量上位 25%)
🟡 黄P25〜P75(中間 50%)
🟢 緑P25 未満(下位 25%)

出力例

デフォルト(--no-tui)

Context Analysis (global)
ℹ claude (7 skills)
Always loaded: ~362 tokens
On-demand max: ~22 tokens

詳細

skillshare analyze --verbose

Context Analysis (global)
ℹ claude (7 skills)
Always loaded: ~362 tokens
On-demand max: ~22 tokens

Largest descriptions:
my-big-skill ~180 tokens
another-skill ~120 tokens
...

単一 Target

Target 名を渡すと、自動的に verbose 出力が有効になります。

skillshare analyze claude

グループでフィルタする

# frontend 系のすべての Skill の合計トークンコストを見る
skillshare analyze claude --json --filter frontend

# TUI の検索ボックスを事前入力する
skillshare analyze --filter marketing

オプション

フラグ説明
[target]単一 Target の詳細を表示(自動的に verbose を有効化)
--verbose, -vTarget ごとに説明文が最も長い上位 10 件を表示
--no-tuiインタラクティブ TUI を無効化し、プレーンテキストで出力
--project, -pProject レベルの Skill(.skillshare/)を分析
--global, -gグローバルの Skill(~/.config/skillshare)を分析
--filter <text>名前/パスの部分文字列で Skill をフィルタ
--jsonJSON として出力(スクリプト/CI 向け)
--help, -hヘルプを表示
自動検出

--project--global も指定しない場合、skillshare は自動検出します。カレントディレクトリに .skillshare/config.yaml が存在すれば Project mode、それ以外はグローバルモードになります。

JSON 出力

skillshare analyze --json
{
"targets": [
{
"name": "claude",
"skill_count": 7,
"always_loaded": {
"chars": 1448,
"estimated_tokens": 362
},
"on_demand_max": {
"chars": 88,
"estimated_tokens": 22
},
"skills": [
{
"name": "my-skill",
"description_chars": 180,
"description_tokens": 45,
"body_chars": 400,
"body_tokens": 100,
"lint_issues": [
{
"rule": "no-trigger-phrase",
"severity": "warning",
"category": "format",
"message": "Description lacks trigger phrases (e.g. 'Use when...'); agents may not know when to invoke this skill"
}
]
}
]
}
]
}

Lint の問題がない Skill では lint_issues フィールドは省略されます。

Project mode

skillshare analyze -p                  # Project の Skill のインタラクティブ TUI
skillshare analyze -p --verbose # Verbose テキスト出力
skillshare analyze -p claude # 単一 Target の詳細
skillshare analyze -p --json # JSON 出力

フィルタリング

--filter を使うと、結果を Skill のサブセットに絞り込めます。フィルタは Skill の相対パス(グループディレクトリを含む)に対して大文字小文字を区別しない部分一致で行われます。

例えば、--into frontend で Skill をインストールした場合:

  • --filter frontendfrontend/ グループ内のすべての Skill にマッチ
  • --filter react はパスに "react" を含む任意の Skill にマッチ

TUI モードでは、--filter はフィルタ入力欄を事前入力します。インタラクティブにフィルタするには / キーも使用できます。

JSON モードでは、出力に集計済みのトークン数を含む filtered_summary が含まれます。

{
"filter": "frontend",
"matched_count": 5,
"total_count": 50,
"filtered_summary": {
"always_loaded": { "chars": 2400, "tokens": 600 },
"on_demand": { "chars": 8000, "tokens": 2000 },
"total": { "chars": 10400, "tokens": 2600 }
},
"skills": [...]
}

Web UI でも、検索やフィルタが有効なときは動的なトークンサマリーバーが表示されます。

予算の警告

context_budget の閾値が設定されている場合、analyze はいずれかの Target が予算を超えていると警告を表示します。設定の詳細については sync — Context Cost を参照してください。

関連項目

  • list — インストール済みの Skill を表示
  • audit — Skill のセキュリティ脅威をスキャン
  • tui — インタラクティブ TUI の有効/無効を切り替え