Quickstart

Every skill on ecomdly is a plain .md file with a stable URL. Install one into Claude Code, or connect the whole catalog over MCP.

# install one skill into ./skills
npx @ecomdly/cli add cartlift/product-feed-optimizer

# or connect the catalog to Claude
claude mcp add --transport http ecomdly https://ecomdly.com/mcp

Raw endpoints

Each document serves raw Markdown at a predictable path. Unversioned URLs always return the latest; pin a version when exact wording matters.

GET https://ecomdly.com/raw/{owner}/{skill}.md        → latest
GET https://ecomdly.com/raw/{owner}/{skill}@v12.md    → pinned version
GET https://ecomdly.com/raw/{owner}/{skill}/SKILL.md  → Agent Skills format (front matter guaranteed) — for hermes skills install, Claude Code

200 OK · content-type: text/markdown; charset=utf-8

REST API

Everything the site does, a script can do. Reads are public; writes take a bearer token issued by the ecomdly team.

GET    /v1/skills?category=code-review&sort=trending
GET    /v1/skills/{owner}/{skill}
POST   /v1/skills                    → submit for review
PUT    /v1/skills/{owner}/{skill}    → new version

MCP server

The ecomdly MCP server exposes the catalog as tools, so agents can find and load skills themselves.

search_skills(query, category?)   → ranked results
get_skill(owner/skill, version?)  → the markdown body
install_skill(owner/skill)        → the file + step-by-step: Claude writes ~/.claude/skills/<name>/SKILL.md (target=generic → ./skills/<name>.md)
submit_skill(name, body, category?) → signed in: checks + safety scan now, human review next

# signed in (browser sign-in or MCP token) — private Brain memory
brain_list(brain?, folder?)       → your files, across your brains
brain_search(query, brain?)       → files + matching lines
brain_get(name, brain?)           → the markdown body
brain_write(name, body, mode?, brain?) → create / replace / append, versioned

Skills in depth — format, versions, review: /docs/skills. The Brain — named brains, sharing, roles: /docs/brain.

Connect to Claude

One URL for every client: https://ecomdly.com/mcp. Searching, reading and installing skills works without an account. The first time Claude touches your private Brain or submits a skill, ecomdly answers “sign in” and Claude opens the browser — you sign in with Google or GitHub, approve the app, done. No tokens to copy; the connection renews itself and you can disconnect it under Settings → Connected apps. Headless agents and servers skip the browser and use a personal token — see below.

What the sign-in looks like

  1. Claude calls a tool that needs you (brain_*, submit_skill) → ecomdly answers 401 with OAuth discovery.
  2. Claude registers itself as an OAuth client and opens https://ecomdly.com/oauth/authorize in your browser.
  3. You sign in with Google or GitHub (if not already) and approve the app for the mcp:use scope.
  4. The browser redirects back to Claude with a code; Claude exchanges it for a token and retries the tool. Next time it just works.

Claude Desktop & claude.ai

Settings → Connectors → Add custom connector. Name ecomdly, URL https://ecomdly.com/mcp, Authentication Required when the server asks (or Always required to sign in right away). Add — the connector appears under the tools icon in every chat, and the sign-in pops up the first time you ask Claude about your Brain.

Claude Code

claude mcp add --transport http ecomdly https://ecomdly.com/mcp

# inside Claude Code: /mcp → ecomdly → Authenticate opens the browser (needed once, only for your Brain and submissions)
# then e.g. "list my brain files", "search ecomdly for a code review skill",
# or "submit this file as a skill to ecomdly" — it lands in the review queue, not in the catalog

Add --scope user to make the server available in every project instead of just the current one.

# or let the CLI do it — MCP server (user scope) + a rule file Claude Code reads in every session
npx @ecomdly/cli setup

setup writes ~/.claude/rules/ecomdly.md: search the catalog before planning a task, search the Brain before answering about your own context. Instructions the MCP server sends compete with your own CLAUDE.md and lose; a rule file does not.

Without a browser — personal token

For CI, a server-side agent, OpenClaw, Hermes on a headless box or any client where the browser flow is awkward, create a token under Settings → MCP token (shown once) and send it as a bearer header instead of signing in — same tools, same permissions, no browser:

# Claude Code
claude mcp add --transport http ecomdly https://ecomdly.com/mcp --header "Authorization: Bearer <token>"

# Claude Desktop / claude.ai: Add custom connector → Authentication: None → Request headers
Authorization: Bearer <token>

Treat the token like a password — it reads and writes your Brain; revoke it in Settings if it leaks.

Hermes Agent

Hermes speaks MCP over streamable HTTP and can do the browser sign-in itself (auth: oauth — it registers as a client and opens the authorisation page the first time a tool needs you), so the catalog, submit_skill and your Brain all work without copying a token. Add the server to ~/.hermes/config.yaml and reload:

mcp_servers:
  ecomdly:
    url: "https://ecomdly.com/mcp"
    auth: oauth                        # browser sign-in on first use; tokens cached in ~/.hermes/mcp-tokens/
    tools:
      include: [search_skills, get_skill, install_skill, submit_skill, "brain_*"]

# inside a Hermes session
/reload-mcp

Headless box, or you would rather not have a browser flow? Use the personal token instead of auth — Hermes expands ${env:…} from its environment and ~/.hermes/.env:

mcp_servers:
  ecomdly:
    url: "https://ecomdly.com/mcp"
    headers:
      Authorization: "Bearer ${env:ECOMDLY_MCP_TOKEN}"

Tools show up prefixed with the server name (mcp_ecomdly_search_skills, …). Ask Hermes to install a skill and install_skill with target=hermes hands it the file and the path Hermes keeps skills in — ~/.hermes/skills/<category>/<name>/SKILL.md. Hermes skills follow the Agent Skills format, so every ecomdly skill is also served as a ready-made SKILL.md you can install without MCP at all:

hermes skills install https://ecomdly.com/raw/cartlift/product-feed-optimizer/SKILL.md
hermes skills install https://ecomdly.com/raw/cartlift/product-feed-optimizer@v3/SKILL.md   # pinned

The SKILL.md twin always carries name, description and version front matter, synthesised from the catalog when the author left it out.

OpenClaw

OpenClaw talks to remote MCP servers over streamable HTTP and sends whatever headers you configure, so the personal token is the whole setup — no browser involved. Put the token in the environment of the machine running the gateway and add the server:

# the token from Settings → MCP token, kept out of the config file
export ECOMDLY_MCP_TOKEN=<token>

openclaw mcp add ecomdly --url https://ecomdly.com/mcp --transport streamable-http \
  --header "Authorization: Bearer ${ECOMDLY_MCP_TOKEN}"

openclaw mcp doctor --probe        # lists search_skills, get_skill, install_skill, brain_*

Or write the same thing into ~/.openclaw/openclaw.json — values are expanded from the environment at runtime, so ${ECOMDLY_MCP_TOKEN} stays a placeholder on disk:

{
  "mcp": {
    "servers": {
      "ecomdly": {
        "url": "https://ecomdly.com/mcp",
        "transport": "streamable-http",
        "headers": { "Authorization": "Bearer ${ECOMDLY_MCP_TOKEN}" },
        "requestTimeoutMs": 20000,
        "toolFilter": { "include": ["search_skills", "get_skill", "install_skill", "brain_*"] }
      }
    }
  }
}

Leave out headers and the agent still gets the catalog tools; the Brain tools then answer 401. The toolFilter is optional and only trims what the agent sees. Every other client that speaks streamable HTTP and can send a header works the same way: URL https://ecomdly.com/mcp, header Authorization: Bearer <token>.

Publishing & review

Submitted skills run automated checks (Markdown lint, license, prompt-injection scan) and then queue for human review. Approved skills are published with a version history; every update goes through the same pipeline.

Frequently asked

What is an agent skill?

A Markdown file that tells an AI agent how to do one job: when to use it, the rules, and the exact output format. Skills say how to work; your private Brain files say what is true in your context.

How do I install a skill into Claude Code?

Run npx @ecomdly/cli add owner/skill to copy the .md into ./skills, or add the ecomdly MCP server once and let Claude search, load and install skills itself.

Do I need an account to install?

No. Raw URLs, the CLI and the MCP catalog tools (search, get, install, collections) work without signing in. Upvoting, publishing and your Brain need a Google or GitHub sign-in — or a personal MCP token for headless agents.

Why does Claude ask me to sign in when I mention my Brain?

Brain files are private and submissions carry your name, so those tools need to know who you are. Approve the sign-in in the browser once (Google or GitHub) and Claude keeps the connection; disconnect it under Settings → Connected apps. Searching and installing skills never needs a sign-in. Clients without a browser use a personal token instead — see Connect to Claude above.

What does “Security checked” mean?

The published version passed Markdown lint, a license check and a prompt-injection scan, the AI safety scan came back clean, and a human reviewer approved it. It reduces risk; it does not replace reading the file.

Can I pin a version?

Yes — use @v12 in the raw URL, or the version argument of get_skill over MCP. Unversioned URLs always return the latest approved version.

Is there a machine-readable version of this site?

Yes: /llms.txt and /llms-full.txt, and any public page as Markdown by appending .md or sending Accept: text/markdown.