code-assessment について
AEM as a Cloud Service プロジェクト向けのローカルコード評価スキルで、対応する品質問題を検出・修正します。決定論的なアナライザーとパターン別の手順書で発見から修正までを進め、LLM によるスキャンへのフォールバックはありません。
主な機能
- 01ローカル静的検出と修正
- 02パターン別スキルへの振り分け
- 03探索と指定ファイルの両方に対応
- 04構築済みパターンの検出結果を報告
- 05大規模修正のバッチ再開
活用シーン
- 01AEM プロジェクトの対応問題をスキャン
- 02指定ファイルに単一パターンの修正を適用
- 03BPA/CAM の移行指摘に対処
MCP 対応
MCP サーバーを提供するスキルではありません。migration スキルから、BPA/CAM/MCP で特定したパターンとファイルを受け取り、修正できます。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ adobe/ skills --skill code-assessmentインストール後、Claude Code で/code-assessmentを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdinject-in-sling-model/recipe.mdoutbound-call-timeouts/recipe.mdoutdated-dependencies/recipe.mdreferences/_template.mdadding-a-pattern.mdaem-cloud-service-pattern-prerequisites.mddata-sly-test-redundant-constant.mdgit-workflow.mdpatterns.mdresource-resolver-logging.mdrunbook.mdscr-to-osgi-ds.mdshared-principles.mdtroubleshooting.mdremove-deprecated-api/README.mdrecipe.mdremove-deprecated-api/scripts/detect.shscheduler/path-a.mdpath-b.mdscripts/analyze.shscripts/analyzer/Analyze.javaCorpus.javaDetector.javascripts/analyzer/detectors/AssetManager.javaEventMigration.javaInjectInSlingModel.javaOakQueryIndexCoverage.javaOutboundCallTimeouts.javaOutdatedDependencies.java詳細
AEM as a Cloud Service — コード評価
AEM CS のコード品質に関する問題を検出して修正する単一のスキルです。すべてローカルワークスペース内で実行されます。外部サービスやネットワーク呼び出しはありません。検出結果は 2 つのソースのいずれかからランブックに渡されます。それ以降の処理はすべて同じです。
検出結果のソース
| ソース | 条件 | 対象バージョン(依存関係) |
|---|---|---|
| ユーザー指定 | ユーザーがファイルまたは座標を指定した場合 | ユーザー指定 |
| 検出 | ユーザーがスキャンを依頼した場合、またはファイルを指定しなかった場合 | ユーザー指定(パターンの解決契約に従う) |
検出は決定論的なアナライザー(scripts/analyze.sh)を通じて実行されます。
ワークスペースを一度解析し、有効な検出器を実行して、共通の検出結果形式を出力します。
ready 状態のパターンには、すべてアナライザー検出器があります。1 つの検出器である remove-deprecated-api は、事前チェックで生成されたキャッシュからルールを動的に読み込みます
(remove-deprecated-api/scripts/detect.sh は AEM Analyser Maven Plugin を実行し、アナライザーの呼び出し前にキャッシュ TSV を書き込みます)。検出器の形式と統合方法は、ほかのものと同じです。検出器のないパターンは planned のみです。つまり、まだ検出も実装もできません。このバージョンにはLLM スキャンへのフォールバックはありません(「範囲と制限」を参照)。references/patterns.md の planned 行にある scan 値は、今後予定されている検出方法を示すものであり、現在有効なコードパスではありません。
ルーティング
- ユーザーがファイル/座標を指定 → 指定されたパスに対して
with_findingsモードでランブックを実行します。 - 「リポジトリをスキャンして」/ファイルの指定なし →
discoverモードでランブックを実行します(パターンごとに検出し、ワークスペースのルートのみを対象とします)。
次に、ランブックに従います:references/runbook.md。
手動パターンヒント(分類 → エキスパートスキル)
リクエストを1つのエキスパートスキルに振り分けます。2つのパターンファミリーがこのスキルを共有します。
機械的な修正(アナライザーによる検出、決定論的な編集 — ランブックのフローに従います):
| ユーザーの発言/確認した内容 | エキスパートスキル |
|---|---|
「aem sdk を更新」「mockito をアップグレード」、pom 内の古い <version> または ${property} | outdated-dependencies/ |
「@Inject を修正」「Sling Models を最新化」、@Model フィールド上の javax.inject.Inject | inject-in-sling-model/ |
「HTTP タイムアウトを追加」「アウトバウンド/外部呼び出しにタイムアウトがない」、タイムアウトを設定せずに構築された HttpClient / HttpClients / OkHttpClient | outbound-call-timeouts/ |
「クエリに上限を設定」「上限のないクエリ」「OOM の原因となるクエリ」、p.limit=-1、setLimit(-1) | unbounded-query/ |
| 「クエリが遅い」「トラバーサル警告」「自分のクエリにインデックスはあるか」「oak インデックスを調整」、JCR/Oak クエリのインデックスカバレッジ | tuning-oak-query-indexes/ |
「非推奨 API を削除」「非推奨のインポートを修正」「Cloud Manager での非推奨 API エラー」、region-deprecated-api / api-regions-check / Import-Package not satisfied によるパイプラインエラー、log4j の移行、commons-lang/collections のアップグレード、非推奨の Maven 依存関係、変更不可の OSGi 設定 | remove-deprecated-api/ (動的ルールを使うアナライザー検出 — プリフライトで aemanalyser-maven-plugin を実行します。ヒントに基づく修正については recipe.md を参照してください) |
アーキテクチャ移行パターン(ガイド付きの修正 — 移行前後の全容、トラブルシューティング、最新の代替手段を提示。直接呼び出すか、BPA/CAM による検出では migration を経由します):
| ユーザーの発言/確認した内容 | エキスパートスキル | BPA パターン ID |
|---|---|---|
org.apache.sling.commons.scheduler.Scheduler または Runnable を指定した scheduler.schedule( | scheduler/ | scheduler |
implements ResourceChangeListener、軽量リスナー + JobConsumer | resource-change-listener/ | resourceChangeListener |
com.day.cq.replication.Replicator、org.apache.sling.replication.*、「公開/プレビューのアクティベーション」 | replication/ | replication |
javax.jcr.observation.EventListener、リソース以外のトピック(レプリケーション、ワークフロー、カスタム)に対する org.osgi.service.event.EventHandler | event-migration/ | eventListener / eventHandler |
com.day.cq.dam.api.AssetManager の作成/アップロード/削除 API、createAssetForBinary、removeAssetForBinary | asset-manager/ | assetApi |
HTL ビルド警告 data-sly-test: redundant constant value comparison | references/data-sly-test-redundant-constant.md | htlLint(リファレンス。エキスパートスキルのサブディレクトリはありません) |
広範な依頼/正確性レビュー(「Sling Models が正しく実装されているか確認」「コードをレビュー」「AEM プロジェクトの状態は健全か」「このプロジェクトを評価」など)は、単一のパターンには該当しません。discover モードで意図を report に設定してランブックを実行します。アナライザーがすべての検出器を実行し、構築済みのパターンをすべて網羅したレポートを作成し、未対応の項目も明記します。ユーザーが特定の修正を求めている場合にのみ、対象を1つのパターンに絞ります。
該当するものがない場合は、その問題はまだサポートされていないことを伝え、新しいエキスパートスキルのリクエストを提出することを提案します。
全カタログ(構築済みおよび planned のパターン。重大度/検出/修正を含む):references/patterns.md。
migration スキルからの呼び出し
migration は BPA/CAM/MCP の検出を実行し、バッチ処理と「1 セッションにつき 1 パターン」のワークフローを管理します。BPA の検出結果から (pattern, file) のペアを特定した後、実際の変換を行うためにここへ引き継ぎます。migration から (pattern, file) を指定して呼び出された場合:
- HA/アナライザーによる検出はスキップします(呼び出し元がすでにパターンとファイルを特定しています)
- 上記の手動パターンヒントの表に従い、該当パターンのエキスパートスキルを直接開きます
- エキスパートスキルの手順を、指定されたファイルに適用します
- 結果を返します。
migrationはバッチ内の次の検出結果に進みます
パターンガイド自体は、呼び出し元に依存しません。migration(BPA/CAM)経由で呼び出された場合も、このスキルのランブック経由で呼び出された場合(HA/アナライザー)も、同じように適用されます。
ランブック
検出、計画、編集、検証、git/インプレースでの処理、および実行ログはすべて
references/runbook.md に記載されています。リポジトリ環境の
検出(edit_mode、git スナップショット)を担うのはランブックのみです。この制御プレーンで重複して実行することはありません。
1 セッションにつき 1 パターン
レポートには検出されたすべてのパターンを含められますが、適用では 1 セッションにつき 1 パターンのみを変更します(原子的な取り消し、
単一ストーリーの差分)。適用フェーズで「すべて修正する」という要求には応じません。理由:
references/shared-principles.md。
重要なルール
- ローカルのみ — ネットワーク呼び出しや外部サービスは使わず、ワークスペース内だけで作業します。
文書化された例外:
remove-deprecated-apiはプラグイン駆動であり、Maven Central (aemanalyser-maven-pluginおよび推移的依存関係である AEM SDK の api-regions データの解決用)と、 後継に関するガイダンスのフォールバックソースとして、必要に応じて Adobe Experience League を利用します。オフラインの場合、 このパターンのみ明確なメッセージを出してスキップし、その他のパターンは引き続きローカルのみで処理します。 - 検出にはローカル JDK(Java 11 以降)が必要です — アナライザーはメモリ内でコンパイル/実行されます。JDK 以外のインストールは不要で、ネットワークも使いません。JDK がない場合、明確なメッセージを出して検出を停止します。
- アナライザーは検出用です。外部ツールで代用しないでください。
mvn versions:display-dependency-updates/mvn versions:display-property-updates、npm outdated、Maven Central/レジストリの検索を、アナライザーによる検出の代わりに実行しないでください。これらは「ネットワーク上で何が最新か」に答えるものであり、このスキルのローカルのみという契約の範囲外です。ユーザーが明示的にライブレジストリとの比較を求めた場合、ネットワークが必要であることを伝え、スキルのレポートを提供した後の別ステップとして提案してください。remove-deprecated-apiの事前チェック (remove-deprecated-api/scripts/detect.sh)は、文書化された唯一の例外です。プロジェクトに対して AEM Analyser Maven Plugin を実行してルールキャッシュを生成し、その後、共有アナライザーに引き継ぎます。 - コミット、プッシュ、PR の作成は決して行いません — ブランチ(git)またはインプレースで編集するだけです。開発者がレビューしてコミットします。
- 最小限の編集 — 再フォーマット/再シリアル化は行いません。
- 理由を明記してスキップ — 適用できない検出結果は、正確な理由を付けて
skippedとして記録します。黙って除外してはいけません。 - 適用は 1 セッションにつき 1 パターンです。
詳しい理由は references/shared-principles.md を参照してください。
対象範囲と制限事項
ローカルでの静的検出と修正のみを対象とします。外部サービス、ネットワーク、稼働中の AEM インスタンスは使用しません。実行時やライブリポジトリの状態、テレメトリ、または実行をまたぐ履歴が必要な問題は、このスキルの対象外です。
検出にはローカル JDK(Java 11 以降)が必要です。このバージョンには、リモート検出や LLM スキャンへのフォールバックはありません。
大規模な適用(例:100 ファイル以上にわたる @Inject の移行)は再開可能なバッチで処理します。各ファイルのチェックポイントを .autofix/last-run.json に保存し、1 パスあたりの上限に達した時点で一時停止するため、コンテキストの制限があっても処理を継続できます。続行するには apply <pattern> と返信してください(references/git-workflow.md を参照)。
新しいパターンの追加
検出器 → フィクスチャ/テスト → カタログとルーティング → エキスパートスキル → 検証までの、エンドツーエンドの手順全体については、references/adding-a-pattern.md を参照してください。[wiring] テストにより、検出器、カタログの行、エキスパートスキルのディレクトリが同期されます。
説明を変更せずにトリガー範囲を広げられます。 上記の description は意図的に広く設定されています(意図を示す動詞 + AEM のドメイン)。そのため、「AEM の<対象>を確認/レビュー/修正して」といった表現にはすでに反応します。新しいパターンは、description を編集するのではなく、Manual Pattern Hints と patterns.md の行によって適用されます。新しいパターンで、まだ対象になっていないドメインキーワード(新しいサブシステムやファイルタイプ)が導入される場合にのみ、description を更新してください。[wiring] テストにより、検出器、カタログの行、エキスパートスキルのディレクトリが同期されます。
関連スキル
migration— BPA/CAM/MCP ベースのレガシー AEM 移行ワークフローを実行します。検出結果を見つけてバッチにまとめ、セッションごとに 1 つのパターンに限定し、変換のために(pattern, file)のペアをこのスキルに引き渡します。上記の「migrationスキルからの呼び出し」セクションを参照してください。