01Getting Started
Set Up Your Shared GitHub Repo
Create a new private GitHub repo and have both collaborators clone it. The person who creates the Xcode project should push the initial commit โ make sure to add a solid .gitignore for Xcode before anything else, or you'll spend your first hour cleaning up DerivedData.
In Xcode, go to File โ New โ Project, select SwiftUI App, and initialize git in the same folder as your repo. Push that first commit, then your partner pulls it down. From here on, you're both working from the same source of truth.
# Recommended .gitignore additions for Xcode
.DS_Store
*.xcuserstate
xcuserdata/
DerivedData/
*.hmap
*.ipa
*.dSYM.zip
๐กTip: Enable branch protection on main โ neither of you should push directly to main. All work goes through pull requests.
02Claude Code Setup
Wire Up Claude Code on Both Machines
Both collaborators install Claude Code CLI and run it from inside the project directory. The key to keeping your AI pair-programmer in sync across two machines is a shared CLAUDE.md file at the root of the repo. This file tells Claude Code exactly what your project is, your conventions, and anything it should always remember.
Commit this file to git. Every time you learn something โ a SwiftUI pattern that works, a convention you've agreed on, a known quirk in your codebase โ update CLAUDE.md and push. Your partner pulls it down and now their Claude Code instance knows the same things.
# CLAUDE.md (commit this to git)
## Project
iOS app built with SwiftUI, targeting iOS 17+.
Deployment target: App Store via Xcode Cloud.
## Conventions
- Use @Observable macro over ObservableObject
- All views in /Views, models in /Models
- No force unwraps โ use guard let or if let
- Run SwiftLint before every PR
## Known issues
- Avoid modifying ContentView.swift directly
(it's the root coordinator, treat as read-only)
๐กTip: Think of CLAUDE.md as the onboarding doc you wish existed on day one. Keep it honest and update it often.
03Collaboration
A Branching Workflow That Works With AI
Standard Git flow works great with Claude Code. One dev takes a feature, creates a branch, and works with Claude Code locally until it's ready for review. The other dev reviews the PR โ and can ask their own Claude Code to explain changes or suggest improvements before merging.
The biggest win: neither of you are blocked waiting for the other. Claude Code keeps you both moving. One person might be building the onboarding flow while the other works on the data layer โ no stepping on each other.
# Feature branch workflow
git checkout -b feat/onboarding-flow
# ... work with Claude Code locally ...
git add -p # stage thoughtfully, not git add .
git commit -m "Add onboarding carousel with UserDefaults persistence"
git push origin feat/onboarding-flow
# Open PR โ partner reviews โ merge to main
๐กTip: Use Claude Code's /review command on your partner's PR before you merge. It catches things human eyes miss.
04Collaboration
Staying in Sync Without Getting in Each Other's Way
The main risk with two devs and two AI assistants is both writing conflicting code at the same time. Avoid working in the same Swift file simultaneously. A quick Slack message โ 'I\'m in ProfileView.swift for the next hour' โ goes a long way.
Establish file ownership loosely: one person owns the data/networking layer, one owns the UI. Claude Code will generate better suggestions when it has clear context about what's yours to change. Add comments in CLAUDE.md about ownership if you keep running into conflicts.
# In CLAUDE.md โ ownership section
## File ownership (soft rules)
Luke: /Views/**, /Components/**
Partner: /Models/**, /Services/**, /Networking/**
Shared: ContentView.swift (coordinate before touching)
๐กTip: If you both need to touch the same file, one person drafts the changes, the other reviews โ don't both run Claude Code on it simultaneously.
05Deployment
Preparing for the App Store
Once your app is stable on TestFlight, App Store submission is mostly an Xcode + App Store Connect workflow. Claude Code can help you generate App Store metadata โ the description, keyword list, and release notes โ just give it context about what your app does and who it's for.
For signing and provisioning: one person should own the Apple Developer account and Certificates. Set up Xcode Cloud (it's free up to 25 hours/month) so every merge to main runs a build automatically. You'll catch issues before they become submission blockers.
# Prompt Claude Code for App Store copy
"Write an App Store description for our app.
It does [X]. Target audience is [Y].
Keep it under 4000 characters, lead with the
value proposition, no buzzwords."
๐กTip: Submit to TestFlight first and get 5โ10 real users. App Store review goes smoother when you've already caught the edge cases.
06Tips
Lessons From Building This Way
Claude Code is a force multiplier, not an autopilot. Review every change it makes like you'd review a PR from a fast, knowledgeable junior dev โ it's usually right, but it doesn't know your users the way you do.
The best prompts are specific to your codebase. 'Add a loading state to ProfileView using our existing LoadingView component in /Components/LoadingView.swift' gets you further than 'add a loading state.' Share good prompts with your partner in a prompts.md file โ you'll build up a library of what works for your project.
# prompts.md โ share what works
## Useful prompts for this project
Add new screen:
"Create a new SwiftUI view called [Name]View in /Views.
Follow the pattern in HomeView.swift. Add navigation
from the parent view. Use @Observable for state."
Debug a crash:
"This crash appears in [FileName]. Here's the stack trace:
[paste]. Explain the root cause and fix it without
changing the public interface of this type."
๐กTip: When Claude Code gets something wrong, correct it explicitly in the conversation and update CLAUDE.md so it doesn't repeat the mistake.