Bootstrap iOS
RayFernando1337/rayfernando-skills
Bootstrap agents for iOS, iPadOS, macOS, Swift, SwiftUI, SwiftData/Core Data, Swift Testing, Xcode build/test/debug, Simulator, App Intents, or XcodeBuildMCP work.
Swift/iOS: SwiftUI, Combine, async/await, actors, SPM, Core Data, UIKit interop.
$ npx skills add softspark/ai-toolkit --skill swift-patterns -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install softspark/ai-toolkit swift-patterns --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/softspark/ai-toolkit.git skills-src && mkdir -p .claude/skills && cp -r skills-src/app/skills/swift-patterns .claude/skills/swift-patterns && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "swift-patterns" agent skill from https://github.com/softspark/ai-toolkit/tree/main/app/skills/swift-patterns into .claude/skills/swift-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "swift-patterns", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/softspark/ai-toolkit/tree/main/app/skills/swift-patternsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add softspark/ai-toolkit --skill swift-patterns -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install softspark/ai-toolkit swift-patterns --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/softspark/ai-toolkit.git skills-src && mkdir -p .agents/skills && cp -r skills-src/app/skills/swift-patterns .agents/skills/swift-patterns && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "swift-patterns" agent skill from https://github.com/softspark/ai-toolkit/tree/main/app/skills/swift-patterns into .agents/skills/swift-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "swift-patterns", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add softspark/ai-toolkit --skill swift-patterns -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install softspark/ai-toolkit swift-patterns --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/softspark/ai-toolkit.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/app/skills/swift-patterns .cursor/skills/swift-patterns && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "swift-patterns" agent skill from https://github.com/softspark/ai-toolkit/tree/main/app/skills/swift-patterns into .cursor/skills/swift-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "swift-patterns", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/softspark/ai-toolkit.git --path app/skills/swift-patterns--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add softspark/ai-toolkit --skill swift-patterns -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install softspark/ai-toolkit swift-patterns --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/softspark/ai-toolkit.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/app/skills/swift-patterns .gemini/skills/swift-patterns && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "swift-patterns" agent skill from https://github.com/softspark/ai-toolkit/tree/main/app/skills/swift-patterns into .gemini/skills/swift-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "swift-patterns", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install softspark/ai-toolkit swift-patternsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add softspark/ai-toolkit --skill swift-patterns -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/softspark/ai-toolkit.git skills-src && mkdir -p .github/skills && cp -r skills-src/app/skills/swift-patterns .github/skills/swift-patterns && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "swift-patterns" agent skill from https://github.com/softspark/ai-toolkit/tree/main/app/skills/swift-patterns into .github/skills/swift-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "swift-patterns", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add softspark/ai-toolkit --skill swift-patterns -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install softspark/ai-toolkit swift-patterns --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/softspark/ai-toolkit.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/app/skills/swift-patterns .opencode/skills/swift-patterns && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "swift-patterns" agent skill from https://github.com/softspark/ai-toolkit/tree/main/app/skills/swift-patterns into .opencode/skills/swift-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "swift-patterns", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
swift-patternsSwift/iOS: SwiftUI, Combine, async/await, actors, SPM, Core Data, UIKit interop.
Swift Patterns is an agent skill from softspark/ai-toolkit. Swift/iOS: SwiftUI, Combine, async/await, actors, SPM, Core Data, UIKit interop. Triggers: Swift, SwiftUI, Combine, iOS, Xcode, actor, Core Data, @MainActor, @State.
Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `reference/frameworks.md`).
It sits in Mobile, covering iOS development. It works with iOS, SwiftUI, Xcode and Swift. The repository describes itself as: Professional-grade AI coding toolkit: 94 skills, 44 agents, multi-platform (Claude, Cursor, Windsurf, Copilot, Gemini, Cline, Roo Code, Aider, Augment, Antigravity, Codex CLI… The licence is Apache-2.0.
Read from SKILL.md and the folder at commit d64db2b. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
swiftFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
github.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Swift Patterns loads about 3.1k tokens when it runs. Until then it costs about 45 tokens; SKILL.md has 609 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from softspark/ai-toolkit at commit d64db2b, republished under its Apache-2.0 licence (© softspark). 609 words, ~3,134 tokens.
.claude/skills/swift-patterns/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.MyPackage/
├── Package.swift
├── Sources/
│ ├── MyLibrary/
│ └── MyExecutable/
├── Tests/
│ └── MyLibraryTests/
└── Plugins/// swift-tools-version: 5.10
import PackageDescription
let package = Package(
name: "MyPackage",
platforms: [.iOS(.v17), .macOS(.v14)],
products: [
.library(name: "MyLibrary", targets: ["MyLibrary"]),
],
dependencies: [
.package(url: "https://github.com/apple/swift-algorithms", from: "1.2.0"),
],
targets: [
.target(name: "MyLibrary",
dependencies: [.product(name: "Algorithms", package: "swift-algorithms")]),
.testTarget(name: "MyLibraryTests", dependencies: ["MyLibrary"]),
]
)MyApp/
├── MyApp/
│ ├── App/ # Entry point, ContentView
│ ├── Features/ # Feature modules (Views, ViewModels, Models)
│ ├── Core/ # Networking, Storage, Extensions
│ └── Resources/ # Assets.xcassets, Info.plist
├── MyAppTests/
└── MyAppUITests/// guard-let for early exit
func process(user: User?) {
guard let user else { return }
print(user.name)
}
// Optional chaining + nil coalescing
let name = user?.profile?.displayName ?? "Anonymous"
// map/flatMap on optionals
let length: Int? = optionalString.map { $0.count }
// Never force-unwrap in production: user!.nameprotocol Cacheable: Identifiable where ID: Hashable {
var cacheKey: String { get }
}
extension Cacheable where ID == String {
var cacheKey: String { id }
}Use structs by default (value semantics, thread-safe). Use classes when identity matters, shared mutable state is intentional, inheritance is needed, or ObjC interop is required.
@propertyWrapper
struct Clamped<Value: Comparable> {
var wrappedValue: Value {
didSet { wrappedValue = min(max(wrappedValue, range.lowerBound), range.upperBound) }
}
let range: ClosedRange<Value>
init(wrappedValue: Value, _ range: ClosedRange<Value>) {
self.range = range
self.wrappedValue = min(max(wrappedValue, range.lowerBound), range.upperBound)
}
}
struct Volume {
@Clamped(0...100) var level: Int = 50
}@resultBuilder
struct ArrayBuilder<Element> {
static func buildBlock(_ components: [Element]...) -> [Element] { components.flatMap { $0 } }
static func buildExpression(_ expression: Element) -> [Element] { [expression] }
static func buildOptional(_ component: [Element]?) -> [Element] { component ?? [] }
}enum NetworkError: Error, LocalizedError {
case invalidURL
case timeout(seconds: Int)
case serverError(statusCode: Int)
var errorDescription: String? {
switch self {
case .invalidURL: "Invalid URL."
case .timeout(let s): "Timed out after \(s)s."
case .serverError(let code): "Server returned \(code)."
}
}
}
do {
let user = try fetchUser(id: "123")
} catch let error as NetworkError {
handleNetworkError(error)
} catch {
handleUnexpected(error)
}
let user = try? fetchUser(id: "123") // nil on errorswitch fetchData(from: url) {
case .success(let data): process(data)
case .failure(let error): showError(error)
}func load() throws(DatabaseError) -> [Item] { /* compiler-enforced error type */ }
func fetchUser(id: String) async throws -> User {
let (data, response) = try await URLSession.shared.data(from: url)
guard let http = response as? HTTPURLResponse, http.statusCode == 200 else {
throw NetworkError.serverError(statusCode: 0)
}
return try JSONDecoder().decode(User.self, from: data)
}final class UserServiceTests: XCTestCase {
var sut: UserService!
var mockRepo: MockUserRepository!
override func setUp() {
mockRepo = MockUserRepository()
sut = UserService(repository: mockRepo)
}
func testFetchUser_success() async throws {
mockRepo.stubbedUser = User(id: "1", name: "Alice")
let user = try await sut.fetchUser(id: "1")
XCTAssertEqual(user.name, "Alice")
}
func testFetchUser_notFound_throws() async {
mockRepo.shouldFail = true
do {
_ = try await sut.fetchUser(id: "999")
XCTFail("Expected error")
} catch {
XCTAssertTrue(error is UserService.Error)
}
}
}import Testing
@Suite("UserService")
struct UserServiceTests {
@Test("fetches user by ID")
func fetchUser() async throws {
let mockRepo = MockUserRepository()
mockRepo.stubbedUser = User(id: "1", name: "Alice")
let sut = UserService(repository: mockRepo)
let user = try await sut.fetchUser(id: "1")
#expect(user.name == "Alice")
}
@Test("throws on missing user", arguments: ["999", ""])
func fetchMissingUser(id: String) async {
let sut = UserService(repository: MockUserRepository())
await #expect(throws: UserService.Error.self) {
try await sut.fetchUser(id: id)
}
}
}protocol UserRepository {
func fetch(id: String) async throws -> User
}
final class MockUserRepository: UserRepository {
var stubbedUser: User?
var shouldFail = false
private(set) var fetchCallCount = 0
func fetch(id: String) async throws -> User {
fetchCallCount += 1
if shouldFail { throw NSError(domain: "", code: 0) }
return stubbedUser ?? User(id: id, name: "Default")
}
}func testLoginFlow() {
let app = XCUIApplication()
app.launchArguments = ["--uitesting"]
app.launch()
app.textFields["email"].tap()
app.textFields["email"].typeText("user@example.com")
app.secureTextFields["password"].typeText("pass")
app.buttons["Sign In"].tap()
XCTAssertTrue(app.staticTexts["Welcome"].waitForExistence(timeout: 5))
}For SwiftUI + @Observable, Combine, Structured Concurrency, SwiftData, and Vapor framework patterns with complete code examples, see reference/frameworks.md.
Array, String, Dictionary use COW automatically. For custom value types:
struct LargeData {
private final class Storage { var buffer: [UInt8]; init(_ b: [UInt8]) { buffer = b } }
private var storage: Storage
var buffer: [UInt8] {
get { storage.buffer }
set {
if !isKnownUniquelyReferenced(&storage) { storage = Storage(newValue) }
else { storage.buffer = newValue }
}
}
}// weak — closure may outlive self
service.fetch { [weak self] result in
guard let self else { return }
self.update(with: result)
}
// unowned — self guaranteed to outlive closure
lazy var tick: () -> Void = { [unowned self] in self.count += 1 }struct Config: Sendable { let apiURL: URL; let timeout: TimeInterval }
actor ImageCache {
private var cache: [URL: Data] = [:]
func image(for url: URL) -> Data? { cache[url] }
func store(_ data: Data, for url: URL) { cache[url] = data }
}| Instrument | Use For |
|---|---|
| Time Profiler | CPU bottlenecks |
| Allocations | Memory growth |
| Leaks | Retain cycles |
| SwiftUI | View body re-evaluations |
| Core Animation | FPS, offscreen rendering |
Profile on device (not simulator). Use os_signpost for custom spans.
swift package resolve # Resolve deps
swift build -c release # Release build
swift test --filter MyTests # Filtered test run// Shared.xcconfig
SWIFT_VERSION = 5.10
IPHONEOS_DEPLOYMENT_TARGET = 17.0
SWIFT_STRICT_CONCURRENCY = complete
// Debug.xcconfig
#include "Shared.xcconfig"
SWIFT_OPTIMIZATION_LEVEL = -Onone
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG
// Release.xcconfig
#include "Shared.xcconfig"
SWIFT_OPTIMIZATION_LEVEL = -O
SWIFT_COMPILATION_MODE = wholemoduleDefine targets in Project.swift using ProjectDescription. Map each app, framework, and test target with bundleId, sources, and dependencies. Use .external(name:) for SPM deps and .target(name:) for internal.
Schemes: separate Debug/Release/Testing. Enable ASan + TSan in test schemes.
| Anti-Pattern | Problem | Fix |
|---|---|---|
Force unwrap ! | Runtime crash | guard let, if let, ?? |
| Massive view controller | Untestable | MVVM, composable views |
| Stringly-typed APIs | No compiler checks | Enums, phantom types |
Ignoring @MainActor | Off-main-thread UI | Annotate view models |
| Retain cycles | Memory leaks | [weak self] / [unowned self] |
| Blocking main thread | UI freezes | async/await, Task { } |
UserDefaults for secrets | Insecure | Keychain (SecItemAdd) |
@ObservedObject for owned state | Object recreated | @StateObject or @State + @Observable |
async/await, actors, Task) for new code — GCD is legacy and mixes poorly with the new model@MainActor when they touch UI state — off-main mutations cause runtime warnings and flaky UI!) without a documented invariant in a comment; runtime crashes from unwrap are the top iOS crash categoryUserDefaults or plist — use Keychain APIs (SecItemAdd, SecItemCopyMatching)@State, @Binding, or @Observable. Never mutate a parent's state from a child via a captured reference — it breaks dependency tracking.self inside a reference type uses [weak self] or [unowned self] — retain cycles are the top memory-leak cause@StateObject and @ObservedObject look similar but behave oppositely on parent re-render: @StateObject persists, @ObservedObject may re-initialize. Using @ObservedObject for view-owned state recreates the object on every render — state loss without error.Task { @MainActor in ... } inside a non-@MainActor context does not synchronously return to main; it schedules. Code between the await and Task boundary runs on whatever actor you came from, which can race with UI updates.AsyncStream continuations without onTermination leak: if the consumer cancels, the producer keeps yielding forever. Always install a termination handler.@Query with @Environment(\.modelContext) invalidates on every write; heavy reads in a watched view cause perf drops. Use @FetchRequest-style fetch descriptors with explicit refresh, not ambient @Query, for large datasets..receive(on: DispatchQueue.main) schedules asynchronously — if the next operator expects sync execution, order matters. Prefer moving .receive(on:) to just before the sink, not mid-pipeline.withCheckedContinuation bridges but a continuation that is never resumed hangs the Task forever. Always pair resumes with all control-flow paths, including errors./flutter-patterns or JS patterns; this skill is Swift-only/architecture-decision/kotlin-patterns/ci-cd-patterns© softspark, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in app/skills/swift-patterns of softspark/ai-toolkit.
Open the folder on GitHubat commit d64db2b
Swift Patterns next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Swift Patterns this skillsoftspark/ai-toolkit | 179 | — | ~3.1k | Automated safety check: Pass | Apache-2.0 | |
| Bootstrap iOSRayFernando1337/rayfernando-skills | 130 | — | ~1.1k | Automated safety check: Pass | Apache-2.0 | |
| Swift Developmentaiskillstore/marketplace | 430 | — | ~1.8k | Automated safety check: Pass | None | |
| Apollo iOSapollographql/skills | 116 | — | ~2k | Automated safety check: Pass | MIT | |
| Update Swiftui APIsAvdLee/SwiftUI-Agent-Skill | 3.7k | — | ~1.2k | Automated safety check: Pass | MIT | |
| Swiftui Expert SkillAFK-surf/OpenBridge | 430 | 2 repos | ~3.9k | Automated safety check: Pass | MIT |
RayFernando1337/rayfernando-skills
Bootstrap agents for iOS, iPadOS, macOS, Swift, SwiftUI, SwiftData/Core Data, Swift Testing, Xcode build/test/debug, Simulator, App Intents, or XcodeBuildMCP work.
aiskillstore/marketplace
Comprehensive Swift development for building, testing, and deploying iOS/macOS applications.
apollographql/skills
Guide for building Apple-platform applications with Apollo iOS, the strongly-typed GraphQL client for Swift.
AvdLee/SwiftUI-Agent-Skill
Scan Apple's SwiftUI documentation for deprecated APIs and update the SwiftUI Expert Skill with modern replacements.
AFK-surf/OpenBridge
Write, review, or improve SwiftUI code following best practices for state management, view composition, performance, modern APIs, Swift concurrency, and iOS 26+ Liquid Glass adoption.
Wholiver/swiftui-design-skill
Guides the agent to design distinctive SwiftUI interfaces for iOS and macOS, with six anti-generic rules, a design direction workflow and a five-dimension review.
softspark/ai-toolkit
Prepare or verify a project QA environment with source identity, readiness, browser access, evidence paths and owned cleanup.
softspark/ai-toolkit
Accessibility validator: WCAG 2.1 AA, EN 301 549, EAA. An agent skill from softspark/ai-toolkit.
softspark/ai-toolkit
Analyzes code quality, complexity, patterns across codebase.
softspark/ai-toolkit
Drives a brief, specification, issue or existing PR through implementation, review, tests and QA to a ready PR.
softspark/ai-toolkit
Direct technical voice for docs, README, user-facing text. An agent skill from softspark/ai-toolkit.
softspark/ai-toolkit
Detect/generate/debug CI pipeline config (GitHub Actions, GitLab CI).
Categories
Swift/iOS: SwiftUI, Combine, async/await, actors, SPM, Core Data, UIKit interop. Swift Patterns is an agent skill from softspark/ai-toolkit. Swift/iOS: SwiftUI, Combine, async/await, actors, SPM, Core Data, UIKit interop.
Swift Patterns fits situations like: tasks that involve iOS development.
Run `npx skills add softspark/ai-toolkit --skill swift-patterns -a claude-code`. Or copy the skill folder (app/skills/swift-patterns in softspark/ai-toolkit) into .claude/skills/swift-patterns in your project. Claude Code loads it when a task matches its description.
Run `npx skills add softspark/ai-toolkit --skill swift-patterns -a codex`. Or copy the skill folder (app/skills/swift-patterns in softspark/ai-toolkit) into .agents/skills/swift-patterns in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add softspark/ai-toolkit --skill swift-patterns -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/swift-patterns, .gemini/skills/swift-patterns, .github/skills/swift-patterns and .opencode/skills/swift-patterns in your project.
Going by SKILL.md and its folder, Swift Patterns needs the command-line tools its instructions call (swift). Its frontmatter pre-approves these tools: Read.
SKILL.md names 1 domain. In commands or code: github.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Swift Patterns is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.1k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Swift Patterns: Bootstrap iOS (RayFernando1337/rayfernando-skills, 130 stars), Swift Development (aiskillstore/marketplace, 430 stars), Apollo iOS (apollographql/skills, 116 stars) and Update Swiftui APIs (AvdLee/SwiftUI-Agent-Skill, 3.7k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
softspark (a GitHub user) maintains it in softspark/ai-toolkit, which has 179 GitHub stars. The repository holds 112 skills in this directory. The repository was last updated on October 7, 2026.
Source: softspark/ai-toolkit on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.