Skip to content

staskus/iosforge

Repository files navigation

Forge 🪄

Build agent-ready iOS 18+ projects in one command - clean structure, modern defaults, no setup debt. ✨

CI

Forge is a CLI that generates agent-friendly iOS 18+ project templates with modern defaults.

Work in progress: iosforge is in early development (v0.1). Expect sharp edges and frequent changes.

Why iosforge

Spin up new iOS apps fast with agents, without rebuilding structure, agent docs, and signing setup every time. Forge keeps the output standard and readable, with a single source of truth and modern defaults that agents can use directly.

Think “scaffold once, then get out of the way.” 🚀

Highlights

  • SwiftUI app entry point and Swift Testing targets
  • Swift Package module graph + XcodeGen spec
  • SwiftLint configuration and CI helper script
  • fastlane lanes for capabilities, TestFlight, and App Store releases
  • Agent guidance in AGENTS.md and CLAUDE.md

Requirements

  • macOS 14+
  • Xcode 16+
  • xcodegen
  • swiftlint
  • fastlane

Install

brew install staskus/tap/iosforge

Quick start

iosforge init MyApp --bundle-id com.company.myapp

iosforge will prompt for App Store Connect credentials and write .env so fastlane works right away. To skip prompts, add --no-prompts.

Next steps (auto-printed by the CLI):

cd MyApp
cp .env.example .env
# Edit .env with your credentials
mkdir -p .xcode
xcodegen generate --spec project.yml --project .xcode --project-root .
open .xcode/MyApp.xcodeproj

Usage

iosforge init <AppName> [options]

Options:

  • <AppName> must be a Swift identifier (letters and numbers, starting with a letter).
  • --bundle-id <id> (default: com.example.<appname lowercase>)
  • --team-id <id>
  • --org <name> (default: Example, letters/numbers/spaces/dots/underscores/hyphens)
  • --deployment-target <version> (default: 18.0)
  • --modules <list> (default: Core,UI)
  • --no-git
  • --no-prompts

Example: custom modules

iosforge init SpaceExplorer \
  --bundle-id com.staskus.space \
  --modules Core,UI,FeatureAuth,NetworkService

Generated project structure

MyApp/
- Package.swift
- project.yml
- .swiftlint.yml
- .editorconfig
- App/
  - Sources/Main/App.swift
  - Resources/
    - Info.plist
    - App.entitlements
    - PrivacyInfo.xcprivacy
    - Assets.xcassets/AppIcon.appiconset/Contents.json
- Modules/
  - Core/Sources/Core/Core.swift
  - UI/Sources/UI/UI.swift
- Tests/
  - CoreTests/CoreTests.swift
  - UITests/UITests.swift
- fastlane/
  - Appfile
  - Fastfile
- Scripts/ci.sh
- .env.example
- .gitignore
- AGENTS.md
- CLAUDE.md
- .xcode/ (generated, gitignored)

Release workflows

  • Enable capabilities: fastlane enable_capability capabilities:push_notification
  • Ship to TestFlight: fastlane beta
  • TestFlight tips: use internal testing for quick team validation, then promote to public TestFlight for external testers.
  • Ship to App Store: fastlane release

Versioning

iosforge is currently in 0.x. Expect changes as the project matures. See RELEASE.md for the release checklist.

License

MIT. See LICENSE and THIRD_PARTY_NOTICES.md.

About

One-command iOS 18+ scaffolding for agent workflows (SwiftUI, XcodeGen, SwiftLint, fastlane).

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages