Centralized quality tooling and standards for ARC Labs Studio
Quality automation • Code formatting • Linting • Git hooks • CI/CD
ARCDevTools is a configuration repository that provides standardized development tooling for all ARC Labs projects. It includes SwiftLint and SwiftFormat configurations, git hooks, GitHub Actions workflow templates, and automation scripts to ensure consistency across the ecosystem.
- ✅ Pre-configured SwiftLint - 40+ linting rules aligned with ARCKnowledge standards
- ✅ Pre-configured SwiftFormat - Consistent code formatting across all projects
- ✅ Git Hooks - Pre-commit and pre-push hooks for automated quality checks
- ✅ GitHub Actions Workflows - CI/CD templates for quality, testing, and releases
- ✅ Project Setup Script - One-command installation (
arcdevtools-setup) - ✅ Makefile Generation - Convenient commands for common tasks
- ✅ ARCKnowledge Submodule - Development standards documentation included
- Swift: 6.0+ (for Swift projects)
- Platforms: macOS 13.0+ / iOS 17.0+
- Xcode: 16.0+ (for Xcode projects)
- Git: 2.30+ (for submodule support)
- Tools: SwiftLint, SwiftFormat (installed via Homebrew)
brew install swiftlint swiftformatNavigate to your project root and add ARCDevTools:
cd /path/to/your/project
git submodule add https://github.com/arclabs-studio/ARCDevTools
git submodule update --init --recursiveThis creates an ARCDevTools/ directory in your project with all configuration files and scripts.
./ARCDevTools/arcdevtools-setupThe setup script will:
- ✅ Copy
.swiftlint.ymlto your project - ✅ Copy
.swiftformatto your project - ✅ Install git hooks (pre-commit, pre-push)
- ✅ Generate
Makefilewith useful commands - ✅ Optionally copy GitHub Actions workflows
git add .gitmodules ARCDevTools/ .swiftlint.yml .swiftformat Makefile
git commit -m "chore: integrate ARCDevTools v1.0 for quality automation"
git pushAfter setup, use the generated Makefile:
make help # Show all available commands
make lint # Run SwiftLint
make format # Check formatting (dry-run)
make fix # Apply SwiftFormat
make setup # Re-run ARCDevTools setup
make hooks # Re-install git hooks only
make clean # Clean build artifactsARCDevTools installs automatic quality checks:
Pre-commit hook:
- Runs SwiftFormat on staged Swift files (auto-fixes)
- Runs SwiftLint in strict mode (must pass to commit)
Pre-push hook:
- Runs all tests before pushing (prevents broken code from reaching remote)
All resources are directly accessible in the ARCDevTools/ directory:
# Configuration files
ARCDevTools/configs/swiftlint.yml
ARCDevTools/configs/swiftformat
# Git hooks
ARCDevTools/hooks/pre-commit
ARCDevTools/hooks/pre-push
ARCDevTools/hooks/install-hooks.sh
# Utility scripts
ARCDevTools/scripts/lint.sh
ARCDevTools/scripts/format.sh
ARCDevTools/scripts/setup-github-labels.sh
ARCDevTools/scripts/setup-branch-protection.sh
# GitHub Actions workflow templates
ARCDevTools/workflows/quality.yml
ARCDevTools/workflows/tests.yml
ARCDevTools/workflows/docs.yml
ARCDevTools/workflows/enforce-gitflow.yml
ARCDevTools/workflows/sync-develop.yml
ARCDevTools/workflows/validate-release.yml
ARCDevTools/workflows/release-drafter.ymlARCDevTools enforces the following standards (aligned with ARCKnowledge):
- Indentation: 4 spaces
- Line width: 120 characters
- Self keyword: Omit when not required (
--self remove) - Imports: Grouped and sorted, testable imports at bottom
- Braces: Same-line (
--allman false)
- 40+ opt-in rules for comprehensive quality checks
- Custom rules for ARC Labs-specific patterns:
observable_viewmodel- ViewModels must use@Observableno_force_cast- Avoidas!, useas?no_force_try- Avoidtry!, use proper error handlingno_empty_line_after_guard- Clean guard statement formatting
- Pattern: MVVM + Clean Architecture
- ViewModels: Use
@Observable(Swift 6) - Dependencies: Protocol-based with dependency injection
- Testing: Swift Testing framework
For complete standards, see ARCKnowledge.
After running arcdevtools-setup, you can customize the copied configs:
# .swiftlint.yml - Add project-specific rules
parent_config: .swiftlint.yml
disabled_rules:
- line_length # Example: disable if needed
custom_rules:
my_custom_rule:
name: "My Custom Rule"
regex: "..."
message: "Custom message"
severity: warningNote: Your customizations are preserved when updating ARCDevTools.
Workflows are templates in ARCDevTools/workflows/. To use them:
- Run
./ARCDevTools/arcdevtools-setupand choose "Yes" when asked about workflows - Workflows are copied to
.github/workflows/ - Customize as needed for your project
- Commit to your repository
Available workflows:
quality.yml- SwiftLint, SwiftFormat, Markdown link checkingtests.yml- Run tests on macOS and Linuxdocs.yml- Generate and publish DocC documentationenforce-gitflow.yml- Enforce Git Flow branch rulessync-develop.yml- Auto-sync main → developvalidate-release.yml- Validate and create releasesrelease-drafter.yml- Auto-draft release notes from PRs
To get the latest configurations and scripts:
cd ARCDevTools
git pull origin main
cd ..
./ARCDevTools/arcdevtools-setup # Re-run setup to update configs
git add ARCDevTools
git commit -m "chore: update ARCDevTools to latest version"ARCDevTools/
├── arcdevtools-setup # Installation script (Swift)
├── .claude/ # Claude Code skills
│ └── skills/
│ └── arc-package-validator/ # Package validation skill
│ ├── SKILL.md
│ ├── references/
│ └── scripts/
├── configs/ # Configuration files
│ ├── swiftlint.yml
│ └── swiftformat
├── hooks/ # Git hooks
│ ├── pre-commit
│ ├── pre-push
│ └── install-hooks.sh
├── scripts/ # Utility scripts
│ ├── lint.sh
│ ├── format.sh
│ ├── setup-github-labels.sh
│ └── setup-branch-protection.sh
├── workflows/ # GitHub Actions templates
├── templates/ # GitHub templates
├── docs/ # Documentation
│ ├── README.md
│ ├── getting-started.md
│ ├── integration.md
│ ├── configuration.md
│ ├── ci-cd.md
│ ├── troubleshooting.md
│ └── MIGRATION_V1_TO_V2.md
├── ARCKnowledge/ # Development standards (submodule)
├── README.md
├── CHANGELOG.md
├── CONTRIBUTING.md
└── LICENSE
ARCDevTools includes automated quality checks via git hooks and GitHub Actions.
Local testing:
make lint # Run SwiftLint
make format # Check formatting
make fix # Apply formattingPre-commit hook:
- Automatically runs on
git commit - Formats and lints staged Swift files
- Blocks commit if linting fails
Pre-push hook:
- Automatically runs on
git push - Runs all tests
- Blocks push if tests fail
ARCDevTools includes skills for Claude Code that automate development tasks.
| Skill | Description |
|---|---|
arc-package-validator |
Validates Swift Packages against ARCKnowledge standards |
Skills are installed automatically with arcdevtools-setup:
./ARCDevTools/arcdevtools-setupSkills are installed to .claude/skills/ in your project.
In Claude Code, simply ask:
- "Validate this package against ARC standards"
- "Check package compliance"
- "Is this package ready for release?"
Or run directly:
swift .claude/skills/arc-package-validator/scripts/validate.swift .
swift .claude/skills/arc-package-validator/scripts/validate.swift . --fixThe arc-package-validator skill checks:
- 📁 Structure - Package.swift, README, LICENSE, CHANGELOG, Sources/, Tests/, Documentation.docc/
- ⚙️ Configuration - ARCDevTools integration, SwiftLint, SwiftFormat, GitHub workflows
- 📖 Documentation - Badges, required README sections, DocC catalog
- 🧹 Code Quality - SwiftLint, SwiftFormat, Swift build
For detailed validation rules, see .claude/skills/arc-package-validator/references/checklist.md.
ARCDevTools is an internal tool for ARC Labs Studio. Contributions from team members are welcome.
See CONTRIBUTING.md for complete guidelines on:
- Git Flow workflow (feature → develop → main)
- Conventional Commits format
- Pull request process
- Code quality standards
- CI/CD automation
Quick start:
- Clone with submodules:
git clone --recurse-submodules https://github.com/arclabs-studio/ARCDevTools.git - Create a feature branch:
feature/your-improvement - Follow the standards defined in ARCKnowledge
- Ensure all changes work: test
arcdevtools-setupin a sample project - Create a pull request to
develop
See the docs/ directory for detailed guides:
- Getting Started - Installation walkthrough
- Integration Guide - Detailed integration instructions
- Configuration - Customization options
- CI/CD Guide - GitHub Actions setup
- Troubleshooting - Common issues and solutions
MIT License © 2025 ARC Labs Studio
See LICENSE for details.
- ARCKnowledge - Complete development standards and guidelines (included as submodule)
- SwiftLint - A tool to enforce Swift style and conventions
- SwiftFormat - Code formatting for Swift
Made with 💛 by ARC Labs Studio