Customizing
Add your own skills, commands, scripts, and MCP servers via a custom module repository.
Setting Up a Custom Repository
mkdir my-claude-modules
cd my-claude-modules
git initStructure
my-claude-modules/
├── VERSION # e.g., "1.0.0"
├── CHANGELOG.md
├── skills/ # Custom skills (auto-load or command)
│ └── my-skill/
│ └── SKILL.md
├── commands/ # Command overrides/extends (optional)
│ └── catchup.md
├── scripts/ # Helper scripts (optional)
│ └── my-helper.sh
└── mcp/ # MCP server configs (optional)
└── my-server.jsonInstall for Your Team
Push to Git, then each team member runs:
/add-custom git@company.com:team/claude-modules.gitOr link manually for development:
ln -sf ~/path/to/my-claude-modules ~/.claude/customOverride Principle
Custom modules override base modules with the same name. A custom standards-python skill replaces the built-in one.
Custom Skills
Skills provide specialized knowledge that Claude loads automatically (context skills) or on demand (command skills).
Quick Start
/skill-creatorManual Creation
Place a SKILL.md in ~/.claude/custom/skills/my-skill/:
---
name: my-skill
description: What this skill does
type: context
applies_to: [python, fastapi]
file_extensions: [".py"]
---
# Skill Content
Instructions and standards here...Skill Types
| Type | How it loads | Example |
|---|---|---|
| Context | Auto-loads based on tech stack or file extension | Coding standards |
| Command | User invokes with /skill-name | Presentation creator |
Frontmatter Fields
| Field | Required | Description |
|---|---|---|
name | Yes | Skill identifier (kebab-case) |
description | Yes | What the skill does |
type | Yes | context or command |
applies_to | Context only | Tech stack triggers (e.g., [python, fastapi]) |
file_extensions | Context only | File extensions for task-based loading (e.g., [".py"]) |
Optional Files
my-skill/
├── SKILL.md # Required
├── deps.json # System dependencies per platform
├── assets/ # Templates, reusable content
├── references/ # Reference docs Claude can read
└── test-project/ # Example project for testingSee Creating Skills for detailed examples and deps.json format.
Custom Commands
Custom commands override or extend base commands like /catchup, /wrapup, or /do-review.
Override
Place a command with the same name as a base command in commands/. It replaces the base entirely.
commands/do-review.md # Replaces base do-review.mdExtend
Use the {{base:command-name}} marker to include base command content. The installer replaces the marker with the full base command at install time — Claude reads a single file.
Prepend custom steps, then base:
# Custom Catchup
## Additional Steps
- Load team-specific skills
- Check internal tooling
---
{{base:catchup}}Conditional gate (custom logic first, base as fallback):
# Custom Catchup
## Step 0: Detect Project Type
Check if this is a company framework project.
### If detected:
- Follow custom workflow
- **Stop here**
### If NOT detected:
Continue with standard tasks below.
---
{{base:catchup}}Append custom steps after base:
{{base:wrapup}}
---
## Additional Custom Steps
- Sync with internal dashboardEdge Cases
- Missing base (
{{base:nonexistent}}): Replaced with an HTML comment warning - Path traversal (
{{base:../../etc/passwd}}): Rejected — names must be alphanumeric and hyphens only - Multiple markers: All resolved in a single pass during installation
Custom Scripts
Place helper scripts in scripts/. They are deployed to ~/.claude/scripts/ with executable permissions.
Commands and skills can reference them:
Run the detection script:
\`\`\`bash
~/.claude/scripts/my-helper.sh
\`\`\`Scripts are re-deployed on --update. To remove a script, delete it from your custom repo and run /claude-code-setup or ./install.sh --update.
Custom MCP Servers
Place JSON configs in mcp/:
{
"name": "my-server",
"description": "Internal search API",
"config": {
"command": "npx",
"args": ["-y", "my-mcp-server"]
}
}See MCP Servers for the full config format.
Visibility
--list shows all custom modules:
Custom Commands:
+ catchup.md (override)
+ wrapup.md (extend)
Custom Scripts:
+ my-helper.sh
Custom Skills:
+ my-skill
Custom MCP:
+ my-server/claude-code-setup also shows custom modules in its status display.
Keeping Updated
When you update the custom repo:
- Push changes
- Bump
VERSION - Update
CHANGELOG.md
Team members update with /claude-code-setup — it detects new versions automatically.
Related
- Creating Skills - Detailed skill examples and deps.json format
- /add-custom - Install custom modules for your team
- Module Management -
--list,--update,--remove