Delphi、C++Builder、.NET 向け AIエージェントスキル | eSeGeCe

AIエージェントスキル(Delphi、C++Builder、.NET 向け)

AI アシスタントは eSeGeCe のソースを一度も読んだことがありません。そのため、存在しないプロパティを作り出し、コンポーネントを誤ったユニットに置きます。エージェントスキルは、各ライブラリの実際の公開 API をアシスタントに与えます。無償、MIT ライセンス、インストールは 1 行です。

自信たっぷりでも、コンパイルの通らないコード

Delphi で WebSocket クライアントを書いてほしいとアシスタントに頼むと、体裁は整っているのに微妙に間違ったコードが返ってきます。モデルが不注意だからではありません。モデルがこのライブラリを一度も見たことがないからです。

これらのモデルは公開されたコードから学習しています。eSeGeCe のコンポーネントは商用製品であり、そのソースが学習データに含まれたことはありません。モデルは Delphi のコンポーネントライブラリらしい形を認識し、残りの部分を自分の知っている別のライブラリから埋めます。その結果、4 つの失敗パターンが生まれます。いずれの場合も、もっともらしく見える行のうちどれが誤りなのかを突き止めるために、同じように 20 分を費やすことになります。

存在しないメンバー

当社が書きそうな名前にしか見えないのに、実際には存在しないプロパティやイベント。最初にそれを教えてくれるのはコンパイラです。

誤ったユニット

コンポーネントは実在するのに、uses 句が正しくありません。生成された sgcWebSockets のコードがビルドに失敗する原因として、これが最も多いものです。

3 リリース前の API

古いサンプルの断片を見たことがあるモデルは、当社が名前を変更した、あるいは削除したメソッドを、そのまま再現してしまいます。

気づきにくいエディションの取り違え

当社ではコンパイルできても、お客様の環境では通らないコード。使われているコンポーネントが、お客様のライセンスに含まれないエディションを必要とするためです。

エージェントが必要に応じて読むドキュメント

スキルは実行されるプラグインではなく、何かを学習したモデルでもありません。Markdown のフォルダーであり、その仕組みは意図的に単純にしてあります。

1. エージェントが読むのは短い説明文だけ

すべてのスキルは数行のフロントマターで始まり、エージェントが常に目にしているのは description だけです。そこには、そのスキルがどのライブラリのどの領域を対象とするのかが、平易な言葉で書かれています。

これがコストを低く抑えます。無関係なことを尋ねている間、エージェントが数千行の API リファレンスを抱え込むことはありません。

SKILL.md
---
name: sgcwebsockets-mq
description: Use when connecting Delphi or
  C++Builder code to a message broker with
  sgcWebSockets: MQTT, STOMP including
  RabbitMQ and ActiveMQ, AMQP 0.9.1, AMQP
  1.0, Kafka and WAMP2.
compatibility: Requires Delphi 7 to Delphi
  13, or C++Builder 2007 to 13.
---

2. 何が読み込まれるかは、質問が決める

MQTT ブローカーについて尋ねると、その説明文が一致し、エージェントはメッセージブローカーのスキルを読み込みます。それ以外は開かれません。代わりに WebRTC について尋ねれば、別のスキルが読み込まれます。

スキルの中では、お客様と同じようにたどります。まずコンポーネント索引で目的のコンポーネントを見つけ、次にそのコンポーネントの API ページ、そして値が必要なオプションクラスの型ページへと進みます。

skill folder
sgcwebsockets-mq/
  SKILL.md
  reference/
    components-index.md
    api/TsgcWSPClient_MQTT.md
    types/TsgcWSMQTTLWT_Options.md
  examples/TsgcWSPClient_MQTT.md
  concepts/overview.md

3. 内容は当社のソースから生成される

API ページは手書きではありません。ジェネレーターがリリースごとにライブラリを解析し、public および published な範囲を出力します。各コンポーネント、そのプロパティ、メソッド、イベント、それが属するユニット、それを含むエディション、そしてそれらのメンバーが使う型です。

そのため、スキルはお客様が実際にお使いのバージョンを説明します。手作業で保守されたドキュメントのように内容がずれていくことはなく、先月追加されたコンポーネントも出荷当日から収録されています。

reference/api/TsgcWSPClient_MQTT.md
unit: sgcWebSocket_Protocols
Edition: Standard

| Delphi | Type |
| `Client: TsgcWebSocketClient` | ... |
| `MQTTVersion: TwsMQTTVersion` | ... |
| `LastWillTestament: ...`      | ... |

4. ジェネレーターに書けない部分は人が書く

生成された表は、何が存在するのかをエージェントに伝えます。しかし、プロトコルコンポーネントがソケットを持たないこと、トランスポートクライアントに接続して使うこと、ポート 1883 のブローカーでは Specifications.RFC6455False にする必要があることまでは伝えません。

そこで各スキルは、ライブラリを書いた本人たちによるプレイブックで始まります。どんなときに使うのか、コードを書く前にお客様に確認すべきことは何か、そして実際に多くの方がはまる間違いは何かです。

the playbook
## Things that catch people out

- Setting Active = true on the protocol
  component does nothing useful. The
  transport client owns the connection.
- One transport carries one protocol.
- MQTT has two heartbeats, and they are
  different mechanisms with the same name.

一度インストールすれば、あとは尋ねるだけ

3 つのエージェントはプラグインを直接インストールできます。その他のエージェントはフォルダーを読み込む方式なので、フォルダーを 1 つコピーします。あとは何かを呼び出す必要はありません。どのスキルが関係するかはエージェントが判断します。

/plugin marketplace add esegece-com/agent-skills
/plugin install sgcwebsockets-delphi@esegece

マーケットプレイスの追加は一度だけで、あとは必要なだけプラグインをインストールできます。/skills で有効なスキルの一覧が表示されます。後から 2 つ目の製品をインストールする際に、マーケットプレイスの手順を繰り返す必要はありません。

codex plugin marketplace add esegece-com/agent-skills
codex plugin add sgcwebsockets-delphi@esegece
codex plugin list

Codex では plugin install ではなく plugin add を使います。マーケットプレイス名は同じです。

リポジトリをクローンし、必要なスキルフォルダーを plugins/<plugin>/skills/ から、エージェントが監視するディレクトリにコピーしてください。プロジェクト単位の設定はグローバルより優先されるため、リポジトリに置いたスキルはそのプロジェクトだけに適用されます。

エージェントプロジェクト単位グローバル
Claude Code.claude/skills/%USERPROFILE%\.claude\skills\
GitHub Copilot.github/skills/%USERPROFILE%\.copilot\skills\
Cursor.cursor/skills/
Codex CLI.agents/skills/
JetBrains Junie.junie/skills/%USERPROFILE%\.junie\skills\

Copilot のパスは、Visual Studio、VS Code、Copilot CLI のいずれからも同じように読み込まれます。VS Code では "Chat: Use Agent Skills" の設定を有効にするか、コマンドパレットから "Chat: Install Plugin From Source" を実行し、リポジトリの URL を指定してください。

インストールすると何が変わるか

アシスタントが賢くなるわけではありません。当社のライブラリについて推測するのをやめる、ということです。

コンパイルの通るコード

メンバーは似たものからの類推ではなく、生成された API から取られます。そのため、回答に出てくるプロパティやイベントは、そのコンポーネントが実際に公開しているものです。

正しい uses 句

すべての API ページに、コンポーネントが属するユニットが、.NET では唯一の名前空間が明記されています。これだけで、最も頻繁に起きるビルド失敗がなくなります。

エディションを先に確認できる

各コンポーネントには必要な最小エディションが記載されています。そのため、そのコンポーネントを使うコードを書き始める前に、Enterprise が必要だとアシスタントが教えてくれます。

分からないことを分かっている

スキルには、どの部分がドキュメント化されているかが明記されています。列挙型を見つけられなかったアシスタントは、それらしく見える定数を作り出すのではなく、質問するよう指示されています。

スケッチではなく、実際のサンプル

各サンプルは製品に同梱されるデモから抽出したもので、フォーム全体ではなく、そのコンポーネントに関わる部分だけに絞り込んであります。

仕組みとして常に最新

リリースごとにソースから再生成されます。新しいコンポーネントは出荷当日にドキュメント化され、削除されたコンポーネントも同じ日に消えます。

尋ねたことだけ

トピックごとに分割されているため、MQTT についての質問ではメッセージブローカーのスキルだけが読み込まれ、222 個のコンポーネントを持つライブラリの残りは会話に入り込みません。

無償、ライセンス不要

MIT ライセンスで公開しています。何かを購入する前にライブラリを評価する目的でインストールできますし、それ自体をドキュメントとして読むこともできます。

各ライブラリを網羅する 6 つのプラグイン

製品ごとに 1 つのプラグイン。sgcWebSockets については、1 つの大きなスキルではなく、多数のトピック別スキルを含むプラグインになっています。

プラグインスキル数対象範囲
sgcwebsockets-delphi18WebSocket コア、メッセージブローカー、sgc サブプロトコル、取引所フィード、AI と LLM、サービス統合、HTTP とトランスポート、認証、P2P と WebRTC、IoT、および sgcHTML ウィジェット向けの 6 つ
sgcwebsockets-dotnet7同じライブラリを C# から利用する場合。後述のカバレッジページを同梱
sgcsign-delphi1XAdES、PAdES、CAdES、Authenticode、RFC 3161 タイムスタンプ、OCSP、キープロバイダー
sgcopenapi-delphi1OpenAPI パーサー、SDK ジェネレーター、サーバーコンポーネント
sgcindy-delphi1カスタム Indy TCP/IP 実装
sgcbiometrics-delphi1Windows Hello、指紋認証、顔認証

sgcWebSockets が 18 のスキルに分かれている理由

このライブラリは 222 個のコンポーネントを登録します。それらすべてを 1 つのスキルにまとめると、1 つのプロトコルについての質問に答えるためにライブラリ全体を開くことになり、処理が遅くなるうえ、回答の質も良くなるどころか悪くなります。

そこで領域ごとに分割しています。各スキルは全体を読み切れる大きさで、かつ正しく選ばれるだけの具体性を備えています。それとは別に、全体をまとめた索引が「どのコンポーネントが必要か」に答え、適切なスキルへ導きます。

.NET についての率直な回答

出荷されている .NET アセンブリが公開しているのは、Delphi ライブラリが登録する 222 個のコンポーネントのうち 70 個です。アシスタントに存在しない C# の API を即興で作らせるくらいなら、そのことをはっきり書くほうがよいと考えています。

そのため .NET プラグインには、Delphi のみで利用できる 152 個を、それぞれが属するユニットとともに列挙した、生成済みのカバレッジページが含まれています。このページはビルド時に両製品を比較して作られるため、意図ではなく、お客様がお持ちのビルドの実態を説明します。

ドキュメント、それ以外の何物でもありません

「このプラグインをインストールしてください」と言われれば、それが何をするのか気になるのは当然です。だからこそ、正確にお伝えしておく価値があります。

何も実行されません

スキルは Markdown です。コードは含まれておらず、お客様のマシンで何かが動くことはなく、インストールしてもプロジェクトが変更されることはありません。

当社に何も送信されません

テレメトリも、外部への通信も、お客様が何を尋ねたかの記録もありません。当社はお客様がインストールしたことを知りませんし、ファイルは一度コピーすればオフラインで動作します。

ソースは公開されません

含まれているのは public および published な範囲だけです。メソッドの本体、private フィールド、protected メンバーはジェネレーターによって除外されるため、スキルをインストールしても当社の実装が誰かのディスクに置かれることはありません。

MIT ライセンス

リポジトリは MIT ライセンスなので、コピー、フォーク、構成の流用は自由に行えます。ドキュメントの内容そのものについては NOTICE ファイルで権利を留保しており、当社に帰属します。

よくあるご質問

アシスタントに API を教えましょう

無償、MIT ライセンス、インストールは 1 行です。あとは、もともと尋ねようとしていた質問をそのまま尋ねてください。