Communitygithub.com

スキル管理CLI

ローカルスキルの管理(一覧表示、追加、削除、検索、編集、セットアップウィザード)を行います。

スキル管理CLI とは?

このスキルは、oh-my-claudecodeのスキルをCLIライクなコマンドで管理するためのメタスキルです。/skill list、/skill add、/skill remove、/skill edit、/skill search、/skill info、/skill sync、/skill setup、/skill scanといったサブコマンドを提供し、ビルトイン、ユーザー、プロジェクトの各スコープ内でスキルを操作できます。各コマンドはインタラクティブなプロンプトを備えており、新しいスキルの作成や既存スキルの編集、スキル間の同期、会話パターンからのスキル抽出などをシームレスに行えます。開発者はCLI環境で迅速にスキルを管理でき、ワークフローを効率化できます。主にClaude Codeやoh-my-claudecode環境で動作し、SKILL.mdファイルのYAMLフロントマターを解析してメタデータを管理します。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Yeachan-Heo/oh-my-claudecode/tree/main/skills/skill

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

スキル管理CLI は何をしますか?

oh-my-claudecodeスキルをCLIライクなコマンドで管理するメタスキル。

サブコマンド

/skill list

スコープごとに全利用可能スキルを表示します。

動作:

  1. プラグインの skills/ ディレクトリにあるバンドル済みビルトインスキルをスキャン(読み取り専用)
  2. ${CLAUDE_CONFIG_DIR:-~/.claude}/skills/omc-learned/ にあるユーザースキルをスキャン
  3. .omc/skills/ にあるプロジェクトスキルをスキャン
  4. YAMLフロントマターをパースしてメタデータを取得
  5. 整理されたテーブル形式で表示:
ビルトインスキル (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]

新しいスキルを作成するインタラクティブウィザード。

動作:

  1. スキル名を質問(コマンドで指定されていない場合)
    • 検証: 小文字、ハイフンのみ、スペースなし
  2. 説明を質問
    • 明確で簡潔な一文
  3. トリガーを質問(カンマ区切りのキーワード)
    • 例: "error, fix, debug"
  4. 引数ヒントを質問(オプション)
    • 例: " [options]"
  5. スコープを質問:
    • user → ${CLAUDE_CONFIG_DIR:-~/.claude}/skills/omc-learned/<name>/SKILL.md
    • project → .omc/skills/<name>/SKILL.md
  6. テンプレートを使用してスキルファイルを作成:
---
name: <name>
description: <description>
triggers:
  - <trigger1>
  - <trigger2>
argument-hint: "<args>"
---

# <Name> スキル

## 目的

[このスキルが何をするか説明]

## アクティベート条件

[トリガーと条件を説明]

## ワークフロー

1. [ステップ1]
2. [ステップ2]
3. [ステップ3]

## 使用例

/oh-my-claudecode: example-arg


## 注意事項

[追加のコンテキスト、エッジケース、落とし穴]
  1. 成功を報告(ファイルパス付き)
  2. 提案: 「/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

名前を指定してスキルを削除します。

動作:

  1. 両方のスコープからスキルを検索:
    • ${CLAUDE_CONFIG_DIR:-~/.claude}/skills/omc-learned/<name>/SKILL.md
    • .omc/skills/<name>/SKILL.md
  2. 見つかった場合:
    • スキル情報を表示(名前、説明、スコープ)
    • 確認を求める: 「 から '' スキルを削除しますか? (yes/no)」
  3. 確認された場合:
    • スキルディレクトリ全体を削除(例: ${CLAUDE_CONFIG_DIR:-~/.claude}/skills/omc-learned/<name>/)
    • 報告: 「✓ からスキル '' を削除しました」
  4. 見つからなかった場合:
    • 報告: 「✗ スキル '' がユーザーまたはプロジェクトスコープに見つかりませんでした」

安全性: 明示的なユーザー確認なしでは削除しません。

例:

ユーザー: /skill remove old-logger
アシスタント: ユーザースコープでスキル 'old-logger' を見つけました:
  説明: レガシーロギングユーティリティ
  スコープ: user (~/.claude/skills/omc-learned/)

'old-logger' スキルを削除しますか? (yes/no)

ユーザー: yes
アシスタント: ✓ ユーザースコープからスキル 'old-logger' を削除しました

/skill edit

既存のスキルをインタラクティブに編集します。

動作:

  1. 名前でスキルを検索(両方のスコープを検索)
  2. Readツールで現在の内容を読み取り
  3. 現在の値を表示:
    現在のスキル 'custom-logger':
    - 説明: 構造化出力による拡張ロギング
    - トリガー: log, logger, logging
    - 引数ヒント: <level> [message]
    - スコープ: user
    
  4. 変更内容を質問:
    • description - 説明を更新
    • triggers - トリガーキーワードを更新
    • argument-hint - 引数ヒントを更新
    • content - マークダウン内容全体を編集
    • rename - スキル名を変更(ファイル移動)
    • cancel - 変更せずに終了
  5. 選択されたフィールドについて:
    • 現在の値を表示
    • 新しい値を質問
    • YAMLフロントマターまたは内容を更新
    • ファイルに書き戻し
  6. 変更の概要とともに成功を報告

例:

ユーザー: /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

内容、トリガー、名前、説明からスキルを検索します。

動作:

  1. 両方のスコープの全スキルをスキャン
  2. クエリに一致(大文字小文字区別なし):
    • スキル名
    • 説明
    • トリガー
    • マークダウン内容全体
  3. 一致結果をコンテキスト付きで表示:
「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

スキルの詳細情報を表示します。

動作:

  1. 名前でスキルを検索(両方のスコープを検索)
  2. YAMLフロントマターと内容をパース
  3. 完全な詳細を表示:
スキル: 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

ユーザースコープとプロジェクトスコープ間でスキルを同期します。

動作:

  1. 両方のスコープをスキャン:
    • ユーザースキル: ${CLAUDE_CONFIG_DIR:-~/.claude}/skills/omc-learned/
    • プロジェクトスキル: .omc/skills/
  2. 比較して分類:
    • ユーザーのみのスキル(プロジェクトにない)
    • プロジェクトのみのスキル(ユーザーにない)
    • 共通スキル(両方にある)
  3. 同期オプションを表示:
同期レポート:

ユーザーのみのスキル (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. ユーザーの選択を処理:
    • オプション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 ツールを使用して以下のオプションを提供:

質問: 「ローカルスキルで何をしますか?」

オプション:

  1. 新しいスキルを追加 - スキル作成ウィザードを起動(/skill add を呼び出し)
  2. すべてのスキルを詳細付きで一覧表示 - 包括的なスキルインベントリを表示(/skill list を呼び出し)
  3. 会話をスキャンしてパターンを抽出 - 現在の会話を分析してスキルに値するパターンを特定
  4. スキルをインポート - URLまたは内容のペーストからスキルをインポート
  5. 完了 - ウィザードを終了

オプション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]

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

agent-doc-discipline

Writing-time discipline for documents agents consume (the five surfaces, specs, tickets, .omc/skills/) — every rule checkable and carrying a why, steps before reference, one meaning in one home, no restating what the environment already says. Mandatory at drydock seed generation and the launch C5 sediment pass; opt-in for any other agent-facing doc edit. The companion of minimal-code-discipline: that one disciplines code, this one disciplines papers.

ai-slop-cleaner

Clean AI-generated code slop with a regression-safe, deletion-first workflow and optional reviewer-only mode

ask

Process-first advisor routing for Claude, Codex, Gemini, Antigravity, Grok, or Cursor via `omc ask`, with artifact capture and no raw CLI assembly

ask-navigator

Shipyard

autopilot

Full autonomous execution from idea to working code

autoresearch

Stateful single-mission improvement loop with strict evaluator contract, markdown decision logs, and max-runtime stop behavior

cancel

Cancel any active OMC mode (autopilot, ralph, ultragoal, swarm, ultrapilot, pipeline, team) and clean up retired legacy state

configure-notifications

Configure notification integrations (Telegram, Discord, Slack) via natural language

debug

Diagnose the current OMC session or repo state using logs, traces, state, and focused reproduction

deepinit

Deep codebase initialization with hierarchical AGENTS.md documentation

deep-interview

Socratic deep interview with mathematical ambiguity gating before explicit execution approval

drydock

Lay the keel of the shipyard harness in any repo — the 4-pillar shared environment (Context, Rules, Tools, Standards) across 5 surfaces (CLAUDE.md, skills, design-system, mcp/cli, shared context) so that every human and agent inherits the same design language and anyone can ship. Run once per repo; re-run with --check to audit drift.

execute

Carry an approved task through to working, verified code

external-context

Invoke parallel document-specialist agents for external web searches and documentation lookup

graph

Deterministic orchestration graph runtime - declarative DAG pipelines with journal-based crash recovery

harbor

Harbor intake for external work — the captain only handles unresolved decisions. Sweeps incoming issues and PRs, verifies every claim before disposition, reuses every decision already made, and hands the maintainer a docket whose pending items each carry one question with options, recommendation, impact and evidence. Agent-autonomous for facts and for actions covered by standing authorization; signed for every new judgment. Never merges.

hud

Configure HUD display options (layout, presets, display elements)

launch

Shipyard

loft

Loft the shape before cutting steel — answer a design question that prose cannot settle by building a throwaway artifact: a pure logic module in a clickable shell, or structurally different UI variants behind one route. The captain reacts to the artifact; the answer folds into the decision; the artifact never docks. Use when a design question stalls in words, when a navigator map carries a loft ticket, or when a spec discussion reaches

minimal-code-discipline

YAGNI-ladder coding discipline for writing changes — existence-first, reuse before writing, dependency ladder, shortest correct diff, with non-negotiables that must never be minimized away

関連スキル