К основному содержанию
скилл CX Codex

swift-concurrency-expert — скилл для Claude Code: review Swift

Скилл проверяет и исправляет проблемы параллелизма в Swift 6.2+: добавляет Sendable, применяет @MainActor, решает предупреждения об изоляции акторов и переводит completion handlers на async/await.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add Dimillian/Skills --skill swift-concurrency-expert -a claude-code
Открыть на GitHub

Что делает 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-code

2Вручную: положить файлы

~/.claude/skills/swift-concurrency-expert/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/swift-concurrency-expert/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора11

macos-spm-app-packaging Скилл помогает собрать macOS-приложение на SwiftPM без проекта Xcode: от скелета до подписи, нотаризации и appcast. CX Codex +1 1 400установок app-store-changelog Собирает коммиты с последнего тега и превращает их в текст «What's New» для App Store. Пригодится перед каждой выкладкой в стор. CX Codex +1 1 300установок react-component-performance Находит причины медленного рендера в React, изолирует часто обновляемый стейт и убирает лишние вычисления. Помогает при лагах списков и анимаций. CX Codex +1 1 100установок github Даёт агенту команды утилиты gh CLI для работы с задачами, пулл-реквестами и запусками CI прямо из терминала. CX Codex +1 870установок review-and-simplify-changes Разбирает изменённый код на переиспользование, качество, эффективность и ясность, а потом по желанию вносит безопасные правки. Пригодится перед коммитом. CX Codex +1 794установок project-skill-audit Анализирует прошлые сессии Codex, файлы памяти и локальные навыки проекта. Рекомендует обновить устаревшие инструкции или создать новые под частые задачи. CX Codex +1 785установок review-swarm Проводит параллельное ревью git-диффа или выбранных файлов без изменений в рабочей копии. Нужен для поиска регрессий, рисков безопасности и пробелов в тестах. CX Codex +1 756установок bug-hunt-swarm Ищет первопричину багов параллельно через субагентов и ранжирует версии. Нужен для регрессий, сбоев и нестабильного поведения без правок кода. CX Codex +1 713установок

Похожие

swift-concurrency dpearson2699 Помогает устранять ошибки Sendable и изоляции акторов в Swift 6.2+, настраивать фоновые задачи и применять SE-0466. CX Codex +1 4 300установок guide-swift-concurrency Prisma-Labs-Dev Скилл настраивает проверку конкурентного кода на Swift 6.2 со strict concurrency. Он помогает находить гонки данных, изолировать акторы и заменять вызовы GCD на группы задач. CX Codex +1 431установок write-swift emilkowalski Скилл помогает писать, проверять и переносить код на Swift с учётом модели языка. Подойдёт, когда нужно разобраться с конкурентностью, ошибкой или циклом удержания объектов. CX Codex +1 119 300установок axiom-concurrency CharlesWiltgen Скилл для работы с конкурентностью в приложениях на платформах Apple: акторы, @MainActor, Sendable, гонки данных. CX Codex +1 1 300установок swift-development rshankras Разбирает конкурентность, память и размер Swift-кода: подскажет, как перейти на строгую модель Swift 6 и убрать лишние аллокации. CX Codex +1 488установок swift-expert https://github.com/Jeffallan Скилл для разработки на Swift: архитектура, SwiftUI, async/await, акторы и тесты. Пригодится, когда агент пишет или разбирает код приложения под iOS и macOS. CX Codex +1 4 100установок

Рядом в теме «Код-ревью и рефакторинг»

Всё по теме «Код-ревью и рефакторинг» →

Вопросы о 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

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой