
Swift Spm
- 13 installs
- 9 repo stars
- Updated January 5, 2026
- pluginagentmarketplace/custom-plugin-swift
swift-spm is a Claude Code skill for ai & agent building.
About
swift-spm is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted development.
- swift-spm
- AI & Agent Building
- AI-coding skill
Swift Spm by the numbers
- 13 all-time installs (skills.sh)
- Ranked #11,389 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/pluginagentmarketplace/custom-plugin-swift --skill swift-spmAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 13 |
|---|---|
| repo stars | ★ 9 |
| Last updated | January 5, 2026 |
| Repository | pluginagentmarketplace/custom-plugin-swift ↗ |
How do I helps with ai & agent building tasks.?
Helps with ai & agent building tasks.
Who is it for?
Best when you're working on ai & agent building and need structured help with swift spm.
Skip if: Teams with no ai & agent building needs, or anyone wanting a generic chat assistant without this specific workflow.
When should I use this skill?
When you need to helps with ai & agent building tasks., or when swift-spm is a claude code skill for ai & agent building.
What you get
Structured output aligned to swift-spm: swift-spm, AI & Agent Building.
Files
Swift Package Manager Skill
Dependency management, package creation, and distribution with Swift Package Manager.
Prerequisites
- Swift 5.5+ toolchain
- Xcode 14+ or VS Code with Swift extension
- Git for version control
Parameters
parameters:
swift_tools_version:
type: string
default: "5.9"
platforms:
type: array
items: [iOS, macOS, watchOS, tvOS, visionOS, linux]
default: [iOS, macOS]
package_type:
type: string
enum: [library, executable, plugin]
default: libraryTopics Covered
Package.swift Structure
| Element | Purpose |
|---|---|
name | Package name |
platforms | Supported platforms/versions |
products | Libraries/executables exposed |
dependencies | External packages |
targets | Build targets |
Dependency Specification
| Format | Example |
|---|---|
| Version range | .upToNextMajor(from: "1.0.0") |
| Exact version | .exact("1.2.3") |
| Branch | .branch("main") |
| Commit | .revision("abc123") |
| Path | .package(path: "../LocalPkg") |
Target Types
| Type | Purpose |
|---|---|
.target | Library code |
.executableTarget | Command-line tool |
.testTarget | Unit tests |
.plugin | Build tool plugin |
.macro | Swift macro |
Code Examples
Complete Package.swift
// swift-tools-version: 5.9
import PackageDescription
let package = Package(
name: "NetworkKit",
platforms: [
.iOS(.v15),
.macOS(.v12),
.watchOS(.v8),
.tvOS(.v15)
],
products: [
.library(
name: "NetworkKit",
targets: ["NetworkKit"]
),
.library(
name: "NetworkKitMocks",
targets: ["NetworkKitMocks"]
)
],
dependencies: [
.package(url: "https://github.com/apple/swift-log.git", from: "1.5.0"),
.package(url: "https://github.com/apple/swift-collections.git", from: "1.0.0")
],
targets: [
.target(
name: "NetworkKit",
dependencies: [
.product(name: "Logging", package: "swift-log"),
.product(name: "OrderedCollections", package: "swift-collections")
],
resources: [
.process("Resources")
],
swiftSettings: [
.enableExperimentalFeature("StrictConcurrency")
]
),
.target(
name: "NetworkKitMocks",
dependencies: ["NetworkKit"]
),
.testTarget(
name: "NetworkKitTests",
dependencies: [
"NetworkKit",
"NetworkKitMocks"
],
resources: [
.copy("Fixtures")
]
)
]
)Library with Multiple Targets
// swift-tools-version: 5.9
import PackageDescription
let package = Package(
name: "FeatureKit",
platforms: [.iOS(.v16), .macOS(.v13)],
products: [
// Main library
.library(name: "FeatureKit", targets: ["FeatureKit"]),
// Individual features for selective import
.library(name: "AuthFeature", targets: ["AuthFeature"]),
.library(name: "ProfileFeature", targets: ["ProfileFeature"])
],
dependencies: [
.package(url: "https://github.com/pointfreeco/swift-composable-architecture", from: "1.0.0")
],
targets: [
// Core shared code
.target(
name: "Core",
dependencies: []
),
// Auth feature
.target(
name: "AuthFeature",
dependencies: [
"Core",
.product(name: "ComposableArchitecture", package: "swift-composable-architecture")
]
),
// Profile feature
.target(
name: "ProfileFeature",
dependencies: [
"Core",
.product(name: "ComposableArchitecture", package: "swift-composable-architecture")
]
),
// Umbrella target
.target(
name: "FeatureKit",
dependencies: ["AuthFeature", "ProfileFeature"]
),
// Tests
.testTarget(
name: "AuthFeatureTests",
dependencies: ["AuthFeature"]
),
.testTarget(
name: "ProfileFeatureTests",
dependencies: ["ProfileFeature"]
)
]
)Command-Line Tool
// swift-tools-version: 5.9
import PackageDescription
let package = Package(
name: "swift-format-tool",
platforms: [.macOS(.v13)],
products: [
.executable(name: "swift-format-tool", targets: ["swift-format-tool"])
],
dependencies: [
.package(url: "https://github.com/apple/swift-argument-parser", from: "1.2.0"),
.package(url: "https://github.com/apple/swift-syntax", from: "509.0.0")
],
targets: [
.executableTarget(
name: "swift-format-tool",
dependencies: [
.product(name: "ArgumentParser", package: "swift-argument-parser"),
.product(name: "SwiftSyntax", package: "swift-syntax"),
.product(name: "SwiftParser", package: "swift-syntax")
]
)
]
)Local Development Package
// In your app's Package.swift or Xcode project
// Use local path during development
// Package.swift with local override
let package = Package(
name: "MyApp",
dependencies: [
// Production: Use remote
// .package(url: "https://github.com/company/SharedKit", from: "1.0.0")
// Development: Use local
.package(path: "../SharedKit")
],
targets: [
.target(name: "MyApp", dependencies: ["SharedKit"])
]
)Swift Macro Package
// swift-tools-version: 5.9
import PackageDescription
import CompilerPluginSupport
let package = Package(
name: "MacroKit",
platforms: [.macOS(.v10_15), .iOS(.v13)],
products: [
.library(name: "MacroKit", targets: ["MacroKit"])
],
dependencies: [
.package(url: "https://github.com/apple/swift-syntax", from: "509.0.0")
],
targets: [
// Macro implementation
.macro(
name: "MacroKitMacros",
dependencies: [
.product(name: "SwiftSyntaxMacros", package: "swift-syntax"),
.product(name: "SwiftCompilerPlugin", package: "swift-syntax")
]
),
// Library that exposes the macro
.target(
name: "MacroKit",
dependencies: ["MacroKitMacros"]
),
// Tests for the macro
.testTarget(
name: "MacroKitTests",
dependencies: [
"MacroKitMacros",
.product(name: "SwiftSyntaxMacrosTestSupport", package: "swift-syntax")
]
)
]
)CLI Commands
# Create new package
swift package init --type library
swift package init --type executable
swift package init --type macro
# Build
swift build
swift build -c release
# Test
swift test
swift test --filter MyTests
# Update dependencies
swift package update
swift package update PackageName
# Resolve dependencies
swift package resolve
# Show dependencies
swift package show-dependencies
swift package show-dependencies --format json
# Generate Xcode project (deprecated but useful)
swift package generate-xcodeproj
# Clean
swift package clean
swift package reset
# Dump package description
swift package dump-packageTroubleshooting
Common Issues
| Issue | Cause | Solution |
|---|---|---|
| "No such module" | Missing dependency | Add to target dependencies |
| Version conflict | Incompatible requirements | Use version that satisfies all |
| Build fails on CI | Different Swift version | Pin swift-tools-version |
| Resources not found | Wrong resource rule | Use .process or .copy correctly |
| Xcode not seeing changes | Cache stale | Clean derived data |
Debug Tips
# Verbose build
swift build -v
# Check resolved versions
cat Package.resolved
# Dependency tree
swift package show-dependencies --format dot | dot -Tpng -o deps.png
# Rebuild from scratch
rm -rf .build Package.resolved
swift package resolve
swift buildValidation Rules
validation:
- rule: pin_versions
severity: warning
check: Use version ranges, not branch/revision in production
- rule: semantic_versioning
severity: error
check: Follow semver for your packages
- rule: platform_support
severity: info
check: Declare minimum platform versionsUsage
Skill("swift-spm")Related Skills
swift-fundamentals- Language basicsswift-testing- Package testingswift-architecture- Package design
// swift-tools-version: 5.9
import PackageDescription
let package = Package(
name: "{{PACKAGE_NAME}}",
platforms: [
.iOS(.v15),
.macOS(.v12)
],
products: [
.library(
name: "{{PACKAGE_NAME}}",
targets: ["{{PACKAGE_NAME}}"]
),
],
dependencies: [
// .package(url: "https://github.com/example/package.git", from: "1.0.0"),
],
targets: [
.target(
name: "{{PACKAGE_NAME}}",
dependencies: []
),
.testTarget(
name: "{{PACKAGE_NAME}}Tests",
dependencies: ["{{PACKAGE_NAME}}"]
),
]
)
Swift Package Manager Guide
Creating a Package
# Library
swift package init --name MyLibrary --type library
# Executable
swift package init --name MyCLI --type executableAdding Dependencies
dependencies: [
.package(url: "https://github.com/apple/swift-argument-parser.git", from: "1.0.0"),
],
targets: [
.target(
name: "MyCLI",
dependencies: [
.product(name: "ArgumentParser", package: "swift-argument-parser"),
]
),
]Local Packages
// In your app's Package.swift or Xcode project
dependencies: [
.package(path: "../MyLocalPackage"),
]Commands
swift build # Build
swift test # Run tests
swift run # Run executable
swift package update # Update dependencies#!/bin/bash
# Create Swift Package
NAME=$1
TYPE=${2:-library} # library, executable, or tool
if [ -z "$NAME" ]; then
echo "Usage: create-package.sh <name> [type]"
exit 1
fi
swift package init --name "$NAME" --type "$TYPE"
echo "✅ Package created: $NAME"
Related skills
FAQ
What does swift-spm do?
swift-spm is a Claude Code skill for ai & agent building.
When should I use swift-spm?
When you need to helps with ai & agent building tasks., or when swift-spm is a claude code skill for ai & agent building.
What are the main capabilities?
swift-spm; AI & Agent Building; AI-coding skill.