iOS Scaffold
SkillFiles & storageScaffold a new iOS app with SDLC and submission-safe defaults — diffable project files, app + test targets, deployment-target policy, a git-stamped build number, and the Info.plist keys the pre-flight checker wants so the project passes TestFlight from day one. Use when starting a new iOS project.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the iOS Scaffold skill
What this skill tells your AI
The instructions your AI receives, as published by stevegjones/ai-first-sdlc-practices in skills/ios-scaffold/SKILL.md and read by ahel’s review.
Create a new iOS app project that is submission-safe from the first commit — so it doesn't hit the
TestFlight/App Store blockers ios-testflight-release and the pre-flight checker exist to catch.
Belongs to the sdlc-team-ios plugin; pairs with swiftui-architect (structure) and
swift-language-expert (language).
Arguments
app-name— the app / bundle name (defaults to asking).
Steps
1. Choose the project-generation approach
Prefer a diffable, mergeable project definition over a hand-managed .xcodeproj:
- Swift Package Manager (an app built as a package + a thin app target) for library-first / simple apps.
- Tuist or XcodeGen to generate the
.xcodeprojfrom a committed manifest (Tuist'sProject.swift, or an XcodeGen YAML manifest) that is committed, so project changes review cleanly and don't cause merge conflicts.
Ask which the team prefers; default to XcodeGen/Tuist for an app that needs a real Xcode project.
2. Establish structure
- App target + unit-test target (Swift Testing) + optional UI-test target (XCUITest).
- A SwiftPM feature-module layout if the app is non-trivial (feature packages + Core/DesignSystem/
Models; thin app composition root) — see
swiftui-architect. .gitignorecovering*.xcodeproj(if generated),DerivedData/,.build/,*.xcuserstate,.DS_Store, and any secrets file.
3. Wire submission-safe Info.plist defaults (this is the point of the skill)
Pre-set the keys the pre-flight checker looks for, so uploads don't stall or get rejected later:
ITSAppUsesNonExemptEncryption = false(if the app uses only exempt encryption such as standard HTTPS) — skips the export-compliance questionnaire on every upload.- A
NS…UsageDescriptionplaceholder-with-a-real-sentence for each capability the app will use (add them as you add frameworks; the pre-flight check maps CoreMotion→NSMotionUsageDescription, etc.). Leave a comment reminding that these must be real human sentences. - Set the deployment target to the team's minimum-supported iOS per policy (and keep it consistent
across targets and
Package.swift).
4. Git-stamped, monotonic build number
- Keep
MARKETING_VERSIONfixed pre-1.0 (e.g.1.0.0) and stampCFBundleVersionfromgit rev-list --count HEAD(optionally plus the short SHA and date) in a build-phase script, so every build is unique, monotonic, and traceable to a commit. - On the target that runs that script, set
ENABLE_USER_SCRIPT_SANDBOXING = NO(leave itYESelsewhere) — a script that reads git/the environment fails to archive under the sandbox otherwise.
5. Release-default safety
- Gate debug menus, feature flags, verbose logging, and staging endpoints behind a build config or a flag that is OFF in Release unless explicitly enabled.
- No secrets/API keys in the repo or the bundle — use
.xcconfig/build settings + a secrets mechanism.
6. CI and privacy manifest
- Offer to run
ios-cito generate the GitHub Actions workflow (which gates on the pre-flight checks). - Add a
PrivacyInfo.xcprivacystub if the app will use required-reason APIs or bundle third-party SDKs.
7. Verify
- Build once; run the unit-test target; and run the pre-flight checker
(
python -m ios_preflight.cli <project>) — it should be clean (or only INFO) on a fresh scaffold.
8. Report
Summarise what was generated, the generation approach chosen, the build-number policy, and confirm the pre-flight checker is clean. Note anything the user must fill in (real purpose strings, signing team).
Notes
- The goal is a project that passes
ios-testflight-releasepre-flight on day one — don't leave the export-compliance key or build-number policy "for later". - For app architecture choices (state, navigation, persistence), hand off to
swiftui-architect; for idiomatic Swift, toswift-language-expert.
Signals
- GitHub stars
- 41
- Forks
- 6
- Last commit
- Aug 2026
Advanced
- Catalog kind
- skill
- Gateway key
ios-scaffold- Source
- github.com/stevegjones/ai-first-sdlc-practices