目次
はじめに
こんにちは、佐々木です。
2025年7月31日にAmazon Q Developer CLI announces custom agentsが提供開始されました。 このAmazon Q Developer CLI カスタムエージェント(以下、カスタムエージェント)を使って、試しにReactコードレビューエージェントを作成してみたいと思います。
Amazon Q Developer CLI カスタムエージェントとは
- 特定のユースケースやワークフローに合わせて設定できるカスタマイズ可能な AI アシスタント
- JSONファイルでエージェントの動作を詳細に設定可能
- 2025年7月31日にリリースされた新機能
今回の実行環境
- Ubuntu 24.04.3 (WSL2)
- Amazon Q Developer 1.13.1
- Git 2.43.0
- Node.js 22.16.0
- React 19.0.0
カスタムエージェント設定方法
Amazon Q Developer CLI を起動し、新しいエージェントを作成します。
q chat > /agent create --name react-review-agent
デフォルトエディタが開くので、以下のエージェント情報を入力して保存します。
各項目の詳細は後述のカスタムエージェント構成要素を参照してください。
{ "name": "react-review-agent", "description": "Reactコードレビューエージェント", "prompt": "あなたはReactコードレビューの専門家です。Reactのベストプラクティス、パフォーマンス最適化、モダンなReactパターンに深い知識を持っています。以下の点に重点を置いてレビューしてください:\n\n- コンポーネント設計とアーキテクチャパターン\n- パフォーマンス最適化(useMemo、useCallback、React.memo)\n- アクセシビリティ(a11y)対応\n- TypeScript統合と型安全性\n- テスト戦略(Jest、React Testing Library)\n- コードの保守性と可読性\n- セキュリティベストプラクティス\n- モダンなReact機能(hooks、suspense、concurrent features)\n\n具体例と実行可能な推奨事項を含む建設的なフィードバックを提供してください。提案の理由も必ず説明してください。", "mcpServers": { "git": { "command": "git-mcp-server", "args": [], "timeout": 30000 } }, "tools": [ "fs_read", "fs_write", "@git" ], "allowedTools": [ "fs_read", "fs_write", "@git/git_status", "@git/git_log", "@git/git_diff" ], "toolAliases": { "@git/git_status": "status", "@git/git_log": "log", "@git/git_diff": "diff" }, "resources": [ "file://docs/REVIEW_RULE.md" ], "hooks": { "agentSpawn": [ { "command": "git status --porcelain", "timeout_ms": 5000 } ] } }
保存後、成功のメッセージが表示されたらエージェントの作成が完了です。
~/.aws/amazonq/cli-agents/react-review-agent.jsonが作成されました。
作成後の変更やチームへの配布を行いたい場合は、このJSONファイルを操作・配布します。
> /agent create --name react-review-agent Agent react-review-agent has been created successfully Changes take effect on next launch
/agent listコマンドでエージェント一覧を表示することができます。
今回はデフォルトと作成したreact-review-agentが表示されました。
> /agent list * q_cli_default react-review-agent
これで設定は完了です。Amazon Q Developer CLIを終了します。
> /quit
カスタムエージェント構成要素
| 構成要素 | 説明 | 今回の設定内容 |
|---|---|---|
| name | エージェントの識別名。 | ー |
| description | エージェントの説明文。 | ー |
| prompt | エージェントの性格・専門性を定義するプロンプト。 | Reactレビューの専門家。 |
| mcpServers | Model Context Protocol サーバーの設定。 | Gitを利用。 |
| tools | エージェントが使用可能なツール一覧。 標準ツールについてはこちらを参照。 |
ファイル読み込み、書き込み、Gitコマンド実行を利用。 |
| allowedTools | 許可されたツールのリスト。 | ファイル読み込み、書き込み、Gitコマンド実行を許可。 |
| toolAliases | ツールの別名設定。 | Gitのコマンドを短縮形で実行可能に設定。 |
| resources | エージェント起動時に読み込むリソース。 | レビュールール(REVIEW_RULE.md)のドキュメントを読み込み。(内容は下記参照) |
| hooks | 特定のタイミングで実行されるコマンド。 | エージェント起動時にgit statusを取得。 |
※他の構成要素は、/agent schemaで確認可能です。
(補足)resourcesについて
今回はresourcesに下記のレビュールールのドキュメントを指定しています。 生成AIに読み込ませるため、やや明示的な書き方をしています。 複数指定可能なので、処理方式やコーディングルールも読み込ませると精度が上がるかもしれません。
# レビュールール レビューは以下のテンプレートに利用してください。 レビュー結果は/reviewディレクトリに格納してください。 ファイル名は「(レビュー日時:YYYYMMDDHHMmm)_指摘事項.md」としてください。 # レビューテンプレート ------------------------------ # レビューシート ## 実施時間 YYYY/MM/DD HH:mm ## 指摘内容 | No | ファイル名 | 行数 | 指摘内容 | 備考| |---|---|---|---|---| | 1 | example.tsx | 30 | コンポーネント名が不一致。 | | ------------------------------
実行
以下のコマンドで今回作成したカスタムエージェントを利用してAmazon Q Developer CLIを起動します。
q chat --agent react-review-agent
エージェント起動時に、Gitの変更履歴やレビュールールドキュメントが自動で読み込まれているので、「レビューを実行してください」という簡単なメッセージでレビューが開始されます。
[react-review-agent] > レビューを実行してください > レビューを実行します。まず、現在のファイル構造を確認し、変更されたファイルを詳しく確認してからレビューを行います。 (中略) > レビューが完了しました。 ## レビュー結果サマリー 変更されたファイル(Home.tsx、Header.tsx)について、Reactのベストプラクティスに基づいた詳細なレビューを実施しました。 (以下略)
REVIEW_RULE.mdの内容に従ってレビューシートが作成されました。
## 指摘内容
| No | ファイル名 | 行数 | 指摘内容 | 備考|
|---|---|---|---|---|
| 1 | Home.tsx | 14-26 | クリックイベントのアクセシビリティ対応不足。BoxコンポーネントにonClickを設定しているが、キーボードナビゲーションやスクリーンリーダー対応ができていない。 | ButtonコンポーネントまたはroleとtabIndexを追加することを推奨 |
| 2 | Home.tsx | 14-26 | インラインイベントハンドラーの使用。パフォーマンス最適化のためuseCallbackの使用を検討。 | 再レンダリング時に新しい関数が作成される |
| 3 | Home.tsx | 全体 | TypeScript型定義不足。コンポーネントの戻り値型(JSX.Element)の明示的な定義がない。 | 型安全性向上のため |
| 4 | Header.tsx | 17 | コンポーネント名とファイル名の不一致。ファイル名はHeaderだが、コンポーネント名がButtonAppBarになっている。 | 保守性とコードの可読性向上のため |
| 5 | Header.tsx | 25-60 | JSX内でのコンポーネント定義。DrawerListがコンポーネント内で定義されており、再レンダリング時に毎回新しいオブジェクトが作成される。 | useMemoまたはコンポーネント外への移動を推奨 |
(以下略)
まとめ
所感
- エージェントを事前に設定しておくことで、毎回同じ背景や役割を説明する手間が省けて効率的。
- JSONファイルでエージェントを定義できるので、チームに配布が容易。
- allowedToolsでエージェントの実行可能な操作を明確に制御でき、セキュリティリスクを低減できる。
活用例
- コーディングルールを事前に設定して、チーム開発の標準エージェントとする。
- 言語別(Python、Java、Go等)の専門エージェントを作成してプロジェクトごとに使い分ける。
- 成果物の変更をしたくないときは書き込みを一切禁止するエージェントを利用。
- コマンド実行権限を制限し、システムへの予期せぬ影響を防止する。
今回は、アップデートされたAmazon Q Developer CLIの新機能を使ってカスタムエージェントを作成しました。今後も様々なカスタムエージェントを作成して、開発効率の向上等に活用していきたいと思います。