00:00:00Cloud CodeやCodex、その他のエージェント型エンジニアリングツールを使う際、非常に重要な
00:00:05概念であり、これらすべてのツールでサポートされている、理解して活用すべきものがあります。
00:00:12それは「エージェント・スキル」という概念です。ただのMarkdownファイルの集まりに見えたり、
00:00:18設定が面倒そうだったりするため、つい無視しがちですが、経験上、設定する価値は十分にあります。
00:00:24数日前、Cloud Codeチーム(つまりAnthropic社)のメンバーによる投稿があり、
00:00:31彼らが内部で実際に使用しているスキルの種類が共有されていました。実際、作成したいスキルを
00:00:37いくつかのタイプに分類することができます。結局のところ、それらはすべてMarkdownファイルですが、
00:00:42もう少し要素を加えることもできます。それについては後述しますが、当然、Markdownの中身は
00:00:49用途によって大きく異なります。さて、この画像や投稿の全体を見ると、少し圧倒されてしまい、
00:00:56「スキルの設定に1週間もかかるなら、いっそ使わないほうがいい」と感じて、何もしなくなってしまうかもしれません。
00:01:02そこでこの動画では、もっとシンプルな代替案を提案したいと思います。
00:01:08意識すべきコアなスキルのタイプは、わずか3つに絞り込むことができ、それだけでより良い結果が得られます。
00:01:15ちなみに、先ほど述べたように、これらのツールはすべてスキルをサポートしています。私の各コースでは、
00:01:20Cloud CodeやCodex向けのスキルの設定方法、能動的な呼び出し方、構築方法を解説しています。
00:01:26それらのコースを受講したい、あるいは将来のコースを含むすべてのコースにアクセスしたい方は、
00:01:31現在プロモーションを実施中です。年間メンバーシップに登録すれば、全コースが
00:01:35非常に低価格で利用可能になります。詳細は下のリンクをご覧ください。さて、これらのスキルですが、
00:01:41これらは特定の場所に保存されたMarkdownファイルにすぎません。
00:01:46保存場所は使用するツールによって異なりますが、要するにプロンプト・テンプレートや、
00:01:52エージェントとのセッションに注入できる追加のコンテキストとして機能します。まず、
00:02:011つ目のスキルのタイプは、「ドキュメント」または「ナレッジ」スキルです。どういうことか説明しましょう。
00:02:09https://www.google.com/search?q=%E3%81%93%E3%82%8C%E3%81%AF%E7%A7%81%E3%81%AEacademy.comのプロジェクト、つまり私のウェブサイトのプロジェクトですが、
00:02:15ここにはAIエージェントに公開している、ドキュメントや知識としてのエージェント・スキルがいくつかあります。
00:02:25例えば、TypeScriptの知識や、より高度なTypeScriptの
00:02:33機能に関する知識です。例えば、登場してからまだ10年も経っていない「satisfies」キーワードのような
00:02:40比較的新しい機能など、AIエージェントに意識させたいこと、あるいは思い出させたいことです。というのも、
00:02:50学習データにそれほど含まれていない場合、エージェントが真っ先にそれを提案してくるとは限らないからです。
00:02:58これらは本来、TypeScriptの公式ドキュメントにあるような内容です。しかし、
00:03:04エージェントに明示的に指示しない限り、エージェントが自ら公式ドキュメントを
00:03:11参照しに行く可能性は低いため、あえて独自のスキルとして持たせています。
00:03:17そして、このスキルにはメタデータが含まれています。このメタデータが重要です。なぜなら、
00:03:24利用可能なすべてのスキルが毎回コンテキストウィンドウに読み込まれるわけではなく、
00:03:30メタデータだけが読み込まれ、その後、AIエージェントがユーザーのプロンプトやタスクに応じて、
00:03:37どのスキルの詳細を読み込むかを決定するからです。ツールによってはスキルを能動的に呼び出すこともできますが、
00:03:43基本的には、メタデータに基づいてエージェントが自律的に読み込む仕組みになっています。
00:03:47そこで私は、エージェントがいつこのスキルを使うべきかを判断できるように、
00:03:55メタデータを記述しています。これが1つ目のタイプ、つまりエージェントが持っていない可能性のある
00:04:02追加のドキュメントや知識を提供するスキルです。例えば、新しすぎて学習データに含まれていない
00:04:08ライブラリや、エージェントがあまり詳しくないと思われるライブラリについて、
00:04:13あらかじめ教えておく必要がある場合に非常に有効です。
00:04:182つ目のスキルのタイプは、「振る舞い」「ベストプラクティス」「アプローチ」といったものです。
00:04:29プロジェクトを進める際、コードスタイルや特定の実装方法について、
00:04:37何らかの好みがあるはずです。例えば、私は「クリーンでモダンなReactコード」というスキルを持っています。
00:04:45これはReactの機能を説明するものではなく、エージェントがReactコードを書く際に
00:04:50守るべきルールを定め、特定のアンチパターンを
00:04:59最小限に抑えるためのものです。現状、AIエージェントが生成するコードは、
00:05:08必ずしも最高品質であるとは限りません。コードの品質を気にする必要があるかどうかについては、
00:05:13別のチャンネルで動画を出しましたが、私は「重要だ」と考えています。なぜなら、
00:05:18コードの品質はコードレビューのしやすさに直結するからです。また、パフォーマンスや
00:05:23コードの保守性、拡張性にも影響を与えます。ですから、品質は重要であり、
00:05:29もしエージェントに採用させたい特定の振る舞いやパターンがあるなら、
00:05:36「良いReactコードの書き方」や「useEffectの使用を避け、どう代替すべきか」を教えるような、
00:05:43振る舞いを定義するスキルが非常に役立ちます。つまり、ここでは
00:05:50追加のドキュメントを提供するのではなく、エージェントに「振る舞い」を指示しているのです。
00:05:55興味深いのは、このスキルの中で「関連ファイル」を参照している点です。ここには
00:06:02useEffectに関する詳細を記したファイルです。先ほど言ったように、これらはすべて遅延読み込みされるため、
00:06:09スキルファイル内で、このreferencesフォルダにある「useEffect.md」のような別ファイルを参照しておけば、
00:06:15AIはuseEffectに関する作業をしていると判断した時に初めて、そのファイルを読み込むことができます。
00:06:21そこには、注意すべきアンチパターンなどの詳細が書かれています。
00:06:27このようなスキルを設定する価値は十分にあります。一度作ってしまえば、
00:06:33他のReactプロジェクトにコピーするだけで、毎回書き直す必要がなく、
00:06:39コードの品質を向上させられるからです。これが、私が推奨する2つ目のスキルタイプです。
00:06:45最初からすべてのパターンを記述しようとする必要はありません。ステップ・バイ・ステップで進めましょう。
00:06:52プロジェクトでAIエージェントが意図しないことを繰り返し行っているのを見つけたら、
00:06:58適切なタイミングで読み込まれるような説明文を考え、その修正方法を指示したスキルを
00:07:04追加すればいいのです。そうやって問題を修正しながら進めていくうちに、
00:07:11時間の経過とともに、特定のベストプラクティスや強制したい振る舞いを集めたスキルライブラリが構築され、
00:07:17それを将来のプロジェクトで活用できるようになります。ですから、最初から巨大で威圧的なタスクだと考えず、
00:07:22少しずつスキルベースを築いていってください。さて、3つ目のタイプは
00:07:29これまでとは一線を画す「機能駆動型」のスキルです。これまではドキュメント化と
00:07:37特定の振る舞いの強制について話してきました。Cloud CodeやCodexのようなエージェント型ツールは、
00:07:43あらゆる作業が可能です。当然コードも書けますが、単にプロジェクト内のコードを書くだけに
00:07:49とどまりません。コードを書けるということは、許可すればコンピュータ上で何でもできるということです。
00:07:55例えば、PDFドキュメントを解析させることもできます。私はシステム全体で使えるグローバルなスキルを
00:08:03いくつか設定していますが、それらはプログラミングに特化したものばかりではありません。
00:08:09例えば、エージェントに「画像の生成方法」を教えるスキルを設定することも可能です。どういうことかというと、
00:08:16AIで画像や動画を生成できるAPIやサービスは数多くあります。例えばFal AIなどです。
00:08:24(ちなみに、これは案件動画ではありません。Replicateなど他にも色々あります。)
00:08:29プロジェクトでウェブサイト用のダミー画像が必要になったり、あるいは全く別の目的で、
00:08:34印刷して壁に飾るための画像が欲しくなったりしたとしましょう。これらのサービスを利用する場合、
00:08:41CodexやCloud Code、あるいは私のお気に入りのPaiエージェントなどに「画像を生成して」と頼むことができます。
00:08:49デフォルトのままでは、これらのツールに画像生成機能は内蔵されていないため、失敗する可能性が高いでしょう。
00:08:54しかし、適切なスキルを与えておけば(これもただのMarkdownファイルですが)、
00:09:00そこでサードパーティAPIとやり取りして画像を生成する方法を記述しておくことができます。
00:09:06単にその連携方法を記述するだけでも一つの手ですが、さらに一歩進めることもできます。
00:09:12スキルに「スクリプト」を付属させるのです。すべてのスキルに必要なわけではありませんが、
00:09:18私の「画像生成」スキルにはスクリプトが付いています。正直に言うと、このスクリプトはAIが書いたもので、
00:09:26いわゆる「バイブ・コーディング」で作られました。この中には、Fal API(画像生成サービス)と
00:09:34やり取りするためのスクリプトが含まれています。要するに、そのサービスのドキュメントを
00:09:40プロンプトに放り込み、AIエージェントに「FalのAPIを使って画像を生成するツールを書いて」と頼んだのです。
00:09:49その結果、様々なパラメータを指定して画像を生成できる小さなCLIツール、つまりスクリプトが完成しました。
00:09:56そして、スキルのMarkdownファイルには、そのスクリプトの使い方を記述しておきます。
00:10:02そのファイルはスクリプトを指し示し、エージェントに実行方法や渡すべき引数などを教えます。
00:10:08さらに、ここにFalのAPIキーを記述した .env ファイルを置いてあります。スクリプトがBun経由で呼び出される際、
00:10:18(これはMarkdownファイル内でAIに指示していることですが)この .env ファイルは自動的に読み込まれます。
00:10:23つまり、エージェントに直接キーを教える必要はありません。「画像を生成して、ちなみにこれがキーだ」
00:10:29と言う必要はなく、ただ「画像を生成して」と頼むだけでいいのです。エージェントは、
00:10:34このスキルの説明に基づいて必要な時にスキルを読み込み、内部でスクリプトを実行すればよいこと、
00:10:39そして実装の詳細については気にする必要がないことを学習します。
00:10:45これも非常に興味深いスキルの形態だと思います。プログラミングに関連したものだけでなく、
00:10:52コードを整形するスクリプト駆動のスキルなども考えられます。とにかく、
00:10:57これらのエージェントはコード生成以外にも活用できるので、
00:11:02このスキルカテゴリーも間違いなく意識しておくべきです。まとめると、あまり難しく考えすぎず、
00:11:08かといって放置もせず、ステップ・バイ・ステップでスキルライブラリを構築していきましょう。
00:11:14なお、skills.sh のようなスキルレジストリもあり、他の人が作ったスキルを閲覧することもできます。
00:11:21これらは非常に便利ですが、2つほど重要な注意点があります。1つ目は、
00:11:29「ReactとTailwindとBetter Authのプロジェクトを作るから、関連しそうなスキルを
00:11:35全部探してインストールしよう」というやり方はお勧めしません。なぜなら、
00:11:40コンテキストウィンドウに大量のメタデータを詰め込むことになり、逆効果になる可能性があるからです。
00:11:47中には全く使わないスキルも含まれるかもしれません。ですから、注意が必要です。
00:11:53理論上追加できるスキルをすべて詰め込むのではなく、選択的になり、AIが繰り返し間違えることや、
00:11:57どうしても追加のドキュメントが必要になるものに集中すべきです。これが1つ目。
00:12:04そして、レジストリに関するもう一つの点は、他人が書いたスキルを取り込むということです。
00:12:09先ほど学んだように、これらのスキルは単なるプロンプトです。もしそのプロンプトに
00:12:16悪意のある内容が含まれていれば、プロンプト・インジェクション攻撃につながる恐れがあり、非常に危険です。
00:12:22skills.sh のような一部のレジストリは、私の知る限り、スキャンを行って
00:12:28その危険性を減らす努力をしていますが、100%安全とは言い切れません。
00:12:36ですから、注意が必要です。他人が書いたスキルを使用する際は、必ず中身を読んでください。
00:12:40幸い中身を読めるようになっていますから、目を通して、悪意のある記述が含まれていないか
00:12:47確認するようにしましょう。これはあくまで警告ですが。とはいえ、スキルを活用しましょう。
00:12:54最初から超複雑なシステムを構築しようと気負わず、まずはこれら3つのコアタイプを
00:13:00念頭に置いて、色々と試してみてください。