Swift Concurrency
Diagnóstico de 'data-race' en Swift 6, aislamiento de actores, migración de 'callback' a 'async'
Probado · Funciona
Qué hace
Diagnostica errores del compilador de Swift Concurrency y guía la migración a Swift 6 leyendo primero el modo de lenguaje y la configuración de aislamiento del proyecto, luego aplicando la solución segura más pequeña. Se activa con Sendable, @MainActor, actores, 'data races' o la conversión de 'completion handlers' a async/await.
Informe de la prueba
Tarea: lograr una compilación limpia en Swift 6 de un modelo con un cargador de 'callback' y una caché compartida — swiftc -swift-version 6 arrojaba 3 errores «main actor-isolated property ... from a Sendable closure». La ejecución base sin la habilidad — una corrección reflexiva Task { @MainActor in ... } — compila limpiamente (0 errores), es decir, para el compilador ambas versiones son iguales. La diferencia surgió en el siguiente paso: la habilidad, siguiendo la regla «shared mutable state → actor», convirtió Cache en un actor, mientras que la versión base lo dejó como una clase; cuando agregué un requisito realista (precalentamiento de la caché desde un Task.detached en segundo plano), la variante base falló con el error «non-sendable type 'Cache' ... cannot cross actor boundary», mientras que la versión con la habilidad compiló limpiamente (exit 0). La habilidad también forzó a fijar primero el 'language mode' y aplicó su regla de 'Task entry isolation', dejando el @MainActor heredado, porque el prefijo síncrono muta isLoading. Los 15 archivos references/ están en su lugar, la instalación se verificó en un HOME vacío sin ~/.claude. Hay un enlace al curso de pago del autor, pero se revela honestamente en el pie de página y se marca como «use sparingly».
Probado el: 2026-07-17 · Claude Code 2.x (agent harness)
Instalación
git clone https://github.com/AvdLee/Swift-Concurrency-Agent-Skill.git mkdir -p ~/.claude/skills cd Swift-Concurrency-Agent-Skill && cp -r swift-concurrency ~/.claude/skills/swift-concurrency
Comandos y prompts de ejemplo
/swift-concurrencyDiagnóstico de 'data-race' en Swift 6, aislamiento de actores, migración de 'callback' a 'async'
Los skills se activan con peticiones en lenguaje natural, sin comandos que memorizar. Tras instalarlo, prompts como estos lo activan (en inglés):
My Swift 6 build throws main actor-isolated Sendable closure errors, helpMigrate this completion-handler loader to async/await under Swift 6 strict modeThis shared mutable cache won't cross the actor boundary in Swift 6