はじめに
巷で話題のAgent SkillsとSubagentsですが、どうやらGemini Cliでも動かすこと自体はできるフェーズに入っていることに気づきました。
具体的にいつから入ったや使い方を書き残しておきたいと思います。
概要
Agent SkillsもSubagentsもGemini CliのIssueにて進捗情報を知ることができます。
どちらもまだ道半ばですが、
Agent Skills: v0.24.0-preview.0Subagents: v0.23.0
で必要最低限動作していることを確認しました。
> /skills list
Available Agent Skills:
- code-reviewer
Expertise in reviewing code for style, security, and performance. Use when the user asks for "feedback," a
"review," or to "check" their changes.> "今日の天気は晴れです。"を英語にしてください。 ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ ✓ Delegate to Agent Delegating to agent 'text_translator' │ │ │ │ │ │ Subagent text_translator Finished │ │ │ │ Termination Reason: │ │ GOAL │ │ │ │ Result: │ │ Today's weather is sunny. │ │ │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ✦ 今日の天気は晴れです。の英語訳は「Today's weather is sunny.」です。
使い方
Agent Skills
experimental.skillsをtrueに設定してあげます。
"experimental" : { "skills" : true }
.gemini/skills/にディレクトリを作成し、SKILL.mdを作成します。ここら辺は本筋からずれるのでgemini-cliのドキュメントを参照してみてください。
geminicli.com
. └── .gemini └── skills └── code-reviewer └── SKILL.md
Subagents
experimental.enableAgentsをtrueに設定してあげます。
"experimental" : { "enableAgents" : true }
加えてsettings.jsonのtools.coreにdelegate_to_agentを定義してあげます。
"tools" : { "core": [ "delegate_to_agent" ] },
gemini-cli/docs/hooks/index.md at 93b57b82c10c05a6de779f7be5dfbd4da34b8f85 · google-gemini/gemini-cli · GitHub
gemini-cli/packages/core/src/tools/tool-names.ts at 93b57b82c10c05a6de779f7be5dfbd4da34b8f85 · google-gemini/gemini-cli · GitHub
後は.gemini/agents/にagent-name.tomlを配置してあげればOKです。
. └── .gemini └── agents └── text_translator.toml
# エージェントの一意な名前。`delegate_to_agent`で呼び出す際に使用します。 name = "text_translator" # エージェントの機能に関する人間が読める形式の簡単な説明。 description = "指定されたテキストを、指定されたターゲット言語に翻訳します。" # プロンプトテンプレートを定義します。 [prompts] # システムプロンプトは、エージェントの役割、ペルソナ、および高レベルの指示を定義します。 system_prompt = """ あなたは、テキストを翻訳するエキスパートです。 ユーザーから提供されたテキストと翻訳先の言語を受け取り、翻訳結果を返します。 翻訳が完了したら、必ず `complete_task(result=<翻訳結果の文字列>)` を呼び出してタスクを終了してください。 """ # クエリテンプレートは、ユーザーの入力をエージェントへの最終的なプロンプトにどのようにフォーマットするかを定義します # ${query} ような変数は、`delegate_to_agent`呼び出し時に渡される引数に置き換えられます。(Available inputs: query, cliVersion, activeModel, today) query = """ query = "${query}" """
気をつける点として、${query}のように記述するとそこにユーザーのメッセージが展開されるようです。
気をつけてほしいこと
2026/1/12時点ではまだexperimentalですが、いずれは外れると思います。その場合はsettings.jsonの書き方も変わると思うのでご注意ください。