audit-ui-thread-safety

作成者: flutter

UIのフリーズを防ぎ、スレッドルールを検証してブロッキング呼び出しをイベントディスパッチスレッド(EDT)から移行することで、応答性の高いユーザー体験を確保します。

npx skills add https://github.com/flutter/flutter-intellij --skill audit-ui-thread-safety

Skill: UI Thread Safety & Responsiveness

You are tasked with preventing UI freezes and ensuring a responsive user experience by validating threading rules.

Objective

Prevent UI freezes and ensure a responsive user experience by validating threading rules.

Workflow Instructions

1. Baseline

  • Run ./gradlew test and ./gradlew verifyPlugin to ensure the project is in a good state before refactoring.

2. Audit EDT Usage

  • Search for usages of runInEdt, invokeLater, and invokeAndWait.

3. Identify Blocking Calls

  • Ensure no I/O operations (file access, network calls) or heavy computations occur within these UI blocks.

4. Migrate to Background

  • Refactor heavy tasks to run on background threads using Task.Backgroundable or ReadAction.nonBlocking.

5. Check Modality

  • Verify that modal dialogs do not block the UI thread unnecessarily.

6. Verify

  • Run ./gradlew testClasses to ensure safe refactoring.
  • Run ./gradlew test and ./gradlew verifyPlugin to ensure no regressions.
  • Run the plugin in a sandbox (./gradlew runIde) and perform key actions while monitoring for UI freezes.
  • Suggest manual test steps: Check the code changes made and write test steps for a user to execute that will trigger the code paths that have changed. If needed, add logging statements to verify that the code paths have successfully run.

7. Report & Review

  • Summarize the threading fixes.
  • Test Location: Explicitly state where in the IDE the user should go to test the changed functionality (e.g., "Go to Preferences > Languages & Frameworks > Flutter").
  • Action: Ask the user to review the changes closely to ensure no deadlocks or UI freezes are introduced.
  • Do not commit or push.
  • Provide a suggested Git commit message (e.g., "Fix UI freeze: Move heavy computation to background task").

flutterのその他のスキル

dart-modern-features
flutter
モダナイゼーションの候補を見つけるには:
flutter-fix-layout-issues
flutter
Flutterのレイアウトエラー(オーバーフロー、制約の無限大)をDartとFlutter MCPツールを使って修正します。「RenderFlex overflowed」「Vertical…」といった問題に対処する際に使用します。
adding-release-notes
flutter
DevToolsのリリースノートにユーザー向けの変更説明を追加します。NEXT_RELEASE_NOTES.mdファイルに改善点、修正、新機能を文書化する際に使用します。
reviewing-devtools-prs
flutter
DevToolsリポジトリ固有のPRレビューワークフローで、DevToolsのスタイルガイドラインと一般的なレビューパターンを適用します。プルリクエストをレビューする際に使用します。
dart-use-primary-constructors
flutter
ユーザーがDartで構文的・意味的に正しいプライマリコンストラクタを記述できるよう支援し、新しいコンストラクタ構文、空ボディのセミコロン構文への移行・使用を支援します、…
code-documentation
flutter
効果的なコードドキュメントを書くためのガイド。docstring、JSDoc、dartdoc、実装コメントを含む。新しいコードを書く際や追加する際にこのスキルを使用する。
api-review
flutter
指定されたコードを標準的なAPI設計ガイドラインに照らしてレビューします。ユーザーがAPIレビューを依頼した場合や、コードをAPI設計に照らして確認したい場合にこのスキルを使用します。
flutter-accessibility
flutter
FlutterアプリにWCAG 2およびEN 301 549アクセシビリティ基準とアダプティブレイアウトを実装します。モバイル、ウェブ、デスクトッププラットフォーム全体で、セマンティックアノテーション、タップターゲットサイズ(最小48x48 dp)、テキストコントラスト比(小テキストは4.5:1、大テキストは3:1)を適用します。ウェブセマンティクスの初期化、インタラクティブウィジェットのラッピング、画面サイズに基づくレイアウト切り替え、キーボード/マウス入力処理のための決定ロジックを提供します。FocusTraversalGroupによるフォーカストラバーサル管理を含みます...