スキル管理CLI は何をしますか?
oh-my-claudecodeスキルをCLIライクなコマンドで管理するメタスキル。
サブコマンド
/skill list
スコープごとに全利用可能スキルを表示します。
動作:
- プラグインの
skills/ディレクトリにあるバンドル済みビルトインスキルをスキャン(読み取り専用) ${CLAUDE_CONFIG_DIR:-~/.claude}/skills/omc-learned/にあるユーザースキルをスキャン.omc/skills/にあるプロジェクトスキルをスキャン- YAMLフロントマターをパースしてメタデータを取得
- 整理されたテーブル形式で表示:
ビルトインスキル (oh-my-claudecodeにバンドル):
| 名前 | 説明 | スコープ |
|------------------|--------------------------------|-------------|
| visual-verdict | 構造化されたビジュアルQA判定 | built-in |
| ralph | 永続化ループ | built-in |
ユーザースキル (~/.claude/skills/omc-learned/):
| 名前 | トリガー | 品質 | 使用回数 | スコープ |
|------------------|-----------------|--------|---------|----------|
| error-handler | fix, error | 95% | 42 | user |
| api-builder | api, endpoint | 88% | 23 | user |
プロジェクトスキル (.omc/skills/):
| 名前 | トリガー | 品質 | 使用回数 | スコープ |
|------------------|-----------------|--------|---------|----------|
| test-runner | test, run | 92% | 15 | project |
フォールバック: 品質/使用回数の統計情報がない場合は「N/A」と表示
ビルトインスキルに関する注意: ビルトインスキルはoh-my-claudecodeにバンドルされており、検出・読み取りは可能ですが、/skill remove や /skill edit での削除や編集はできません。
/skill add [name]
新しいスキルを作成するインタラクティブウィザード。
動作:
- スキル名を質問(コマンドで指定されていない場合)
- 検証: 小文字、ハイフンのみ、スペースなし
- 説明を質問
- 明確で簡潔な一文
- トリガーを質問(カンマ区切りのキーワード)
- 例: "error, fix, debug"
- 引数ヒントを質問(オプション)
- 例: " [options]"
- スコープを質問:
user→${CLAUDE_CONFIG_DIR:-~/.claude}/skills/omc-learned/<name>/SKILL.mdproject→.omc/skills/<name>/SKILL.md
- テンプレートを使用してスキルファイルを作成:
---
name: <name>
description: <description>
triggers:
- <trigger1>
- <trigger2>
argument-hint: "<args>"
---
# <Name> スキル
## 目的
[このスキルが何をするか説明]
## アクティベート条件
[トリガーと条件を説明]
## ワークフロー
1. [ステップ1]
2. [ステップ2]
3. [ステップ3]
## 使用例
/oh-my-claudecode: example-arg
## 注意事項
[追加のコンテキスト、エッジケース、落とし穴]
- 成功を報告(ファイルパス付き)
- 提案: 「
/skill edit <name>で内容をカスタマイズできます」
例:
ユーザー: /skill add custom-logger
アシスタント: スキル 'custom-logger' を作成中...
説明: 構造化出力による拡張ロギング
トリガー(カンマ区切り): log, logger, logging
引数ヒント(オプション): <level> [message]
スコープ(user/project): user
✓ ~/.claude/skills/omc-learned/custom-logger/SKILL.md にスキルを作成しました
→ /skill edit custom-logger で編集できます
/skill remove
名前を指定してスキルを削除します。
動作:
- 両方のスコープからスキルを検索:
${CLAUDE_CONFIG_DIR:-~/.claude}/skills/omc-learned/<name>/SKILL.md.omc/skills/<name>/SKILL.md
- 見つかった場合:
- スキル情報を表示(名前、説明、スコープ)
- 確認を求める: 「 から '' スキルを削除しますか? (yes/no)」
- 確認された場合:
- スキルディレクトリ全体を削除(例:
${CLAUDE_CONFIG_DIR:-~/.claude}/skills/omc-learned/<name>/) - 報告: 「✓ からスキル '' を削除しました」
- スキルディレクトリ全体を削除(例:
- 見つからなかった場合:
- 報告: 「✗ スキル '' がユーザーまたはプロジェクトスコープに見つかりませんでした」
安全性: 明示的なユーザー確認なしでは削除しません。
例:
ユーザー: /skill remove old-logger
アシスタント: ユーザースコープでスキル 'old-logger' を見つけました:
説明: レガシーロギングユーティリティ
スコープ: user (~/.claude/skills/omc-learned/)
'old-logger' スキルを削除しますか? (yes/no)
ユーザー: yes
アシスタント: ✓ ユーザースコープからスキル 'old-logger' を削除しました
/skill edit
既存のスキルをインタラクティブに編集します。
動作:
- 名前でスキルを検索(両方のスコープを検索)
- Readツールで現在の内容を読み取り
- 現在の値を表示:
現在のスキル 'custom-logger': - 説明: 構造化出力による拡張ロギング - トリガー: log, logger, logging - 引数ヒント: <level> [message] - スコープ: user - 変更内容を質問:
description- 説明を更新triggers- トリガーキーワードを更新argument-hint- 引数ヒントを更新content- マークダウン内容全体を編集rename- スキル名を変更(ファイル移動)cancel- 変更せずに終了
- 選択されたフィールドについて:
- 現在の値を表示
- 新しい値を質問
- YAMLフロントマターまたは内容を更新
- ファイルに書き戻し
- 変更の概要とともに成功を報告
例:
ユーザー: /skill edit custom-logger
アシスタント: 現在のスキル 'custom-logger':
- 説明: 構造化出力による拡張ロギング
- トリガー: log, logger, logging
- 引数ヒント: <level> [message]
何を編集しますか? (description/triggers/argument-hint/content/rename/cancel)
ユーザー: triggers
アシスタント: 現在のトリガー: log, logger, logging
新しいトリガー(カンマ区切り): log, logger, logging, trace
✓ 'custom-logger' のトリガーを更新しました
/skill search
内容、トリガー、名前、説明からスキルを検索します。
動作:
- 両方のスコープの全スキルをスキャン
- クエリに一致(大文字小文字区別なし):
- スキル名
- 説明
- トリガー
- マークダウン内容全体
- 一致結果をコンテキスト付きで表示:
「typescript error」に一致するスキルが3件見つかりました:
1. typescript-fixer (user)
説明: 一般的なTypeScriptエラーを修正
一致: "typescript error handling patterns"
2. error-handler (user)
説明: 汎用エラーハンドリングユーティリティ
一致: "Supports TypeScript and JavaScript errors"
3. lint-fix (project)
説明: リンティングエラーを自動修正
一致: "TypeScript ESLint error resolution"
ランキング: 名前/トリガーでの一致を内容での一致より優先
例:
ユーザー: /skill search api endpoint
アシスタント: 「api endpoint」に一致するスキルが2件見つかりました:
1. api-builder (user)
説明: REST APIエンドポイントを生成
トリガー: api, endpoint, rest
2. backend-scaffold (project)
説明: バックエンドサービスをスキャフォールド
一致: "APIエンドポイントのボイラープレートを作成"
/skill info
スキルの詳細情報を表示します。
動作:
- 名前でスキルを検索(両方のスコープを検索)
- YAMLフロントマターと内容をパース
- 完全な詳細を表示:
スキル: custom-logger
スコープ: user (~/.claude/skills/omc-learned/custom-logger/)
説明: 構造化出力による拡張ロギング
トリガー: log, logger, logging
引数ヒント: <level> [message]
品質: 95%(利用可能な場合)
使用回数: 42回(利用可能な場合)
ファイルパス: /home/user/.claude/skills/omc-learned/custom-logger/SKILL.md
--- 全内容 ---
[マークダウン全体]
見つからない場合: エラーを報告し、/skill search の使用を提案
例:
ユーザー: /skill info custom-logger
アシスタント: スキル: custom-logger
スコープ: user
説明: 構造化出力による拡張ロギング
トリガー: log, logger, logging
ファイル: ~/.claude/skills/omc-learned/custom-logger/SKILL.md
--- 内容 ---
# Custom Logger スキル
## 目的
構造化JSON出力による拡張ロギング...
[残りの内容]
/skill sync
ユーザースコープとプロジェクトスコープ間でスキルを同期します。
動作:
- 両方のスコープをスキャン:
- ユーザースキル:
${CLAUDE_CONFIG_DIR:-~/.claude}/skills/omc-learned/ - プロジェクトスキル:
.omc/skills/
- ユーザースキル:
- 比較して分類:
- ユーザーのみのスキル(プロジェクトにない)
- プロジェクトのみのスキル(ユーザーにない)
- 共通スキル(両方にある)
- 同期オプションを表示:
同期レポート:
ユーザーのみのスキル (5):
- error-handler
- api-builder
- custom-logger
- test-generator
- deploy-helper
プロジェクトのみのスキル (2):
- test-runner
- backend-scaffold
共通スキル (3):
- frontend-ui-ux
- git-master
- planner
オプション:
[1] ユーザースキルをプロジェクトにコピー
[2] プロジェクトスキルをユーザーにコピー
[3] 差分を表示
[4] キャンセル
- ユーザーの選択を処理:
- オプション1: プロジェクトにコピーするスキルを選択
- オプション2: ユーザーにコピーするスキルを選択
- オプション3: 共通スキルの差分を並べて表示
- オプション4: 終了
安全性: 確認なしで上書きしません
例:
ユーザー: /skill sync
アシスタント: ユーザーのみのスキルが5件、プロジェクトのみのスキルが2件見つかりました。
'error-handler' をユーザーからプロジェクトにコピーしますか? (yes/no/skip)
ユーザー: yes
アシスタント: ✓ 'error-handler' を .omc/skills/ にコピーしました
'api-builder' をユーザーからプロジェクトにコピーしますか? (yes/no/skip)
ユーザー: skip
...
/skill setup
ローカルスキルのセットアップと管理のためのインタラクティブウィザード(以前の local-skills-setup)。
動作:
ステップ1: ディレクトリの確認とセットアップ
まず、スキルディレクトリが存在するか確認し、必要に応じて作成します:
# ユーザーレベルのスキルディレクトリを確認して作成
USER_SKILLS_DIR="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/skills/omc-learned"
if [ -d "$USER_SKILLS_DIR" ]; then
echo "ユーザースキルディレクトリが存在します: $USER_SKILLS_DIR"
else
mkdir -p "$USER_SKILLS_DIR"
echo "ユーザースキルディレクトリを作成しました: $USER_SKILLS_DIR"
fi
# プロジェクトレベルのスキルディレクトリを確認して作成
PROJECT_SKILLS_DIR=".omc/skills"
if [ -d "$PROJECT_SKILLS_DIR" ]; then
echo "プロジェクトスキルディレクトリが存在します: $PROJECT_SKILLS_DIR"
else
mkdir -p "$PROJECT_SKILLS_DIR"
echo "プロジェクトスキルディレクトリを作成しました: $PROJECT_SKILLS_DIR"
fi
ステップ2: スキルのスキャンとインベントリ
両方のディレクトリをスキャンし、包括的なインベントリを表示:
# ユーザーレベルのスキルをスキャン
echo "=== ユーザーレベルのスキル (~/.claude/skills/omc-learned/) ==="
if [ -d "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/skills/omc-learned" ]; then
USER_COUNT=$(find "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/skills/omc-learned" -name "*.md" 2>/dev/null | wc -l)
echo "合計スキル数: $USER_COUNT"
if [ $USER_COUNT -gt 0 ]; then
echo ""
echo "見つかったスキル:"
find "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/skills/omc-learned" -name "*.md" -type f -exec sh -c '
FILE="$1"
NAME=$(grep -m1 "^name:" "$FILE" 2>/dev/null | sed "s/name: //")
DESC=$(grep -m1 "^description:" "$FILE" 2>/dev/null | sed "s/description: //")
MODIFIED=$(stat -c "%y" "$FILE" 2>/dev/null || stat -f "%Sm" "$FILE" 2>/dev/null)
echo " - $NAME"
[ -n "$DESC" ] && echo " 説明: $DESC"
echo " 更新日: $MODIFIED"
echo ""
' sh {} \;
fi
else
echo "ディレクトリが見つかりません"
fi
echo ""
echo "=== プロジェクトレベルのスキル (.omc/skills/) ==="
if [ -d ".omc/skills" ]; then
PROJECT_COUNT=$(find ".omc/skills" -name "*.md" 2>/dev/null | wc -l)
echo "合計スキル数: $PROJECT_COUNT"
if [ $PROJECT_COUNT -gt 0 ]; then
echo ""
echo "見つかったスキル:"
find ".omc/skills" -name "*.md" -type f -exec sh -c '
FILE="$1"
NAME=$(grep -m1 "^name:" "$FILE" 2>/dev/null | sed "s/name: //")
DESC=$(grep -m1 "^description:" "$FILE" 2>/dev/null | sed "s/description: //")
MODIFIED=$(stat -c "%y" "$FILE" 2>/dev/null || stat -f "%Sm" "$FILE" 2>/dev/null)
echo " - $NAME"
[ -n "$DESC" ] && echo " 説明: $DESC"
echo " 更新日: $MODIFIED"
echo ""
' sh {} \;
fi
else
echo "ディレクトリが見つかりません"
fi
# サマリー
TOTAL=$((USER_COUNT + PROJECT_COUNT))
echo "=== サマリー ==="
echo "全ディレクトリの合計スキル数: $TOTAL"
ステップ3: クイックアクションメニュー
スキャン後、AskUserQuestion ツールを使用して以下のオプションを提供:
質問: 「ローカルスキルで何をしますか?」
オプション:
- 新しいスキルを追加 - スキル作成ウィザードを起動(
/skill addを呼び出し) - すべてのスキルを詳細付きで一覧表示 - 包括的なスキルインベントリを表示(
/skill listを呼び出し) - 会話をスキャンしてパターンを抽出 - 現在の会話を分析してスキルに値するパターンを特定
- スキルをインポート - URLまたは内容のペーストからスキルをインポート
- 完了 - ウィザードを終了
オプション3: 会話をスキャンしてパターンを抽出
現在の会話コンテキストを分析し、スキルに値する可能性のあるパターンを特定します。以下のようなものを探します:
- 最近のデバッグセッションで非自明な解決策があったもの
- 調査が必要だった厄介なバグ
- 見つかったコードベース固有の回避策
- 解決に時間がかかったエラーパターン
結果を報告し、ユーザーがそれらをスキルとして抽出したいかどうかを尋ねます(/skillify を呼び出し; /learner は非推奨の互換性のため)
オプション4: スキルをインポート
ユーザーに以下のいずれかを提供するよう依頼:
- URL: URLからスキルをダウンロード(例: GitHub gist)
- 内容をペースト: スキルのマークダウン内容を直接ペースト
その後、スコープを質問:
- ユーザーレベル (~/.claude/skills/omc-learned/) - すべてのプロジェクトで利用可能
- プロジェクトレベル (.omc/skills/) - このプロジェクトのみ
スキル形式を検証し、選択された場所に保存。
/skill scan
両方のスキルディレクトリをクイックスキャンするコマンド(/skill setup のステップ2のサブセット)。
動作:
インタラクティブウィザードなしで /skill setup のステップ2のスキャンを実行。
スキルテンプレート
/skill add または /skill setup でスキルを作成する際、一般的なスキルタイプのクイックテンプレートを提供します:
エラー解決テンプレート
---
id: error-[unique-id]
name: [Error Name]
description: [特定のコンテキストにおける特定のエラーの解決策]
source: conversation
triggers: ["エラーメッセージの断片", "ファイルパス", "症状"]
quality: high
---
# [エラー名]
## 洞察
このエラーの根本的な原因は何ですか?あなたが発見した原理は何ですか?
## なぜ重要か
これを知らないと何がうまくいかないのか?どのような症状がここに導いたのか?
## 認識パターン
これがいつ適用されるかをどうやって知るのか?兆候は何ですか?
- エラーメッセージ: "[正確なエラー]"
- ファイル: [特定のファイルパス]
- コンテキスト: [いつ発生するか]
## その他
[truncated for translation]