swift-development — скилл для Claude Code: Swift-код без гонок данных
Разбирает конкурентность, память и размер Swift-кода: подскажет, как перейти на строгую модель Swift 6 и убрать лишние аллокации.
npx skills add rshankras/claude-code-apple-skills --skill swift-development -a claude-code
npx skills add rshankras/claude-code-apple-skills --skill swift -a claude-codeЧто делает swift-development
Скилл даёт языковые советы по Swift, не привязанные к конкретной платформе Apple. Он включается, когда вы спрашиваете про async/await, акторы, Sendable, TaskGroup, ловите ошибки изоляции или гонки данных, а также когда нужны лимиты сложности для кода, который пишет агент.
Внутри четыре модуля. concurrency-patterns/ — архитектура конкурентности: структурированные задачи, акторы, @MainActor, продолжения для старых API и руководство по миграции на строгую модель Swift 6. Отдельный concurrency/ показывает, что изменилось в 6.2, и как переехать с 6.0 или 6.1. code-size/ задаёт пороги SwiftLint по цикломатической сложности и длине функций, типов и файлов, причём с базовой линией нарушений, чтобы старый код не блокировал работу. memory/ про InlineArray, семейство Span и модель стоимости: аллокации, ARC, проверки эксклюзивности, дженерики против экзистенциалов.
Скиллу разрешены только Read, Glob и Grep — он читает файлы и ничего не меняет. Значит, правки вы вносите сами, а скилл лишь объясняет, где проблема. Если в проекте ещё нет SwiftLint, пороги из code-size/ придётся заводить вручную.
Какие задачи решает
- разобраться, почему компилятор ругается на изоляцию актора
- перевести проект на строгую конкурентность Swift 6 без остановки работы
- убрать лишние аллокации в горячем участке через
InlineArray - подключить старый API с колбэками к async-коду через продолжения
- задать пороги сложности для кода, который генерирует агент
Примеры запросов агенту
- Почему у меня ошибка Sendable в этом файле?
- Помоги перейти на строгую конкурентность Swift 6 — с чего начать?
- Замени этот массив на InlineArray, если размер фиксированный
Как установить swift-development
1Через Skills CLI (Vercel)
npx skills add rshankras/claude-code-apple-skills --skill swift-development -a claude-codenpx skills add rshankras/claude-code-apple-skills --skill swift -a claude-code2Вручную: положить файлы
~/.claude/skills/swift/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/swift/
1Через Skills CLI (Vercel)
npx skills add rshankras/claude-code-apple-skills --skill swift -a codex2Вручную: положить файлы
.agents/skills/swift/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add rshankras/claude-code-apple-skills --skill swift -a cursor2Вручную: положить файлы
.cursor/skills/swift/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install rshankras/claude-code-apple-skills swift2Вручную: положить файлы
.github/skills/swift/SKILL.md1Через Skills CLI (Vercel)
npx skills add rshankras/claude-code-apple-skills --skill swift -a gemini-cli2Командой платформы
gemini skills install https://github.com/rshankras/claude-code-apple-skills --path skills/swiftВручную: положить файлы
.devin/skills/swift/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add rshankras/claude-code-apple-skills --skill swift -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о swift-development
Как установить swift-development в Claude?
Выполните npx skills add rshankras/claude-code-apple-skills --skill swift-development -a claude-code. Скилл окажется в ~/.claude/skills/swift/SKILL.md.
Что делает swift-development?
Даёт языковые рекомендации по Swift: конкурентность, миграция на Swift 6, работа с памятью и лимиты размера кода. Платформенные детали берёт из соседних скиллов ios/ и macos/.
Чем concurrency/ отличается от concurrency-patterns/?
concurrency/ отвечает на вопрос «что поменялось в 6.2», а concurrency-patterns/ нужен, когда вы пишете или проверяете асинхронный код. Пересечение модулей сделано намеренно.
Исходный текст
SKILL.md · MIT
--- name: swift-development description: Swift language patterns and best practices including concurrency, performance, and modern idioms. Use for Swift language-level code review or architecture guidance. allowed-tools: [Read, Glob, Grep] last_verified: 2026-07-16 review_by: 2027-06-22 os_version: iOS 27 / macOS 27 --- # Swift Development Swift language-level guidance that applies across all Apple platforms. ## When This Skill Activates Use this skill when the user: - Asks about Swift concurrency (async/await, actors, Sendable, TaskGroup) - Needs help with Swift 6 strict concurrency migration - Has data race or actor isolation errors - Asks about **InlineArray**, **Span**, or low-level memory performance - Wants to eliminate heap allocations or replace unsafe pointers - Asks about modern Swift patterns independent of any specific platform - Wants complexity/size limits (SwiftLint thresholds) on agent-written code ## Available Modules ### concurrency-patterns/ Swift concurrency architecture and patterns. - Swift 6.2 approachable concurrency features (incl. `nonisolated(nonsending)`, Apple's adoption doctrine) - Structured concurrency (async let, TaskGroup, .task modifier, task-local values) - Actors, isolation, reentrancy, @MainActor, Sendable - Runtime internals + profiling (cooperative pool, unsafe primitives, Swift Concurrency Instrument) - Continuations for bridging legacy APIs - Swift 6 strict concurrency migration guide ### concurrency/ Swift 6.2 concurrency **updates** reference — the what-changed view (async-stays-on-caller, default MainActor inference, isolated conformances, @concurrent) with migration steps from 6.0/6.1 and top mistakes. Overlaps `concurrency-patterns/swift62-concurrency.md` by design: use this file when the question is "what changed in 6.2?", use concurrency-patterns when building or reviewing async code. ### code-size/ Complexity and size limits for Swift code — SwiftLint threshold rules (cyclomatic complexity, function/type/file length, parameter count) with a violations-baseline adoption path so existing code never blocks. Part of the deterministic gauntlet with `testing/fitness-functions` and `testing/coverage-ratchet`. ### memory/ InlineArray, Span, and the Swift performance cost model. - InlineArray: fixed-size, stack-allocated collections with zero heap overhead - Span family: safe, non-escapable access to contiguous memory (+ OutputRawSpan, swift-binary-parsing) - Lifetime dependencies and non-escapable type constraints - `swift-performance.md`: the cost model — allocation, ARC/retain-release, exclusivity checks, dispatch, generics vs existentials, closures, `~Copyable` ownership ## How to Use 1. Identify user's need from their question 2. Read relevant module files from subdirectories 3. Apply the guidance to their specific context 4. Cross-reference with platform-specific skills (ios/, macos/) as needed
© rshankras · MIT · rshankras/claude-code-apple-skills