/ Directory / Playground / Axiom (xOS Dev Skills)
● Community CharlesWiltgen ⚡ Instant

Axiom (xOS Dev Skills)

by CharlesWiltgen · CharlesWiltgen/Axiom

Apple-platform development that doesn't fight Swift 6 — opinionated skills for SwiftUI, structured concurrency, @Observable, and modern build tooling.

Axiom is a Claude Code skill bundle for shipping production apps on iOS / iPadOS / watchOS / tvOS. It enforces modern conventions: SwiftUI-first, @Observable over ObservableObject, async/await over completion handlers, value types, and Swift 6 concurrency rules. Includes accessibility checks, App Store readiness, and Xcode project hygiene.

Why use it

Key features

Live Demo

What it looks like in practice

ready

Install

Pick your client

~/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
    }
  }
}

Open Claude Desktop → Settings → Developer → Edit Config. Restart after saving.

~/.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 uses the same mcpServers schema as Claude Desktop. Project config wins over global.

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

Click the MCP Servers icon in the Cline sidebar, then "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
    }
  }
}

Same shape as Claude Desktop. Restart Windsurf to pick up changes.

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

Continue uses an array of server objects rather than a map.

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

Add to context_servers. Zed hot-reloads on save.

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

One-liner. Verify with claude mcp list. Remove with claude mcp remove.

Use Cases

Real-world ways to use Axiom (xOS Dev Skills)

Migrate a ViewModel to @Observable

👤 iOS devs adopting iOS 17+ ⏱ ~45 min advanced

When to use: App is iOS 17+ but ViewModels still ObservableObject + @Published.

Prerequisites
  • Skill installed — git clone https://github.com/CharlesWiltgen/Axiom ~/.claude/skills/axiom
  • Min iOS 17 deployment target — Project settings
Flow
  1. Inventory
    Axiom: list every ObservableObject + @Published in the project. Note which are leaf vs shared.✓ Copied
    → List with shape + dependency hints
  2. Migrate one
    Refactor ProfileViewModel to @Observable. Keep the public API stable. Update its View consumers' bindings.✓ Copied
    → VM migrated; @Bindable used in views; no @Published left
  3. Verify
    Run xcodebuild for the scheme. Report any warnings.✓ Copied
    → Clean build; no Swift 6 warnings

Outcome: Modern @Observable codebase with cleaner views.

Pitfalls
  • Existing tests rely on @Published projection ($name) — Tests need rewriting; not all access patterns map directly
Combine with: filesystem · ios-simulator-mcp

Fix Swift 6 concurrency warnings

👤 iOS devs preparing for Swift 6 strict concurrency ⏱ ~60 min advanced

When to use: Build is yellow with Sendable / actor warnings.

Flow
  1. Triage
    Axiom concurrency-clean: classify warnings into: (1) actor isolation, (2) Sendable conformance, (3) data race risk.✓ Copied
    → Categorized list
  2. Fix actor isolation
    Tackle category 1 first. Propose minimal fixes; prefer @MainActor on UI types over global isolation.✓ Copied
    → Surgical changes; no blanket @MainActor sprinkling

Outcome: Clean Swift 6 build with intentional concurrency boundaries.

Pitfalls
  • Overusing @MainActor as a 'silence the warnings' shortcut — Skill flags this; use proper actor design instead

Run an accessibility audit

👤 iOS teams pre-release ⏱ ~60 min intermediate

When to use: App Store submission soon; you want VoiceOver/Dynamic Type covered.

Flow
  1. Scan views
    Axiom a11y: scan SwiftUI views. Flag missing accessibilityLabel, hardcoded font sizes, low-contrast color usage.✓ Copied
    → Per-view issue list
  2. Patch top issues
    Apply fixes for top 10 issues. Use system fonts for Dynamic Type.✓ Copied
    → Patches applied; build still clean

Outcome: App passes a basic VoiceOver walk-through.

Pitfalls
  • Auto-generated labels don't match user mental model — Override with intention-revealing labels
Combine with: ios-simulator-mcp

Combinations

Pair with other MCPs for X10 leverage

axiom-xos-skill + ios-simulator-mcp

Apply skill recommendations + smoke test on sim

Axiom: migrate ProfileVM. Then iOS-Simulator: launch, screenshot the profile screen.✓ Copied
axiom-xos-skill + filesystem

Apply patches across the project

Axiom concurrency-clean: produce patches for src/. Filesystem: apply them.✓ Copied
axiom-xos-skill + xcodebuildmcp

Build verification after refactor

After migration, XcodeBuild: build for sim. Report warnings.✓ Copied

Tools

What this MCP exposes

ToolInputsWhen to callCost
vm_migrate_observable viewmodel_path Per-VM migration 0
concurrency_clean scope Swift 6 prep 0
a11y_scan scope Pre-release 0
appstore_checklist (none) Pre-submission 0
xcode_hygiene project Periodic cleanup 0

Cost & Limits

What this costs to run

API quota
N/A
Tokens per call
Project scans 10k–40k tokens
Monetary
Free
Tip
Scope audits to one feature/folder; don't fan out across a giant app

Security

Permissions, secrets, blast radius

Minimum scopes: filesystem-read filesystem-write
Credential storage: None
Data egress: None

Troubleshooting

Common errors and fixes

Migration broke @Bindable usage

Some views need @Bindable wrappers; skill should add them — check it didn't miss any

Concurrency fixes silently change semantics

Always run tests post-migration; concurrency changes are subtle

A11y suggestions feel boilerplate

Skill follows Apple HIG; tighten with your own labels

Alternatives

Axiom (xOS Dev Skills) vs others

AlternativeWhen to use it insteadTradeoff
AvdLee Swift Concurrency SkillYou only need concurrency, not the broader bundleNarrower
Apple's own Swift MigratorYou want Apple-blessed migrationLess interactive; less project-aware
twostraws SwiftUI Agent SkillSwiftUI-only focusDifferent opinions

More

Resources

📖 Read the official README on GitHub

🐙 Browse open issues

🔍 Browse all 400+ MCP servers and Skills