Remote OpenClaw
Menu
SkillsMCPPluginsFree guideDigestSubmit MCPSkillPluginMCPMCP, plugin, or skillAdvertise
Remote OpenClaw
SkillsMCPPluginsFree guideDigestSubmit MCPSkillPluginMCPMCP, plugin, or skillAdvertise

Featured

Deploy OpenClaw in 60 seconds — 20% off logoDeploy OpenClaw in 60 seconds — 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger →
Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger →
Turn any website into LLM-ready data with Firecrawl logoTurn any website into LLM-ready data with Firecrawl

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits plus 10% off through our link.

Try Firecrawl free →
Your own AI agent, running 24/7 with QwikClaw logoYour own AI agent, running 24/7 with QwikClaw

QwikClaw sets up and runs an always-on OpenClaw agent for you. One click, no config files, no server setup.

Deploy now →
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data — no proxies, no parsers, no maintenance.

Start building free →
Deploy OpenClaw in 60 seconds — 20% off logoDeploy OpenClaw in 60 seconds — 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger →
Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger →
Turn any website into LLM-ready data with Firecrawl logoTurn any website into LLM-ready data with Firecrawl

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits plus 10% off through our link.

Try Firecrawl free →
Your own AI agent, running 24/7 with QwikClaw logoYour own AI agent, running 24/7 with QwikClaw

QwikClaw sets up and runs an always-on OpenClaw agent for you. One click, no config files, no server setup.

Deploy now →
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data — no proxies, no parsers, no maintenance.

Start building free →
Deploy OpenClaw in 60 seconds — 20% off logoDeploy OpenClaw in 60 seconds — 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger →
Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger →
Turn any website into LLM-ready data with Firecrawl logoTurn any website into LLM-ready data with Firecrawl

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits plus 10% off through our link.

Try Firecrawl free →
Your own AI agent, running 24/7 with QwikClaw logoYour own AI agent, running 24/7 with QwikClaw

QwikClaw sets up and runs an always-on OpenClaw agent for you. One click, no config files, no server setup.

Deploy now →
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data — no proxies, no parsers, no maintenance.

Start building free →
Skills/avdlee/swift-concurrency-agent-skill/swift-concurrency
swift-concurrency logo

swift-concurrency

avdlee/swift-concurrency-agent-skill
12K installs2K stars
Run it on Hostinger →up to 70% off + an extra 10% with code ZACAARON10Free API →

Installation

npx skills add https://github.com/avdlee/swift-concurrency-agent-skill --skill swift-concurrency

Summary

Diagnose Swift Concurrency issues, refactor callback-based code to async/await, and guide Swift 6 migration when working with tasks, actors, @MainActor, Sendable, data races, thread safety, or concurrency-related compiler and linter warnings.

SKILL.md

Swift Concurrency

Fast Path

Before proposing a fix:

  1. Analyze Package.swift or .pbxproj to determine Swift language mode, strict concurrency level, default isolation, and upcoming features. Do this always, not only for migration work.
  2. Capture the exact diagnostic and offending symbol.
  3. Determine the isolation boundary: @MainActor, custom actor, actor instance isolation, or nonisolated.
  4. Confirm whether the code is UI-bound or intended to run off the main actor. When spawning unstructured tasks, inspect the synchronous prefix (everything before the first await): start on @MainActor only when that prefix truly needs main-actor access; otherwise use Task { @concurrent in ... } and hop back with MainActor.run only after the suspension. A trivial non-main line (for example, print) followed by main-actor work in the same prefix is not a reason to use @concurrent. For delayed retries, timers, and backoff tasks, separate the waiting from the UI mutation. The sleep often belongs off the main actor even when the final state update belongs on it.

Project settings that change concurrency behavior:

SettingSwiftPM (Package.swift)Xcode (.pbxproj)
Language modeswiftLanguageVersions or -swift-version (// swift-tools-version: is not a reliable proxy)Swift Language Version
Strict concurrency.enableExperimentalFeature("StrictConcurrency=targeted")SWIFT_STRICT_CONCURRENCY
Default isolation.defaultIsolation(MainActor.self)SWIFT_DEFAULT_ACTOR_ISOLATION
Upcoming features.enableUpcomingFeature("NonisolatedNonsendingByDefault")SWIFT_UPCOMING_FEATURE_*
Approachable ConcurrencyN/A (use individual upcoming features)SWIFT_APPROACHABLE_CONCURRENCY

Xcode 26 note: New projects created in Xcode 26 will often start with SWIFT_DEFAULT_ACTOR_ISOLATION = MainActor and SWIFT_APPROACHABLE_CONCURRENCY = YES enabled by default. Treat these as likely defaults for newly created projects, not as confirmed settings.

If any of these are unknown, ask the developer to confirm them before giving migration-sensitive guidance. Do not guess, even for new Xcode 26 projects.

Guardrails:

  • Do not recommend @MainActor as a blanket fix. Justify why the code is truly UI-bound.
  • Prefer structured concurrency over unstructured tasks. Use Task.detached only with a clear reason.
  • If recommending @preconcurrency, @unchecked Sendable, or nonisolated(unsafe), require a documented safety invariant and a follow-up removal plan.
  • Optimize for the smallest safe change. Do not refactor unrelated architecture during migration.
  • Course references are for deeper learning only. Use them sparingly and only when they clearly help answer the developer's question.

Quick Fix Mode

Use Quick Fix Mode when all of these are true:

  • The issue is localized to one file or one type.
  • The isolation boundary is clear.
  • The fix can be explained in 1-2 behavior-preserving steps.

Skip Quick Fix Mode when any of these are true:

  • Build settings or default isolation are unknown.
  • The issue crosses module boundaries or changes public API behavior.
  • The likely fix depends on unsafe escape hatches.

Common Diagnostics

DiagnosticFirst checkSmallest safe fixEscalate to
Main actor-isolated ... cannot be used from a nonisolated contextIs this truly UI-bound?Isolate the caller to @MainActor or use await MainActor.run { ... } only when main-actor ownership is correct.references/actors.md, references/threading.md
Actor-isolated type does not conform to protocolMust the requirement run on the actor?Prefer isolated conformance (e.g., extension Foo: @MainActor SomeProtocol); use nonisolated only for truly nonisolated requirements.references/actors.md
Sending value of non-Sendable type ... risks causing data racesWhat isolation boundary is being crossed?Keep access inside one actor, or convert the transferred value to an immutable/value type.references/sendable.md, references/threading.md
SwiftLint async_without_awaitIs async actually required by protocol, override, or @concurrent?Remove async, or use a narrow suppression with rationale. Never add fake awaits.references/linting.md
wait(...) is unavailable from asynchronous contextsIs this legacy XCTest async waiting?Replace with await fulfillment(of:) or Swift Testing equivalents.references/testing.md
Core Data concurrency warningsAre NSManagedObject instances crossing contexts or actors?Pass NSManagedObjectID or map to a Sendable value type.references/core-data.md
Thread.current unavailable from asynchronous contextsAre you debugging by thread instead of isolation?Reason in terms of isolation and use Instruments/debugger instead.references/threading.md
SwiftLint concurrency-related warningsWhich specific lint rule triggered?Use references/linting.md for rule intent and preferred fixes; avoid dummy awaits.references/linting.md
... cannot satisfy conformance requirement for a 'Sendable' type parameter (SendableMetatype)Does the conformance carry global-actor isolation?Remove actor isolation from the conformance, or avoid passing the metatype across isolation boundaries. See SendableMetatype section in references/actors.md.references/actors.md

When Quick Fixes Fail

  1. Gather project settings if not already confirmed.
  2. Re-evaluate which isolation boundaries the type crosses.
  3. Route to the matching reference file for a deeper fix.
  4. If the fix may change behavior, document the invariant and add verification steps.

Smallest Safe Fixes

Prefer changes that preserve behavior while satisfying data-race safety:

  • UI-bound state: isolate the type or member to @MainActor.
  • Shared mutable state: move it behind an actor, or use @MainActor only if the state is UI-owned.
  • Background work: when work must hop off caller isolation, use an async API marked @concurrent; when work can safely inherit caller isolation, use nonisolated without @concurrent. When spawning a Task, match entry isolation to its synchronous prefix. If nothing before the first await needs the main actor, use Task { @concurrent in ... } and hop back via await MainActor.run { ... } for the UI update. If the prefix mixes a trivial non-main statement with main-actor work, keep the inherited @MainActor start—splitting the cheap line off-main is not worth an extra hop.
  • Sendability issues: prefer immutable values and explicit boundaries over @unchecked Sendable.

Concurrency Tool Selection

NeedToolKey Guidance
Single async operationasync/awaitDefault choice for sequential async work
Fixed parallel operationsasync letKnown count at compile time; auto-cancelled on throw
Dynamic parallel operationswithTaskGroupUnknown count; structured — cancels children on scope exit
Sync → async bridgeTask { }Inherits actor context; use Task.detached only with documented reason
Shared mutable stateactorPrefer over locks/queues; keep isolated sections small
UI-bound state@MainActorOnly for truly UI-related code; justify isolation

Common Scenarios

Network request with UI update

Task { @concurrent in
    let data = try await fetchData()
    await MainActor.run { self.updateUI(with: data) }
}

Processing array items in parallel

await withTaskGroup(of: ProcessedItem.self) { group in
    for item in items {
        group.addTask { await process(item) }
    }
    for await result in group {
        results.append(result)
    }
}

Task entry isolation

Match a Task's entry isolation to its synchronous prefix (everything from { to the first await).

  • If anything in that prefix needs @MainActor, keep the inherited @MainActor start.
  • If nothing in that prefix needs @MainActor, prefer Task { @concurrent in ... } and hop back only for UI-owned mutation.
// ❌ Synchronous prefix is empty; first work hops away
Task {
    await hopToOtherIsolationDomain()
}

// ❌ Synchronous prefix is only `print` (trivial, non-main); first await hops away
Task {
    print("Also not main-thread-bound")
    await hopToOtherIsolationDomain()
}

// ✅ Start off the main actor, hop back only for UI work
Task { @concurrent in
    await hopToOtherIsolationDomain()
    await MainActor.run { updateUI() }
}

// ✅ Synchronous prefix DOES contain main-actor work — keep inheritance
Task {
    print("debug")              // trivial, non-main — rides along
    self.isLoading = true       // needs @MainActor, before any await
    await fetchData()
}

Swift 6 Migration Quick Guide

Key changes in Swift 6:

  • Strict concurrency checking enabled by default
  • Complete data-race safety at compile time
  • Sendable requirements enforced on boundaries
  • Isolation checking for all async boundaries

Migration Validation Loop

Apply this cycle for each migration change:

  1. Build — Run swift build or Xcode build to surface new diagnostics
  2. Fix — Address one category of error at a time (e.g., all Sendable issues first)
  3. Rebuild — Confirm the fix compiles cleanly before moving on
  4. Test — Run the test suite to catch regressions (swift test or Cmd+U)
  5. Only proceed to the next file/module when all diagnostics are resolved

If a fix introduces new warnings, resolve them before continuing. Never batch multiple unrelated fixes — keep commits small and reviewable.

For detailed migration steps, see references/migration.md.

Reference Router

Open the smallest reference that matches the question:

  • Foundations
  • references/async-await-basics.md — async/await syntax, execution order, async let, URLSession patterns
  • references/tasks.md — Task lifecycle, cancellation, priorities, task groups, structured vs unstructured
  • references/actors.md — Actor isolation, @MainActor, global actors, reentrancy, custom executors, Mutex
  • references/sendable.md — Sendable conformance, value/reference types, @unchecked, region isolation
  • references/threading.md — Execution model, suspension points, Swift 6.2 isolation behavior
  • Streams
  • references/async-sequences.md — AsyncSequence, AsyncStream, when to use vs regular async methods
  • references/async-algorithms.md — Debounce, throttle, merge, combineLatest, channels, timers
  • Applied topics
  • references/testing.md — Swift Testing first, XCTest fallback, leak checks
  • references/performance.md — Profiling with Instruments, reducing suspension points, execution strategies
  • references/memory-management.md — Retain cycles in tasks, memory safety patterns
  • references/core-data.md — NSManagedObject sendability, custom executors, isolation conflicts
  • Migration and tooling
  • references/migration.md — Swift 6 migration strategy, closure-to-async conversion, @preconcurrency, FRP migration
  • references/linting.md — Concurrency-focused lint rules and SwiftLint async_without_await
  • Glossary
  • references/glossary.md — Quick definitions of core concurrency terms

Verification Checklist

When changing concurrency code:

  1. Re-check build settings before interpreting diagnostics.
  2. Build and clear one category of errors before moving on. Do not batch unrelated fixes into the same change.
  3. Run tests, especially actor-, lifetime-, and cancellation-sensitive tests.
  4. Use Instruments for performance claims instead of guessing.
  5. Verify deallocation and cancellation behavior for long-lived tasks.
  6. Check Task.isCancelled in long-running operations.
  7. Never use semaphores or ad hoc locking in async contexts when actor isolation or Mutex would express ownership more safely.

---

Note: This skill is based on the comprehensive Swift Concurrency Course by Antoine van der Lee.

Score

0–100
76/ 100

Grade

B

Popularity28/30

12,466 installs — strong, widely used. Source repo has 1,539 GitHub stars.

Completeness27/30

Documented: full SKILL.md body, description, one-line install. Missing: category/license metadata.

Trust15/25

Community skill with a public GitHub source repository you can review.

Freshness6/15

No update timestamp is tracked for this skill in our catalog.

Scored automatically from popularity, completeness, trust, and freshness — computed only from data in our catalog, never fabricated.

Proud of your score? Add this badge to your README.

Paste a snippet into your GitHub README. The badge updates automatically and links back to this page.

Swift Concurrency skill score badge previewScore badge

Markdown

[![Swift Concurrency skill](https://www.remoteopenclaw.com/skills/avdlee/swift-concurrency-agent-skill/swift-concurrency/badges/score.svg)](https://www.remoteopenclaw.com/skills/avdlee/swift-concurrency-agent-skill/swift-concurrency)

HTML

<a href="https://www.remoteopenclaw.com/skills/avdlee/swift-concurrency-agent-skill/swift-concurrency"><img src="https://www.remoteopenclaw.com/skills/avdlee/swift-concurrency-agent-skill/swift-concurrency/badges/score.svg" alt="Swift Concurrency skill"/></a>

Swift Concurrency FAQ

How do I install the Swift Concurrency skill?

Run “npx skills add https://github.com/avdlee/swift-concurrency-agent-skill --skill swift-concurrency” in your terminal. The skill is added to your agent's skills directory and picked up automatically on the next run — no restart or extra configuration needed.

What does the Swift Concurrency skill do?

Diagnose Swift Concurrency issues, refactor callback-based code to async/await, and guide Swift 6 migration when working with tasks, actors, @MainActor, Sendable, data races, thread safety, or concurrency-related compiler and linter warnings. The full SKILL.md on this page shows the exact instructions the skill gives your agent.

Is the Swift Concurrency skill free?

Yes. Swift Concurrency is a free, open-source skill published from avdlee/swift-concurrency-agent-skill. As with any third-party skill, review the source repository before installing it into an agent with sensitive access.

Does Swift Concurrency work with Claude Code and OpenClaw?

Yes. Skills use the portable SKILL.md format, so Swift Concurrency works with Claude Code, OpenClaw, Codex, Hermes, and any other agent that reads SKILL.md skills.

Featured

Deploy OpenClaw in 60 seconds — 20% off logoDeploy OpenClaw in 60 seconds — 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger →
Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger →
Turn any website into LLM-ready data with Firecrawl logoTurn any website into LLM-ready data with Firecrawl

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits plus 10% off through our link.

Try Firecrawl free →
Your own AI agent, running 24/7 with QwikClaw logoYour own AI agent, running 24/7 with QwikClaw

QwikClaw sets up and runs an always-on OpenClaw agent for you. One click, no config files, no server setup.

Deploy now →
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data — no proxies, no parsers, no maintenance.

Start building free →
Deploy OpenClaw in 60 seconds — 20% off logoDeploy OpenClaw in 60 seconds — 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger →
Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger →
Turn any website into LLM-ready data with Firecrawl logoTurn any website into LLM-ready data with Firecrawl

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits plus 10% off through our link.

Try Firecrawl free →
Your own AI agent, running 24/7 with QwikClaw logoYour own AI agent, running 24/7 with QwikClaw

QwikClaw sets up and runs an always-on OpenClaw agent for you. One click, no config files, no server setup.

Deploy now →
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data — no proxies, no parsers, no maintenance.

Start building free →
Deploy OpenClaw in 60 seconds — 20% off logoDeploy OpenClaw in 60 seconds — 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger →
Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger →
Turn any website into LLM-ready data with Firecrawl logoTurn any website into LLM-ready data with Firecrawl

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits plus 10% off through our link.

Try Firecrawl free →
Your own AI agent, running 24/7 with QwikClaw logoYour own AI agent, running 24/7 with QwikClaw

QwikClaw sets up and runs an always-on OpenClaw agent for you. One click, no config files, no server setup.

Deploy now →
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data — no proxies, no parsers, no maintenance.

Start building free →
View on GitHub

Recommended skills

Browse all →
find-skills logo

find-skills

vercel-labs/skills

2.7M installsInstall
frontend-design logo

frontend-design

anthropics/skills

720K installsInstall
grill-me logo

grill-me

mattpocock/skills

701K installsInstall
agent-browser logo

agent-browser

vercel-labs/agent-browser

596K installsInstall
grill-with-docs logo

grill-with-docs

mattpocock/skills

594K installsInstall
vercel-react-best-practices logo

vercel-react-best-practices

vercel-labs/agent-skills

591K installsInstall

Browse

Skills by category

Frontend250Git198Data154Testing120Design105Docs103Security96Automation87Backend76Devops37Productivity29Mcp23

Related guides

Hand-picked reading to help you choose, install, and use agent skills.

Guide10 Openclaw Skills Every Nextjs Developer NeedsGuideHow To Use Openclaw Skills For Database MigrationsGuideBest Openclaw Skills 2026

Remote OpenClaw

AI agent skills directory, marketplace, and workflow hub for OpenClaw, Hermes Agent, Claude Code, Codex, and MCP-powered operator stacks.

The Agent Stack: weekly agent tooling digest, free.

Explore

  • Home
  • Skills Directory
  • Claude Code Skills
  • Codex Skills
  • MCP Clients
  • Marketplace
  • Hermes Ecosystem
  • Free guide
  • Learn
  • OpenClaw for Creators
  • OpenClaw for Founders
  • Blog
  • The Agent Stack (Digest)

More

  • Submit a Tool
  • Advertise
  • Playbook
  • Free Tools
  • API
  • Shipping
  • Contact
  • Terms
  • Privacy

Know a company that should advertise here? Refer them and earn 10% — up to $300 per referral.

© 2026 Remote OpenClaw
Fazier badgeFeatured on Twelve ToolsFeatured on Wired BusinessRemote OpenClaw - Featured on AI Agents DirectoryListed on Turbo0Featured on Uneed