Guide for adding new plugins, new skills, or fixing existing ones.
- One plugin per integration (one MCP service = one plugin). Follow Anthropic's
claude-plugins-officialpattern. - Plugin names are lowercase kebab-case, short, descriptive (
lex,esios, notlegal-corpusoriberian-electricity-market). - Skills inside a plugin use the same casing. Full slash command becomes
/<plugin>:<skill>(e.g./lex:resolver-cita). - Spanish for user-facing strings (skill descriptions, error messages). English for code-internal docs (this file, plugin READMEs at high level).
<plugin>/skills/<skill-name>/
└── SKILL.md (required)
Minimum SKILL.md frontmatter:
---
name: <skill-name>
description: "Verb-first one-sentence summary in Spanish. Include 2-4 concrete trigger phrases the user would type. End with 'Use when ...'."
argument-hint: "<positional-args>"
---Rules:
description≤ 1024 chars; third person; verb-first; must contain real trigger phrases (Claude uses these for skill discovery).argument-hintis a single short string shown in the autocomplete UI.- Body of
SKILL.mddocuments:- When the skill applies and when not.
- The MCP tool(s) it calls and how it maps arguments.
- Error / empty-result handling.
- 2-3 example invocations.
- Create folder
<plugin-name>/at the repo root. - Add
<plugin-name>/.claude-plugin/plugin.jsonwithname,version,description,author. - Add
<plugin-name>/.mcp.jsonif the plugin registers MCP servers. - Add
<plugin-name>/README.mddocumenting tools, auth, and skill catalog. - Add the plugin to the
pluginsarray in.claude-plugin/marketplace.json. - Skills live under
<plugin-name>/skills/<skill-name>/SKILL.md.
Plugins follow semver. Bump on every shipped change so consumer caches invalidate:
- Patch (
x.y.Z) — content edits, new skills inside existing plugins. - Minor (
x.Y.0) — new MCP tools, new skills that change behavior of existing tools. - Major (
X.0.0) — renames, removals, breaking schema changes inplugin.json.
After editing a plugin, bump the version in <plugin>/.claude-plugin/plugin.json before commit. Consumers running claude plugin update <plugin>@datons only pick up new versions.
Skills are wrappers that add semantic value over raw MCP tools. Three properties to preserve:
- Route through the MCP — skills always call the MCP tool, never embed cached or trained-data answers. This keeps responses fresh, timestamped, and traceable.
- Add domain context the user shouldn't have to learn — facet syntax, jurisdiction defaults, common arg patterns. The user types "RD 244/2019 art. 4"; the skill knows to force
jurisdiction='es'and calllist_lawsbeforeread_unit. - Be composable, not workflow-final — skills produce structured datapoints with metadata (timestamp, official URL, version). They don't draft deliverables. Composition is the user's job, with Claude's help.
Load a plugin from a working copy with --plugin-dir:
CLAUDE_CONFIG_DIR=/tmp/claude-dev claude --plugin-dir ./lexInside the session, invoke the skill manually (/lex:resolver-cita Art. 4 RD 244/2019) and verify the output is sensible.
Open an issue at https://github.com/datons/agent-plugins/issues.