IntelliJプラグインのAnActionと登録設定を実装・変更し、表示文言やアイコンの定義、非同期処理の起動方法を整えます。
- IDEに新しいアクションを追加したいとき
- アクションの登録やアイコンを変更したいとき
- 表示名と説明文の定義を整理したいとき
Compose DesktopのUIコードを読み、状態管理、画面構成、副作用、コルーチン、再描画の性能など、設計と実行時の問題を具体例とともに監査するスキルです。
Audit Compose Desktop UI state and effects.
実行スコア 未検証
インストール方法を見るCompose DesktopのUIコードを対象に、設計上の境界やComposeランタイムの使い方を読み取り、根拠のある問題を報告します。Composable内にアプリの状態や業務ロジックが入り込んでいないか、状態の所有者が適切か、rememberのキーやローカル状態が妥当かを確認します。LaunchedEffect、DisposableEffect、snapshotFlow、コルーチンの使い方、フロー収集やリソースのライフサイクルも監査対象です。
さらに、遅延リストのキーやcontentType、再描画時の処理、アニメーションAPI、Modifierの受け渡しと順序、Composableの大きさや公開APIの形を確認します。デスクトップ固有のフォーカス、ショートカット、ダイアログ、ファイル選択、クリップボードなどの接点も対象です。指摘には優先度、該当箇所、修正案を含め、調査範囲と確度も明示します。必要な場合は計測やトレースの資料を参照します。
Compose Desktopの画面やツールウィンドウについて、状態管理や副作用の設計を点検したいときに向いています。再描画の遅さやアニメーションの不具合を調べる場合にも、具体的なコード箇所から原因候補を整理できます。
監査対象はCompose Desktopの設計とランタイムです。見た目のデザイン評価、Jewelの部品選定、Android固有の設計は対象外です。
この紹介文は、公開されている SKILL.md をもとに AI(OpenAI Codex)が作成しました。正確な仕様は下の原文を確認してください。
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Audit Compose Desktop UI code for architectural correctness and Compose runtime hygiene. This workflow gathers read-only
evidence rather than reviewing visual design. Use compose-ui-architecture for day-to-day authoring guardrails and
jewel-ui for Jewel component and theming guidance.
If the user asks for a general review, cleanup pass, or broad investigation rather than a Compose UI architecture audit, use the review subagents available in the current harness. If subagent delegation is unavailable, run those review passes sequentially yourself.
Keep the audit proportional. A focused request on one file should get a focused file review; a broad request like "audit this tool window" should map the surface, sample representative files, and report systemic patterns.
In scope:
remember, derivedStateOf, and local state misuseLaunchedEffect, DisposableEffect, snapshotFlow, and coroutine-scope misusecontentTypeOut of scope unless the user explicitly asks:
jewel-ui.jewel-swing-interopcollectAsStateWithLifecycle, Navigation, Material, Accompanist,
baseline profiles, and R8.## Summary
[overall posture: healthy / targeted cleanup needed / risky]
## Top findings
1. [severity] [finding] — `path:line`
2. ...
## Category notes
### Boundary and state ownership
### Desktop lifecycle and flow collection
### Effects and coroutine usage
### Lazy lists, animation, and recomposition
### Modifier/API shape
### Desktop interop seams
## Top 3 fixes
1. ...
## Confidence and limits
[what was sampled, what was not checked]
Do not assign numeric scores by default. If the user explicitly requests scoring, read reporting-guidance.md, label scoring as a project-specific heuristic, and avoid importing Android release metrics.
If the user gives paths, audit those. Otherwise locate the UI source root from the project's
architecture docs or by searching for @Composable. Skip generated/build directories and tests
unless the user asks.
Find representative files before judging:
For broad audits, name the sampled surface in the report.
Treat search hits as candidate locations and read the surrounding code before reporting a finding. For the full pattern list, read audit-search-patterns.md.
Use the category checklist below, but avoid re-reading every reference file. Open only the reference files needed for actual evidence you find.
| Category | What to check | Read when deeper diagnosis is needed |
|---|---|---|
| Boundary and state ownership | Business/app logic in composition, broad app-state reads, local state shadowing app state, presenter objects passed into leaf components, direct IJPL API/Project parameter leaks in @Composable (use abstract state or explicit provider boundaries, no lazy CompositionLocal minting like LocalProject) | boundary-violations.md |
| Desktop lifecycle and flow collection | Multiple raw flows that must be coherent, resource-producing flows started from leaves, composition-owned file watchers/subprocesses/loops | effects/overview.md |
| Effects and coroutine usage | Work launched from bodies, bad effect keys, stale callbacks, missing cleanup, noisy snapshotFlow, business workflows in effects | effects/overview.md |
| Lazy lists and recomposition | Missing stable keys/content types, per-row lookups, row/model churn, hot-path transforms, stale remember caches for theme/environment-derived UI values | lazy-layouts/overview.md, stability/overview.md |
| Animation | Wrong animation API, unremembered Animatable, target-driven animation launched from composition, per-frame values read during composition, broad AnimatedContent targets, offscreen infinite transitions | compose-ui-architecture animation, modifiers/overview.md, lazy-layouts/animate-item.md |
| Modifier/API shape | Swallowed modifiers, missing/misordered modifier, MutableState<T>/State<T> component APIs, unstable or mutable parameters, event/content-slot parameter shape, action/presenter CompositionLocals, unnecessary Modifier.composed {}, huge/deeply nested composables, poor file ordering, missing/stale KDoc on reusable composables | api-hygiene.md, modifiers/overview.md |
| Desktop interop seams | AWT/Swing details in leaves, shortcut paths bypassing presenter checks, persisted window/session policy in remember, protocol/runtime work in UI | subcomposition/overview.md |
When the target includes reusable component APIs, public/cross-file composables, Detekt findings, or lint-like Compose smells, read api-hygiene.md. It distils Detekt's comments/naming/complexity/coroutines/ performance guidance and Nacho López' Compose Rules into Compose Desktop/Jewel audit heuristics.
Review composables as production code, not as throwaway markup. Flag composables that are so large, deeply nested, or mixed-purpose that they obscure state ownership, make recomposition behavior hard to reason about, or prevent focused testing/reuse.
Prefer findings that point to a specific extraction boundary: a toolbar, row, empty state, footer, popup, repeated section, or distinct branch. Do not ask for arbitrary fragmentation; extraction should make the UI easier to read, name, test, or reuse.
Also check file organization and API polish:
For private helpers, KDoc often means the helper needs a clearer name or smaller scope instead.
For reusable component API design, use the AndroidX Compose API guidelines as high-level reference material, adapted for Compose Desktop/Jewel and without importing Android-only assumptions:
remember KeysCheck remember(...) calls that cache UI values derived from theme, density, locale, font scale, window state, Swing
LaF defaults, or similar environment-provided state.
Coarse keys such as a theme name, LaF name, dark-mode boolean, or no key can leave stale UI. Underlying colours, typography, metrics, strings, shortcut text, or defaults can change without that coarse label changing.
Report this only when stale output is plausible and user-visible. Good fixes are, in order:
remember if the calculation is cheap;remember keys;JewelTheme.instanceUuid in Jewel code.Do not mechanically demand more keys for every remember; the finding needs a concrete stale-cache risk.
If the task involves jank, slow UI, or recomposition issues, measure before diagnosing and again after any proposed fix. Use the relevant existing reference instead of duplicating the procedure here:
Use these guides when investigating jank, recomposition, or rendering performance with trace evidence:
Read reporting-guidance.md before producing the final report. In short:
まだレビューはありません。使ってみた感想をお寄せください。
ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。
まだコメントはありません。最初のコメントを書いてみませんか。
IntelliJプラグインのAnActionと登録設定を実装・変更し、表示文言やアイコンの定義、非同期処理の起動方法を整えます。
IntelliJのJPSテストモジュールをBazelへ移行し、Bazelだけで起きる失敗を依存関係や実行環境から切り分ける手順を案内します。
IntelliJのKotlin・Javaコードを新規作成やレビューする際に、言語の選び方、書式、型の扱い、例外処理などのプロジェクト規約に沿って整えるスキルです。
IntelliJ向けの変更を適切な単位に分け、チケットの有無に応じた形式で、理由や判断も伝わるコミットメッセージを作成・修正するスキルです。
Pythonコードの型推論や型エラーを複数の型チェッカーで比較し、各ツールの判定と診断内容をまとめたレポートを作成します。
Compose Desktopの画面で状態や副作用をどこに持たせるか整理し、表示と判断の境界、再利用部品やリストの設計を整えます。