mcpField
A
agent-architect

agent-architect

github.com/igorwarzochaエージェントワークフロー122318 回インストール38 週間前に更新
リポジトリ

agent-architect について

質問を重ねて草案を確認しながら、OpenCode エージェントを作成・改善するためのガイドスキルです。目的、トリガー、権限、スキル、モード、設定と既存エージェントの調整を扱います。

主な機能

  1. 01質問によるエージェント要件の整理
  2. 02トリガー、権限、スキルの設定
  3. 03エージェントモードと任意設定の選択
  4. 04プロンプトと設定の草案作成・反復
  5. 05既存エージェントの診断と改善

活用シーン

  1. 01プロジェクト向け OpenCode エージェントの作成
  2. 02制限付きコードレビューエージェントの設計
  3. 03起動頻度が高すぎるエージェントの調整
  4. 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:主な目的(必須)

まず、次の質問をしてください。これらがほかのすべてを決定します。

  1. 「このエージェントには何をさせますか?」

    • 中心となるタスクや分野を確認します。
    • 例:「コードをレビューする」「デプロイを支援する」「トピックを調査する」
  2. 「どんなときにこのエージェントを起動しますか?」

    • 特定のフレーズ、コンテキスト、ファイル形式などを確認します。
    • description フィールドに反映されます。
  3. 「どのような専門知識やペルソナを持たせますか?」

    • 口調、境界、専門分野を確認します。
    • システムプロンプトに反映されます。

フェーズ1.5:分野を調査する

知識が最新だと決めつけてはいけません。 概要を把握した後、次のことを行います。

  • その分野の最新のベストプラクティスを検索します。
  • エージェントが使用するフレームワーク、ツール、APIの更新を確認します。
  • 言及された不慣れなテクノロジーのドキュメントを調べます。
  • 専門家が同様のタスクにどう取り組んでいるか、例を探します。

この調査を、フェーズ2でより適切な質問をするために役立て、より高性能なエージェントを作成します。

例: ユーザーが「Next.js のデプロイ」用のエージェントを希望した場合 → 最新の Next.js のデプロイパターン、Vercel とセルフホスト、App Router と Pages Router、よくある問題などを調査します。

フェーズ2:機能(大まかに尋ねてから詳細を掘り下げる)

  1. 「このエージェントにはどの権限が必要ですか?」(質問ツールを使用)

    • 選択肢:「標準(推奨)」「読み取り専用」「フルアクセス」「カスタム」
    • 標準: 設定に bash、read、write、edit を追加しません。既定値に従います。
    • 読み取り専用: write、edit、bash を明示的に拒否します。
    • フルアクセス: 必要に応じて bash * を許可します。
    • カスタム: 必要に応じて具体的な追加質問をします。
  2. 「このエージェントにスキルを使わせますか?」

    • はいの場合:「どのスキルですか?」
    • 必ず permission.skill に "*": "deny" と明示的な許可を設定します。
    • ほかの権限が標準の場合でも適用されます。
  3. 「これはサブエージェントですか?」

    • はいの場合:mode: subagent を設定します。
    • いいえの場合:mode は未定義のままにします(標準)。

フェーズ3:詳細(任意。ユーザーは省略できます)

  1. 「希望するモデルはありますか?」(ほとんどのユーザーは省略します)
  2. 「カスタムの温度やサンプリング設定はありますか?」(ほとんどのユーザーは省略します)
  3. 「停止するまでの最大ステップ数はありますか?」(ほとんどのユーザーは省略します)
## フェーズ 4:レビューと改善
  1. 設定案とプロンプトを提示し、フィードバックを求めます
    • 「作成した内容はこちらです。変更したいところはありますか?」
    • ユーザーが満足するまで繰り返します

重要な原則: まずは広く始め、ユーザーが関心を示した場合にのみ具体的に掘り下げます。求められない限り、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>

エージェントを改善する際は、質問を通じて問題を診断します。

  1. 「うまく機能していないのはどの部分ですか?」 — 具体的な症状を把握します
  2. 「失敗したときの例を見せてもらえますか?」 — 問題の内容を理解します
  3. 「代わりにどのように動作すべきでしたか?」 — 成功の条件を定めます

そのうえで、対象を絞った修正案を提案します。

症状考えられる原因修正
起動しすぎる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 - フロントマターのスキーマ、ツール、権限の全容

コメント