Skip to content
cccskills
FreePublished on GitHub

ios-scaffold

Scaffold 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.

The English summary is being prepared. Showing the original description.

See how to install

Files included (1)

  • SKILL.md4.3 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

iOS Scaffold

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 .xcodeproj from a committed manifest (Tuist's Project.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.
  • .gitignore covering *.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…UsageDescription placeholder-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_VERSION fixed pre-1.0 (e.g. 1.0.0) and stamp CFBundleVersion from git 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 it YES elsewhere) — 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-ci to generate the GitHub Actions workflow (which gates on the pre-flight checks).
  • Add a PrivacyInfo.xcprivacy stub 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-release pre-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, to swift-language-expert.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Generate a GitHub Actions workflow for Android — JDK + Gradle caching, build, unit + instrumented tests, Android Lint, run the Android pre-flight checks, and (optionally) sign + upload a signed app bundle to a Play track. Use when setting up CI for an Android app.

The English summary is being prepared. Showing the original description.

SteveGJones/ai-first-sdlc-practices41Updated Oct 5, 2026

Validated Google Play release — runs the pre-flight checks and clears the Play policy gates, builds a signed app bundle with a git-stamped versionCode, uploads to a track, and walks staged rollout (with halt/roll-forward). Use when releasing an Android app to Play.

The English summary is being prepared. Showing the original description.

SteveGJones/ai-first-sdlc-practices41Updated Oct 5, 2026

Scaffold a new Android app with SDLC and Play-safe defaults — Kotlin/Compose Gradle project with version catalog, convention plugins, module layout, a targetSdk that meets the Play mandate, R8 on release, and git-ignored signing so it passes the pre-flight checker from day one. Use when starting a new Android project.

The English summary is being prepared. Showing the original description.

SteveGJones/ai-first-sdlc-practices41Updated Oct 5, 2026

Set up Android app signing safely — generate an upload keystore, enroll in Play App Signing, and wire a Gradle release signingConfig that reads secrets from a git-ignored keystore.properties / CI (never committed). Use when configuring signing for a Play release.

The English summary is being prepared. Showing the original description.

SteveGJones/ai-first-sdlc-practices41Updated Oct 5, 2026

Pick an existing workflow for a task or author a new one — recommends workflow + team formation, or generates a fresh workflow YAML with command prompts and team validation.

The English summary is being prepared. Showing the original description.

SteveGJones/ai-first-sdlc-practices41Updated Oct 5, 2026

Guide the team through writing a change-impact record for IEC 62304 / FDA / ISO 26262 ASIL C+ projects. Surfaces the affected REQ/DES/TEST/CODE artefacts and captures human-attested verification approach.

The English summary is being prepared. Showing the original description.

SteveGJones/ai-first-sdlc-practices41Updated Oct 5, 2026

See all skills by SteveGJones

Report a problem with this skill