swift-concurrency-expert
Faz seu agente revisar e corrigir problemas de concorrência em Swift. Ele garante que o código funcione corretamente com múltiplos processos.
O que ela faz
Este especialista em concorrência Swift ajuda a encontrar e corrigir erros em seu código Swift relacionados a como diferentes partes do programa se comunicam de forma segura. Ele garante que o acesso a dados seja feito corretamente, especialmente em aplicativos com interface gráfica.
Quando usar
- ✓Quando o compilador mostra erros sobre concorrência Swift.
- ✓Ao precisar de ajuda para organizar o código em 'atores' ou isolar tarefas na 'thread' principal.
- ✓Ao migrar código antigo para os padrões modernos de concorrência do Swift.
Exemplo do que pedir para a IA
“Revise este código Swift e corrija os erros de concorrência, garantindo que o acesso aos dados seja seguro.”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
Ele analisa os erros que o compilador aponta, verifica as configurações do seu projeto e aplica as correções mais simples e seguras. O objetivo é evitar que partes diferentes do código interfiram umas nas outras de forma inesperada.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add sickn33/agentic-awesome-skills --skill swift-concurrency-expertOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/swift-concurrency-expert/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Especialista em Concorrência Swift
Visão Geral
Revise e corrija problemas de Concorrência Swift em bases de código Swift 6.2+ aplicando isolamento de ator, segurança Sendable e padrões de concorrência modernos com alterações mínimas de comportamento.
Quando Usar
- Quando o usuário pedir para revisar o uso de concorrência Swift ou corrigir diagnósticos do compilador.
- Quando você precisar de orientação sobre isolamento de ator,
Sendable,@MainActorou migração assíncrona.
Fluxo de Trabalho
1. Triagem do Problema
- Capture os diagnósticos exatos do compilador e o(s) símbolo(s) ofensivo(s).
- Verifique as configurações de concorrência do projeto: versão da linguagem Swift (6.2+), nível de concorrência rigoroso e se a concorrência acessível (isolamento de ator padrão / ator principal por padrão) está habilitada.
- Identifique o contexto de ator atual (
@MainActor,actor,nonisolated) e se um modo de isolamento de ator padrão está habilitado. - Confirme se o código está vinculado à UI ou se destina a ser executado fora do ator principal.
2. Aplique a Menor Correção Segura
Prefira edições que preservem o comportamento existente enquanto satisfazem a segurança contra corridas de dados.
Correções comuns:
- Tipos vinculados à UI: anote o tipo ou membros relevantes com
@MainActor. - Conformidade de protocolo em tipos do ator principal: torne a conformidade isolada (por exemplo,
extension Foo: @MainActor SomeProtocol). - Estado global/estático: proteja com
@MainActorou mova para um ator. - Trabalho em segundo plano: mova trabalho caro para uma função assíncrona
@concurrentem um tipononisolatedou use umactorpara proteger o estado mutável. - Erros Sendable: prefira tipos imutáveis/de valor; adicione conformidade
Sendableapenas quando correto; evite@unchecked Sendablea menos que você possa provar segurança de thread.
3. Verifique a Correção
- Recompile e confirme que todos os diagnósticos de concorrência foram resolvidos sem a introdução de novos avisos.
- Execute o conjunto de testes para verificar regressões — alterações de concorrência podem introduzir problemas sutis de tempo de execução, mesmo quando a compilação está limpa.
- Se a correção apresentar novos avisos, trate cada um como uma nova triagem (retorne à etapa 1) e resolva iterativamente até que a compilação esteja limpa e os testes passem.
Exemplos
Tipo vinculado à UI — adicionando @MainActor
// 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" }
}
Isolamento de conformidade de protocolo
// 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 */ }
}
Trabalho em segundo plano com @concurrent
// 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) }
}
Material de Referência
- Veja
references/swift-6-2-concurrency.mdpara alterações, padrões e exemplos do Swift 6.2. - Veja
references/approachable-concurrency.mdquando o projeto estiver optado pelo modo de concorrência acessível. - Veja
references/swiftui-concurrency-tour-wwdc.mdpara orientação de concorrência específica do SwiftUI.
Limitações
- Use esta habilidade apenas quando a tarefa corresponder claramente ao escopo descrito acima.
- Não trate a saída como um substituto para validação específica do ambiente, testes ou revisão especializada.
- Pare e peça esclarecimentos se os inputs, permissões, limites de segurança ou critérios de sucesso necessários estiverem faltando.
Perguntas frequentes
O que são 'atores' e 'Sendable'?
'Atores' são como caixas seguras para dados que evitam conflitos. 'Sendable' é uma marcação que garante que um tipo de dado pode ser compartilhado com segurança entre diferentes partes do programa.
Por que a concorrência é importante?
Em aplicativos modernos, muitas coisas acontecem ao mesmo tempo. A concorrência garante que essas tarefas não causem problemas, como travar a interface ou corromper dados.
O que significa 'isolamento de ator'?
Significa garantir que o código que acessa um 'ator' (ou dados protegidos por ele) só o faça de um lugar seguro, evitando que múltiplos acessos simultâneos causem erros.
Detalhes
Descrição original do autor
Review and fix Swift concurrency issues such as actor isolation and Sendable violations.
Popularidade
- Estrelas no GitHub
- 48 mil
- Posição no ranking
- #4296
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
00-andruia-consultant
Ajuda seu agente a iniciar ou melhorar projetos de IA. Ele analisa código, sugere ferramentas e cria planos de ação em espanhol.
sickn33/agentic-awesome-skills
007
Faz seu agente realizar auditorias de segurança e modelagem de ameaças. É útil para proteger projetos contra ataques e vulnerabilidades.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Ajuda seu agente a criar ou melhorar ferramentas de IA. Ele define como as ferramentas funcionam, escreve a documentação e valida a estrutura.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Faz seu agente criar um resumo sobre um setor específico. É útil para entender o contexto, regras, padrões de uso e riscos de um projeto, usando fontes confiáveis.
sickn33/agentic-awesome-skills
Skills parecidas
benchmark-optimization-loop
Faz seu agente melhorar a velocidade de algo de forma medida. Ele testa várias versões e escolhe a mais rápida que ainda funciona corretamente.
affaan-m/ECC
change-impact
Ajuda seu agente a analisar o impacto de mudanças no código antes de fazê-las. Ele compara o planejado com o real depois, cobrindo caminhos, dados, testes e documentação. É útil para mudanças arriscadas ou que afetam várias partes do sistema.
affaan-m/ECC
click-path-audit
Faz seu agente rastrear todos os botões e interações do usuário para achar bugs. Ele encontra problemas onde funções parecem funcionar sozinhas, mas falham juntas. Útil quando bugs persistem mesmo após depuração.
affaan-m/ECC