AI 코딩 어시스턴트(AI coding assistants)를 위한 스킬을 발견, 탐색, 설치 및 태깅할 수 있는 macOS 애플리케이션입니다. GitHub 저장소 또는 로컬 파일 시스템에서 Claude Code 및 Codex용 스킬을 관리하세요.
Claude Code 및 Codex를 위한 스킬 탐색, 설치 및 태깅
원격 스킬 탐색
- anthropics/skills와 같은 GitHub 저장소에서 스킬 발견
로컬 디렉토리 지원
file:// URL을 통해 모든 로컬 디렉토리에서 스킬 추가
설치된 스킬 보기
- 제공자(Provider)별(Claude Code, Codex 또는 전체) 필터링
멀티 저장소 지원
- 여러 개의 GitHub 스킬 카탈로그 추가 및 관리
멀티 제공자 설치
- Claude Code 및/또는 Codex에 스킬 설치
글로벌 커스텀 태그
- 모든 카탈로그에 걸쳐 스킬을 정리하기 위한 태그 생성
태그 기반 필터링
- SKILL.md 태그 또는 사용자 정의 태그로 스킬 필터링
마크다운 렌더링 (Markdown Rendering)
- 완전한 마크다운 지원으로 스킬 문서 보기
분할 창 에디터 (Split-Pane Editor)
- 실시간 마크다운 미리보기를 통해 로컬 스킬 편집
삭제 / 연결 해제 (Uninstall / Unlink)
- 제공자로부터 연결을 해제하거나 완전히 삭제
검색
- 이름, 설명 또는 태그로 스킬 찾기
그리드 / 리스트 뷰
- 카드 그리드와 컴팩트 리스트 뷰 간 전환
| 제공자 (Provider) | 스킬 경로 (Skills Path) | 설명 |
|---|
| Claude Code | ~/.claude/skills | Anthropic의 AI 코딩 어시스턴트 |
| Codex | ~/.codex/skills/public | OpenAI의 코드 생성 도구 |
GitHub Releases에서 최신 릴리스를 다운로드하세요.
git clone https://github.com/tddworks/SkillsManager.git
cd SkillsManager
swift build -c release
앱을 실행하여 사용 가능한 스킬을 탐색하세요. 3단 레이아웃은 다음과 같이 구성됩니다:
사이드바 (Sidebar)
-
설치된 스킬, 제공자 필터 및 원격 카탈로그 간 이동
메인 콘텐츠 (Main Content)
-
태그 기반 필터링을 사용하여 그리드 또는 리스트 뷰로 스킬 탐색
상세 패널 (Detail Panel)
-
스킬 정보 확인, 태그 관리, 설치/삭제
-
사이드바 하단의 "+ Add Catalog" 클릭
-
GitHub 저장소(GitHub Repository) 또는 로컬 디렉토리(Local Directory) 선택
-
URL 입력 (예: https://github.com/anthropics/skills)
) 또는 폴더 찾아보기 - "Add Catalog" 클릭
- 상세 패널을 열려면 스킬(Skill)을 선택하세요
- Tags 섹션에서 "+ add"를 클릭하여 새로운 태그를 생성할 수 있습니다
- 태그는 전역 레이블(Global Labels)입니다. 한 번 생성되면 모든 뷰의 필터 바에 나타납니다
- 보라색 태그는 SKILL.md의 프론트매터(frontmatter)에서 가져온 것이며, 하늘색 태그는 사용자가 직접 만든 커스텀 태그입니다
# 프로젝트 빌드
swift build
# 모든 테스트 실행
...
이 프로젝트는 SwiftUI 프리뷰(Preview)를 지원하는 Xcode 프로젝트를 생성하기 위해 Tuist를 사용합니다.
# Tuist 설치 (설치되지 않은 경우)
brew install tuist
# Xcode 프로젝트 생성
...
전체 문서: docs/ARCHITECTURE.md
SkillsManager는 풍부한 도메인 모델(Domain Models)과 SwiftUI 아토믹 디자인(Atomic Design)을 갖춘 **계층형 아키텍처 (Layered Architecture)**를 사용합니다:
SkillLibrary (@Observable, coordinator)
├── localCatalog: SkillsCatalog ← 설치된 스킬 (claude + codex)
├── remoteCatalogs: [SkillsCatalog] ← GitHub 리포지토리 또는 로컬 디렉토리
...
| 계층 (Layer) | 위치 (Location) | 목적 (Purpose) |
|---|
| 도메인 (Domain) | Sources/Domain/ | 풍부한 모델 (Skill, SkillsCatalog, SkillTags), 프로토콜 (Protocols) |
| 인프라스트럭처 (Infrastructure) | Sources/Infrastructure/ | 리포지토리 (Repositories), 파서 (Parsers), 영속성 (Persistence) |
| 앱 (App) | Sources/App/ | SwiftUI 뷰 (Atomic Design), 코디네이터 (Coordinator), 디자인 토큰 (Design Tokens) |
풍부한 도메인 모델 (Rich Domain Models) - 모델 내에 동작이 캡슐화되어 있습니다 (빈약한 데이터 모델이 아님)
도메인 애그리거트 (Domain Aggregates) - SkillTags는 태그 기능을 관리하는 @Observable 애그리거트입니다
Tell-Don't-Ask - 객체는 자신의 상태를 스스로 관리하며, 호출자는 객체에게 무엇을 할지만 지시합니다
프로토콜 기반 DI (Protocol-Based DI) - 테스트 가능성을 위해 @Mockable 프로토콜을 사용합니다
시카고 학파 TDD (Chicago School TDD) - 상호작용(Interactions)이 아닌 상태 변화(State Changes)를 테스트합니다
ViewModel 계층 없음 (No ViewModel Layer) - 뷰가 도메인 모델을 직접 소비합니다
SwiftUI 아토믹 디자인 (SwiftUI Atomic Design) - 원자(Atoms), 분자(Molecules), 유기체(Organisms), 페이지(Pages)
디자인 토큰 (Design Tokens) - DS 열거형(enum)은 일관된 다크 테마를 위해 프로토타입 CSS를 반영합니다
SkillsManager/
├── Sources/
│ ├── Domain/
...
이 프로젝트에는 CI/CD 워크플로우와 자동 업데이트를 위한 Sparkle 통합이 포함되어 있습니다.
업데이트 서명을 위한 EdDSA 키를 생성합니다:
# Sparkle 도구를 가져오기 위해 먼저 빌드합니다
swift build
# 키 쌍 생성
...
| 비밀값 (Secret) | 용도 (Purpose) |
|---|
APPLE_CERTIFICATE_P12 | Base64로 인코딩된 Developer ID 인증서 |
APPLE_CERTIFICATE_PASSWORD | 인증서 비밀번호 |
APP_STORE_CONNECT_API_KEY_P8 | Base64로 인코딩된 App Store Connect API 키 |
APP_STORE_CONNECT_KEY_ID | API 키 ID |
APP_STORE_CONNECT_ISSUER_ID | 팀 발행자 ID (Team issuer ID) |
SPARKLE_EDDSA_PRIVATE_KEY | 업데이트 서명을 위한 EdDSA 개인 키 |
CODECOV_TOKEN | (선택 사항) Codecov 업로드 토큰 |
릴리스(Releases)는 다음 작업에 의해 트리거됩니다:
릴리스 워크플로(Release workflow)는 다음을 수행합니다:
- 유니버설 바이너리 (Universal binary, arm64 + x86_64) 빌드
- Developer ID로 서명
- Apple을 통한 공증 (Notarize)
- DMG 및 ZIP 아티팩트 (Artifacts) 생성
- GitHub 릴리스 게시
- 자동 업데이트를 위한 Sparkle 앱캐스트 (Appcast) 업데이트
MIT License - 자세한 내용은 LICENSE를 참조하세요.