mcpField
I
init-xcode-app

init-xcode-app

github.com/glebisDevelopment40149 installsUpdated 1d ago
Repository

About init-xcode-app

A skill that scaffolds native SwiftUI apps using XcodeGen, with project conventions and development tools preconfigured. It guides setup for iOS, macOS, or iOS/watchOS targets and verifies the generated project with build and test commands.

Key features

  1. 01SwiftUI project scaffolding with XcodeGen
  2. 02iOS, macOS, and iOS/watchOS target shapes
  3. 03Optional CloudKit, CI, Release, and Push modules
  4. 04Optional JTBD artifact ingestion
  5. 05Build and test verification

Use cases

  1. 01Start a native SwiftUI app project
  2. 02Generate a project with selected modules
  3. 03Verify a scaffolded app before handoff

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/glebis/claude-skills --skill init-xcode-app

After installing, type/init-xcode-appin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

assets/core/common/
AGENTS.md
CLAUDE.md
CONTRIBUTING.md
gitignore
README.md
swiftformat
swiftlint.yml
assets/core/shapes/ios-watchos/
project.yml
assets/core/shapes/ios-watchos/Sources/iPhone/
<Name>App.swift
ContentView.swift
assets/core/shapes/ios-watchos/Sources/Shared/
Item.swift
SyncService.swift
assets/core/shapes/ios-watchos/Sources/Watch/
<Name>WatchApp.swift
WatchContentView.swift
assets/core/shapes/ios-watchos/Tests/
ItemTests.swift
assets/core/shapes/ios/
project.yml
assets/core/shapes/ios/Sources/App/
<Name>App.swift
ContentView.swift
DetailView.swift
Item.swift
assets/core/shapes/ios/Tests/
ItemTests.swift
assets/core/shapes/macos/
project.yml
assets/jtbd/
agents-product-section.md.template
guardrails-check.md.template
jtbd-map.md
PRODUCT.md.template
assets/jtbd/fixtures/
malformed-jtbd.json
sample-jtbd.json
assets/modules/ci/
ci.yml
INSERT.md

Details

From the project README

init-xcode-app

Scaffolds a native SwiftUI app with XcodeGen (project.yml → generated, committed .xcodeproj), pre-loaded with the conventions and loop-closer toolchain (xcsift, the Xcode MCP, swiftformat/lint). The lighter native sibling of init-tauri-app.

When to use

  • "init an xcode project", "scaffold a swiftui app", "new macOS/iOS app".

Prerequisites (verify before scaffolding)

  • xcodegen on PATH (xcodegen --version; brew install xcodegen if missing).
  • Xcode + CLT (xcodebuild -version).

Procedure

1. Gather inputs (AskUserQuestion)
  • App name (PascalCase, e.g. Tidepool) → <Name>; lowercase → <name>.
  • Bundle-id prefix (default com.glebkalinin) → <bundlePrefix>.
  • DEVELOPMENT_TEAM (optional — blank allowed) → <TEAM>.
  • Target shape: ios | macos | ios-watchos.
  • Modules (multi-select): CloudKit · CI · Release · Push.
  • JTBD artifact (optional): path to a jtbd.json (else auto-discover ./jtbd.json, ~/jtbd/<name>/jtbd.json). See 1.5.
  • Target directory (default ~/ai_projects/<name>). Abort if non-empty.
1.5 Ingest JTBD (optional, additive)

Identical contract to init-tauri-app: resolve (explicit → ./jtbd.json → ~/jtbd/<name>/jtbd.json), confirm via hook, validate (render-jtbd.sh exits 3 → skip), pre-fill name. Artifacts written in Step 3.

2. Render core

Copy assets/core/common/* into the project (renames: gitignore→.gitignore, swiftformat→.swiftformat, CLAUDE.md→.claude/CLAUDE.md). Copy assets/core/shapes/<shape>/* into the project root. For macos, also copy assets/core/shapes/ios/Sources + Tests (macos reuses the same SwiftUI sources). Substitute <Name>/<name>/<bundlePrefix>/<TEAM> in every copied file. Blank <TEAM> → leave the placeholder line DEVELOPMENT_TEAM: "".

If a JTBD artifact was confirmed: render assets/jtbd/PRODUCT.md.template→docs/PRODUCT.md, guardrails-check.md.template→docs/internal/guardrails-check.md, insert agents-product-section.md.template into AGENTS.md after the first heading, copy the artifact to project-root jtbd.json. See assets/jtbd/jtbd-map.md.

3. Compose selected modules

For each selected module open assets/modules/<m>/INSERT.md and follow it: it lists source files to copy and a project-fragment.yml to merge into project.yml (merge into the existing targets.<Name> and entitlements: maps — never overwrite). CloudKit + Push both extend the same entitlements: map.

4. Generate + verify (the gate)
xcodegen generate

Then the unsigned build gate by shape:

  • ios / ios-watchos: xcodebuild build -scheme <Name> -destination 'generic/platform=iOS Simulator'
  • macos: xcodebuild build -scheme <Name> -destination 'platform=macOS' CODE_SIGNING_ALLOWED=NO

Then xcodebuild test against the same destination for the test target. Both must pass.

5. Handoff

Offer git init && git add -A && git commit. Print summary: shape, modules, signing note (device/release signing is a human step), next command (open <Name>.xcodeproj).

Comments

Markdown supported