免責事項: この記事は、AIアシスタント(Google製 Gemini Pro)との対話を通じて生成されました。内容は、AIが実行したコマンドや分析結果に基づいていますが、一部にAIの解釈が含まれる可能性があります。
💡 後から人間追記: 使ったのは Gemini CLI で gemini-2.5-xxx モデルです。また、出力結果をベースに加筆修正しています。
はじめに
AIアシスタントは日々進化していますが、その能力を最大限に引き出す「スキル」という概念は、まだ私にとって未知のです。本記事では、 obra/superpowers: An agentic skills framework & software development methodology that works. というAIエージェントのスキル管理リポジトリを題材に、AIの「スキル」がどのように定義され、実行されるのかを、Gemini CLIと共に探求します。最終的には、その知識を応用して、Gemini CLIで動作する我々自身のカスタムスキルを作成するまでを記録します。
💡 後から人間追記: というよりも、 GitHub 29,000+ Star獲得!Claude Codeに「ベテランエンジニア」の思考を注入するSuperpowersプラグイン の記事を読んで興味を持ち、ただ、自分は gemini cli 使っているからダメか?そもそも Superpowers プラグインは Claude Code のどのような機能で実現しているのか?そもそも Claude Code 使ったことない、という疑問が背景です。
1. Superpowers の探求:AIスキルの構造を解き明かす
ステップ1: 心臓部 lib/skills-core.js の分析
最初に、lib/skills-core.js を分析しました。ここから、Superpowers がスキルをどのように扱っているかの基本思想が明らかになりました。
- findSkillsInDir: SKILL.md という規約のファイルを探し、利用可能なスキルをカタログ化する。
- extractFrontmatter: スキルのメタデータ(名前や説明)を読み取る。
- stripFrontmatter: スキルの本体、すなわちAIへの具体的な指示(プロンプト)部分を抽出する。
SKILL.md というマークダウンファイルが、AIの能力を定義する「設計図」として機能していることが分かりました。
ステップ2: 実行エンジンとの「接点」の特定
次に、これらのスキルがどのように claude code によって実行されるのか、その「接点」を探しました。tests/claude-code/ ディレクトリを深く掘り下げていくと、以下の事実が判明しました。
- run-skill-tests.sh は、個別のテストスクリプトを実行する「司令塔」である。
- test-subagent-driven-development.sh などの個別テストスクリプトが、run_claude という関数を呼び出している。
- test-helpers.sh 内で定義された run_claude 関数が、最終的に claude -p “…” というコマンドを実行していた。
これにより、SKILL.md から抽出されたプロンプトが、-p オプションを介して claude CLIツールに渡される、という直接的な実行経路を特定できました。
ステップ3: 「司令塔スキル」の発見
subagent-driven-development というスキルを調査する中で、スキルには「特定のタスクを実行する専門家スキル」だけでなく、「他のスキルやサブエージェントの実行を管理する司令塔スキル」が存在するという、高度なアーキテクチャを発見しました。
Gemini CLI における、「スキルからのスキル実行」に関する解説
💡 後から人間追記: 本節は、生成AIとやりとして印象深かった部分です。でも最初の本ブログ記事生成時には含まれていなかったので、改めてこの部分だけ生成し、追加しています。なお、 Claude Code でも同様の仕組みかどうかは、不明です。
Q. Superpowers のような司令塔スキルと、そこから呼ばれる各スキルという構造は、Gemini CLI でも可能ですか?
はい、可能です。そして、それは Gemini CLI の能力を最大限に引き出す、非常に強力な使い方です。
ただし司令塔スキルが、activate_skill(‘専門スキル’) のようなコマンドを直接実行して、別のスキルを呼び出すという形ではできません。
これは、AIの実行フローがループしてしまい、制御が複雑になるのを防ぐための設計上の理由です。スキルは、私 (Gemini) が外部のツールを使うためのものであり、スキルがスキルを呼び出すためのものではありません。
しかし、概念的には、司令塔スキルが専門スキルを実行することは可能です。それは、以下の非常に洗練された方法で行われます。
解決策:スキルプロンプトの「インライン展開」
司令塔スキルは、呼び出したい専門スキルの「指示書(プロンプト)」の内容を、自分自身の次のアクションを生成するための材料として利用します。
プログラミングで言えば、関数を呼び出す (call function()) のではなく、その関数のコードを直接その場にコピー&ペースト(インライン展開)するイメージです。
具体的な例:
1. 状況:
* development-manager(司令塔)スキルが実行中。
* ワークフローが「コードレビュー」の段階に進む。
* Gemini CLI には、別途 code-reviewer(専門家)スキルが登録済み。
2. 司令塔の思考とアクション:
development-manager スキルに従っている私(Gemini)は、以下のように思考し、行動します。
* 「次のステップはコードレビューだ。」
* 「code-reviewer スキルの定義(プロンプト)を思い出そう。確か『あなたは熟練のレビュワーです。潜在的なバグや改善点を指摘してください...』という内容だったな。」
* 「よし、この code-reviewer の人格と指示を拝借して、今からレビューしてほしいコードを組み合わせた、新しいプロンプトを生成しよう。」
3. 内部で生成される新しいプロンプト:
1 # Role: Expert Code Reviewer
2 あなたは、どんなプログラミング言語にも精通した、経験豊富なソフトウェアエンジニアです。潜在的なバグ、パフォーマンスの問題、保守性を損なうコードスタイルを指摘してください。
3
4 # Task
5 以下のコードをレビューしてください。
6
7 # Code to Review
8 (司令塔スキルが管理している、実装者によって書かれたコードがここに挿入される)
4. 実行:
そして私は、この内部で生成したばかりの新しいプロンプトに従って、次の思考と行動(=コードレビューの実行)を開始します。
このように、司令塔スキルは他のスキルを「呼び出す」のではありません。他のスキルの「知性」や「ペルソナ」を拝借して、自分自身の次のアクションを生成するのです。これにより、非常に柔軟で 強力なワークフローを、すべてプロンプトの組み合わせだけで実現できます。
2. Gemini CLIでの実践:独自のスキルを創造する
Superpowers から得た知見を元に、今度は Gemini CLI で独自のスキルを作成する実践に移りました。
- 指示書の作成: Superpowers の SKILL.md を模倣し、コード解説を行うための高品質なプロンプトを explain-code-skill.md として定義しました。
- スキルの初期化: skill-creator を起動し、init_skill.cjs を使って explain-code スキルの雛形を作成しました。
- スキルの編集: 自動生成された SKILL.md を、私たちが設計したプロンプトで上書きしました。この際、不要なサンプルファイルは削除する必要があることも学びました。
- パッケージングとインストール: package_skill.cjs で .skill ファイルを作成し、gemini skills install コマンドでワークスペースにインストールしました。
- 有効化とテスト: ユーザー自身の手で /skills reload を実行してスキルを有効化。その後、実際にコードを渡して explain_code スキルを試し、設計通りの優れた解説が得られることを確認しました。
3. 振り返りと次の展望
最後に、一連の作業を振り返りました。スキルの「境界」は、そのスキルプロンプトが直接的に影響を与える一回のやり取りであり、それ以降は文脈を共有した通常の対話モードに戻る、という重要な概念を理解しました。
そして、今後の応用として、Superpowers のような「司令塔スキル」を Gemini CLI で実現する可能性を議論しました。調査の結果、Superpowers は直接 Gemini をサポートしていないものの、LangChain や LangGraph といった外部フレームワークを利用する道と、Gemini CLI 自体のスキル設計を極める道、という2つの有望な方向性が見えてきました。
まとめ
今回の探求は、単に一つのリポジトリを分析するだけでなく、AIエージェントの「スキル」という抽象的な概念を、具体的なファイル、コマンド、そしてプロンプトのレベルまで分解し、再構築するプ ロセスでした。Superpowers から得たインスピレーションを元に、私たちは Gemini CLI の能力を拡張し、自分たちの手で新たな能力を授けることに成功したのです。この経験は、今後のAIとの協業において、計り知れない価値を持つことでしょう。
再開時のための情報
セッションの要約:
Superpowers https://github.com/obra/superpowers リポジトリの分析を通じて、AIのスキルがどのように定義・管理・実行されるかを理解しました。特に、SKILL.md をプロンプトとして利用する仕組みや、「司令塔スキル」の概念について深く学びました。その知識を応用し、skill-creator を使って Gemini CLI 用のカスタムスキル explain_code を実際に作成・インストールし、その動作を確認しました。
次に決定すべきこと:
今後の方向性として、以下の2つのアプローチが考えられます。
1. アプローチ1: エージェント開発フレームワークを学ぶ
LangChain や LangGraph のようなツールを使い、Superpowers のような自律エージェントをコードで構築する道。
2. アプローチ2: Gemini CLI スキル設計を極める
外部ツールを使わず、対話的に高度なプロンプト(特に司令塔スキル)を設計し、Gemini CLI の能力を直接引き出す道。
次回セッションの開始点:
「この2つのアプローチのうち、どちらに、より興味がありますか?」という問いから再開します。あなたの興味の方向性に応じて、次の探求の計画を立てましょう。
以上です。
