AI Agent Skills for Delphi, C++Builder and .NET | eSeGeCe

AI Agent Skills for Delphi, C++Builder and .NET

Your AI assistant has never read the eSeGeCe source, so it invents properties that do not exist and puts components in the wrong unit. Agent skills give it the real public API of every library. Free, MIT licensed, and installed in one line.

Confident code that does not compile

Ask an assistant for a WebSocket client in Delphi and you get something well structured and subtly wrong. The reason is not that the model is careless. It is that the model has never seen this library.

These models learned from public code. The eSeGeCe components are commercial, so their source has never been in a training set. The model recognises the shape of a Delphi component library and fills in the rest from other libraries it does know. That produces four failure modes, and all four cost you the same twenty minutes of finding out which plausible line is the wrong one.

Invented members

A property or event that reads exactly like something we would have written, and does not exist. The compiler is the first thing that tells you.

The wrong unit

The component is real, the uses clause is not. This is the single most common reason generated sgcWebSockets code fails to build.

An API from three releases ago

Where a model has seen a fragment of an old sample, it will happily reproduce a method we renamed or removed.

Silent edition mistakes

Code that compiles for us and not for you, because the component it uses needs an edition your licence does not include.

Documentation the agent reads on demand

A skill is not a plugin that runs, and not a model that was trained on anything. It is a folder of Markdown, and the mechanism is deliberately simple.

1. The agent reads one short description

Every skill opens with a few lines of frontmatter, and the only part the agent always has in front of it is the description. It says, in plain terms, which library and which subject area the skill covers.

That is what keeps the cost low. Your agent is not carrying thousands of lines of API reference around while you ask it about something unrelated.

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. Your question decides what gets loaded

When you ask about an MQTT broker, that description matches and the agent pulls in the message broker skill. Nothing else opens. Ask about WebRTC instead and a different skill loads.

Inside the skill it navigates the same way you would: the components index to find the component, then that component's API page, then the type page for an option class whose values it needs.

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. The content is generated from our source

We do not hand-write the API pages. A generator parses the library at every release and emits the public and published surface: each component, its properties, methods and events, the unit it lives in, the edition that includes it, and the types those members use.

So the skills describe the version you actually have. They cannot drift the way a hand-maintained document does, and a component added last month is in them the day it ships.

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

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

4. A human writes the part a generator cannot

Generated tables tell an agent what exists. They do not tell it that a protocol component owns no socket, that it attaches to a transport client, or that a broker on port 1883 needs Specifications.RFC6455 set to False.

So each skill opens with a playbook written by the people who wrote the library: when to use it, what to ask you before writing any code, and the mistakes that actually catch people out.

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.

Install once, then just ask

Three agents install plugins directly. The rest read a folder, so you copy one in. After that there is nothing to invoke: the agent decides when a skill is relevant.

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

Add the marketplace once, then install as many plugins as you use. /skills lists what is active. Installing a second product later does not need the marketplace step again.

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

Codex uses plugin add rather than plugin install, and the same marketplace name.

Clone the repository, then copy the skill folder you want out of plugins/<plugin>/skills/ into the directory your agent watches. Project level wins over global, so a skill dropped in a repository applies to that project only.

AgentIn a projectGlobally
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\

The Copilot paths are read by Visual Studio, VS Code and the Copilot CLI alike. In VS Code, enable the "Chat: Use Agent Skills" setting, or run "Chat: Install Plugin From Source" from the Command Palette and give it the repository URL.

What changes once they are installed

The difference is not that the assistant becomes cleverer. It is that it stops guessing about our library.

Code that compiles

Members come from the generated API rather than from resemblance, so the properties and events in the answer are the ones the component actually publishes.

The right uses clause

Every API page states the unit the component lives in, and for .NET the single namespace. This alone removes the most frequent build failure.

Editions answered up front

Each component carries its minimum edition, so the assistant can tell you a component needs Enterprise before you write code against it.

It knows what it does not know

The skills say plainly which parts are documented. An assistant that cannot find an enumeration is told to ask rather than invent a constant that looks right.

Real examples, not sketches

Each example is distilled from a demo that ships with the product, trimmed to the parts that touch the component instead of a whole form.

Current by construction

Regenerated from the source at every release. A new component is documented the day it ships, and a removed one disappears the same day.

Only what you asked about

The topic split means an MQTT question loads the message broker skill alone, so the rest of a 222 component library stays out of the conversation.

Free, and no licence needed

MIT licensed and public. You can install them to evaluate the library before buying anything, and read them as documentation in their own right.

Six plugins across the libraries

One plugin per product, and for sgcWebSockets a plugin that contains many topic skills rather than one large one.

PluginSkillsCovers
sgcwebsockets-delphi18WebSocket core, message brokers, sgc subprotocols, exchange feeds, AI and LLM, service integrations, HTTP and transports, authentication, P2P and WebRTC, IoT, and six for the sgcHTML widgets
sgcwebsockets-dotnet7The same library from C#, with the coverage page described below
sgcsign-delphi1XAdES, PAdES, CAdES, Authenticode, RFC 3161 timestamping, OCSP and the key providers
sgcopenapi-delphi1The OpenAPI parser, the SDK generator and the server component
sgcindy-delphi1The custom Indy TCP/IP implementation
sgcbiometrics-delphi1Windows Hello, fingerprint and facial authentication

Why sgcWebSockets is eighteen skills

The library registers 222 components. A single skill covering all of them would force the agent to open the entire library to answer a question about one protocol, which is slow and makes the answer worse rather than better.

So it is split by area. Each skill is small enough to be read in full and specific enough to be chosen correctly, and an umbrella index still answers "which component do I need" and routes to the right one.

A straight answer about .NET

The shipping .NET assembly exposes 70 of the 222 components the Delphi library registers. We would rather say so than let an assistant improvise a C# API that does not exist.

So the .NET plugin ships a generated coverage page naming the 152 that are Delphi only, with the unit each one lives in. It is produced by comparing the two products at build time, so it describes the build you have rather than an intention.

Documentation, and nothing else

Worth being precise about, because "install this plugin" reasonably makes people ask what it does.

Nothing executes

A skill is Markdown. There is no code in it, nothing runs on your machine, and installing one cannot change your project.

Nothing is sent to us

No telemetry, no call home, no record of what you asked. We do not know that you installed them, and the files work offline once copied.

No source is exposed

Only the public and published surface is included. Method bodies, private fields and protected members are excluded by the generator, so installing a skill does not put our implementation on anyone's disk.

MIT licensed

The repository is MIT, so you can copy, fork and adapt the structure freely. A NOTICE file reserves the documentation content itself, which stays ours.

Questions people ask

Teach your assistant the API

Free, MIT licensed, and one line to install. Then ask it the question you were going to ask anyway.