Community-maintained Agent Skills for complete Swift and Apple-platform app delivery.
72
90%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Medium
Suggest reviewing before use
Detailed reference for team branching workflows, CI/CD automation triggers, rebase hygiene, and pull request management in Apple platform and mobile engineering repositories.
Mobile applications have distinct release requirements compared to backend services because app binaries must be reviewed by Apple and deployed to App Store Connect / TestFlight. Choosing the correct branching strategy prevents pipeline congestion and release blockers.
main): The single source of truth. Always compilable, green, and testable.origin/main that live for 1–3 days max.main behind runtime flags (e.g., via UserDefaults, AppStorage, or Remote Config) rather than maintaining long-lived feature branches.release/vX.Y.Z from main. Only release-blocking fixes are cherry-picked into this branch.main is deployable.main, open PR early for discussion, merge after CI checks and code review approve.develop and main branches.develop.release/* branches bridge develop to main.hotfix/* branches branch off main and merge into both main and develop.A structured naming taxonomy enables automated tooling, changelog generators, and bot reviewers to understand the exact scope of a branch.
| Prefix | Intent | Lifecycle | Allowed Changes |
|---|---|---|---|
feat/ | New user capability or feature architecture | 1–3 days | New UI, business logic, domain models, feature tests |
fix/ | Correcting unintended behavior or crash | < 1 day | Bug fix, regression test, minimal touch footprint |
refactor/ | Code structure improvement without behavior change | 1–2 days | File extraction, renaming, dependency inversion, zero UI diff |
perf/ | Profiling optimization (CPU, memory, launch time) | 1–2 days | Instruments optimizations, prefetching, lazy loading |
test/ | Adding test coverage or eval scenarios | < 1 day | Unit tests, UI tests, mocks, test fixtures, evals |
release/ | Release staging and candidate freeze | 2–5 days | Version bumps, changelog finalization, App Store metadata |
hotfix/ | Production crash or critical business failure | Emergency (<hours) | Minimal targeted hotfix, isolated patch |
chore/ | CI/CD, dependency upgrades, build configs | < 1 day | Fastlane scripts, GitHub Actions, SPM versions, linter rules |
When using Jira, Linear, or GitHub Issues, standardizing the ticket identifier in the branch name facilitates two-way automation:
feat/<PROJECT>-<ISSUE_NUMBER>-<short-description>Examples:
feat/IOS-412-passkey-registrationfix/AUTH-89-refresh-token-race-conditionrefactor/NET-201-async-urlsession-adapterDo not include special characters, underscores, or slashes inside the slug:
feat/IOS-412-passkey-registrationfeat/IOS_412/passkey_registration!feat/IOS-412-passkey/registrationFor feature branch synchronization before merging:
# Fetch latest state from upstream
git fetch origin
# Rebase feature commits on top of latest origin/main
git rebase origin/mainWhy rebase during development:
git bisect) reliably without navigating intertwined branches.main. Keeps main history readable.release/* into main to retain full release history.Branch naming conventions allow CI/CD systems to run targeted lanes instead of triggering heavy full-suite builds on every commit.
name: CI Pipeline
on:
push:
branches:
- 'main'
- 'release/**'
pull_request:
branches:
- 'main'
jobs:
lint:
runs-on: macos-15
steps:
- uses: actions/checkout@v4
- name: SwiftLint
run: swiftlint lint --strict
test:
runs-on: macos-15
steps:
- uses: actions/checkout@v4
- name: Fast Unit Tests
run: xcodebuild test -scheme MyApp -destination 'platform=iOS Simulator,name=iPhone 16'
build-testflight:
if: startsWith(github.ref, 'refs/heads/release/')
runs-on: macos-15
steps:
- uses: actions/checkout@v4
- name: Archive and Upload to TestFlight
run: fastlane betaWhen autonomous AI agents work alongside human developers or other agents:
feat/agent-<task-id>-<slug> or fix/agent-<task-id>-<slug>.main or uncommitted working trees.git status --porcelain before staging..gitignore or clean them before committing:
git clean -nd # Dry-run check for untracked clutterupdate code or agent modifications.git commit -m "feat(auth): integrate ASAuthorizationController for passkeys"When a critical bug affects the production App Store build:
Identify the exact release tag deployed to production:
git tag -l "v*"
git fetch --tagsCut the hotfix branch directly from that release tag:
git checkout -b hotfix/v1.2.1-iap-receipt-validation v1.2.0Apply the minimal fix:
Validate and cut the hotfix release:
v1.2.1.main so the bug does not regress in subsequent releases.Stale, merged branches clutter remote repositories and slow down developer tooling.
Delete local branch after remote merge:
git branch -d feat/apple-pay-checkoutForce delete abandoned branch:
git branch -D feat/abandoned-experimentPrune remote tracking references that no longer exist on remote:
git fetch --pruneTo remove all local branches whose upstreams have been deleted:
git fetch -p && git branch -vv | awk '/: gone]/{print $1}' | xargs -r git branch -Dmain and then retroactively creating a branch. Any accidental commit on main risks being pushed prematurely.wip, fix typo, try again, test 3. Clean up via interactive rebase (git rebase -i HEAD~4) or squash merge.main. Always delete the merged branch and cut a fresh branch from the updated main..tessl-plugin
skills
accessorysetupkit
references
activitykit
adattributionkit
references
alarmkit
references
app-clips
app-intents
app-store-optimization
app-store-review
apple-on-device-ai
appmigrationkit
audioaccessorykit
references
authentication
references
avfoundation-audio
references
avkit
background-processing
references
browserenginekit
callkit
references
carplay
cloudkit
contacts-framework
references
core-bluetooth
references
core-data
core-haptics
references
core-motion
references
core-nfc
references
coreml
references
cryptokit
cryptotokenkit
debugging-instruments
device-integrity
references
energykit
references
eventkit
family-controls
references
financekit
focus-engine
gamekit
git-branching-workflow
references
healthkit
references
homekit
references
ios-accessibility
ios-app-workflow
references
ios-ettrace-performance
ios-localization
ios-memgraph-analysis
ios-networking
ios-simulator
references
metrickit
references
musickit
references
natural-language
paperkit
references
passkit
references
pdfkit
pencilkit
references
permissionkit
references
photokit
push-notifications
quicklook
references
realitykit
references
relevancekit
references
scenekit
sensorkit
shazamkit
references
speech-recognition
references
spritekit
storekit
swift-api-design-guidelines
swift-architecture
references
swift-charts
swift-codable
references
swift-code-review
swift-concurrency
swift-formatstyle
references
swift-language
swift-security
references
swift-testing
swiftdata
swiftlint
swiftui-animation
swiftui-gestures
references
swiftui-layout-components
swiftui-liquid-glass
references
swiftui-patterns
swiftui-performance
swiftui-responsive-layout
swiftui-uikit-interop
swiftui-webkit
tabletopkit
tipkit
vision-framework
weatherkit
references