Expert guide for managing Claude Code global skills and commands. Use when creating new skills, symlinking to projects, updating existing skills, or organizing the centralized skill repository.
npx claudepluginhub joshuarweaver/cascade-ai-ml-engineering --plugin delphine-l-claude-globalThis skill uses the workspace's default tool permissions.
Expert knowledge for managing Claude Code skills and commands using the centralized repository pattern with `$CLAUDE_METADATA`.
Creates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Executes implementation plans in current session by dispatching fresh subagents per independent task, with two-stage reviews: spec compliance then code quality.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
Expert knowledge for managing Claude Code skills and commands using the centralized repository pattern with $CLAUDE_METADATA.
This skill is split across multiple files for maintainability. Read these as needed:
$CLAUDE_METADATA must be set to your centralized skills directory.
Check if set:
echo $CLAUDE_METADATA
# Should output your claude_data directory path
If not set, add to ~/.zshrc (or ~/.bashrc):
export CLAUDE_METADATA="$HOME/path/to/claude_data" # Adjust to your actual path
Apply immediately:
source ~/.zshrc # or source ~/.bashrc
ls -la $CLAUDE_METADATA/
# Should show:
# ├── skills/ # Global skills
# ├── commands/ # Global commands
# ├── hooks/ # Claude Code hooks (symlinked to ~/.claude/hooks/)
# ├── README.md
# └── QUICK_REFERENCE.md
If setting up a centralized skill repository for the first time:
Create directory structure:
mkdir -p $CLAUDE_METADATA/{skills,commands}
cd $CLAUDE_METADATA
Set environment variable (add to ~/.zshrc or ~/.bashrc):
echo 'export CLAUDE_METADATA="$HOME/path/to/claude_data" # Adjust to your actual path' >> ~/.zshrc
source ~/.zshrc
Verify setup:
echo $CLAUDE_METADATA
# Should output your claude_data directory path
Create initial documentation:
# Create README and QUICK_REFERENCE
# (use templates from claude-skill-management skill)
Initialize git (recommended):
cd $CLAUDE_METADATA
git init
git add .
git commit -m "Initial centralized skill repository"
Create your first skill:
mkdir -p $CLAUDE_METADATA/skills/my-first-skill
# Create SKILL.md with frontmatter
Link to first project:
cd ~/Workdir/my-project
mkdir -p .claude/skills
ln -s $CLAUDE_METADATA/skills/my-first-skill .claude/skills/
Environment variable best practices:
$HOME not hardcoded paths for portabilitysource ~/.zshrcecho $CLAUDE_METADATAmkdir -p $CLAUDE_METADATA/skills/your-skill-name
Naming conventions:
kebab-case (lowercase with hyphens)galaxy-tool-wrapping, python-testing, docker-workflowscat > $CLAUDE_METADATA/skills/your-skill-name/SKILL.md << 'EOF'
---
name: your-skill-name
description: Brief description that helps Claude decide when to activate this skill (1-2 sentences)
---
# Your Skill Name
Detailed instructions for Claude when this skill is activated.
## When to Use This Skill
- Specific use case 1
- Specific use case 2
- Specific use case 3
## Core Concepts
### Concept 1
Explanation and examples...
### Concept 2
Explanation and examples...
## Best Practices
- Practice 1
- Practice 2
## Common Issues and Solutions
### Issue 1
**Problem:** Description
**Solution:** How to fix it
## Examples
### Example 1: Task Name
Description and code examples...
EOF
Frontmatter fields:
name (required): Must match directory namedescription (required): Clear, concise description for activationversion (optional): Semantic versioning (e.g., 1.0.0)dependencies (optional): Required tools/packages# Add detailed reference documentation
cat > $CLAUDE_METADATA/skills/your-skill-name/reference.md << 'EOF'
# Reference Documentation
Detailed technical information, API references, etc.
EOF
# Add examples directory
mkdir -p $CLAUDE_METADATA/skills/your-skill-name/examples
# Add templates directory
mkdir -p $CLAUDE_METADATA/skills/your-skill-name/templates
# Create a test project
mkdir -p /tmp/test-skill-project/.claude/skills
# Symlink the new skill
ln -s $CLAUDE_METADATA/skills/your-skill-name /tmp/test-skill-project/.claude/skills/your-skill-name
# Start Claude Code in test project
cd /tmp/test-skill-project
# Tell Claude: "Use the your-skill-name skill to [test task]"
# Use existing category
ls $CLAUDE_METADATA/commands/
# Or create new category
mkdir -p $CLAUDE_METADATA/commands/your-category
Common categories:
vgp-pipeline/ - VGP workflow commandsgit-workflows/ - Git-related commandstesting/ - Testing-related commandsdeployment/ - Deployment commandscat > $CLAUDE_METADATA/commands/your-category/command-name.md << 'EOF'
---
name: command-name
description: Brief description shown in /help
---
Your command prompt here. This will be expanded when the user types /command-name.
You can include:
- Multi-line instructions
- Variable references: {{variable_name}}
- Markdown formatting
- Code blocks
Example:
Check the status of all workflows for species {{species_name}}.
Show me which workflows are complete, running, or failed.
EOF
Naming conventions:
kebab-casecheck-status, debug-failed, update-skillsdeploy-production not just deploy# Symlink to test project
ln -s $CLAUDE_METADATA/commands/your-category/command-name.md /tmp/test-project/.claude/commands/
# Start Claude Code and test
# Type: /command-name
Use /command-help to view documentation for Claude Code commands (similar to --help in traditional CLI tools):
# List all available commands
/command-help list
# Show specific command help
/command-help share-project
# Show full details including implementation steps
/command-help share-project --full
Location: $CLAUDE_METADATA/commands/global/command-help.md
Features:
--full flagCommands should include frontmatter for the help system:
---
description: Brief one-line description
usage: /command-name [arguments]
parameters: |
arg1: Description of argument 1
arg2: Description of argument 2
examples: |
/command-name example1
/command-name example2 --option
---
[Command implementation steps...]
Template for new commands:
---
name: my-command
description: Brief description of what this command does
usage: /my-command [required-arg] [optional-arg]
parameters: |
required-arg: Description of required argument
optional-arg: (Optional) Description of optional argument
examples: |
/my-command basic-example
/my-command advanced-example --flag
---
# Command Implementation
Step 1: [First step description]
Step 2: [Second step description]
[Continue with detailed steps...]
Best practices for command documentation:
For additional details, see the supporting files listed at the top of this document: