/ 디렉터리 / 플레이그라운드 / Axiom (xOS Dev Skills)
● 커뮤니티 CharlesWiltgen ⚡ 바로 사용

Axiom (xOS Dev Skills)

제작: CharlesWiltgen · CharlesWiltgen/Axiom

Swift 6와 싸우지 않는 Apple 플랫폼 개발 — SwiftUI, 구조화된 동시성, @Observable, 현대적 빌드 툴링을 위한 의견 있는 스킬.

Axiom은 iOS / iPadOS / watchOS / tvOS에서 프로덕션 앱을 출시하기 위한 Claude Code 스킬 번들입니다. 현대적인 규약을 적용합니다: SwiftUI 우선, @Observable(ObservableObject보다), completion handler보다 async/await, 값 타입, Swift 6 동시성 규칙. 접근성 검사, App Store 준비, Xcode 프로젝트 위생을 포함합니다.

왜 쓰나요

핵심 기능

라이브 데모

실제 사용 모습

준비됨

설치

클라이언트 선택

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "axiom-xos-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/CharlesWiltgen/Axiom",
        "~/.claude/skills/axiom"
      ],
      "_inferred": true
    }
  }
}

Claude Desktop → Settings → Developer → Edit Config 열기. 저장 후 앱 재시작.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "axiom-xos-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/CharlesWiltgen/Axiom",
        "~/.claude/skills/axiom"
      ],
      "_inferred": true
    }
  }
}

Cursor는 Claude Desktop과 동일한 mcpServers 스키마 사용. 프로젝트 설정이 전역보다 우선.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "axiom-xos-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/CharlesWiltgen/Axiom",
        "~/.claude/skills/axiom"
      ],
      "_inferred": true
    }
  }
}

Cline 사이드바의 MCP Servers 아이콘 클릭 후 "Edit Configuration" 선택.

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "axiom-xos-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/CharlesWiltgen/Axiom",
        "~/.claude/skills/axiom"
      ],
      "_inferred": true
    }
  }
}

Claude Desktop과 같은 형식. Windsurf 재시작 후 적용.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "axiom-xos-skill",
      "command": "git",
      "args": [
        "clone",
        "https://github.com/CharlesWiltgen/Axiom",
        "~/.claude/skills/axiom"
      ]
    }
  ]
}

Continue는 맵이 아닌 서버 오브젝트 배열 사용.

~/.config/zed/settings.json
{
  "context_servers": {
    "axiom-xos-skill": {
      "command": {
        "path": "git",
        "args": [
          "clone",
          "https://github.com/CharlesWiltgen/Axiom",
          "~/.claude/skills/axiom"
        ]
      }
    }
  }
}

context_servers에 추가. 저장 시 Zed가 핫 리로드.

claude mcp add axiom-xos-skill -- git clone https://github.com/CharlesWiltgen/Axiom ~/.claude/skills/axiom

한 줄 명령. claude mcp list로 확인, claude mcp remove로 제거.

사용 사례

실전 활용법: Axiom (xOS Dev Skills)

ViewModel을 @Observable로 마이그레이션

👤 iOS 17+를 채택하는 iOS 개발자 ⏱ ~45 min advanced

언제 쓸까: 앱이 iOS 17+이지만 ViewModel이 여전히 ObservableObject + @Published를 사용할 때.

사전 조건
  • 스킬 설치됨 — git clone https://github.com/CharlesWiltgen/Axiom ~/.claude/skills/axiom
  • 최소 iOS 17 배포 대상 — 프로젝트 설정에서
흐름
  1. 인벤토리
    Axiom: 프로젝트의 모든 ObservableObject + @Published를 나열하세요. 리프 vs 공유 구분하세요.✓ 복사됨
    → 형태 + 의존성 힌트가 있는 목록
  2. 하나 마이그레이션
    ProfileViewModel을 @Observable로 리팩토링하세요. 공개 API를 안정적으로 유지하세요. 뷰 소비자의 바인딩을 업데이트하세요.✓ 복사됨
    → VM 마이그레이션됨; 뷰에서 @Bindable 사용됨; @Published 없음
  3. 확인
    스킴에 대해 xcodebuild를 실행하세요. 경고를 보고하세요.✓ 복사됨
    → 깨끗한 빌드; Swift 6 경고 없음

결과: 더 깨끗한 뷰가 있는 현대적인 @Observable 코드베이스

함정
  • 기존 테스트가 @Published 프로젝션($name)에 의존 — 테스트를 다시 작성해야 함; 모든 액세스 패턴이 직접 매핑되지는 않음
함께 쓰기: filesystem · ios-simulator-mcp

Swift 6 동시성 경고 수정

👤 Swift 6 엄격한 동시성을 준비하는 iOS 개발자 ⏱ ~60 min advanced

언제 쓸까: 빌드가 Sendable / actor 경고로 노랗게 표시될 때.

흐름
  1. 분류
    Axiom concurrency-clean: 경고를 분류하세요: (1) actor 격리, (2) Sendable 준수, (3) 데이터 레이스 위험.✓ 복사됨
    → 분류된 목록
  2. actor 격리 수정
    1번 카테고리부터 처리하세요. 최소 수정 제안; UI 타입에는 전역 격리보다 @MainActor를 선호.✓ 복사됨
    → 수술적 변경; 일괄 @MainActor 살포 없음

결과: 의도적인 동시성 경계가 있는 깨끗한 Swift 6 빌드

함정
  • @MainActor를 '경고 침묵' 단축키로 과용 — 스킬이 이를 표시; 대신 적절한 actor 설계 사용

접근성 감사 실행

👤 릴리스 전 iOS 팀 ⏱ ~60 min intermediate

언제 쓸까: App Store 제출이 임박했을 때; VoiceOver/Dynamic Type 커버가 필요할 때.

흐름
  1. 뷰 스캔
    Axiom a11y: SwiftUI 뷰를 스캔하세요. 누락된 accessibilityLabel, 하드코딩된 폰트 크기, 낮은 대비 색상 사용을 표시하세요.✓ 복사됨
    → 뷰별 이슈 목록
  2. 상위 이슈 패치
    상위 10개 이슈에 수정을 적용하세요. Dynamic Type에는 시스템 폰트를 사용하세요.✓ 복사됨
    → 패치 적용됨; 빌드 여전히 깨끗함

결과: 기본 VoiceOver 안내를 통과하는 앱

함정
  • 자동 생성된 레이블이 사용자 멘탈 모델과 맞지 않음 — 의도를 드러내는 레이블로 재정의
함께 쓰기: ios-simulator-mcp

조합

다른 MCP와 조합해 10배 효율

axiom-xos-skill + ios-simulator-mcp

스킬 권장 사항 적용 + 시뮬레이터에서 스모크 테스트

Axiom: ProfileVM 마이그레이션. 그런 다음 iOS-Simulator: 실행, 프로필 화면 스크린샷.✓ 복사됨
axiom-xos-skill + filesystem

프로젝트 전체에 패치 적용

Axiom concurrency-clean: src/를 위한 패치 생성. Filesystem: 적용.✓ 복사됨
axiom-xos-skill + xcodebuildmcp

리팩토링 후 빌드 확인

마이그레이션 후, XcodeBuild: 시뮬레이터용 빌드. 경고 보고.✓ 복사됨

도구

이 MCP가 노출하는 것

도구입력언제 호출비용
vm_migrate_observable viewmodel_path VM별 마이그레이션 0
concurrency_clean scope Swift 6 준비 0
a11y_scan scope 릴리스 전 0
appstore_checklist (없음) 제출 전 0
xcode_hygiene project 주기적 정리 0

비용 및 제한

운영 비용

API 쿼터
해당 없음
호출당 토큰
프로젝트 스캔 10k–40k 토큰
금액
무료
감사를 하나의 기능/폴더로 범위 제한; 거대한 앱 전체에 팬아웃하지 말 것

보안

권한, 시크릿, 파급범위

최소 스코프: filesystem-read filesystem-write
자격 증명 저장: 없음
데이터 외부 송신: 없음

문제 해결

자주 발생하는 오류와 해결

마이그레이션이 @Bindable 사용을 깨뜨림

일부 뷰에 @Bindable 래퍼가 필요; 스킬이 추가해야 함 — 놓친 것 없는지 확인

동시성 수정이 자동으로 의미를 변경

마이그레이션 후 항상 테스트 실행; 동시성 변경은 미묘함

A11y 제안이 보일러플레이트처럼 느껴짐

스킬은 Apple HIG를 따름; 자신의 레이블로 강화

대안

Axiom (xOS Dev Skills) 다른 것과 비교

대안언제 쓰나단점/장점
AvdLee Swift Concurrency Skill동시성만 필요하고 더 넓은 번들이 필요 없을 때더 좁음
Apple의 Swift MigratorApple이 승인한 마이그레이션을 원할 때덜 인터랙티브; 프로젝트 인식이 낮음
twostraws SwiftUI Agent SkillSwiftUI 전용 포커스다른 의견

더 보기

리소스

📖 GitHub에서 공식 README 읽기

🐙 열린 이슈 보기

🔍 400+ MCP 서버 및 Skills 전체 보기