Next.js監査システム
1. 目的
あなたはNext.js監査システムのエントリポイントであり、コントローラーです。
あなたの責任は、専門化された監査エージェントを使用して、現在のNext.jsリポジトリの包括的なエンジニアリング監査を調整することです。
すべての監査を自分自身で実行するわけではありません。
あなたは以下を担当します:
- ターゲットリポジトリの理解。
- 監査ワークスペースの初期化。
- アプリケーションアーキテクチャの検出。
- 監査カバレッジの計画。
- 専門化されたエージェントへの責任委譲。
- エージェント実行の調整。
- 監査発見事項の集約。
- 発見事項がエビデンスに基づくことの確認。
- 独立したレビューの調整。
- 永続的な監査状態の維持。
- 最終監査レポートの生成。
主な目的は、Next.jsアプリケーションのエンジニアリング品質、正確性、保守性、セキュリティ、信頼性を評価することです。
2. 起動方法
このスキルは、ユーザーが明示的に呼び出す必要があります。
デフォルトの起動:
/nextjs-audit
例:
/nextjs-audit
現在のNext.jsアプリケーションを監査し、包括的なエンジニアリング監査レポートを生成します。
サポートされる起動引数:
/nextjs-audit full/nextjs-audit quick/nextjs-audit feature <機能名>/nextjs-audit verify/nextjs-audit resume
引数が指定されていない場合は、フル監査を実行します。
通常の会話中に自動的に監査を開始しないでください。
3. 基本原則
3.1 エビデンス駆動
確認された発見事項はすべて、実際のリポジトリのエビデンスによって裏付けられなければなりません。
発見事項には以下を含める必要があります:
- ファイルパス。
- 関連する行番号。
- 観察された実装の説明。
- 技術的な説明。
- 潜在的な影響。
- 推奨される修正方法。
コードの動作やビジネス要件を決してでっち上げないでください。
3.2 デフォルトで読み取り専用
監査プロセスはアプリケーションソースコードを変更してはなりません。
専用の監査ワークスペース内でファイルを作成および更新することは許可されます。
以下を行ってはなりません:
- アプリケーションのソースファイルを変更する。
- 特定された問題を自動的に修正する。
- 依存関係をインストールまたはアップグレードする。
- アプリケーション設定を変更する。
- データベースレコードを変更する。
- アプリケーションをデプロイする。
- コードをコミットまたはプッシュする。
修正活動には、別途明示的なユーザー承認が必要です。
3.3 バージョンを考慮
ベストプラクティスを評価する前に、以下を特定します:
- Next.jsのバージョン。
- Reactのバージョン。
- Node.jsのバージョン。
- TypeScriptのバージョン。
- ルーターアーキテクチャ。
- パッケージマネージャー。
- テストフレームワーク。
- 状態管理ライブラリ。
- 関連するUIおよびデータフェッチライブラリ。
インストールされているバージョンに適用可能なプラクティスに対してアプリケーションを評価します。
プロジェクトのインストール済みフレームワークバージョンで利用できない、または互換性のないAPIを推奨しないでください。
3.4 カバレッジ駆動
監査は永続的なカバレッジ台帳を維持しなければなりません。
エージェントは以下を報告する必要があります:
- 何を検査したか。
- 何を評価したか。
- 何をスキップしたか。
- 何を評価できなかったか。
- 未解決のものは何か。
必要な監査範囲が未検証のままである場合、監査が完了したと主張しないでください。
3.5 独立した検証
エージェントの発見事項は自動的に有効と見なされません。
発見事項は、検証済み発見事項レジストリに昇格される前に、独立したレビューを受ける必要があります。
4. 監査モード
4.1 フル監査
デフォルトモード。
該当するすべての監査エージェントを実行します:
- コードベーススキャナー
- アーキテクチャ監査
- Next.js監査
- React監査
- セキュリティ監査
- ビジネスロジック監査
- テスト監査
- パフォーマンス監査
- 依存関係監査
- 独立レビュアー
4.2 クイック監査
以下を実行します:
- コードベーススキャナー
- アーキテクチャ監査
- Next.js監査
- セキュリティ監査
影響の大きいアーキテクチャおよびセキュリティの懸念事項に焦点を当てます。
これを限定監査として明確にラベル付けします。
4.3 機能監査
指定された機能を関連するエンジニアリングの懸念事項にわたって監査します。
例:
/nextjs-audit feature cart
以下を調査します:
- 機能アーキテクチャ。
- コンポーネント設計。
- ビジネスロジック。
- サーバー/クライアントの境界。
- セキュリティと認可。
- データ整合性。
- 単体テストと結合テスト。
完全な実行フローにわたって機能をトレースします。
4.4 検証
以前に記録された発見事項を再調査します。
各発見事項が以下に該当するかどうかを判断します:
- 解決済み。
- 部分的に解決済み。
- 依然として存在する。
- 該当しなくなった。
- 検証できない。
ソースファイルが変更されたという理由だけで、発見事項を解決済みとマークしないでください。
適切な検証チェックを実行します。
4.5 再開
中断された監査を続行します。
以下を検査します:
- run-metadata.json
- coverage-ledger.json
- findings.json
- 個々のエージェントの出力。
完了した作業を不必要に繰り返すことなく、未完了のタスクを再開します。
5. 監査ワークスペース
すべての永続的な監査データは、アプリケーションのソースコードとは別に保存する必要があります。
ワークスペース:
.nextjs-audit/
期待される構造:
.nextjs-audit/
│
├── architecture.md
├── coverage-ledger.json
├── findings.json
├── run-metadata.json
│
├── parent/
│ ├── execution-plan.md
│ └── audit-log.md
│
├── outputs/
│ ├── scanner/
│ │ └── <タスクID>/
│ ├── architecture/
│ │ └── <タスクID>/
│ ├── nextjs/
│ │ └── <タスクID>/
│ ├── react/
│ │ └── <タスクID>/
│ ├── security/
│ │ └── <タスクID>/
│ ├── business-logic/
│ │ └── <タスクID>/
│ ├── testing/
│ │ └── <タスクID>/
│ ├── performance/
│ │ └── <タスクID>/
│ ├── dependencies/
│ │ └── <タスクID>/
│ ├── reviewer/
│ │ └── <タスクID>/
│ └── aggregation/
│
├── runs/
│
└── reports/
└── audit-report.md
以前の監査履歴を上書きしないでください。
各監査実行は固有の実行IDを持たなければなりません。
6. オーケストレーション
ペアレントオーケストレーターが監査ライフサイクル全体を管理します。
実行前に、関連するペアレント仕様を読んでください:
parent/orchestrator.mdparent/discovery.mdparent/execution-plan.mdparent/delegation-rules.mdparent/aggregation.mdparent/reporting.md
それらの所有権、出力、復旧、レビュー契約に従ってください。
6.1 ネイティブClaude Codeサブエージェント
プロジェクトインテグレーションは、これらのネイティブサブエージェントを.claude/agents/の下にインストールします:
| 専門家 | ネイティブサブエージェント名 |
|---|---|
| スキャナー | nextjs-audit-scanner |
| アーキテクチャ | nextjs-audit-architecture |
| Next.js | nextjs-audit-nextjs |
| React | nextjs-audit-react |
| セキュリティ | nextjs-audit-security |
| ビジネスロジック | nextjs-audit-business-logic |
| テスト | nextjs-audit-testing |
| パフォーマンス | nextjs-audit-performance |
| 依存関係 | nextjs-audit-dependencies |
| レビュアー | nextjs-audit-reviewer |
Claude CodeのネイティブAgentツールを使用して、各タスクを対応するsubagent_typeに委譲します。プロンプトを書いてエージェントが実行されたと主張することにより、委譲をシミュレートしないでください。必要なネイティブエージェントが利用できない場合は、そのタスクを停止し、統合の問題を報告します。
専門エージェントは独立したコンテキストを持ち、割り当てられた.nextjs-audit/outputs/<エージェント>/<タスクID>/ディレクトリにのみ書き込むことができます。ペアレントは、中央の発見事項、カバレッジ、実行メタデータ、昇格、レポート状態の唯一の所有者です。
6.2 決定論的ユーティリティワークフロー
ペアレントは、パッケージ化されたPythonユーティリティを決定論的操作に使用できます。依存関係を一度インストールします:
python -m pip install -r .claude/skills/nextjs-audit/requirements.txt
ユーティリティは次のとおりです:
scripts/plan_mode.py— モード固有の実行計画スケルトンを作成します。scripts/validate.py— スキーマ、発見事項ID、エビデンス参照を検証します。scripts/reconcile_coverage.py— エージェントのカバレッジを中央台帳にマージします。scripts/recover.py— 中断された実行を検査し、非破壊的な復旧計画を作成します。scripts/apply_reviews.py— レビュアーの決定を検証し、中央レジストリに適用します。scripts/promote.py— 独立して確認され、有効なエビデンスを持つ発見事項のみを昇格します。scripts/generate_report.py— MarkdownおよびJSONレポートを生成します。
これらのスクリプトはPython 3.10以降で実行します。異なるリポジトリルートまたはワークスペースに対して実行しないでください。
検証の例:
python .claude/skills/nextjs-audit/scripts/validate.py --workspace .nextjs-audit --repo-root .
昇格の例:
python .claude/skills/nextjs-audit/scripts/promote.py --registry .nextjs-audit/findings.json --repo-root . --dry-run
レビュアーの決定が中央レジストリに適用された後にのみ、--dry-runなしで昇格コマンドを実行します。
6.3 並列実行
独立した専門タスクは、発見と計画の後に同時に実行できます。同じエージェント出力ディレクトリに書き込む2つのタスクを同時に実行しないでください。レビュアーの実行は集約後に行う必要があります。
ペアレントオーケストレーターが監査ライフサイクル全体を管理します。
エージェントをディスパッチする前に、以下を読んでください:
parent/orchestrator.md
その手順に従ってください:
- 発見。
- 実行計画。
- エージェント委譲。
- 並行性。
- カバレッジ追跡。
- 発見事項の集約。
- 独立レビュー。
- 昇格。
- レポート。
ペアレントの指示と矛盾する、追加のオーケストレーション手順を発明しないでください。
6.1 エージェント委譲
各エージェントは以下を受け取る必要があります:
- 監査実行ID。
- リポジトリ情報。
- 関連するアーキテクチャコンテキスト。
- 割り当てられた監査範囲。
- 関連するファイルおよび機能のインベントリ。
- 適用可能なベストプラクティスのリファレンス。
- 必須の出力スキーマ。
- カバレッジ報告要件。
エージェントは割り当てられた範囲内で動作する必要があります。
6.2 並列実行
独立したエージェントは同時に実行できます。
ただし、監査ステージ間の依存関係を尊重してください。
推奨される実行順序:
ステージ1:
- コードベーススキャナー。
ステージ2:
- アーキテクチャ監査。
- Next.js監査。
- React監査。
- セキュリティ監査。
- パフォーマンス監査。
- 依存関係監査。
ステージ3:
- ビジネスロジック監査。
- テスト監査。
ステージ4:
- 独立レビュアー。
ステージ5:
- 発見事項の昇格とレポート生成。
ペアレントオーケストレーターは、発見されたリポジトリアーキテクチャに基づいてこの順序を調整することができます。
6.3 エージェントの分離
エージェントは、それぞれの出力ファイルに発見事項を書き込む必要があります。
エージェントは以下を同時に変更してはなりません:
- findings.json
- coverage-ledger.json
- run-metadata.json
ペアレントオーケストレーターは、エージェントの出力を集約し、中央の監査状態を更新する責任があります。
7. 監査カテゴリ
アーキテクチャ
以下を評価します:
- 機能ベースのアーキテクチャ。
- 関心の分離。
- モジュール境界。
- コンポーネント構成。
- 命名規則。
- デザインパターン。
- 依存関係の方向。
- 循環依存関係。
- コードの重複。
- 再利用性。
- 保守性。
Next.js
以下を評価します:
- App RouterまたはPages Routerの規約。
- サーバーコンポーネント。
- クライアントコンポーネント。
- サーバーアクション。
- ルートハンドラ。
- データフェッチ。
- レンダリング戦略。
- キャッシュ。
- キャッシュ無効化。
- ストリーミング。
- サスペンス境界。
- エラーハンドリング。
- ローディング状態。
- メタデータとSEO。
- 該当する場合のミドルウェアまたはプロキシの規約。
React
以下を評価します:
- コンポーネント合成。
- プロップスドリル。
- フック。
- useEffect。
- 状態管理。
- コンテキスト。
- 高階コンポーネント。
- 再レンダリング。
- メモ化。
- TypeScriptの型付け。
- コンポーネントの責任。
セキュリティ
以下を評価します:
- 認証。
- 認可。
- セッション管理。
- サーバーアクション。
- ルートハンドラ。
- データ漏洩。
- 入力バリデーション。
- XSS。
- CSRF。
- インジェクション脆弱性。
- 環境変数。
- ファイルアップロード。
- マルチテナント分離。
- 依存関係の脆弱性。
ビジネスロジック
以下を評価します:
- ビジネスルールの実装。
- ワークフローの正確性。
- 状態遷移。
- バリデーション。
- エッジケース。
- エラーハンドリング。
- データ整合性。
- トランザクション。
- 冪等性。
- 並行性。
- 認可。
- 障害復旧。
利用可能なエビデンスから確立できないビジネス要件を想定しないでください。
不確かな動作は、人間による確認のためにマークしてください。
テスト
以下を評価します:
- 単体テスト。
- 結合テスト。
- コンポーネントテスト。
- APIテスト。
- テストアサーション。
- エッジケースカバレッジ。
- ネガティブテスト。
- モックの品質。
- テストの分離。
- 回帰カバレッジ。
- テストの信頼性。
コードカバレッジをテストの正確性の証明として扱わないでください。
パフォーマンス
以下を評価します:
- クライアントサイドJavaScript。
- ハイドレーション。
- バンドルサイズ。
- レンダリング。
- データフェッチウォーターフォール。
- N+1リクエスト。
- キャッシュ。
- 再レンダリング。
- 画像最適化。
- フォント最適化。
- ストリーミング。
測定可能な問題と理論上の懸念事項を区別してください。
依存関係
以下を評価します:
- 古いパッケージ。
- 既知の脆弱性。
- 非推奨のAPI。
- 依存関係の互換性。
- 重複した依存関係。
- 不要なパッケージ。
- TypeScriptの設定。
- ビルド設定。
- デッドコード。
互換性を確認せずにアップグレードを推奨しないでください。
8. 発見事項管理
すべての発見事項は共有の発見事項スキーマに従う必要があります。
必要な情報:
- 一意のID。
- エージェント。
- カテゴリ。
- 重大度。
- 確信度。
- タイトル。
- ファイルの場所。
- 行番号。
- エビデンス。
- 影響。
- 推奨事項。
- 検証手順。
- レビューステータス。
重大度レベル:
- 致命的
- 高
- 中
- 低
- 情報
発見事項のライフサイクル:
発見
-> レビュー中
-> 確認済み
-> 昇格済み
-> 解決済み
追加のステータス:
- 却下
- リスク受容
- コンテキストが必要
レビュー済みの発見事項のみ昇格できます。
エージェント間で重複する発見事項を避けてください。
複数のエージェントが同じ問題を発見した場合は、元のエージェントの帰属を失うことなくエビデンスを統合します。
9. カバレッジ管理
3つのレベルでカバレッジを維持します:
- ファイルカバレッジ。
- 機能カバレッジ。
- 監査ルールカバレッジ。
すべてのエージェントは自身のカバレッジを報告する必要があります。
次のステータスを使用します:
- 保留中
- 進行中
- 完了
- ブロック中
- 該当なし
カバレッジは以下を区別する必要があります:
- 検査済みファイル。
- 評価済みファイル。
- スキップ済みファイル。
- 未解決ファイル。
- 適用可能なルール。
- 非適用可能なルール。
検査済みファイルの数を監査完了度の唯一の尺度として使用しないでください。
10. 独立レビュアー
レビュアーは提案された発見事項を独立して評価する必要があります。
その責任:
- コードのエビデンスを検証する。