| name | arc-project-setup |
| description | | Use when this capability is needed. |
ARC Labs Studio - Project Setup & Configuration
Instructions
Swift Package Template (Package.swift)
import PackageDescription
let package = Package(
name: "ARCPackageName",
platforms: [
.iOS(.v17),
.macOS(.v14),
.watchOS(.v10),
.tvOS(.v17)
],
products: [
.library(name: "ARCPackageName",
targets: ["ARCPackageName"])
],
dependencies: [
.package(url: "https://github.com/arclabs-studio/ARCLogger", from: "1.0.0")
],
targets: [
.target(name: "ARCPackageName",
dependencies: [
.product(name: "ARCLogger", package: "ARCLogger")
],
path: "Sources/ARCPackageName",
swiftSettings: [
.enableUpcomingFeature("StrictConcurrency")
]),
.testTarget(name: "ARCPackageNameTests",
dependencies: ["ARCPackageName"],
path: "Tests/ARCPackageNameTests")
],
swiftLanguageModes: [.v6]
)
Package Structure
ARCPackageName/
├── Package.swift # Manifest
├── README.md # Documentation
├── LICENSE # MIT license
├── CHANGELOG.md # Version history
├── Sources/
│ └── ARCPackageName/
│ ├── Protocols/ # Abstractions
│ ├── Implementations/ # Concrete types
│ ├── Models/ # Data types
│ └── Resources/ # Assets
├── Tests/
│ └── ARCPackageNameTests/
│ ├── Unit/
│ └── Mocks/
├── Example/ # Demo app (standalone Xcode project)
│ └── ARCPackageNameDemoApp/
│ └── ARCPackageNameDemoApp.xcodeproj
└── Documentation.docc/
ARCDevTools Installation
brew install swiftlint swiftformat
git submodule add https://github.com/arclabs-studio/ARCDevTools
./ARCDevTools/arcdevtools-setup --with-workflows
git add .gitmodules ARCDevTools/ .swiftlint.yml .swiftformat Makefile
git commit -m "chore: integrate ARCDevTools"
Makefile Commands
make help
make lint
make format
make fix
make test
make clean
make setup
Key Configuration Files
| File | Purpose |
|---|
.swiftlint.yml | SwiftLint rules (copied from ARCDevTools) |
.swiftformat | SwiftFormat rules (copied from ARCDevTools) |
Makefile | Common development commands |
.git/hooks/pre-commit | Auto-format and lint before commit |
.git/hooks/pre-push | Run tests before push |
GitHub Actions (Swift Packages)
name: Tests
on: [push, pull_request]
jobs:
test-macos:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- run: swift test --parallel
test-linux:
runs-on: ubuntu-latest
container: swift:6.0
steps:
- uses: actions/checkout@v4
- run: swift test --parallel
GitHub Actions (iOS Apps)
name: Tests
on: [push, pull_request]
jobs:
test-ios:
runs-on: macos-15
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Select Xcode
run: sudo xcode-select -s /Applications/Xcode_16.2.app
- name: Test
run: |
xcodebuild test \
-scheme "YourApp" \
-destination "platform=iOS Simulator,name=iPhone 16" \
CODE_SIGNING_ALLOWED=NO
ARC Labs Packages
| Package | Purpose |
|---|
| ARCLogger | Structured logging with privacy |
| ARCNavigation | Type-safe MVVM+C routing |
| ARCStorage | Persistence (SwiftData, CloudKit, Keychain) |
| ARCMaps | Mapping (Google Places + Apple MapKit) |
| ARCUIComponents | Reusable UI components |
| ARCDesignSystem | Typography, colors, accessibility |
| ARCDevTools | Linting, formatting, CI/CD |
| ARCFirebase | Firebase integration |
| ARCNetworking | Network layer |
| ARCIntelligence | AI/ML integration |
| ARCMetrics | Analytics (MetricKit, TelemetryDeck) |
Semantic Versioning
MAJOR.MINOR.PATCH
Breaking change -> MAJOR (1.0.0 -> 2.0.0)
New feature -> MINOR (1.0.0 -> 1.1.0)
Bug fix -> PATCH (1.0.0 -> 1.0.1)
Demo Apps in Packages
Demo apps MUST be standalone Xcode projects:
Example/
└── ARCPackageNameDemoApp/
└── ARCPackageNameDemoApp.xcodeproj
NOT executable targets in Package.swift.
References
For complete guides:
- @references/packages.md - Swift Package creation and standards
- @references/apps.md - iOS App guidelines
- @references/arcdevtools.md - ARCDevTools integration and configuration
- @references/spm.md - SPM commands and troubleshooting
- @references/xcode.md - Xcode project configuration
Troubleshooting
SwiftLint Not Found
brew reinstall swiftlint
Pre-commit Hook Not Running
chmod +x .git/hooks/pre-commit
./ARCDevTools/hooks/install-hooks.sh
xcodebuild Scheme Not Found
xcodebuild -list
Code Signing Error in CI
xcodebuild test -scheme "App" CODE_SIGNING_ALLOWED=NO
Submodule Not Initialized
git submodule update --init --recursive
Examples
Creating a new Swift Package from scratch
User says: "Create a new ARCAnalytics package"
- Create directory and
Package.swift using template
- Set up
Sources/ARCAnalytics/ and Tests/ARCAnalyticsTests/ structure
- Add ARCDevTools as submodule, run setup
- Create initial
README.md following template
- Commit:
chore: initial package setup
- Result: Complete package ready for development with CI/CD
Integrating ARCDevTools into an existing project
User says: "Add ARCDevTools to my app"
git submodule add https://github.com/arclabs-studio/ARCDevTools
./ARCDevTools/arcdevtools-setup --with-workflows
- Verify
.swiftlint.yml, .swiftformat, Makefile created
- Test:
make lint && make format
- Commit:
chore: integrate ARCDevTools
- Result: Automated linting, formatting, and CI workflows
Related Skills
| If you need... | Use |
|---|
| Architecture decisions | /arc-swift-architecture |
| Testing patterns | /arc-tdd-patterns |
| Code quality standards | /arc-quality-standards |
| Git workflow | /arc-workflow |
Source: arclabs-studio/ARCKnowledge — distributed by TomeVault.