Inline skills
The inline-skills extension lets you invite installed skills directly inside a message by typing $skill-name. It provides autocomplete suggestions and expands matched skills into the conversation context before the agent runs.
Bundled with Selesai
Loaded automatically with Selesai; no per-extension npm install is required.
Setup and prerequisites
- Bundled with Selesai and loaded automatically.
- Works only with skills that are already installed (source in
src/skills/or user-level skill files). - Requires an interactive session with editor autocomplete; headless or non-TUI use still expands already-typed
$skill-nametokens.
What it sets up
- Registers an autocomplete provider triggered by
$. As you type, it suggests installed skill names that contain the token. - Hooks
inputevents to expand any$skill-nametokens into<skill>blocks appended before the original message. - Reads each skill’s source file from the path recorded by the skill loader and strips its frontmatter.
What you can configure
Inline skills depend on installed skill files. The # token and autocomplete behavior are fixed; there are no persistent settings.
No user configuration
This capability does not expose user-editable settings. Its behavior is controlled by the commands and runtime rules documented below.
Command, tool, and shortcut controls
| Key / path | Description |
|---|---|
#skill-name | Type # followed by a skill name to trigger autocomplete. |
[[skill:...]] | Legacy inline skill invitation syntax. |
Source evidence
src/extensions/inline-skills.tsInline skills sourcesrc/core/skills.tsSkills loader
What you can do
- Start typing
$in the editor to see installed skill suggestions. - Accept a suggestion to insert
$skill-nameas text. - Send the message. Before the agent runs, the extension replaces the inline token with the skill’s
<skill>block. - Mention multiple skills in one message:
$grill-me $ponytailexpands both if they are installed.
Commands, tools, and shortcuts
There are no slash commands, tools, or shortcuts. The extension surface is:
| Surface | Behavior |
|---|---|
$<token> autocomplete | Suggests installed skills matching <token>. |
$<skill-name> in a message | Expands the matching skill body into context. |
Limits and safety
- Inline skills only expand if the skill is installed and its
sourceInfo.pathis readable. Unavailable or unreadable skills are silently skipped. - Each distinct skill is expanded at most once per message, even if you mention it multiple times.
- The matching is case-insensitive and accepts skill names using lowercase letters, digits, and hyphens.
- An inline skill token must be preceded by a word boundary or whitespace and followed by a non-identifier character (space, punctuation, end of line) to be recognized.
- The expansion is a pre-send transform; it does not add the skill as a persistent session instruction and it does not change the model’s tool set.
- If the input comes from another extension (
event.source === "extension"), the transform is skipped to avoid loops.