Agent Skills by ALSEL
Anthropic Claudeデータ・分析⭐ リポ 0品質スコア 50/100

swift-concurrency

Swiftの並行処理に関する問題を診断し、コールバックベースのコードをasync/awaitに書き換えます。タスク、アクター、@MainActor、Sendable、データ競合、スレッド安全性、並行処理に関するコンパイラ・リンター警告など、Swift 6移行のガイドも提供します。

description の原文を見る

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

修正案を提案する前に:

  1. Package.swift または .pbxproj を分析して、Swift 言語モード、厳密な並行処理レベル、デフォルト分離、および今後の機能を決定します。これはマイグレーション作業だけでなく、常に行ってください。
  2. 正確な診断と対象のシンボルをキャプチャします。
  3. 分離境界を決定します: @MainActor、カスタムアクタ、アクタインスタンス分離、または nonisolated
  4. コードが UI バウンドであるか、メインアクタの外で実行される予定であるかを確認します。構造化されていないタスクを生成する場合、同期プレフィックス (最初の await までのすべて) を検査します: メインアクタアクセスが必ずしも必要でない場合は、@MainActor から開始するのではなく Task { @concurrent in ... } を使用し、サスペンション後にのみ MainActor.run でホップバックします。重要でない非メインラインの後に同じプレフィックス内でメインアクタ作業が続く場合 (例: print)、@concurrent を使用する理由はありません。遅延再試行、タイマー、バックオフタスクの場合は、待機と UI ミューテーションを分離します。スリープは、最終的な状態更新がメインアクタに属する場合でも、メインアクタの外にあることがよくあります。

並行処理の動作を変更するプロジェクト設定:

設定SwiftPM (Package.swift)Xcode (.pbxproj)
言語モードswiftLanguageVersions または -swift-version (// swift-tools-version: は信頼できるプロキシではありません)Swift Language Version
厳密な並行処理.enableExperimentalFeature("StrictConcurrency=targeted")SWIFT_STRICT_CONCURRENCY
デフォルト分離.defaultIsolation(MainActor.self)SWIFT_DEFAULT_ACTOR_ISOLATION
今後の機能.enableUpcomingFeature("NonisolatedNonsendingByDefault")SWIFT_UPCOMING_FEATURE_*

これらのいずれかが不明な場合は、マイグレーションに敏感なガイダンスを提供する前に開発者に確認するよう求めてください。推測しないでください。

ガードレール:

  • @MainActor をブランケット修正として推奨しないでください。コードが本当に UI バウンドである理由を正当化します。
  • 構造化された並行処理を構造化されていないタスクよりも優先します。Task.detached は明確な理由がある場合にのみ使用します。
  • @preconcurrency@unchecked Sendable、または nonisolated(unsafe) を推奨する場合は、ドキュメント化された安全性不変量とフォローアップ削除計画が必要です。
  • 最小限の安全な変更のために最適化します。マイグレーション中に無関係なアーキテクチャをリファクタリングしないでください。
  • コースリファレンスはより深い学習用のみです。慎重に使用し、開発者の質問に答えるのに本当に役立つ場合のみ使用します。

Quick Fix Mode

以下のすべてが当てはまる場合は Quick Fix Mode を使用します:

  • 問題は 1 つのファイルまたは 1 つのタイプに限定されています。
  • 分離境界は明確です。
  • 修正は 1〜2 の動作保持ステップで説明できます。

以下のいずれかが当てはまる場合は Quick Fix Mode をスキップします:

  • ビルド設定またはデフォルト分離が不明です。
  • 問題がモジュール境界を越えるか、パブリック API の動作を変更します。
  • 可能性の高い修正は安全でないエスケープハッチに依存しています。

Common Diagnostics

診断まず確認すること最小限の安全な修正エスカレーション先
Main actor-isolated ... cannot be used from a nonisolated contextこれは本当に UI バウンドですか?呼び出し元を @MainActor に分離するか、メインアクタの所有権が正しい場合にのみ await MainActor.run { ... } を使用します。references/actors.md, references/threading.md
Actor-isolated type does not conform to protocol要件はアクタ上で実行する必要がありますか?分離されたコンフォーマンスを優先します (例: extension Foo: @MainActor SomeProtocol)。nonisolated は本当に分離されていない要件にのみ使用します。references/actors.md
Sending value of non-Sendable type ... risks causing data racesどの分離境界が越えられていますか?アクセスを 1 つのアクタ内に保つか、転送された値を不変/値型に変換します。references/sendable.md, references/threading.md
SwiftLint async_without_awaitasync はプロトコル、オーバーライド、または @concurrent によって実際に必要ですか?async を削除するか、理由付きで狭い抑制を使用します。偽の await を追加しないでください。references/linting.md
wait(...) is unavailable from asynchronous contextsこれはレガシー XCTest 非同期待機ですか?await fulfillment(of:) または Swift Testing 相当品に置き換えます。references/testing.md
Core Data 並行処理警告NSManagedObject インスタンスがコンテキストやアクタを越えていますか?NSManagedObjectID を渡すか、Sendable 値型にマップします。references/core-data.md
Thread.current unavailable from asynchronous contextsスレッドによるデバッグをしていますか、分離によってデバッグしていますか?分離の観点から推論し、Instruments/デバッガを代わりに使用します。references/threading.md
SwiftLint 並行処理関連警告どの特定のリントルールがトリガーされましたか?references/linting.md をルール意図と優先修正に使用します。ダミー await は避けてください。references/linting.md

When Quick Fixes Fail

  1. まだ確認されていない場合はプロジェクト設定を収集します。
  2. タイプが越える分離境界を再評価します。
  3. より深い修正については、一致するリファレンスファイルにルーティングします。
  4. 修正が動作を変更する可能性がある場合は、不変量をドキュメント化し、検証ステップを追加します。

Smallest Safe Fixes

データレース安全性を満たしながら動作を保持する変更を優先します:

  • UI バウンド状態: タイプまたはメンバを @MainActor に分離します。
  • 共有可変状態: アクタの後ろに移動するか、状態が UI 所有の場合のみ @MainActor を使用します。
  • バックグラウンド作業: 作業が呼び出し元分離からホップオフする必要がある場合、@concurrent でマークされた async API を使用します。作業が呼び出し元分離を安全に継承できる場合、@concurrent なしで nonisolated を使用します。Task を生成する場合、エントリ分離をその同期プレフィックスと一致させます。最初の await の前に何もメインアクタが必要ない場合、Task { @concurrent in ... } を使用し、UI 更新は await MainActor.run { ... } 経由でホップバックします。プレフィックスが重要でない非メインステートメントとメインアクタ作業を混ぜている場合は、継承された @MainActor スタートを保持します。安価なラインを offmain に分割することは余分なホップの価値がありません。
  • Sendability の問題: @unchecked Sendable よりも不変値と明示的な境界を優先します。

Concurrency Tool Selection

必要なものツールキーガイダンス
単一の非同期操作async/await順序付き非同期作業のデフォルト選択
固定並列操作async letコンパイル時に既知の数。スロー時に自動キャンセル
動的並列操作withTaskGroup未知の数。構造化 — スコープ終了時に子をキャンセル
同期 → 非同期ブリッジTask { }アクタコンテキストを継承します。ドキュメント化された理由がある場合のみ Task.detached を使用
共有可変状態actorロック/キューより優先。分離セクションを小さく保つ
UI バウンド状態@MainActor本当に UI 関連のコードの場合のみ。分離を正当化します

Common Scenarios

UI 更新を含むネットワークリクエスト

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

配列アイテムを並列で処理

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

Task のエントリ分離をその同期プレフィックス ({ から最初の await まで) と一致させます。

  • プレフィックス内に @MainActor が必要なものがあれば、継承された @MainActor スタートを保持します。
  • プレフィックス内に @MainActor が必要なものがなければ、Task { @concurrent in ... } を優先し、UI 所有のミューテーションに対してのみホップバックします。
// ❌ 同期プレフィックスは空です。最初の作業がホップオフします
Task {
    await hopToOtherIsolationDomain()
}

// ❌ 同期プレフィックスは `print` のみ (重要でない、非メイン)。最初の await がホップオフします
Task {
    print("Also not main-thread-bound")
    await hopToOtherIsolationDomain()
}

// ✅ メインアクタの外で開始し、UI 作業に対してのみホップバック
Task { @concurrent in
    await hopToOtherIsolationDomain()
    await MainActor.run { updateUI() }
}

// ✅ 同期プレフィックスはメインアクタ作業を含みます — 継承を保持
Task {
    print("debug")              // 重要でない、非メイン — 乗り込む
    self.isLoading = true       // @MainActor が必要、任意の await の前
    await fetchData()
}

Swift 6 Migration Quick Guide

Swift 6 の主な変更:

  • 厳密な並行処理チェック がデフォルトで有効
  • 完全なデータレース安全性 コンパイル時に
  • Sendable 要件 境界に強制
  • 分離チェック すべての非同期境界に対して

Migration Validation Loop

各マイグレーション変更に対してこのサイクルを適用します:

  1. ビルドswift build または Xcode ビルドを実行して新しい診断を表示します
  2. 修正 — 一度に 1 つのエラーカテゴリに対処します (例: 最初にすべての Sendable 問題)
  3. リビルド — 修正がクリーンにコンパイルされることを確認してから先に進みます
  4. テスト — テストスイートを実行してリグレッションをキャッチします (swift test または Cmd+U)
  5. 次に進む前に すべての診断が解決されるまで、ファイル/モジュール内で

修正が新しい警告を導入する場合、それらを続行する前に解決します。複数の無関係な修正を決してバッチ処理しないでください — コミットを小さく、レビュー可能に保ちます。

詳細なマイグレーション手順については、references/migration.md を参照してください。

Reference Router

質問に一致する最小のリファレンスを開きます:

  • 基礎
    • references/async-await-basics.md — async/await 構文、実行順序、async let、URLSession パターン
    • references/tasks.md — Task ライフサイクル、キャンセル、優先度、タスクグループ、構造化 vs 構造化されていない
    • references/actors.md — アクタ分離、@MainActor、グローバルアクタ、再入性、カスタムエグゼキューター、Mutex
    • references/sendable.md — Sendable コンフォーマンス、値/参照型、@unchecked、リージョン分離
    • references/threading.md — 実行モデル、サスペンションポイント、Swift 6.2 分離動作
  • ストリーム
    • references/async-sequences.md — AsyncSequence、AsyncStream、通常の非同期メソッドと使用時期
    • references/async-algorithms.md — デバウンス、スロットル、マージ、combineLatest、チャネル、タイマー
  • 応用トピック
    • references/testing.md — Swift Testing 優先、XCTest フォールバック、リークチェック
    • references/performance.md — Instruments でのプロファイリング、サスペンションポイント削減、実行戦略
    • references/memory-management.md — タスク内の保持サイクル、メモリ安全パターン
    • references/core-data.md — NSManagedObject sendability、カスタムエグゼキューター、分離競合
  • マイグレーションおよびツール
    • references/migration.md — Swift 6 マイグレーション戦略、クロージャから非同期への変換、@preconcurrency、FRP マイグレーション
    • references/linting.md — 並行処理に焦点を当てたリントルールと SwiftLint async_without_await
  • 用語集
    • references/glossary.md — コア並行処理用語の簡単な定義

Verification Checklist

並行処理コードを変更する場合:

  1. 診断を解釈する前にビルド設定を再確認します。
  2. ビルドし、1 つのエラーカテゴリをクリアしてから先に進みます。無関係な修正を同じ変更にバッチ処理しないでください。
  3. テストを実行します。特にアクタ、ライフタイム、キャンセル感度テスト。
  4. 推測する代わりに Instruments を使用してパフォーマンスクレームを検証します。
  5. 長命タスクの割り当て解除とキャンセル動作を検証します。
  6. 長実行操作で Task.isCancelled をチェックします。
  7. アクタ分離または Mutex がより安全に所有権を表現する場合、非同期コンテキストでセマフォやアドホックロックを使用しないでください。

: このスキルは、Antoine van der Lee による包括的な Swift Concurrency Course に基づいています。

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
avdlee
リポジトリ
avdlee/swift-concurrency-agent-skill
ライセンス
MIT
最終更新
不明

Source: https://github.com/avdlee/swift-concurrency-agent-skill / ライセンス: MIT

関連スキル

OpenAIデータ・分析⭐ リポ 1,451

hugging-face-trackio

Trackioを使用してMLトレーニング実験を追跡・可視化できます。トレーニング中のメトリクスログ記録(Python API)、トレーニング診断のアラート発火、ログされたメトリクスの取得・分析(CLI)が必要な場合に活用してください。リアルタイムダッシュボード表示、Webhookを使用したアラート、HF Space同期、自動化向けのJSON出力に対応しています。

by gradio-app
汎用データ・分析⭐ リポ 855

btc-bottom-model

ビットコインのサイクルタイミングモデルで、加重スコアリングシステムを搭載しています。日次パルス(4指標、32ポイント)とウィークリー構造(9指標、68ポイント)の2カテゴリーにわたる13の指標を追跡し、0~100のマーケットヒートスコアを算出します。ETFフロー、ファンディングレート、ロング/ショート比率、恐怖・貪欲指数、LTH-MVRV、NUPL、SOPR(LTH+STH)、LTH供給率、移動平均倍率(365日MA、200週MA)、週次RSI、出来高トレンドに対応します。市場サイクル全体を通じて買いと売りの両方の推奨を提供します。ビットコインの底値拾い、BTCサイクルポジション、買い時・売り時、オンチェーン指標、MVRV、NUPL、SOPR、LTH動向、ETFの流出入、ファンディングレート、恐怖指数、ビットコインが過熱状態か、マイナーコスト、暗号資産市場のセンチメント、BTCのポジションサイジング、「今ビットコインを買うべきか」「BTCが天井をつけているか」「オンチェーン指標は何を示しているか」といった質問の際にこのスキルを活用します。

by star23
Anthropic Claudeデータ・分析⭐ リポ 380

protein_solubility_optimization

タンパク質の溶解性最適化 - タンパク質の溶解性を最適化します。タンパク質の特性を計算し、溶解性と親水性を予測し、有効な変異を提案します。タンパク質配列の特性計算、タンパク質機能の予測、親水性計算、ゼロショット配列予測を含むタンパク質エンジニアリング業務に使用できます。3つのSCPサーバーから4つのツールを統合しています。

by SpectrAI-Initiative
Anthropic Claudeデータ・分析⭐ リポ 1,743

research-lookup

Parallel Chat APIまたはPerplexity sonar-pro-searchを使用して、最新の研究情報を検索できます。学術論文の検索にも対応しています。クエリは自動的に最適なバックエンドにルーティングされるため、論文の検索、研究データの収集、科学情報の検証に活用できます。

by K-Dense-AI
Anthropic Claudeデータ・分析⭐ リポ 299

tree-formatting

ggtree(R)またはiTOL(ウェブ)を使用して、系統樹の可視化とフォーマットを行います。系統樹を図として描画する際、ツリーレイアウトの選択、分類学に基づく枝やラベルの色付け、クレードの折りたたみ、サポート値の表示、またはツリーへのオーバーレイ追加が必要な場合に使用してください。系統推定(protein-phylogenyスキルを使用)やドメイン注釈(今後の独立したスキル)には使用しないでください。

by majiayu000
汎用データ・分析⭐ リポ 145

querying-indonesian-gov-data

インドネシア政府の50以上のAPIとデータソースに接続できます。BPJPH(ハラール認証)、BOM(食品安全)、OJK(金融適正性)、BPS(統計)、BMKG(気象・地震)、インドネシア中央銀行(為替レート)、IDX(株式)、CKAN公開データポータル、pasal.id(第三者法MCP)に対応しています。インドネシア政府データを活用したアプリ開発、.go.idウェブサイトのスクレイピング、ハラール認証の確認、企業の法的適正性の検証、金融機関ステータスの照会、またはインドネシアMCPサーバーへの接続時に使用できます。CSRF処理、CKAN API使用方法、IP制限回避など、すぐに実行可能なPythonパターンを含んでいます。

by suryast
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: avdlee · avdlee/swift-concurrency-agent-skill · ライセンス: MIT