/ ディレクトリ / プレイグラウンド / Axiom (xOS Dev Skills)
● コミュニティ CharlesWiltgen ⚡ 即起動

Axiom (xOS Dev Skills)

作者 CharlesWiltgen · CharlesWiltgen/Axiom

Swift 6と戦わないAppleプラットフォーム開発 — SwiftUI・structured concurrency・@Observable・モダンなビルドツールのための意見ある実践スキル。

AxiomはiOS / iPadOS / watchOS / tvOSで本番アプリを出荷するためのClaude Codeスキルバンドルです。モダンな慣習を強制します:SwiftUIファースト・ObservableObjectの代わりに@Observable(iOS 17+)・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: list every ObservableObject + @Published in the project. Note which are leaf vs shared.✓ コピーしました
    → 形状と依存関係のヒント付きのリスト
  2. 1つを移行
    Refactor ProfileViewModel to @Observable. Keep the public API stable. Update its View consumers' bindings.✓ コピーしました
    → VMが移行される;viewで@Bindableが使用される;@Publishedが残らない
  3. 検証
    Run xcodebuild for the scheme. Report any warnings.✓ コピーしました
    → クリーンなビルド;Swift 6の警告なし

結果: よりクリーンなviewを持つモダンな@Observableコードベース。

注意点
  • 既存のテストが@Publishedのプロジェクション($name)に依存している — テストの書き直しが必要;すべてのアクセスパターンが直接マップするわけではない
組み合わせ: filesystem · ios-simulator-mcp

Swift 6の並行性警告を修正する

👤 Swift 6の厳格な並行性に備えるiOS開発者 ⏱ ~60 min advanced

使うタイミング: ビルドにSendable / actorの警告が黄色く表示されている場合。

フロー
  1. トリアージ
    Axiom concurrency-clean: classify warnings into: (1) actor isolation, (2) Sendable conformance, (3) data race risk.✓ コピーしました
    → カテゴリ分けされたリスト
  2. actor分離を修正
    Tackle category 1 first. Propose minimal fixes; prefer @MainActor on UI types over global isolation.✓ コピーしました
    → 外科的な変更;全面的な@MainActorの散布なし

結果: 意図的な並行性境界を持つクリーンなSwift 6ビルド。

注意点
  • 「警告を黙らせる」ショートカットとして@MainActorを過剰使用する — スキルがこれをフラグする;代わりに適切なactor設計を使用する

アクセシビリティ監査を実行する

👤 リリース前のiOSチーム ⏱ ~60 min intermediate

使うタイミング: まもなくApp Store申請;VoiceOver/Dynamic Typeをカバーしたい場合。

フロー
  1. viewをスキャン
    Axiom a11y: scan SwiftUI views. Flag missing accessibilityLabel, hardcoded font sizes, low-contrast color usage.✓ コピーしました
    → viewごとの問題リスト
  2. 上位の問題をパッチ
    Apply fixes for top 10 issues. Use system fonts for Dynamic Type.✓ コピーしました
    → パッチが適用される;ビルドがクリーン

結果: 基本的なVoiceOverウォークスルーを通過するアプリ。

注意点
  • 自動生成されたラベルがユーザーのメンタルモデルと合わない — 意図を明確に示すラベルでオーバーライドする
組み合わせ: ios-simulator-mcp

組み合わせ

他のMCPと組み合わせて10倍の力を

axiom-xos-skill + ios-simulator-mcp

スキルの推奨を適用してシミュレーターでスモークテスト

Axiom: migrate ProfileVM. Then iOS-Simulator: launch, screenshot the profile screen.✓ コピーしました
axiom-xos-skill + filesystem

プロジェクト全体にパッチを適用する

Axiom concurrency-clean: produce patches for src/. Filesystem: apply them.✓ コピーしました
axiom-xos-skill + xcodebuildmcp

リファクタ後のビルド検証

After migration, XcodeBuild: build for sim. Report warnings.✓ コピーしました

ツール

このMCPが提供する機能

ツール入力呼び出すタイミングコスト
vm_migrate_observable viewmodel_path VMごとの移行 0
concurrency_clean scope Swift 6の準備 0
a11y_scan scope リリース前 0
appstore_checklist (none) 申請前 0
xcode_hygiene project 定期的なクリーンアップ 0

コストと制限

運用コスト

APIクォータ
N/A
呼び出しあたりのトークン
プロジェクトスキャンで10k〜40k token
金額
無料
ヒント
1つの機能/フォルダに監査スコープを絞る;巨大なアプリ全体にファンアウトしないこと

セキュリティ

権限、シークレット、影響範囲

最小スコープ: filesystem-read filesystem-write
認証情報の保管: なし
データ送信先: なし

トラブルシューティング

よくあるエラーと対処法

Migration broke @Bindable usage

一部のviewに@Bindableラッパーが必要;スキルが追加しているはずだが見落としていないか確認

Concurrency fixes silently change semantics

移行後は必ずテストを実行する;並行性の変更は微妙

A11y suggestions feel boilerplate

スキルはApple HIGに従う;自分のラベルで絞り込む

代替案

Axiom (xOS Dev Skills) 他との比較

代替案代わりに使う場面トレードオフ
AvdLee Swift Concurrency Skill並行性だけが必要で広範なバンドルは不要な場合より狭いスコープ
Apple's own Swift MigratorApple公式の移行が欲しい場合インタラクティブではない;プロジェクト認識が低い
twostraws SwiftUI Agent SkillSwiftUIのみにフォーカスする場合異なる意見

その他

リソース

📖 GitHub の公式 README を読む

🐙 オープンな issue を見る

🔍 400以上のMCPサーバーとSkillsを見る