axiom-performance について
axiom-performanceは、Appleプラットフォーム開発者向けのパフォーマンス診断スキル集です。メモリ、ハング、起動、消費電力、Swiftの性能問題を適切な資料へ案内し、Instrumentsとコマンドライン分析も扱います。
主な機能
- 01メモリリークとメモリ問題の診断
- 02Instrumentsとxctraceによる性能分析
- 03ハング、フリーズ、起動のトラブル対応
- 04バッテリーと消費電力の診断資料
- 05Swift性能分析と監査への案内
活用シーン
- 01メモリ使用量の増加やリークを調査する
- 02ハング、フリーズ、起動遅延を分析する
- 03バッテリー消耗やデバイスの発熱を調べる
- 04性能トレースを比較して回帰を確認する
MCP 対応
MCP経由で`axiom_get_agent`からエージェントの指針を取得できると記載されています。MCPサーバーのツールやリソースについては説明していません。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ charleswiltgen/ axiom --skill axiom-performanceインストール後、Claude Code で/axiom-performanceを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
skills/app-launch.mdenergy-auditor.mdenergy-diag.mdenergy-ref.mdenergy.mdhang-diagnostics.mdmemory-auditor.mdmemory-debugging.mdmetrickit-ref.mdobjc-block-retain-cycles.mdperformance-profiling.mdswift-performance-analyzer.mdswift-performance.mdtrace-comparison.mdxctrace-ref.md詳細
パフォーマンス
メモリリーク、実行速度の低下、バッテリー消耗、プロファイリングなど、パフォーマンスに関する問題には必ずこのスキルを使用してください。
Claude Code に同梱されているツール: command -v <tool> で見つからない場合(フックが無効、または --bare の場合)は、名前だけを指定する代わりに <plugin-root>/tools/<tool> を使用してください。<plugin-root> は、このスキルの Base directory for this skill: パスの2階層上にあります。
Axiom エージェントを起動できませんか? このルーターからエージェントに案内された場合は、その手順をその場で実行してください。MCP 経由では
axiom_get_agentが手順を返します。それ以外の場合は、以下のファイルを読んでください。必要なのはファイルの検索と読み取りだけです。ここで利用可能なファイル:
skills/energy-auditor.md、skills/memory-auditor.md、skills/swift-performance-analyzer.md。ほかのエージェントも、MCP 経由なら
axiom_get_agentから取得できます。そのxclog、xcsym、xcprofの手順を、axiom_xclog_*、axiom_xcsym_*、axiom_xcprof_*ツールで実行してください。それ以外の場合は、Axiom のスキルからskills/<agent>.mdを検索してください。見つからない場合は、このスイートのスキルと、PATH上にある Axiom ツールを使って自分で作業してください。
使用するタイミング
以下の場合に、このルーターを使用してください。
- アプリの動作が遅い、または重く感じられる
- メモリ使用量が時間の経過とともに増加する
- バッテリーの消耗が速い
- 使用中にデバイスが熱くなる
- バッテリー設定でエネルギー使用量が多い
- Instruments でパフォーマンスを診断する
- メモリリークや保持サイクルがある
- メモリ警告が表示されてアプリがクラッシュする
振り分けのロジック
メモリの問題
メモリリーク(Swift) → skills/memory-debugging.md を参照
- 体系的なリーク診断
- よくある5つのリークパターン
- Instruments のワークフロー
deinitが呼び出されない
メモリリークのスキャン → memory-auditor エージェントまたは /axiom:audit memory を起動(5段階のセマンティック監査:リソースの所有関係のマッピング、6つのリークパターンの検出、クリーンアップ漏れの推定、複合リスクの関連付け、ライフサイクルの健全性のスコアリング)
メモリリーク(Objective-C ブロック) → skills/objc-block-retain-cycles.md を参照
- ブロックの保持サイクル
- weak-strong パターン
- ネットワークコールバックのリーク
パフォーマンスのプロファイリング
パフォーマンスのプロファイリング(GUI) → skills/performance-profiling.md を参照
- Time Profiler(CPU)。分散したオーバーヘッドには Top Functions モードも使用します(
OS27) - Allocations(メモリ増加)
- Core Data のプロファイリング(N+1 クエリ)
- ツール選択の判断ツリー
- Instruments 27 の Run Comparisons、Swift executors instrument、Foundation Models instrument、Xcode 27 Organizer(Storage/hitches メトリクス、Metric Goals、Generate Recommendations)
自動プロファイリング(CLI) → skills/xctrace-ref.md を参照
- ヘッドレスの xctrace プロファイリング
- CI/CD 連携パターン
- コマンドラインでのトレース記録
- プログラムによるトレース分析
自動プロファイルの実行 → performance-profiler エージェントまたは /axiom:profile を使用
- xctrace でトレースを記録
- データをエクスポートして分析
- 重要度とともに調査結果を報告
2つのトレースを比較/リグレッションを検出 → skills/trace-comparison.md または /axiom:compare-traces を参照
- この変更でホットパスが遅くなりましたか?関数レベルの CPU 使用率の差分を確認します
xcprof compare --fail-on-regressionによる CI ゲーティング(ゼロ以外の終了コード)- リグレッションと改善の判定、重要度の順位付け、終了コードの意味
ハング/フリーズの問題
アプリがハングまたはフリーズする → skills/hang-diagnostics.md を参照
- UI が1秒を超えて応答しない
- メインスレッドがブロックされている(ビジー状態または待機状態)
- 判断ツリー:ビジー状態とブロック状態の診断
- Time Profiler と System Trace の選択
- よくある8つのハングパターンとその修正方法
- ウォッチドッグによる終了
コーパス/集約されたハングのトリアージ(Sentry、ASC) → axiom-shipping (skills/production-triage.md) + triage-analyzer エージェント
- 単一の .ips ファイルではなく、アグリゲーターからの複数のグループ化されたハングレポート
- コーパス全体で
anr_idle_runloopとanr_main_thread_blockを分類 - サスペンド/アイドル状態のランループによる誤検出を特定(ユーザー数で最も多いハングは、ノイズであることがよくあります)
- 根本原因のグループに分類し、影響度順に並べる
アプリの起動
アプリの起動が遅い → skills/app-launch.md を参照してください
- 最初のフレームが遅い、最初の画面がフリーズする、Organizer で起動の回帰が発生する
- 起動フェーズモデル(pre-main/main→最初のフレーム/起動後の延長フェーズ)
- コールド起動とウォーム起動、ホット起動/再開、通知からの起動 — それぞれの再現方法
- App Launch インストゥルメントのワークフロー、
dyld Activity、測定の適切な運用 - pre-main の修正:リンク戦略(静的 vs 動的 vs マージ可能、
MERGED_BINARY_TYPE/MERGEABLE_LIBRARY)、+load、メインスレッド処理の延期、優先度逆転 XCTApplicationLaunchMetric回帰テスト、MXAppLaunchMetricのフィールドヒストグラム、カスタムの「アプリが操作可能」サインポスト- プッシュ通知からの起動経路(タップ→最初のピクセル/タップ→操作可能になるまでの目標)
エネルギーの問題
バッテリー消費が多い、エネルギー消費が高い → skills/energy.md を参照してください
- Power Profiler のワークフロー
- サブシステムの診断(CPU/GPU/ネットワーク/位置情報/ディスプレイ)
- アンチパターンの修正
- バックグラウンド実行の最適化
症状に基づく診断 → skills/energy-diag.md を参照してください
- 「バッテリー設定でアプリが最上位に表示される」
- 「デバイスが熱くなる」
- 「バックグラウンドでバッテリーが消費される」
- 各経路の時間コスト分析
コード付き API リファレンス → skills/energy-ref.md を参照してください
- WWDC の完全なコード例
- タイマー、ネットワーク、位置情報の効率化
- BGContinuedProcessingTask(iOS 26)
- MetricKit のセットアップ
エネルギースキャン → energy-auditor エージェントまたは /axiom:audit energy を起動してください(8 つのアンチパターン:タイマーの不適切な使用、ポーリング、位置情報の継続的な取得、アニメーションのリーク、バックグラウンドモードの誤用、ネットワークの非効率性、GPU の浪費、ディスク I/O)
タイマーの安全性
タイマーのクラッシュパターン(DispatchSourceTimer) → axiom-integration(skills/timer-patterns.md)を参照してください
BUG IN CLIENT OF LIBDISPATCHでトラップされる 4 つのクラッシュシナリオ — arm64 では EXC_BREAKPOINT(SIGTRAP)、Intel では EXC_BAD_INSTRUCTION- RunLoop モードの注意点(スクロール中に Timer が停止する)
- SafeDispatchTimer ラッパー
- Timer と DispatchSourceTimer の選択
タイマー API リファレンス → axiom-integration(skills/timer-patterns-ref.md)を参照してください
- Timer、DispatchSourceTimer、Combine、AsyncTimerSequence API
- ライフサイクル図
- プラットフォームの対応状況
Swift のパフォーマンス
Swift のパフォーマンス最適化 → skills/swift-performance.md を参照してください
- 値型と参照型、コピーオンライト
- ARC のオーバーヘッド、ジェネリクスの特殊化
- コレクションのパフォーマンス
Swift パフォーマンススキャン → swift-performance-analyzer エージェントまたは /axiom:audit swift-performance を起動してください(不要なコピー、ARC のオーバーヘッド、特殊化されていないジェネリクス、コレクションの非効率性、アクター分離のコスト、メモリレイアウト)
最新の Swift 慣用表現 → axiom-swift(skills/swift-modern.md)を参照してください
- 古くなった API パターン(Date()、CGFloat、DateFormatter)
- Foundation の最新化(URL.documentsDirectory、FormatStyle)
- Claude 固有のハルシネーションの修正
MetricKit の統合
MetricKit API リファレンス → skills/metrickit-ref.md を参照してください
- 新しい Swift ファースト API(
OS27):MetricManager の AsyncSequence ストリーム、型付き MetricResult メトリクス(Metal のフレームレート、ストレージを含む)、終了カテゴリ付きの型付き診断、起動タスクの追跡 - 状態ごとのメトリクス(StateReporting フレームワーク、
OS27):タブ、モード、または実験ごとにヒッチ/ハング/メモリのメトリクスを分割 - クラッシュレポーターの拡張機能(CrashReportExtension フレームワーク、
OS27):クラッシュ時にプロセスクラッシュを処理し、拡張機能内でシンボリケーションを実行(パート 10) - MXMetricPayload/MXDiagnosticPayload の解析(レガシー、iOS 13–26)
- フィールドパフォーマンスデータの収集
- クラッシュレポートとの統合
ランタイムコンソールのキャプチャ
シミュレーターのコンソール出力をキャプチャする → /axiom:console
- シミュレーターから print()、os_log()、Logger の出力をキャプチャ
- レベル、サブシステム、カテゴリを含む構造化 JSON
--timeoutと--max-linesによる上限付き収集- サブシステムまたは正規表現でフィルタリング
実行時状態の調査
LLDB の対話型デバッグ → axiom-build(skills/lldb.md)を参照してください
- ブレークポイントの設定、実行時の変数の調査
- クラッシュログからのクラッシュ再現
- ハング時のスレッド状態の分析
- Swift の値の調査(po と v)
LLDB コマンドリファレンス → axiom-build(skills/lldb-ref.md)を参照してください
- コマンド構文の完全な説明
- ブレークポイントの設定例
- 式評価のパターン
判断フロー
- メモリ使用量の増加と UI のカクつき/ジャンク? → まず memory-debugging(メモリプレッシャーによる GC の一時停止でフレームが落ちるため)。メモリの問題を解消してもカクつきが残る場合は、次に performance-profiling
- メモリリーク(Swift)? → memory-debugging
- メモリリーク(Objective-C ブロック)? → objc-block-retain-cycles
- アプリがハング/フリーズ — UI が完全に応答しない(タップできず、反応もない)状態ですか?
- はい → hang-diagnostics(ビジー状態かブロック状態かを診断)
- いいえ、単に遅い → performance-profiling(Time Profiler)
- 初回起動時のみ? → hang-diagnostics で同期 I/O や遅延初期化も確認してください
- Sentry/ASC から複数のハングレポートをまとめて受け取った(単一ファイルではなくコーパス)? →
axiom-shipping (skills/production-triage.md)+triage-analyzer
- 複数の非同期操作が同時に完了すると遅くなる? →
axiom-concurrencyも確認してください(プロファイリングではなく、コールバックの競合です) - アプリの起動が遅い/最初のフレームが遅い/起動時の性能が低下した/プッシュ通知をタップした後に遅い? → app-launch
- バッテリーの消耗(症状がわかっている)? → energy-diag
- バッテリーの消耗(API リファレンスが必要)? → energy-ref
- バッテリーの消耗(一般)? → energy
- MetricKit のセットアップ/解析? → metrickit-ref 10a. アプリの状態別のメトリクス(タブ別のヒッチ率、実験群)または StateReporting? → metrickit-ref(Part 1) 10b. エージェント/LLM 機能のプロファイリング(Foundation Models の計測、トークンメトリクス)? → performance-profiling、続いて axiom-ai 10c. クラッシュレポーター拡張機能の構築(クラッシュ発生時にプロセスがクラッシュする)? → metrickit-ref(Part 10)
- GUI(Instruments)でプロファイリング? → performance-profiling
- CLI(xctrace)でプロファイリング? → xctrace-ref
- 今すぐ自動プロファイルを実行する? → performance-profiler エージェント
- 全般的に遅い/ラグがある? → performance-profiling 14a. GRDB/SQLite クエリが遅い(EXPLAIN QUERY PLAN、インデックス設計、カーソル)? → axiom-data(skills/grdb-performance.md)を参照してください
- 先回りしてメモリリークをスキャンしたい? → memory-auditor(エージェント)
- エネルギー関連のアンチパターンをスキャンしたい? → energy-auditor(エージェント)
- Swift のパフォーマンス監査(ARC、ジェネリクス、コレクション)を行いたい? → swift-performance-analyzer(エージェント)
- 実行時に変数/スレッドの状態を調査する必要がある? → axiom-build(skills/lldb.md)を参照してください
- LLDB コマンドの正確な構文が必要? → axiom-build(skills/lldb-ref.md)を参照してください
- スクロール中にタイマーが停止する? → timer-patterns(RunLoop モード)
- DispatchSourceTimer で EXC_BREAKPOINT(SIGTRAP)が発生し、「
BUG IN CLIENT OF LIBDISPATCH」と表示されるクラッシュ? → timer-patterns(4 つのクラッシュパターン) - Timer、DispatchSourceTimer、Combine タイマー、async タイマーのどれを選ぶべき? → timer-patterns
- タイマー API の構文/ライフサイクルが必要? → timer-patterns-ref
- 古い Swift パターンのコードレビュー? → swift-modern
- Claude がレガシー API(DateFormatter、CGFloat、DispatchQueue)を生成する? → swift-modern
- プロファイリング前に実行時のコンソール出力を確認する必要がある? → axiom-tools(skills/xclog-ref.md)または
/axiom:console - シンボリケート/トリアージする
.ips、MetricKit、または旧形式の.crashテキストファイルがある? → axiom-tools(skills/xcsym-ref.md)または/axiom:analyze-crash
過度な合理化を避ける
| 思い込み | 実際のところ |
|---|---|
| 「メモリリークだと分かっているから、見つけてみよう」 | メモリリークには6つのパターンがあります。memory-debuggingなら適切なパターンを15分で診断できますが、自力では2時間かかります。 |
| 「Time Profilerを実行すればいいだけ」 | 間違ったInstrumentsテンプレートを選ぶと時間を無駄にします。performance-profilingなら最初に適切なツールを選べます。 |
| 「バッテリー消費の原因はおそらくネットワーク層だ」 | エネルギー関連の問題は8つのサブシステムにまたがります。energyスキルなら実際の原因を診断できます。 |
| 「アプリが遅く感じるけれど、最適化は後でいい」 | パフォーマンスの問題は重なっていきます。今すぐプロファイリングすれば、後々、より多くの時間を節約できます。 |
| 「UIが一時的に固まるだけだから、おそらくAPI呼び出しが遅い」 | フリーズの原因にはビジーとブロックの2種類があります。hang-diagnosticsには両方を判別するための決定木があります。 |
| 「メモリが増え続けて、スクロールもカクつく。別々のバグだろう」 | メモリプレッシャーによってGCが一時停止し、フレームが落ちることがあります。まずリークを修正してから、スクロールのパフォーマンスを再確認してください。 |
| 「初回起動時だけ固まるから、何かを読み込んでいるのだろう」 | 初回起動時のハングには3つのパターンがあります。同期I/O、遅延初期化、メインスレッドの競合です。hang-diagnosticsなら、どのパターンかを診断できます。 |
| 「起動が遅く感じる。起動時のコードを少し削ろう」 | 起動には3つのフェーズ(pre-main/main→最初のフレーム/extended)とウォッチドッグがあります。app-launchなら、どのフェーズをプロファイリングすべきかに加え、測定値を意味のあるものにする測定時の注意点も分かります。 |
| 「起動は問題ない。自分のスマートフォンでは速い」 | サポート対象の最も古いデバイスでReleaseビルドを使って測定してください。app-launchには測定時の注意点をまとめたチェックリストがあります。最新デバイスでの数値では、パフォーマンスの退行が見えません。 |
| 「アプリスイッチャーからの復帰も遅い」 | 復帰は起動ではありません。起動として測定しないでください。app-launchなら、コールド/ウォーム/ホット/通知からの起動を区別し、それぞれを再現する方法も分かります。 |
| 「フレームワークが多すぎるから、すべて静的リンクにしよう」 | 静的リンクでは、ライブラリがリンクされるすべてのバイナリ(アプリと各拡張機能)にライブラリがコピーされ、グローバル状態も重複します。また、-ObjCを指定しないとObj-Cカテゴリが正常に動作しません。app-launchには静的/動的/マージ可能なリンクのトレードオフと、pre-mainが本当に問題かどうかを判断できるDYLD_PRINT_STATISTICSの確認方法があります。 |
| 「ネットワークリクエストが完了するとUIがロックする。処理が遅いのだろう」 | 複数のコールバックが一度に完了すると、メインスレッドの競合が発生し、並行処理の問題につながります。axiom-concurrencyも確認してください。 |
| 「デバッグ用にprint文を追加すればいい」 | printによるデバッグのサイクルは1回につき3~5分かかります(ビルド+実行+再現)。LLDBのブレークポイントなら30秒です。コマンドはaxiom-build(skills/lldb.md)に記載されています。 |
| 「アプリのログが見られない」 | xclogなら、シミュレーターからprint()とos_logを構造化JSON形式で収集できます。/axiom:console。 |
| 「.ips JSONを手作業で解析して、最上位のフレームを確認しよう」 | xcsymなら1回の呼び出しで解析、dSYMの検出、シンボリケーション、分類を行い、pattern_tagを含む構造化JSONを出力します。/axiom:analyze-crash。 |
| 「Timer.scheduledTimerを使えばいい。そちらのほうが簡単だ」 | Timerはスクロール中(.defaultモード)に停止し、ターゲットを保持してリークを引き起こします。timer-patternsには決定木があります。 |
| 「DispatchSourceTimerがクラッシュするけれど、たまにしか起きないからリリースしよう」 | DispatchSourceTimerのクラッシュには4つのパターンがあり、いずれも再現性があります。timer-patternsなら、どのパターンかを診断できます。 |
| 「Claudeはすでに最新のSwiftを知っている」 | Claudeはデフォルトで5.5より前のパターン(Date()、CGFloat、filter().count)を使います。swift-modernには修正用の対応表があります。 |
| 「MetricKitは古いMXデリゲートAPIのことだ」 | 27サイクルで全面的に再構築されました。MetricManagerのAsyncSequenceストリーム、型付きメトリクス、状態ごとの集計が導入されています。新しいAPIについてはmetrickit-refのPart 1を参照してください。 |
| 「フィールドのメトリクスがすべて混ざった平均値なので、どの画面が遅いのか分からない」 | StateReportingを使うと、定義したアプリ状態(タブごと、実験ごとなど)別にすべてのメトリクスを分割できます。metrickit-refのPart 1を参照してください。 |
| 「ホットな関数が1つもないから、プロファイルを見ても意味がない」 | 動的ディスパッチ、retain/release、existentialなどの分散したオーバーヘッドは、フレームグラフでは見えにくいものです。Top Functionsモードなら、それらをまとめて確認できます。performance-profiling。 |
重要なパターン
メモリのデバッグ(memory-debugging):
- 6 つのリークパターン:タイマー、オブザーバー、クロージャー、デリゲート、ビューのコールバック、PhotoKit
- Instruments のワークフロー
- リークとキャッシュの違い
パフォーマンスのプロファイリング(performance-profiling):
- CPU のボトルネックには Time Profiler
- メモリの増加には Allocations
- N+1 クエリには Core Data の SQL ロギング
- Self Time と Total Time
エネルギーの最適化(energy):
- Power Profiler によるサブシステムの診断
- 8 つのアンチパターン:タイマー、ポーリング、位置情報、アニメーション、バックグラウンド、ネットワーク、GPU、ディスク
- サブシステム別の監査チェックリスト
- 締め切りに耐えるための負荷シナリオ
使用例
ユーザー:「アプリのメモリ使用量が増え続けています」 → skills/memory-debugging.md を参照
ユーザー:「メモリリークがあるのに deinit が呼び出されません」 → skills/memory-debugging.md を参照
ユーザー:「アプリの動作が遅いようです。どこから始めればよいですか?」 → skills/performance-profiling.md を参照
ユーザー:「Objective-C のブロックコールバックでリークが発生しています」 → skills/objc-block-retain-cycles.md を参照
ユーザー:「アプリのバッテリー消費が激しいです」 → skills/energy.md を参照
ユーザー:「アプリを使うとデバイスが熱くなるとユーザーから言われました」 → skills/energy-diag.md を参照
ユーザー:「効率的に位置情報トラッキングを実装する最善の方法は何ですか?」 → skills/energy-ref.md を参照
ユーザー:「アプリの CPU 使用率をプロファイリングしてください」
→ 使用:performance-profiler エージェント(または /axiom:profile)
ユーザー:「コマンドラインから xctrace を実行する方法を教えてください」 → skills/xctrace-ref.md を参照
ユーザー:「CI/CD 用にヘッドレスプロファイリングが必要です」 → skills/xctrace-ref.md を参照
ユーザー:「アプリが時々ハングします」 → skills/hang-diagnostics.md を参照
ユーザー:「UI がフリーズして応答しなくなります」 → skills/hang-diagnostics.md を参照
ユーザー:「メインスレッドがブロックされています。診断方法を教えてください」 → skills/hang-diagnostics.md を参照
ユーザー:「Sentry のハングをトリアージしてください」/「どの ANR レポートが実際のブロックを示していますか?」
→ axiom-shipping (skills/production-triage.md) と triage-analyzer エージェント(または /axiom:triage sentry)を参照
ユーザー:「アプリの起動に 3 秒かかります」 → skills/app-launch.md を参照
ユーザー:「Xcode Organizer で起動時間が悪化したと表示されます」 → skills/app-launch.md を参照
ユーザー:「pre-main / dyld の時間を短縮する方法を教えてください」 → skills/app-launch.md を参照
ユーザー:「mergeable libraries を使うべきですか?/フレームワークを静的リンクすべきですか?」 → skills/app-launch.md を参照
ユーザー:「プッシュ通知をタップした後、アプリの起動が遅いです」 → skills/app-launch.md を参照
ユーザー:「起動パフォーマンステストの書き方を教えてください」 → skills/app-launch.md を参照
ユーザー:「MetricKit のセットアップ方法を教えてください」 → skills/metrickit-ref.md を参照
ユーザー:「MXMetricPayload の解析方法を教えてください」 → skills/metrickit-ref.md を参照
ユーザー:「新しい MetricManager の使い方/MXMetricManager からの移行方法を教えてください」 → skills/metrickit-ref.md(Part 1)を参照
ユーザー:「タブごと、または実験ごとにヒッチのメトリクスを取得できますか?」 → skills/metrickit-ref.md(Part 1, StateReporting)を参照
ユーザー:「Foundation Models/エージェント機能のプロファイリング方法を教えてください」 → skills/performance-profiling.md(Foundation Models instrument)を参照し、その後 axiom-ai を参照
ユーザー:「修正を検証するために、2 つの Instruments の実行結果を比較する方法を教えてください」 → skills/performance-profiling.md(Run Comparisons)または skills/trace-comparison.md(CLI/CI)を参照
ユーザー:「コードをスキャンしてメモリリークを探してください」
→ memory-auditor エージェントを呼び出す
ユーザー:「アプリのバッテリー消費の問題を確認してください」
→ energy-auditor エージェントを呼び出す
ユーザー:「Swift コードにパフォーマンスのアンチパターンがないか監査してください」
→ swift-performance-analyzer エージェントを呼び出す
ユーザー:「デバッガーでこの変数を調べる方法を教えてください」 → axiom-build を参照(skills/lldb.md)
ユーザー:「条件付きブレークポイントの LLDB コマンドを教えてください」 → axiom-build を参照(skills/lldb-ref.md)
ユーザー:「デバッガーでこのクラッシュを再現する必要があります」 → axiom-build を参照(skills/lldb.md)
ユーザー:「リストのスクロールが遅く、メモリ使用量も増え続けます」 → まず skills/memory-debugging.md を参照し、カクつきが残る場合は skills/performance-profiling.md を参照
ユーザー:「初回起動時にアプリが数秒間フリーズしますが、その後は正常に動作します」
→ skills/hang-diagnostics.md を参照
ユーザー:「複数の API 呼び出しが同時に返ると、UI がロックされます」
→ ルートをまたいで確認:/skill axiom-concurrency(コールバックの競合)
ユーザー:「ユーザーがスクロールすると、タイマーが止まります」
→ 参照:axiom-integration(skills/timer-patterns.md)
ユーザー:「タイマーのコードで EXC_BREAKPOINT (SIGTRAP) クラッシュが発生します — BUG IN CLIENT OF LIBDISPATCH」
→ 参照:axiom-integration(skills/timer-patterns.md)
ユーザー:「Timer と DispatchSourceTimer のどちらを使うべきですか?」
→ 参照:axiom-integration(skills/timer-patterns.md)
ユーザー:「AsyncTimerSequence を作成するにはどうすればよいですか?」
→ 参照:axiom-integration(skills/timer-patterns-ref.md)
ユーザー:「Swift コードに古いパターンがないかレビューしてください」 → 呼び出し:axiom-swift を参照(skills/swift-modern.md)
ユーザー:「これをもっとモダンな方法で行うにはどうすればよいですか?」 → 呼び出し:axiom-swift を参照(skills/swift-modern.md)
ユーザー:「アプリのログには何が出力されていますか? コンソール出力を確認する必要があります」
→ 呼び出し:/axiom:console
ユーザー:「このバグを再現している間、シミュレーターのログを取得してください」
→ 呼び出し:/axiom:console