AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Ios Scaffold

skill-edfenton-claude-skills-ios-scaffold · by edfenton

Scaffold a SwiftUI iOS app (iPhone + iPad) with offline-first persistence, push notifications plumbing, SwiftFormat + SwiftLint, CI, and optional GitHub repo creation.

No reviews yet
0 installs
35 views
0.0% view→install

Install

$ agentstack add skill-edfenton-claude-skills-ios-scaffold

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-edfenton-claude-skills-ios-scaffold)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
6mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Ios Scaffold? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Purpose

Create a fully working iOS repo with SwiftUI + MVVM, offline-first persistence, push notification plumbing (compiles without APNs), environment configs, tooling, and CI.

Arguments

  • app-name — Project folder/app name (default: "App")
  • --github — Create GitHub repo and push (requires gh auth)
  • --public — Make GitHub repo public (default: private)
  • --org — Create under org instead of personal account
  • --repo — Override repo name (default: app-name)
  • --no-push — Create repo and commit but don't push

Template-first rule

Copy files from templates/ into the project, preserving folder structure. Generate content for empty placeholder files following ios-std conventions.

Existing directory handling: If the target directory already exists (e.g., running in the current directory), scaffold files directly into it instead of creating a subdirectory. Check for --repo flag to determine the repo name separately from the directory.

Templates provide:

  • Tool configs (SwiftFormat, SwiftLint, xcconfig)
  • XcodeGen project spec (project.yml)
  • CI workflow
  • Scripts (format.sh, lint.sh)
  • Documentation (build-and-run.md, decisions.md)
  • CLAUDE.md for the new repo
  • VS Code workspace settings and extension recommendations

What gets created

/
├── App/Sources/
│   ├── AppEntry/             # App entry point
│   ├── Features/Home/        # Example feature (View + ViewModel)
│   ├── UIComponents/         # Shared UI primitives
│   ├── Models/               # SwiftData models
│   ├── Services/
│   │   ├── Persistence/      # PersistenceStore protocol + SwiftDataStore
│   │   ├── Notifications/    # Push plumbing (stubbed)
│   │   ├── Config/           # Environment
│   │   └── Logging/          # AppLogger
│   └── Infrastructure/       # DependencyContainer
├── Tests/
│   ├── UnitTests/            # ViewModel, persistence, notification tests
│   └── UITests/              # App launch test
├── Config/                   # Base.xcconfig, NonProd.xcconfig, Prod.xcconfig
├── scripts/                  # format.sh, lint.sh
├── .github/workflows/ci.yml
├── .vscode/                  # VS Code workspace config (from templates)
│   ├── settings.json
│   └── extensions.json
├── Docs/                     # build-and-run.md, decisions.md, PRD-TEMPLATE.md
├── project.yml               # XcodeGen spec (generates .xcodeproj)
└── CLAUDE.md

Prerequisites

Before running scaffold steps, verify required tools are installed. Stop with an error if any required tool is missing.

Required:

  • xcode-select -p — Xcode Command Line Tools
  • which xcodegen — XcodeGen (install: brew install xcodegen)
  • which swiftlint — SwiftLint (install: brew install swiftlint)
  • which swiftformat — SwiftFormat (install: brew install swiftformat)

Optional (warn if missing):

  • which gitleaks — gitleaks for secret scanning in git hooks (install: brew install gitleaks)

If any required tool is missing, print which tools are missing with install instructions and stop. Do not proceed with scaffolding.

Key requirements

Architecture

  • Views contain no business logic
  • ViewModels are @MainActor, expose state via @Published, intents as methods
  • Services injected via initializers
  • Persistence boundary: ViewModels use PersistenceStore protocol, never SwiftData directly

Push notifications

  • Must compile without APNs entitlements
  • Permission request works
  • Payloads validated before routing

Environments

  • Non-prod + prod via xcconfig
  • Non-prod shows environment indicator in UI

Xcode project (via XcodeGen)

  • Install XcodeGen if missing: brew install xcodegen
  • Copy project.yml template, replacing AppName with actual app name
  • Run xcodegen generate to create .xcodeproj (gitignored — regenerated from project.yml)
  • Targets: App, UnitTests, UITests
  • Configurations: NonProd-Debug, NonProd-Release, Prod-Debug, Prod-Release (wired to xcconfig files)
  • Schemes: AppName-NonProd (default, includes all tests), AppName-Prod

Template placeholders

All template files use AppName as a placeholder. Replace with the actual app name (PascalCase) when scaffolding:

  • project.yml — project name, target names, scheme names
  • ci.yml — project file name, scheme name
  • Source files — struct/class names, @testable import

Quality gates (should pass)

xcodegen generate     # Generate .xcodeproj from project.yml
./scripts/format.sh   # SwiftFormat
./scripts/lint.sh     # SwiftLint --strict
xcodebuild build -project .xcodeproj -scheme -NonProd -destination 'generic/platform=iOS Simulator' -configuration NonProd-Debug CODE_SIGNING_ALLOWED=NO COMPILATION_CACHE_ENABLE_CACHING=YES
xcodebuild test -project .xcodeproj -scheme -NonProd -destination 'platform=iOS Simulator,name=' -configuration NonProd-Debug CODE_SIGNING_ALLOWED=NO COMPILATION_CACHE_ENABLE_CACHING=YES

Note: Simulator names vary by Xcode version (e.g., Xcode 26.2 has iPhone 17 series). Use xcrun simctl list devices available to find an available iPhone simulator. For builds, generic/platform=iOS Simulator avoids needing a specific simulator. CI runs on macOS 26 runners.

GitHub setup (if --github)

  • Requires gh auth status to succeed
  • Creates repo: gh repo create / -- --source . --remote origin
  • Commits and pushes unless --no-push

Post-scaffold: GitHub security (recommended)

After scaffolding, run these skills to complete GitHub security setup:

  1. /github-hooks --platform ios — Install local Git hooks
  • Direct git hooks in .githooks/ directory
  • Pre-commit: SwiftLint, SwiftFormat, gitleaks secret scan
  • Commit-msg: conventional commits enforcement
  • Pre-push: run xcodebuild test
  • Includes scripts/install-hooks.sh for setup
  1. /github-secure (if --github was used) — Configure repo security
  • Branch protection rules
  • Dependabot configuration (for Swift Package Manager)
  • CodeQL security scanning (Swift)
  • CODEOWNERS, SECURITY.md, PR templates

These are invoked automatically by /ios-kit.

Output

Summarize: structure created, build/run steps, tooling included, env switching, push plumbing notes, GitHub status if applicable, and remind to run github-hooks/github-secure if not using ios-kit.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.