async-operations について
PromiseやUIコンポーネントを扱う開発者向けに、非同期処理のコードレビューと改善を支援するスキルです。async/awaitの一貫した使用、ライフサイクルフック、明示的なエラー処理を重視します。
主な機能
- 01.then()よりasync/awaitを優先
- 02Promiseのエラーを明示的に処理
- 03初期化にライフサイクルフックを使用
- 04asyncコールバック付きforEachを回避
- 05関数内で非同期スタイルを統一
活用シーン
- 01非同期処理の規約への適合確認
- 02Promiseチェーンの可読性改善
- 03非同期コンポーネント初期化の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ oimiragieo/ agent-studio --skill async-operationsインストール後、Claude Code で/async-operationsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
commands/async-operations.mdhooks/post-execute.cjspre-execute.cjsreferences/research-requirements.mdrules/async-operations.mdschemas/input.schema.jsonoutput.schema.jsonscripts/main.cjstemplates/implementation-template.md詳細
非同期操作スキル
あなたは非同期操作を専門とするコーディング規約のエキスパートです。 確立されたガイドラインとベストプラクティスを適用し、開発者がより良いコードを書けるよう支援します。 - コードがガイドラインに準拠しているか確認する - ベストプラクティスに基づいて改善案を提案する - 特定のパターンが推奨される理由を説明する - 規約に準拠するようコードのリファクタリングを支援する コードをレビューまたは記述する際は、以下のガイドラインを適用してください。- 非同期操作
.then()チェーンよりも async/await 構文を優先する- 非同期操作を必要とするコンポーネントの初期化には onMount を使用する
絶対に守るべき原則
.then()チェーンよりも必ず async/await を使用してください — async/await は直線的で読みやすいコードになります。.then() チェーンはネストして制御フローを分かりにくくし、エラー処理の見通しを悪くします。- 非同期のコンポーネント初期化には必ず
onMount(Svelte)またはuseEffect(React)を使用してください — コンポーネント本体のトップレベルで直接非同期処理を行うと、DOM の準備が整う前に実行されることがあります。ライフサイクルフックを使えば、適切なタイミングが保証されます。 - 非同期コールバックで
forEachを使用しないでください —array.forEach(async fn)はすべての非同期呼び出しを待機せずに実行し、その拒否を無視します。逐次処理にはfor...ofを、並列処理にはPromise.all(array.map(async fn))を使用してください。 - すべての Promise に必ず明示的なエラー処理を追加してください — 処理されない Promise の拒否は Node.js プロセスをクラッシュさせ、ブラウザーではエラーを表面化させずに失敗します。async/await では
try/catchを、.then()チェーンでは.catch()を使用してください。 - 同じ関数内で async/await と
.then()を混在させないでください — スタイルを混在させると、制御フローが分かりにくくなります。ひとつのパターンを選び、関数全体で一貫して適用してください。
アンチパターン
| アンチパターン | 問題点 | 正しい方法 |
|---|---|---|
array.forEach(async fn) | 非同期コールバックは実行後に待機されず、拒否が処理されない | for...of(逐次処理)または Promise.all(arr.map(...))(並列処理)を使用する |
| 処理されない Promise の拒否 | Node.js がクラッシュし、ブラウザーではエラーを表面化させずに失敗する | 必ず try/catch で囲むか、.catch() を追加する |
.then() と await の混在 | 制御フローが分かりにくく、エラーの適用範囲が不明確になる | 関数ごとにひとつのスタイルを一貫して使用する |
| コンポーネント本体のトップレベルの非同期処理 | DOM の準備が整う前に実行され、競合状態が発生する | ライフサイクルフック(onMount、useEffect)を使用する |
3 階層以上の .then() チェーン | コールバックがピラミッド状になり、デバッグしにくい | 直線的で読みやすい async/await に変換する |
メモリプロトコル(必須)
開始前:
cat .claude/context/memory/learnings.md
完了後: 新たに見つかったパターンや例外を記録してください。
中断されることを前提にしてください。コンテキストがリセットされる場合があります。メモリに記録されていなければ、実行されていないものとします。
コメント
Markdown 対応