본문으로 건너뛰기

Skill 관리 방식 비교

이 페이지는 AI CLI skill 관리에 대한 두 가지 주요 아키텍처 접근 방식을 비교합니다: imperative(명령별 install)와 declarative(config + sync).

도구를 평가 중이거나 전환을 고려 중이라면, 이 분석이 근본적인 설계 차이를 이해하는 데 도움이 될 것입니다.

아키텍처 한눈에 보기

Imperative (명령별 Install)

Imperative 도구는 명령별 install 모델을 사용합니다 — 각 install이 독립적인 작업입니다:

tool add owner/repo → select agents → choose method → done
tool add owner/repo → select agents → choose method → done
tool add owner/repo → select agents → choose method → done

모든 작업에 사용자 입력이 필요합니다. "무엇이 어디에 설치되어야 하는가"를 설명하는 영구적인 상태가 없습니다.

Declarative (Config + Sync)

skillshare는 declarative 모델을 사용합니다 — 원하는 상태를 한 번 정의한 다음 sync합니다:

# config.yaml — define once
source: ~/.config/skillshare/skills
targets:
claude: ~/.claude
cursor: ~/.cursor/skills
codex: ~/.codex/skills
skillshare sync  # reconcile actual state to desired state

하나의 명령, 프롬프트 없음, 매번 결정론적인 결과.

기능 비교

기능Imperative (명령별 install)Declarative (skillshare)
설정Config 파일 없음. 실행마다 프롬프트config.yaml — 한 번 설정하고 계속 재사용
Agent 선택매번 대화형 프롬프트config에 정의됨. sync가 모두 처리
설치 방식작업마다 copy/symlink 선택config의 sync_mode (merge, copy, symlink)
단일 source of truth각 agent에 독립적으로 skill 복사source 디렉터리 → 모든 target에 symlink
하나의 agent에서 skill 제거source 파일을 삭제해 다른 agent에 영향을 줄 수 있음해당 target의 symlink에만 영향
재현 가능한 설정새 머신에서 복원할 내장 방법 없음config.yaml + source dir = 전체 복원
프로젝트 범위 skillLock 파일이 global만 추적저장소별 skill을 위한 skillshare init -p
여러 머신 간 sync수동 (dotfiles를 통한 lock 파일 sync)git을 사용한 내장 push / pull
양방향 흐름단방향 (install만)collect가 target에서 개선 사항을 다시 가져옴
자신의 skill과 설치한 skill 구분같은 디렉터리에 혼재Tracked repo는 _ 접두사 사용
오프라인 작동CLI 자체에 npx와 네트워크 필요단일 바이너리, 설치 후 오프라인 작동
웹 대시보드없음skillshare ui — 시각적 관리
백업 / 복원없음skillshare backup / skillshare restore
Git 플랫폼 지원update/check는 GitHub 전용 (GitHub Trees API에 하드코딩)모든 Git remote — GitHub, GitLab, Bitbucket, Azure DevOps, Gitea, AtomGit, Gitee, self-hosted
런타임 의존성Node.js + npm없음 (단일 Go 바이너리)

자주 겪는 문제 해결

"설치할 때마다 agent를 매번 선택해야 함"

skillshare에서는 target을 한 번만 설정하면 됩니다:

targets:
claude: ~/.claude
cursor: ~/.cursor/skills

그러면 모든 sync, install, collect가 어디로 가야 할지 알고 있습니다. 프롬프트 없음.

"하나의 agent에서 skill을 제거하면 다른 agent가 깨짐"

Imperative 도구에서는 하나의 agent에서 skill을 제거하면 공유된 source 파일이 삭제되어 다른 agent에 깨진 symlink가 남을 수 있습니다.

skillshare의 아키텍처는 이를 완전히 방지합니다 — source 디렉터리가 유일한 진실입니다. Target symlink는 source를 가리킵니다. Target을 제거해도 그 target의 symlink만 제거되며, source 파일은 그대로입니다.

Source: ~/.config/skillshare/skills/my-skill/SKILL.md  (always preserved)
├── ~/.claude/skills/my-skill → symlink to source ✓
├── ~/.cursor/skills/my-skill → symlink to source ✓ (unaffected)
└── ~/.codex/skills/my-skill → symlink to source ✓ (unaffected)

"새 머신에서 내 설정을 복원할 수 없음"

skillshare를 사용하면 전체 설정이 이식 가능합니다:

  1. ~/.config/skillshare/(source + config)를 버전 관리에 등록
  2. 새 머신에서: 설정 repo를 git clone
  3. skillshare sync 실행

모든 target이 즉시 재생성됩니다.

"Update와 check가 GitLab / Bitbucket / Azure DevOps에서 작동하지 않음"

Imperative 도구는 종종 update 확인을 위해 GitHub Trees API에 의존하는데, 이는 updatecheck가 GitHub가 아닌 소스의 skill을 조용히 건너뛴다는 뜻입니다.

skillshare는 로컬 git 작업(git fetch + tree hash 비교)을 사용합니다 — GitLab, Bitbucket, Azure DevOps, Gitea, AtomGit, Gitee, 그리고 모든 self-hosted 인스턴스를 포함한 모든 Git remote와 함께 작동합니다. 플랫폼 특화 API가 필요하지 않습니다.

# All of these support install, update, and check:
skillshare install https://gitlab.com/team/skills
skillshare install [email protected]:company/private-skills.git
skillshare install https://git.mycompany.com/org/repo
skillshare update # checks all sources, regardless of host

"큰 저장소에서 clone이 너무 오래 걸림"

skillshare는 tracked가 아닌 install에 기본적으로 shallow clone(--depth 1)을 사용해 다운로드 시간을 크게 줄입니다. 전체 히스토리가 필요한 tracked repo는 --track을 사용하세요.

"내 skill들이 여러 agent 디렉터리에 흩어져 있음"

skillshare는 모든 것을 한곳에 유지합니다:

~/.config/skillshare/skills/
├── my-custom-skill/ # Your own skills
├── react-best-practices/ # Installed skills
├── _team-repo/ # Tracked repos (prefixed with _)
│ ├── frontend-guidelines/
│ └── code-review/
└── _another-org-repo/

_ 접두사는 tracked(팀/조직) repo를 개인 skill과 명확하게 구분합니다.

skillshare로 마이그레이션하기

이미 다른 skill 관리자를 사용 중이라면:

1단계: skillshare 설치

# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/runkids/skillshare/main/install.sh | sh

# Homebrew
brew install skillshare

2단계: 초기화 및 기존 skill 수집

skillshare init              # Creates config and detects targets
skillshare collect --all # Imports existing skills from all detected targets

3단계: Sync

skillshare sync              # Symlinks source skills to all targets

이제 기존 skill들이 한곳에서 관리됩니다. 자세한 안내는 Migration Guide를 참고하세요.

올바른 도구 선택하기

다음의 경우 imperative 도구를 선택하세요:

  • skill을 드물게 설치하고 대화형 프롬프트에 개의치 않는 경우
  • AI CLI를 하나만 사용하는 경우
  • 여러 머신이나 팀 워크플로우가 필요 없는 경우

다음의 경우 skillshare를 선택하세요:

  • 여러 AI CLI를 사용하며 서로 동기화되기를 원하는 경우
  • 설정하고 잊어버릴 수 있는(set-and-forget) 구성을 원하는 경우
  • 여러 머신에서 작업하는 경우
  • 팀이나 조직과 skill을 공유하는 경우
  • skill에 대한 백업, 복원, 버전 관리를 원하는 경우
  • GitLab, Bitbucket, Azure DevOps, 또는 self-hosted Git에 skill을 호스팅하는 경우
  • 런타임 의존성이 없는 단일 바이너리를 선호하는 경우
  • 로컬 워크플로우 밖에서 설치/다운로드 활동이 추적되는 것을 원하지 않는 경우

참고