mcpField
C
code-assessment

code-assessment

github.com/adobeテスト・品質316514 回インストール今日更新
リポジトリ

code-assessment について

AEM as a Cloud Service プロジェクト向けのローカルコード評価スキルで、対応する品質問題を検出・修正します。決定論的なアナライザーとパターン別の手順書で発見から修正までを進め、LLM によるスキャンへのフォールバックはありません。

主な機能

  1. 01ローカル静的検出と修正
  2. 02パターン別スキルへの振り分け
  3. 03探索と指定ファイルの両方に対応
  4. 04構築済みパターンの検出結果を報告
  5. 05大規模修正のバッチ再開

活用シーン

  1. 01AEM プロジェクトの対応問題をスキャン
  2. 02指定ファイルに単一パターンの修正を適用
  3. 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.md
inject-in-sling-model/
recipe.md
outbound-call-timeouts/
recipe.md
outdated-dependencies/
recipe.md
references/
_template.md
adding-a-pattern.md
aem-cloud-service-pattern-prerequisites.md
data-sly-test-redundant-constant.md
git-workflow.md
patterns.md
resource-resolver-logging.md
runbook.md
scr-to-osgi-ds.md
shared-principles.md
troubleshooting.md
remove-deprecated-api/
README.md
recipe.md
remove-deprecated-api/scripts/
detect.sh
scheduler/
path-a.md
path-b.md
scripts/
analyze.sh
scripts/analyzer/
Analyze.java
Corpus.java
Detector.java
scripts/analyzer/detectors/
AssetManager.java
EventMigration.java
InjectInSlingModel.java
OakQueryIndexCoverage.java
OutboundCallTimeouts.java
OutdatedDependencies.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 値は、今後予定されている検出方法を示すものであり、現在有効なコードパスではありません。

ルーティング

  1. ユーザーがファイル/座標を指定 → 指定されたパスに対して with_findings モードでランブックを実行します。
  2. 「リポジトリをスキャンして」/ファイルの指定なし → discover モードでランブックを実行します(パターンごとに検出し、ワークスペースのルートのみを対象とします)。

次に、ランブックに従います:references/runbook.md。

手動パターンヒント(分類 → エキスパートスキル)

リクエストを1つのエキスパートスキルに振り分けます。2つのパターンファミリーがこのスキルを共有します。

機械的な修正(アナライザーによる検出、決定論的な編集 — ランブックのフローに従います):

ユーザーの発言/確認した内容エキスパートスキル
「aem sdk を更新」「mockito をアップグレード」、pom 内の古い <version> または ${property}outdated-dependencies/
「@Inject を修正」「Sling Models を最新化」、@Model フィールド上の javax.inject.Injectinject-in-sling-model/
「HTTP タイムアウトを追加」「アウトバウンド/外部呼び出しにタイムアウトがない」、タイムアウトを設定せずに構築された HttpClient / HttpClients / OkHttpClientoutbound-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、軽量リスナー + JobConsumerresource-change-listener/resourceChangeListener
com.day.cq.replication.Replicator、org.apache.sling.replication.*、「公開/プレビューのアクティベーション」replication/replication
javax.jcr.observation.EventListener、リソース以外のトピック(レプリケーション、ワークフロー、カスタム)に対する org.osgi.service.event.EventHandlerevent-migration/eventListener / eventHandler
com.day.cq.dam.api.AssetManager の作成/アップロード/削除 API、createAssetForBinary、removeAssetForBinaryasset-manager/assetApi
HTL ビルド警告 data-sly-test: redundant constant value comparisonreferences/data-sly-test-redundant-constant.mdhtlLint(リファレンス。エキスパートスキルのサブディレクトリはありません)

広範な依頼/正確性レビュー(「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 スキルからの呼び出し」セクションを参照してください。

コメント