swift-concurrency-expert — скилл для Claude Code: review Swift
Скилл проверяет и исправляет проблемы параллелизма в Swift 6.2+: добавляет Sendable, применяет @MainActor, решает предупреждения об изоляции акторов и переводит completion handlers на async/await.
npx skills add Dimillian/Skills --skill swift-concurrency-expert -a claude-codeЧто делает swift-concurrency-expert
Когда компилятор Swift 6.2+ требует изоляции акторов или соответствия Sendable, этот скилл помогает триажировать ошибку, выбрать наименьшее безопасное исправление и проверить, что тесты пройдут. Триаж включает определение текущего контекста акторов, проверку настроек strict concurrency и выявление того, привязан ли код к главному потоку или рассчитан на фоновую работу.
Скилл применяет типичные исправления: аннотирует UI-типы @MainActor, изолирует конформность протоколов, защищает глобальное состояние, переносит дорогостоящие вычисления в @concurrent асинхронные функции. Для каждого исправления скилл перестраивает проект и запускает тесты, чтобы убедиться, что новые предупреждения не появились и поведение сохранилось.
Какие задачи решает
- Добавить
@MainActorк UI-типам и разрешить конформность протоколов - Применить
Sendableк типам для безопасности data race - Перевести completion handlers на async/await с правильной изоляцией
- Перенести дорогие вычисления с главного потока с помощью
@concurrent - Разрешить предупреждения об изоляции акторов без изменения поведения
Примеры запросов агенту
- Проверь этот файл на проблемы Swift Concurrency и исправь компилятор warnings
- Добавь Sendable к типам, которые передаются между акторами
- Переведи completion handlers на async/await с правильной изоляцией акторов
Как установить swift-concurrency-expert
1Через Skills CLI (Vercel)
npx skills add Dimillian/Skills --skill swift-concurrency-expert -a claude-code2Вручную: положить файлы
~/.claude/skills/swift-concurrency-expert/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/swift-concurrency-expert/
1Через Skills CLI (Vercel)
npx skills add Dimillian/Skills --skill swift-concurrency-expert -a codex2Вручную: положить файлы
.agents/skills/swift-concurrency-expert/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add Dimillian/Skills --skill swift-concurrency-expert -a cursor2Вручную: положить файлы
.cursor/skills/swift-concurrency-expert/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install Dimillian/Skills swift-concurrency-expert2Вручную: положить файлы
.github/skills/swift-concurrency-expert/SKILL.md1Через Skills CLI (Vercel)
npx skills add Dimillian/Skills --skill swift-concurrency-expert -a gemini-cli2Командой платформы
gemini skills install https://github.com/Dimillian/Skills --path swift-concurrency-expertВручную: положить файлы
.devin/skills/swift-concurrency-expert/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add Dimillian/Skills --skill swift-concurrency-expert -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Из того же набора11
Похожие
Рядом в теме «Код-ревью и рефакторинг»
Всё по теме «Код-ревью и рефакторинг» →Вопросы о swift-concurrency-expert
Как установить swift-concurrency-expert в Claude Code?
Выполни npx skills add Dimillian/Skills --skill swift-concurrency-expert -a claude-code, затем скилл будет доступен в ~/.claude/skills/swift-concurrency-expert/SKILL.md.
Что делает swift-concurrency-expert?
Проверяет и исправляет ошибки параллелизма в Swift 6.2+: добавляет аннотации @MainActor, применяет Sendable, решает предупреждения об изоляции акторов и переводит callback-функции на async/await.
На каких платформах работает этот скилл?
На Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI и OpenCode. Каждая платформа требует собственной команды установки.
Исходный текст
SKILL.md · MIT
---
name: swift-concurrency-expert
description: Swift Concurrency review and remediation for Swift 6.2+. Use when asked to review Swift Concurrency usage, improve concurrency compliance, or fix Swift concurrency compiler errors in a feature or file. Concrete actions include adding Sendable conformance, applying @MainActor annotations, resolving actor isolation warnings, fixing data race diagnostics, and migrating completion handlers to async/await.
---
# Swift Concurrency Expert
## Overview
Review and fix Swift Concurrency issues in Swift 6.2+ codebases by applying actor isolation, Sendable safety, and modern concurrency patterns with minimal behavior changes.
## Workflow
### 1. Triage the issue
- Capture the exact compiler diagnostics and the offending symbol(s).
- Check project concurrency settings: Swift language version (6.2+), strict concurrency level, and whether approachable concurrency (default actor isolation / main-actor-by-default) is enabled.
- Identify the current actor context (`@MainActor`, `actor`, `nonisolated`) and whether a default actor isolation mode is enabled.
- Confirm whether the code is UI-bound or intended to run off the main actor.
### 2. Apply the smallest safe fix
Prefer edits that preserve existing behavior while satisfying data-race safety.
Common fixes:
- **UI-bound types**: annotate the type or relevant members with `@MainActor`.
- **Protocol conformance on main actor types**: make the conformance isolated (e.g., `extension Foo: @MainActor SomeProtocol`).
- **Global/static state**: protect with `@MainActor` or move into an actor.
- **Background work**: move expensive work into a `@concurrent` async function on a `nonisolated` type or use an `actor` to guard mutable state.
- **Sendable errors**: prefer immutable/value types; add `Sendable` conformance only when correct; avoid `@unchecked Sendable` unless you can prove thread safety.
### 3. Verify the fix
- Rebuild and confirm all concurrency diagnostics are resolved with no new warnings introduced.
- Run the test suite to check for regressions — concurrency changes can introduce subtle runtime issues even when the build is clean.
- If the fix surfaces new warnings, treat each one as a fresh triage (return to step 1) and resolve iteratively until the build is clean and tests pass.
### Examples
**UI-bound type — adding `@MainActor`**
```swift
// Before: data-race warning because ViewModel is accessed from the main thread
// but has no actor isolation
class ViewModel: ObservableObject {
@Published var title: String = ""
func load() { title = "Loaded" }
}
// After: annotate the whole type so all stored state and methods are
// automatically isolated to the main actor
@MainActor
class ViewModel: ObservableObject {
@Published var title: String = ""
func load() { title = "Loaded" }
}
```
**Protocol conformance isolation**
```swift
// Before: compiler error — SomeProtocol method is nonisolated but the
// conforming type is @MainActor
@MainActor
class Foo: SomeProtocol {
func protocolMethod() { /* accesses main-actor state */ }
}
// After: scope the conformance to @MainActor so the requirement is
// satisfied inside the correct isolation context
@MainActor
extension Foo: SomeProtocol {
func protocolMethod() { /* safely accesses main-actor state */ }
}
```
**Background work with `@concurrent`**
```swift
// Before: expensive computation blocks the main actor
@MainActor
func processData(_ input: [Int]) -> [Int] {
input.map { heavyTransform($0) } // runs on main thread
}
// After: hop off the main actor for the heavy work, then return the result
// The caller awaits the result and stays on its own actor
nonisolated func processData(_ input: [Int]) async -> [Int] {
await Task.detached(priority: .userInitiated) {
input.map { heavyTransform($0) }
}.value
}
// Or, using a @concurrent async function (Swift 6.2+):
@concurrent
func processData(_ input: [Int]) async -> [Int] {
input.map { heavyTransform($0) }
}
```
## Reference material
- See `references/swift-6-2-concurrency.md` for Swift 6.2 changes, patterns, and examples.
- See `references/approachable-concurrency.md` when the project is opted into approachable concurrency mode.
- See `references/swiftui-concurrency-tour-wwdc.md` for SwiftUI-specific concurrency guidance.
© Dimillian · MIT · Dimillian/Skills