# swift-concurrency-pro

Проверяет Swift-код на корректность конкурентности, современные API и типичные ловушки async/await. Пригодится при чтении и ревью асинхронного кода.

- скилл · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 11900 установок · ★ 576
- Автор: Paul Hudson
- Лицензия: MIT · policy=mirror · лицензия открытая, файл — в исходнике
- Исходник: https://github.com/twostraws/Swift-Concurrency-Agent-Skill/tree/HEAD/swift-concurrency-pro/SKILL.md
- Обновлён: 2026-05-17
- HTML: https://affpapa.org/nevibecode/skills/swift-concurrency-pro

## Что делает

Скилл разбирает Swift-код на конкурентность и сообщает только о настоящих проблемах — без придирок и выдуманных замечаний. Работа рассчитана на Swift 6.2 и строгую проверку конкурентности. Если проект разбит на несколько таргетов или пакетов, скилл советует сначала сравнить их настройки сборки, а потом делать выводы о поведении.

Внутри — набор справочников в `references/`: `hotspots.md` с опасными паттернами для быстрого поиска, `actors.md` про реентерабельность и изоляцию, `structured.md` и `unstructured.md` про структурированные задачи и `Task {}`, `cancellation.md` про отмену, `async-streams.md` про `AsyncStream` и continuation, `bridging.md` про мосты между синхронным и асинхронным кодом, `interop.md` про миграцию с GCD, `bug-patterns.md`, `diagnostics.md` и `testing.md`. При частичном ревью загружаются только нужные файлы. Находки группируются по файлам: строка, нарушенное правило, короткий пример «до и после», в конце — приоритетный список правок.

Есть жёсткие правила. `@unchecked Sendable` для затыкания ошибок компилятора не предлагается: диагностика замолкает, а гонка остаётся. Вместо этого — акторы, value-типы или `sending`-параметры. Сторонние фреймворки конкурентности скилл не тянет без спроса. GCD не считается ошибкой в низкоуровневом коде, интеропе с фреймворками и синхронной работе, где уместны очереди и локи.

## Установка

### Claude Code (родная платформа)

1. **Через Skills CLI (Vercel)**
```bash
npx skills add twostraws/Swift-Concurrency-Agent-Skill --skill swift-concurrency-pro -a claude-code
```

2. **Вручную: положить файлы**
- Файл: `~/.claude/skills/swift-concurrency-pro/SKILL.md` — Папка скилла целиком; для одного проекта — .claude/skills/swift-concurrency-pro/

### Codex

1. **Через Skills CLI (Vercel)**
```bash
npx skills add twostraws/Swift-Concurrency-Agent-Skill --skill swift-concurrency-pro -a codex
```

2. **Вручную: положить файлы**
- Файл: `.agents/skills/swift-concurrency-pro/SKILL.md` — Для всех проектов — ~/.agents/skills/

### Cursor

1. **Через Skills CLI (Vercel)**
```bash
npx skills add twostraws/Swift-Concurrency-Agent-Skill --skill swift-concurrency-pro -a cursor
```

2. **Вручную: положить файлы**
- Файл: `.cursor/skills/swift-concurrency-pro/SKILL.md` — Cursor читает и .agents/skills/, и .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install twostraws/Swift-Concurrency-Agent-Skill swift-concurrency-pro
```

2. **Вручную: положить файлы**
- Файл: `.github/skills/swift-concurrency-pro/SKILL.md`

### Gemini CLI

1. **Через Skills CLI (Vercel)**
```bash
npx skills add twostraws/Swift-Concurrency-Agent-Skill --skill swift-concurrency-pro -a gemini-cli
```

2. **Командой платформы**
```bash
gemini skills install https://github.com/twostraws/Swift-Concurrency-Agent-Skill --path swift-concurrency-pro
```

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/skills/swift-concurrency-pro/SKILL.md` — Старый путь .windsurf/skills/ тоже читается

### OpenCode

**Через Skills CLI (Vercel)**
```bash
npx skills add twostraws/Swift-Concurrency-Agent-Skill --skill swift-concurrency-pro -a opencode
```

### Claude.ai

**Claude.ai**
- Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/twostraws/Swift-Concurrency-Agent-Skill/tree/HEAD/swift-concurrency-pro/SKILL.md

## Когда брать
- найти гонку данных в акторе до того, как она уронит прод
- заменить `Task {}` в цикле на `withThrowingTaskGroup`
- проверить, что отмена задачи доходит до всех дочерних задач
- разобрать ошибки strict concurrency и подобрать исправление
- перевести код с GCD и completion handlers на async/await

## Примеры запросов агенту
- Проверь `DataLoader.swift` на конкурентность и покажи проблемы по файлам
- Найди опасные паттерны в папке `Sources/Networking` и предложи правки
- У меня ошибки strict concurrency в `Cache.swift` — разбери их и предложи исправления

## Похожие
- [improve-codebase-architecture](https://affpapa.org/nevibecode/skills/improve-codebase-architecture.md) — скилл · 1163035 установок
- [tdd](https://affpapa.org/nevibecode/skills/tdd.md) — скилл · 1141062 установки
- [triage](https://affpapa.org/nevibecode/skills/triage.md) — скилл · 990453 установки
- [codebase-design](https://affpapa.org/nevibecode/skills/codebase-design.md) — скилл · 850344 установки
- [code-review](https://affpapa.org/nevibecode/skills/code-review.md) — скилл · 789521 установка
- [implement](https://affpapa.org/nevibecode/skills/implement.md) — скилл · 774700 установок

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
