Communitygithub.com

스킬 관리

로컬 스킬을 관리합니다 - 목록 보기, 추가, 제거, 검색, 편집, 설정 마법사

스킬 관리란 무엇인가요?

이 메타 스킬은 oh-my-claudecode 환경에서 로컬 스킬(에이전트 행동을 정의하는 재사용 가능한 마크다운 파일)을 관리하기 위한 완전한 CLI 명령어 세트를 제공합니다. 개발자와 고급 사용자가 스킬의 전체 수명 주기를 쉽게 제어할 수 있게 해줍니다. `skill list`로 모든 사용 가능한 스킬을 검사하고, `skill add`로 대화형 마법사를 통해 새 스킬을 생성하며, `skill remove`로 안전하게 제거하고, `skill edit`로 기존 스킬의 설명, 트리거, 또는 콘텐츠를 업데이트하며, `skill search`로 전체 콘텐츠를 검색하고, `skill info`로 상세 정보를 확인할 수 있습니다. `skill sync`는 사용자 수준(`~/.claude/skills/omc-learned/`)과 프로젝트 수준(`.omc/skills/`) 스킬 저장소 간의 동기화를 허용하며, `skill setup`은 완전한 대화형 설정 마법사를 제공하여 디렉토리 생성, 인벤토리 스캔, 패턴 분석, 스킬 가져오기를 안내합니다. 모든 작업은 안전을 최우선으로 하며, 중요 작업 전에는 항상 사용자 확인을 요청합니다. 이 스킬은 oh-my-claudecode 에코시스템과 함께 제공되는 내장 스킬을 존중하며, 이는 읽기 전용으로 표시됩니다.

지원 대상✓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 판정  | 내장     |
| ralph             | 지속성 루프             | 내장     |

사용자 스킬 (~/.claude/skills/omc-learned/):
| 이름              | 트리거           | 품질 | 사용량 | 범위 |
|-------------------|--------------------|---------|-------|-------|
| error-handler     | fix, error         | 95%     | 42    | 사용자 |
| api-builder       | api, endpoint      | 88%     | 23    | 사용자 |

프로젝트 스킬 (.omc/skills/):
| 이름              | 트리거           | 품질 | 사용량 | 범위   |
|-------------------|--------------------|---------|-------|---------|
| test-runner       | test, run          | 92%     | 15    | 프로젝트 |

대체 동작: 품질/사용량 통계를 사용할 수 없으면 "N/A"로 표시

내장 스킬 참고: 내장 스킬은 oh-my-claudecode에 번들되어 있으며 검색/읽기는 가능하지만 /skill remove나 /skill edit을 통해 제거하거나 편집할 수 없습니다.


/skill add [이름]

새 스킬을 생성하기 위한 대화형 마법사입니다.

동작:

  1. 스킬 이름 요청 (명령어에 제공되지 않은 경우)
    • 유효성 검사: 소문자, 하이픈만 허용, 공백 없음
  2. 설명 요청
    • 명확하고 간결한 한 줄
  3. 트리거 요청 (쉼표로 구분된 키워드)
    • 예시: "error, fix, debug"
  4. 인수 힌트 요청 (선택 사항)
    • 예시: " [options]"
  5. 범위 요청:
    • user → ${CLAUDE_CONFIG_DIR:-~/.claude}/skills/omc-learned/<이름>/SKILL.md
    • project → .omc/skills/<이름>/SKILL.md
  6. 템플릿으로 스킬 파일 생성:
---
name: <이름>
description: <설명>
triggers:
  - <트리거1>
  - <트리거2>
argument-hint: "<인수>"
---

# <이름> 스킬

## 목적

[이 스킬이 수행하는 작업을 설명]

## 활성화 시점

[트리거 및 조건을 설명]

## 워크플로우

1. [단계 1]
2. [단계 2]
3. [단계 3]

## 예시

/oh-my-claudecode:<이름> 예시-인수


## 참고 사항

[추가 컨텍스트, 엣지 케이스, 주의사항]
  1. 성공 보고 및 파일 경로 표시
  2. 제안: "/skill edit <이름>으로 내용을 사용자 정의하세요"

예시:

사용자: /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/<이름>/SKILL.md
    • .omc/skills/<이름>/SKILL.md
  2. 발견된 경우:
    • 스킬 정보 표시 (이름, 설명, 범위)
    • 확인 요청: "'<이름>' 스킬을 <범위>에서 삭제하시겠습니까? (yes/no)"
  3. 확인된 경우:
    • 전체 스킬 디렉토리 삭제 (예: ${CLAUDE_CONFIG_DIR:-~/.claude}/skills/omc-learned/<이름>/)
    • 보고: "✓ '<이름>' 스킬이 <범위>에서 제거되었습니다."
  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)
   설명: 백엔드 서비스 스캐폴딩
   일치: "Creates API endpoint boilerplate"

/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 Skill

## 목적
구조화된 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-[고유-id]
name: [오류 이름]
description: [특정 컨텍스트의 특정 오류에 대한 해결 방법]
source: conversation
triggers: ["오류 메시지 조각", "파일 경로", "증상"]
quality: high
---

# [오류 이름]

## 통찰
이 오류의 근본 원인은 무엇입니까? 어떤 원리를 발견했습니까?

## 중요한 이유
이것을 모르면 어떻게 됩니까? 어떤 증상이 여기로 이끌었습니까?

## 인식 패턴
이것이 적용되는 시점을 어떻게 알 수 있습니까? 징후는 무엇입니까?
- 오류 메시지: "[정확한 오류]"
- 파일: [특정 파일 경로]
- 컨텍스트: [언제 발생하는지]

## 해결 방법
[나머지 내용]

워크플로우 템플릿

---
id: workflow-[고유-id]
name: [워크플로우 이름]
description: [반복적인 작업 또는 프로세스]
source: conversation
triggers: ["작업 키워드", "도메인 용어"]
quality: medium
---

# [워크플로우 이름]

## 목적
[워크플로우가 수행하는 작업]

## 단계
1. [단계 1]
2. [단계 2]
3. [단계 3]

## 입력
[필요한 것]

## 출력
[생성되는 것]

구성 템플릿

---
id: config-[고유-id]
name: [구성 이름]
description: [도구 또는 프레임워크에 대한 구성 설정]
source: conversation
triggers: ["setup", "구성", "설정", "프레임워크 이름"]
quality: medium
---

# [구성 이름]

## 목적
[이 구성이 수행하는 작업]

## 설정
[구성 방법]

## 확인
[올바르게 작동하는지 확인하는 방법]

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

관련 스킬