Developer guide
How to find, install, write and publish a skill — in the browser, from a terminal, or from inside an agent. Everything here works against the live catalogue.
On this page
ConnectThe toolsWhat it will not doConnect
Show the prompt
Connect my agent to the LLM SkillHub catalogue over MCP, so it can search
published skills mid-task instead of me stopping to look them up.
1. Connect the catalogue over MCP, so you can search it mid-task instead
of me stopping to look things up. Say which client you are configuring before
you change anything:
- If you are Claude Code, use the command rather than editing a file:
claude mcp add --transport http llmskillhub https://api.llmskillhub.com/mcp
Add --scope user to make it available in every project rather than this one.
- Any other client — Cursor, Codex, Gemini CLI, opencode, VS Code, Windsurf,
Zed, Claude Desktop — keeps its MCP servers in its own configuration, in its
own place. Use the mechanism your client actually documents. If you are not
certain where that is, say so and show me the entry to paste rather than
writing to a path you guessed at: JSON in a file nothing reads fails
silently and looks like the server being down.
{
"mcpServers": {
"llmskillhub": {
"url": "https://api.llmskillhub.com/mcp"
}
}
}
2. If the llmsh CLI is already on this machine — check with "command -v llmsh" —
you can run it over stdio instead of over HTTP:
{
"mcpServers": {
"llmskillhub": {
"command": "llmsh",
"args": ["mcp"]
}
}
}
These are not interchangeable. The URL is anonymous and sees only what is
public. The stdio server sends my stored token if I am signed in, so it can
also see my own versions before they are listed. Pick the URL unless I have
said I want the second.
3. Check the server answers before telling me it is connected:
curl -fsSL -X POST "https://api.llmskillhub.com/mcp" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
A healthy server lists five tools: search_skills, get_skill, read_skill_file,
list_categories and install_command. Then reload or restart the client so it
picks up the new server, and confirm it appears in whatever list it shows.
Everything over MCP is read-only: the tools search and read published files, and
install_command hands back a command rather than running it. Connecting the
catalogue cannot install anything by itself.
Tell me which client you configured, where the entry went, whether you used HTTP
or stdio, and what the tools/list check returned.The catalogue speaks the Model Context Protocol, so an agent can search it mid-task instead of you stopping to look it up.
Which means it is not a Claude-only catalogue, whatever the skills happen to be called. Anything that speaks MCP can search all of this and read any published file from it — Cursor, Codex, Gemini CLI, opencode, VS Code, Windsurf, Zed, Claude Code and Claude Desktop among them. One URL, nothing installed, and no account unless you want one — signing in is what makes your private skills visible to it. Each of those keeps its server list in its own file, but the block below is the part that differs between them.
Over HTTP — nothing to install
Any client that takes a remote server needs only the URL:
{
"mcpServers": {
"llmskillhub": {
"url": "https://api.llmskillhub.com/mcp"
}
}
}Over stdio — if you have the CLI
The same tools from the same code, reaching the catalogue through the same public API:
{
"mcpServers": {
"llmskillhub": {
"command": "llmsh",
"args": ["mcp"]
}
}
}Both see what the credential they carry sees. The stdio server sends your stored token, so it finds your own versions before they are listed and your private skills. The URL is anonymous unless you give it a token — add an Authorization: Bearer header and it sees the same, limited to whatever that token’s reach allows. Without one it is the public catalogue, which is what makes it safe to paste anywhere.
The tools
| search_skills | the same search the website uses, meaning included — describe the task |
| get_skill | description, licence, every version and its digest |
| read_skill_file | any file from a published version; SKILL.md by default |
| list_categories | the category vocabulary |
| install_command | the command to install one |
read_skill_file is the one worth reaching for before recommending anything: it returns the instructions an agent would actually load, with hidden and bidirectional characters revealed rather than passed through. It defaults to SKILL.md, so a name alone answers “what does this actually do”.
Anywhere a skill is named, name takes owner/slug or just slug. A name belongs to its publisher rather than to the catalogue, so two people may each have a pricing-strategy; the short form works until one of those names is shared, and then the reply lists who has it so the next call can say whose. search_skills is for finding something by what it does;get_skill is for a name you already hold.
A search result says which kind of answer it is. When every word matched it reads N skill(s) for …; when nothing contained every word it reads related to … and says so plainly, so an agent can tell a match from a near miss without opening each one.
What it will not do
Nothing here writes to your disk. install_command hands back the command instead of running it. Installing puts a third party’s instructions somewhere an agent will load them, and that is a decision for a person rather than for a model — over HTTP it is also the only honest answer, since the server cannot reach your machine at all.
Nothing here needs an account for the public catalogue: every tool only reads. A token, if you give it one, widens what it can read to the private skills that token reaches — and nothing more, since no tool writes. Revoke it from your account page like any other.