Agent Skills: Swift Tooling Standards

Configure SPM packages, SwiftLint, and build settings for Swift projects. Use when managing Swift packages with SPM, configuring build settings, or enforcing Swift code quality. (triggers: Package.swift, .swiftlint.yml, package, target, dependency)

UncategorizedID: hoangnguyen0403/agent-skills-standard/swift-tooling

Install this agent skill to your local

pnpm dlx add-skill https://github.com/HoangNguyen0403/agent-skills-standard/tree/HEAD/skills/swift/swift-tooling

Skill Files

Browse the full folder contents for swift-tooling.

Download Skill

Loading file tree…

skills/swift/swift-tooling/SKILL.md

Skill Metadata

Name
swift-tooling
Description
"Configure SPM packages, SwiftLint, and build settings for Swift projects. Use when managing Swift packages with SPM, configuring build settings, or enforcing Swift code quality. (triggers: Package.swift, .swiftlint.yml, package, target, dependency)"

Swift Tooling Standards

Priority: P0

Define SPM Packages

  • Package.swift: Define clear targets, products, and dependencies.
  • Modularization: Break large projects into local packages for faster builds.
  • Versioning: Use semantic versioning (Major.Minor.Patch) for shared packages.

See implementation examples for Package.swift structure, SwiftLint config, and environment-specific code.

Enforce Code Quality

  • SwiftLint: Use for consistent style enforcement. Create a .swiftlint.yml in the project root with disabled_rules and opt_in_rules sections.
  • Compiler Warnings: Treat warnings as errors in CI to maintain code health.
  • Documentation: Use triple slashes /// for documentation comments on public APIs (DocC-compatible).

Manage Build Configurations

  • Xcconfig: Use external configuration files to manage build settings.
  • Environment Flags: Use #if DEBUG for development-only code, closed with #endif.
  • Schemes: Maintain separate schemes for Development, Staging, and Production.

Anti-Patterns

  • No API keys in code: Use environment variables or build configs.
  • No // swiftlint:disable: Fix the underlying issue.
  • No manually added frameworks: Use SPM.

References