Claude Code iOS Playbook

A playbook for building and shipping iOS apps as a solo indie developer using
Claude Code. One script bootstraps
an Xcode project with CI/CD, code signing, linting, pre-commit hooks, and an
App Store submission pipeline. Claude Code handles day-to-day development.
Table of Contents
TL;DR
- Copy
.env.playbook.example to .env.playbook, fill in your Apple Developer details (one-time)
- Copy
.env.project.example to .env.project, fill in APP_NAME, BUNDLE_ID, REPO_NAME, MINIMUM_IOS (per project)
- Run
bash bootstrap.sh from the parent directory where you want the project folder created
- Open the project folder in Claude Code and start building
You get an Xcode project with GitHub Actions CI/CD, Fastlane for TestFlight and
App Store deployment, SwiftLint, Gitleaks, conventional commits, and a CLAUDE.md
that tells Claude Code how to work in your project.
What this is
This playbook is written for Claude Code to follow. Every step is concrete, tested, and
copy-pasteable. It covers:
- Bootstrap a new iOS project with one command
- CI/CD with GitHub Actions (build checks, TestFlight deploys, App Store releases)
- Code signing with manual provisioning profiles and Fastlane
- StoreKit 2 subscription setup
- Development conventions (Git workflow, Swift 6, SwiftUI patterns)
- Feature scaffolding (widgets, extensions, SPM dependencies)
- CloudKit & Push Notifications (gotchas, async init patterns)
- Screenshot automation for App Store submissions
- App Store submission checklist and common rejection fixes
Who this is for
Solo indie iOS developers who want to ship apps with Claude Code as their primary
development tool. The playbook assumes:
- Apple Developer Program membership
- macOS with Xcode installed
- Basic familiarity with Terminal (you don't need to be a command-line expert)
- GitHub account
If you're brand new, start with getting-started.md.
Files
| File | What it does |
|---|
ios-project-playbook.md | The main playbook. Covers bootstrap through post-launch monitoring. What Claude Code reads to understand your projects. |
bootstrap.sh | One-command project bootstrap script. Creates an Xcode project, Fastlane config, GitHub Actions workflows, linting, hooks, legal templates, and pushes to GitHub. |
getting-started.md | Step-by-step guide for first-time setup. Walks through prerequisites, creating your first project, and daily workflow. Start here if this is your first time. |
CLAUDE-TEMPLATE.md | Template for per-project CLAUDE.md files. The bootstrap script uses this to generate each project's Claude Code configuration. |
claude-code-plugins-setup.md | Guide for setting up Claude Code plugins and MCP servers for iOS development (XcodeBuildMCP, Apple's Xcode MCP bridge, etc.). |
CHANGELOG.md | Playbook updates with upgrade instructions for existing projects. |
.env.playbook.example | Template for your personal configuration (Team ID, ASC credentials, GitHub org). Copy to .env.playbook and fill in your values once. |
.env.project.example | Template for per-project configuration (APP_NAME, BUNDLE_ID, REPO_NAME, MINIMUM_IOS). Copy to .env.project and edit before each new project. |
Setup
Prerequisites
- Xcode (with command line tools)
- Homebrew:
brew install xcodegen fastlane swiftlint lefthook gitleaks gh ruby
- GitHub CLI authenticated:
gh auth login
- Apple Developer Program membership
Configuration (one-time)
cp .env.playbook.example .env.playbook
# Edit .env.playbook with your Apple Developer credentials (Team ID, ASC keys, GitHub org)
Create your first project
# Per project: copy and edit .env.project (APP_NAME, BUNDLE_ID, REPO_NAME, MINIMUM_IOS)
cp .env.project.example .env.project
# Then run bootstrap from the parent directory where the project folder should land
bash bootstrap.sh
You never edit bootstrap.sh itself — both env files are loaded automatically.
The script hard-fails if .env.project is missing, so create it first.
The script prints manual steps you'll need to complete in the Apple Developer Portal
and App Store Connect (registering the bundle ID, creating a provisioning profile, etc.).
See getting-started.md for a walkthrough with screenshots.
Start developing
cd YourApp
claude