Skills not loaded when using CLAUDE_CONFIG_DIR environment variable
Description
When using the CLAUDE_CONFIG_DIR environment variable to specify a custom configuration directory, plugin skills are not loaded. Commands from the same plugin work correctly.
This breaks multi-account workflows where users need separate config directories for different accounts.
Steps to Reproduce
- Create a plugin with skills in
skills/*/SKILL.md - Install plugin in
$CLAUDE_CONFIG_DIR/plugins/(via symlink or copy) - Register plugin in
installed_plugins.json:
``json``
"my-plugin@local": [{
"scope": "user",
"installPath": "/path/to/plugins/my-plugin",
"version": "1.0.0"
}]
- Enable plugin in
settings.json:
``json``
"enabledPlugins": {
"my-plugin@local": true
}
- Launch Claude Code:
CLAUDE_CONFIG_DIR=/custom/config claude - Try to invoke a skill from the plugin
Expected Behavior
Skills should load and be invocable, identical to using the default ~/.claude/ config.
Actual Behavior
- Skills do not appear in
/menu - Skills cannot be invoked
- Commands from the same plugin DO work correctly
Configurations Tested (all failed for skills)
| Configuration | Skills | Commands |
|--------------|--------|----------|
| Symlink in plugins dir | ❌ | ✅ |
| Real copy (no symlink) | ❌ | ✅ |
| With --plugin-dir flag | ❌ | ✅ |
| Without --plugin-dir flag | ❌ | ✅ |
| Various installPath values | ❌ | ✅ |
Environment
- OS: macOS Darwin 25.2.0
- Date: 2026-01-26
Impact
This completely breaks the ability to use skills with multiple Claude Code accounts/configurations. The only workaround is to create command wrappers for every skill, which defeats the purpose of the skill system.
Workaround
Create command wrappers in commands/ that include the skill content. This is not ideal as it requires maintaining duplicate files.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗