An opinionated Claude Code workflow to build native iOS apps in Swift, mostly without (but definitely alongside) Xcode. Built by Superwall.
/$$$$$$$
/$$__ $$
| $$ \__/ /$$ /$$ /$$$$$$$ /$$$$$$ /$$$$$$
| $$$$$$ | $$ | $$| $$__ $$ /$$__ $$| $$__ $$
\____ $$| $$ | $$| $$ \ $$| $$$$$$$$| $$ \__/
/$$ \ $$| $$ | $$| $$ | $$| $$_____/| $$
| $$$$$$/| $$$$$$/| $$$$$$$/| $$$$$$$| $$ /$$ /$$|
\______/ \______/ | $$____/ \_______/|__/ |__/ | $$|
| $$ /$$ /$$ /$$ | $$$$$$$ | $$$$$$ /$$$$$$$
| $$ | $$ /$$/| $$ | $$__ $$| $$__ $$ /$$_____/
|__/ \ $$/$$/ | $$ | $$ \ $$| $$$$$$$$| $$$$$$
\ $$$/ | $$ | $$ | $$| $$_____/ \____ $$
\ $/ | $$ | $$$$$$$/| $$$$$$$ /$$$$$$$/
\_/ |__/ |_______/ \_______/|_______/
- 🚀 Quick Setup - Generate a complete iOS project in seconds
- 📱 Build to Device - Automatically builds to connected iOS devices
- 🎨 SwiftUI Templates - Modern SwiftUI app structure out of the box
- 🛠 Build Scripts - Scripts for building, running, and testing from the terminal
- 🧪 Test Configuration - Separate schemes for development with unit and UI tests
- 🎯 XcodeGen Integration - Create files outside of Xcode while maintaining interoperability
- 🤖 Claude AI Ready - Battle tested Agents & CLAUDE.md files
curl -fsSL https://raw.githubusercontent.com/superwall/supervibes/refs/heads/main/install.sh | bashsupervibes # Interactive mode - prompts for all details
supervibes --test # Quick test mode - uses saved settingssupervibes --init # Regenerate config from supervibes.local.json
# (preserves source code and assets)supervibes --update # Update to latest version
supervibes --uninstall # Remove Supervibes from your system
supervibes --help # Show all available commandscd YourProject
scripts/build # Build the app
scripts/run # Build and run on device/simulator
scripts/install # Install and launch latest build
scripts/xcode # Open in Xcode
scripts/unit-test # Run unit tests
scripts/ui-test # Run UI tests
# Use flags for different configurations
scripts/run --debug # Debug configuration with test support
scripts/run --simulator # Target iOS simulator
scripts/run --debug --simulator # Combine flagsprojects/YourProject/
├── project.yml # XcodeGen configuration
├── YourProject/ # Source code
│ ├── YourProjectApp.swift # App entry point
│ └── ContentView.swift # Main view
├── YourProjectTests/ # Unit tests
├── YourProjectUITests/ # UI tests
├── scripts/ # Automation scripts
│ ├── build # Build only
│ ├── run # Build and run on device
│ ├── install # Install and run latest build
│ ├── unit-test # Run unit tests
│ ├── ui-test # Run UI tests
│ └── xcode # Open project in Xcode
├── CLAUDE.md # Project documentation for Claude AI
└── .claude/ # Claude AI configuration
└── agents/ # Specialized AI agents
All scripts are generated in the scripts/ directory of your project:
| Script | Description | Flags |
|---|---|---|
build |
Builds the project | --debug, --simulator |
run |
Builds and runs the app | --debug, --simulator |
install |
Installs and launches latest build | --debug, --simulator |
unit-test |
Runs unit tests (debug scheme) | - |
ui-test |
Runs UI tests (debug scheme) | - |
xcode |
Opens project in Xcode | - |
Flag descriptions:
--debug- Uses debug configuration with test support--simulator- Targets iOS simulator instead of physical device- Flags can be combined:
scripts/run --debug --simulator
Before using Supervibes, ensure you have all the required tools installed.
Quick check: Run our setup checker to see what's missing:
supervibes-check # After installation
# or
~/.supervibes/check-setup.sh # Direct pathMake sure Xcode is installed from the App Store and command line tools are set up:
xcode-select --installThe package manager for macOS. If not installed:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"For generating Xcode projects from YAML specifications:
brew install xcodegen
xcodegen --version # Verify installationFor consistent code formatting across generated projects:
brew install swiftformat
swiftformat --version # Verify installationFor repository operations and pull request management:
brew install gh
gh auth login # Follow the prompts to authenticateFor AI-powered development assistance:
npm install -g @anthropic-ai/claude-code
claude -v # Verify installationIf you don't have npm, install Node.js first:
brew install nodeYou'll need your Apple Developer Team ID. To find it:
- Visit https://developer.apple.com/account
- Sign in with your Apple ID
- Scroll down to "Membership details" and copy your Team ID:
┌────────────────────────────────┐
│ Membership details │
├────────────────────────────────┤
│ Entity name: Your Company │
│ Team ID: XXXXXXXXXX │ <- copy this
│ Entity type: Organization │
└────────────────────────────────┘
Once Supervibes is installed, you can use it from any directory:
Navigate to where you want your project and run:
supervibesYou'll be asked for:
- Project name (lowercase, alphanumeric)
- Display name
- Bundle identifier
- Development Team ID (with visual guide to find it)
- Device selection (optional, for deployment scripts)
- Project description (for AI assistance)
Generate a test project with a random name using saved settings:
./supervibes --testThis requires running the interactive mode at least once to save your Team ID and device.
Regenerate project configuration from an existing supervibes.local.json file:
supervibes --initThis mode allows you to:
- Regenerate all project configuration files (project.yml, scripts, CLAUDE.md, etc.)
- Preserve your source code files (Swift, assets, tests)
- Update build settings or fix corrupted configuration
- Useful when pulling a project from git or sharing projects between developers
supervibes [options]
Options:
--test # Quick test mode with random project name
--projects-dir=PATH # Specify custom projects directory
--init # Regenerate project config from supervibes.local.json
--update # Update Supervibes to latest version
--uninstall # Uninstall Supervibes (with confirmation)
--help, -h # Show help message
Examples:
supervibes # Interactive mode in current directory
supervibes --test # Create test project with random name
supervibes --init # Regenerate project config (preserves source code)
supervibes --update # Update to latest version
supervibes --uninstall # Remove Supervibes from your systemTwo schemes are generated:
- Release (
YourProject) - Optimized for production- No test targets
- Release configuration
- Used by default in scripts
- Debug (
YourProject-debug) - For development and testing- Includes unit and UI test targets
- Debug configuration with symbols
- Used with
--debugflag in scripts
Your Team ID and device selection are automatically saved in supervibes.json for future use.
The generator shows a visual guide:
Visit https://developer.apple.com/account
Scroll down and copy your Team ID:
┌────────────────────────────────┐
│ Membership details │
├────────────────────────────────┤
│ Entity name: Your Company │
│ Team ID: XXXXXXXXXX │ <- copy this
└────────────────────────────────┘
Each project includes:
- CLAUDE.md - Project-specific documentation with your project overview
- .claude/ - Configuration directory with specialized AI agents
- Modern Swift development guidelines
- XcodeGen documentation integration
Supervibes stands on the shoulders of giants. Special thanks to:
- XcodeGen by Yonas Kolb - The foundation of our project generation
- SwiftFormat by Nick Lockwood - Keeping our code beautifully formatted
- Claude Code by Anthropic - AI-powered development assistance
This is an internal Superwall tool (for now)! Please implement the features you think are necessary for launch.
Private repository - Superwall internal use only.
If you want to contribute to Supervibes or run the development version:
# Clone the repository
git clone https://github.com/superwall/supervibes.git
cd supervibes
# Run the development setup
./setup-dev.shThis creates supervibes-dev command that runs from your development directory.
To remove Supervibes:
rm -rf ~/.supervibes ~/.local/bin/supervibesFor development version:
rm -rf ~/.supervibes-dev ~/.local/bin/supervibes-devBuilt with 💙 by Superwall