-
-
Notifications
You must be signed in to change notification settings - Fork 6
Description
Context
Claude Code has a plugin/marketplace system where plugins are installed locally and can contain agent skills. These skills use the same SKILL.md frontmatter format that Warden already understands, but Warden doesn't currently know how to discover them.
Marketplace Plugin Structure
When a user installs a marketplace plugin, Claude Code copies it to a local cache. Each plugin follows this structure:
plugin-name/
├── .claude-plugin/
│ └── plugin.json # Plugin manifest
├── skills/
│ └── skill-name/
│ └── SKILL.md # Same frontmatter format Warden uses
├── commands/
├── agents/
├── hooks/
└── .mcp.json
The installed plugin cache lives at:
~/.claude/plugins/cache/
Skills within plugins are namespaced by plugin name to avoid collisions (e.g., plugin-name:skill-name).
Current Warden Behavior
Warden currently discovers skills from three conventional directories:
.agents/skills/(primary).claude/skills/.warden/skills/
It supports both skill-name/SKILL.md (directory) and skill-name.md (flat) formats.
Proposal
Add the Claude marketplace plugin cache as an additional skill discovery path. When resolving skills, Warden should also search:
~/.claude/plugins/cache/<plugin-name>/skills/<skill-name>/SKILL.md
Considerations
- Namespacing: Marketplace skills use
plugin-name:skill-nameconvention. Warden should support resolving skills with this colon-separated namespace syntax. - Discovery:
discoverAllSkills()should optionally include marketplace-installed skills so they can be referenced inwarden.tomltrigger configs. - Cache location: The exact cache path may vary or be configurable. Need to confirm the stable/documented location.
- Format compatibility: Marketplace
SKILL.mdfiles use the same YAML frontmatter (name,description) that Warden already parses, so theloadSkillFromMarkdown()function should work as-is. - plugin.json: May want to read the plugin manifest for metadata (version, author) but not strictly required for skill loading.
Open Questions
- Should this be opt-in (explicit path in config) or automatic (always search marketplace cache)?
- How should we handle version conflicts if a skill exists both locally and in a marketplace plugin?
- Is
~/.claude/plugins/cache/the stable path, or should we look for a config that points to the cache location?