Feature Request: Project-level skill overrides for marketplace plugins
Problem
When using marketplace plugins (like dev-browser), there's no clean way for project-level customizations to override or extend the plugin's behavior. This leads to Claude ignoring project-specific patterns documented in CLAUDE.md and skill overlays.
Specific Example
We use the dev-browser marketplace plugin for browser automation. Our project needs:
- A wrapper script for server management (handles race conditions, logging)
- Scripts written to
/tmp/dev-browser/instead of the plugin cache - Login helpers specific to our app
run_in_background: truefor server start (Claude's Bash blocks otherwise)
We created a project skill (.claude/skills/shop-director-browser/) as an "overlay" with these customizations. However:
- When users say "use dev-browser", Claude invokes the marketplace plugin directly
- The marketplace plugin's SKILL.md takes precedence
- Our project-level customizations are ignored
- Claude reverts to default behaviors (heredocs, writing to plugin cache, etc.)
Current Workaround
We had to implement multiple layers of workarounds:
- Add instructions to
CLAUDE.md - Modify the
UserPromptSubmithook to recommend our skill instead - Create a
PreToolUsehook to intercept and inject context - Hope Claude reads and follows all of this
This is fragile and often fails.
Proposed Solution
1. Skill Override/Extension Mechanism
Allow project-level skills to declare they extend or override a marketplace skill:
---
name: shop-director-browser
extends: dev-browser # or "overrides: dev-browser"
---
When dev-browser is invoked, Claude would:
- Check if a project skill extends/overrides it
- Load the project skill's instructions WITH the base plugin
- Project instructions take priority for conflicts
2. Stronger CLAUDE.md Priority
Instructions in project CLAUDE.md should have higher weight than marketplace plugin defaults, especially for:
- Tool usage patterns
- File locations
- Authentication/credentials
- Project-specific workflows
Additional Issue: Heredocs with ES Modules
Claude frequently tries to use heredocs with tsx:
npx tsx << 'EOF'
import { connect } from "@/client.js";
EOF
This always fails because Node.js treats stdin as CommonJS, breaking ES module import statements. Claude should learn this pattern doesn't work and always write to temp files first.
Environment
- Claude Code v2.0.76
- macOS
- Using dev-browser marketplace plugin
Impact
Without proper skill overrides, teams must implement fragile hook-based workarounds that:
- Break when Claude doesn't follow hooks
- Require multiple redundant safety nets
- Create confusion about which instructions to follow
- Make marketplace plugins less useful for customized projects
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗