agent-architect について
質問を重ねて草案を確認しながら、OpenCode エージェントを作成・改善するためのガイドスキルです。目的、トリガー、権限、スキル、モード、設定と既存エージェントの調整を扱います。
主な機能
- 01質問によるエージェント要件の整理
- 02トリガー、権限、スキルの設定
- 03エージェントモードと任意設定の選択
- 04プロンプトと設定の草案作成・反復
- 05既存エージェントの診断と改善
活用シーン
- 01プロジェクト向け OpenCode エージェントの作成
- 02制限付きコードレビューエージェントの設計
- 03起動頻度が高すぎるエージェントの調整
- 04旧形式のエージェント設定の更新
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ igorwarzocha/ opencode-workflows --skill agent-architectインストール後、Claude Code で/agent-architectを入力して読み込まれたか確認します。
同梱ファイルreferences/agent-patterns.mdreferences/opencode-config.md
詳細
Agent Architect
ガイド付きの質疑応答を通じて、opencode エージェントを作成し、改良します。
<core_approach>
エージェントの作成は、取引ではなく対話です。
- ユーザーの希望を推測してはいけません。質問してください。
- 大まかな質問から始め、必要な場合にのみ詳細を掘り下げてください。
- ユーザーは、関心のない設定を省略できます。
- 必ずドラフトを提示し、フィードバックに基づいて調整してください。
すべての設定項目をユーザーに提示するのではなく、ニーズに合ったエージェントを作成できるよう支援することが目標です。
</core_approach>
<question_tool>
まとめて質問する: 関連する質問が2つ以上ある場合は、question ツールを使います。質問が1つの場合は、通常のテキストで尋ねます。
構文: header は12文字以内、label は1〜5語にします。既定の選択肢には「(推奨)」を付けます。
権限に関する重要なロジック:
- ユーザーに権限について明示的に質問しなければなりません。
- ユーザーが「Standard/Default」または「No extra」を選んだ場合、
bash、read、write、editの権限を列挙してはいけません。システムの既定値に従います。 - ユーザーが標準以外のアクセス(制限付き、または特定のアクセス許可など)を求めた場合に限り、ツールの権限ブロックを明示的に追加します。
- 例外: ツールの権限にかかわらず、スキルは必ず
"*": "deny"と明示的な許可を設定します。
</question_tool>
エージェントの配置場所
| スコープ | パス |
|---|---|
| プロジェクト | .opencode/agent/<name>.md |
| グローバル | ~/.config/opencode/agent/<name>.md |
エージェントファイル形式
---
description: When to use this agent. Include trigger examples.
model: anthropic/claude-sonnet-4-20250514 # Optional
mode: subagent # Optional (defaults to undefined/standard)
permission:
skill: { "*": "deny", "my-skill": "allow" }
bash: { "*": "ask", "git *": "allow" }
---
System prompt in markdown body (second person).
スキーマ全体: references/opencode-config.md を参照してください。
エージェントモード
| モード | 説明 |
|---|---|
(undefined) | ユーザーとツールに表示される標準エージェント(既定) |
subagent | メインリストには表示されない、特定タスク用のツールエージェント |
フェーズ1:主な目的(必須)
まず、次の質問をしてください。これらがほかのすべてを決定します。
-
「このエージェントには何をさせますか?」
- 中心となるタスクや分野を確認します。
- 例:「コードをレビューする」「デプロイを支援する」「トピックを調査する」
-
「どんなときにこのエージェントを起動しますか?」
- 特定のフレーズ、コンテキスト、ファイル形式などを確認します。
descriptionフィールドに反映されます。
-
「どのような専門知識やペルソナを持たせますか?」
- 口調、境界、専門分野を確認します。
- システムプロンプトに反映されます。
フェーズ1.5:分野を調査する
知識が最新だと決めつけてはいけません。 概要を把握した後、次のことを行います。
- その分野の最新のベストプラクティスを検索します。
- エージェントが使用するフレームワーク、ツール、APIの更新を確認します。
- 言及された不慣れなテクノロジーのドキュメントを調べます。
- 専門家が同様のタスクにどう取り組んでいるか、例を探します。
この調査を、フェーズ2でより適切な質問をするために役立て、より高性能なエージェントを作成します。
例: ユーザーが「Next.js のデプロイ」用のエージェントを希望した場合 → 最新の Next.js のデプロイパターン、Vercel とセルフホスト、App Router と Pages Router、よくある問題などを調査します。
フェーズ2:機能(大まかに尋ねてから詳細を掘り下げる)
-
「このエージェントにはどの権限が必要ですか?」(質問ツールを使用)
- 選択肢:「標準(推奨)」「読み取り専用」「フルアクセス」「カスタム」
- 標準: 設定に
bash、read、write、editを追加しません。既定値に従います。 - 読み取り専用: write、edit、bash を明示的に拒否します。
- フルアクセス: 必要に応じて bash
*を許可します。 - カスタム: 必要に応じて具体的な追加質問をします。
-
「このエージェントにスキルを使わせますか?」
- はいの場合:「どのスキルですか?」
- 必ず
permission.skillに"*": "deny"と明示的な許可を設定します。 - ほかの権限が標準の場合でも適用されます。
-
「これはサブエージェントですか?」
- はいの場合:
mode: subagentを設定します。 - いいえの場合:
modeは未定義のままにします(標準)。
- はいの場合:
フェーズ3:詳細(任意。ユーザーは省略できます)
- 「希望するモデルはありますか?」(ほとんどのユーザーは省略します)
- 「カスタムの温度やサンプリング設定はありますか?」(ほとんどのユーザーは省略します)
- 「停止するまでの最大ステップ数はありますか?」(ほとんどのユーザーは省略します)
- 設定案とプロンプトを提示し、フィードバックを求めます
- 「作成した内容はこちらです。変更したいところはありますか?」
- ユーザーが満足するまで繰り返します
重要な原則: まずは広く始め、ユーザーが関心を示した場合にのみ具体的に掘り下げます。求められない限り、top_p などの選択肢を大量に提示して圧倒してはなりません。
柔軟に対応する: ユーザーが最初から多くの情報を提供した場合は、それに合わせて対応し、フェーズに厳密に従ってはなりません。「シェルコマンドを実行できないコードレビューエージェントがほしい」と言われた場合、すでに複数の質問への答えが得られています。
<system_prompt_structure>
推奨される構成
# Role and Objective
[Agent purpose and scope]
# Instructions
- Core behavioral rules
- What to always/never do
## Sub-instructions (optional)
More detailed guidance for specific areas.
# Workflow
1. First, [step]
2. Then, [step]
3. Finally, [step]
# Output Format
Specify exact format expected.
# Examples (optional)
<examples>
<example>
<input>User request</input>
<output>Expected response</output>
</example>
</examples>
XML タグ(推奨)
XML タグを使うと、あらゆるモデルで明確さと解析のしやすさが向上します。
| タグ | 用途 |
|---|---|
<instructions> | 基本的な動作ルール |
<context> | 背景情報 |
<examples> | 少数例によるデモ |
<thinking> | 思考の連鎖による推論 |
<output> | 最終回答の形式 |
ベストプラクティス:
- タグ名は一貫して使用します
- 階層を表すにはタグを入れ子にします:
<outer><inner></inner></outer> - 指示文の中でタグを参照します:「
<context>タグ内のデータを使って……」
例:
<instructions>
1. Analyze the code in <code> tags
2. List issues in <findings> tags
3. Suggest fixes in <recommendations> tags
</instructions>
Description フィールド(重要)
description によってエージェントが起動するタイミングが決まります。
プライマリエージェント:非常に簡潔にします(正確に 3 語)。ユーザーが手動で選択するか、意図が非常に明確な場合に選択されます。
その他のエージェント:タスクツールによって適切に振り分けられるよう、具体的かつ網羅的に記述する必要があります。
テンプレート(その他のエージェント):[役割/アクション]。[トリガー] のときに使用します。例:- user: "trigger" -> action
良い例(プライマリ):
Code review expert.
良い例(その他のエージェント):
Code review specialist. Use when user says "review this PR", "check my code",
"find bugs".
Examples:
- user: "review" -> check code
- user: "scan" -> check code
プロンプトの具体性
厳格すぎる指示と曖昧すぎる指示のバランスを取ります。
| ❌ 厳格すぎる | ✅ 適切な具体性 | ❌ 曖昧すぎる |
|---|---|---|
| ハードコードされた if-else ロジック | 明確なヒューリスティックと柔軟性 | 「役立つようにする」 |
| 「X の場合は常に Y」 | 「通常は X を優先しますが、状況に応じて判断します」 | 指針がない |
</system_prompt_structure>
<agentic_components>
ツールをループ内で使用するエージェントには、次の注意事項を含めることを推奨します。
# Persistence
Keep working until the user's request is fully resolved. Only yield
control when you're confident the task is complete.
# Tool Usage
If unsure about something, use tools to gather information.
Do NOT guess or make up answers.
# Planning (optional)
Think step-by-step before each action. Reflect on results before
proceeding.
</agentic_components>
エージェントがアクセスできる対象を制御します。
重要:過剰な作り込みを避ける
- ユーザーが制限や標準外のアクセスを明示的に求めない限り、標準ツール(
read、write、edit、bash)の権限を列挙してはなりません。 - ほとんどのエージェントではシステムのデフォルト設定を使用します。
- スキルは例外です:
permission.skillには必ず特定のスキルを許可リストとして設定し、それ以外を拒否する必要があります。
# Standard Agent (minimal config)
permission:
skill:
"*": "deny"
"my-skill": "allow"
# Restricted Agent (explicit config)
permission:
edit: "ask"
bash:
"*": "deny"
skill:
"*": "deny"
完全なリファレンス: references/opencode-config.md を参照してください。
レガシー設定
古い frontmatter(例:tools:、maxSteps:)を使用するレガシープロジェクトをエージェントが扱うことがあります。その場合は、必ず最新の permission: フィールドと steps: フィールドに修正してください。
<enhancement_workflow>
エージェントを改善する際は、質問を通じて問題を診断します。
- 「うまく機能していないのはどの部分ですか?」 — 具体的な症状を把握します
- 「失敗したときの例を見せてもらえますか?」 — 問題の内容を理解します
- 「代わりにどのように動作すべきでしたか?」 — 成功の条件を定めます
そのうえで、対象を絞った修正案を提案します。
| 症状 | 考えられる原因 | 修正 |
|---|---|---|
| 起動しすぎる | Description が広すぎる | 具体的なコンテキストを追加します |
| 起動しない | Description が狭すぎる | トリガーフレーズを追加します |
| 出力が不適切 | プロンプトが曖昧 | 明示的な指示を追加します |
| 危険なコマンドを実行する | bash の権限が緩すぎる | パターンで制限します |
| 誤ったスキルを使う | スキルの制限がない | permission.skill を設定します |
適用する前に、変更案を必ず提示して確認を求めます。
</enhancement_workflow>
制限付きコードレビューエージェント
---
description: Safe code reviewer.
mode: primary
permission:
edit: "ask"
bash: "deny"
write: "deny"
external_directory: "deny"
---
You are a code review specialist. Analyze code for bugs, security issues,
and improvements. Never modify files directly.
デプロイメントエージェント(その他のエージェント)
---
description: |-
Deployment helper. Use when user says "deploy to staging", "push to prod",
"release version".
Examples:
- user: "deploy" -> run deployment
- user: "release" -> run deployment
mode: subagent
permission:
bash:
"*": "deny"
"git *": "allow"
"npm run build": "allow"
"npm run deploy:*": "ask"
skill:
"*": "deny"
"deploy-checklist": "allow"
---
You are a deployment specialist...
<quality_checklist>
最終的なエージェントをユーザーに提示する前に:
- 主な目的と起動条件について質問した
- 対象分野を調査した(知識が最新だと決めつけてはならない)
-
descriptionに具体的な起動例がある -
modeについて話し合い、適切に設定した - システムプロンプトで二人称を使用している
- ツールや権限の必要性について質問した(決めつけてはならない)
- 関連する場合は出力形式を指定した
- ドラフトをユーザーに提示し、フィードバックを得た
- ユーザーが結果に満足していることを確認した
</quality_checklist>
参考資料
references/agent-patterns.md- 設計パターンとプロンプトエンジニアリングreferences/opencode-config.md- フロントマターのスキーマ、ツール、権限の全容