A Rust CLI application that manages Claude Code agents in local projects by enabling/disabling them through symlinks.
ccagents manages agents for Claude Code by:
- Maintaining a
.agents.jsonconfiguration file (similar to.mcp.json) - Creating symlinks in
.claude/agents/to enable agents - Storing downloaded/copied agents in
.ccagents/directory - Using relative paths for portability
- Syncs agents based on
.agents.jsonconfiguration - Creates/removes symlinks in
.claude/agents/ - Downloads missing GitHub agents automatically
--pruneflag removes orphaned entries from configuration
- Adds agent from local path or GitHub URL
- Creates
.agents.jsonif not present - Copies external files/directories to
.ccagents/ - Automatically creates symlink if agent is enabled
- Supports both files and directories
- Shows enabled agents with detailed status:
✓ linked- Working correctly⚠ source missing- Source file deleted⚠ not linked- Missing symlink⚠ link broken- Invalid symlink
- Shows disabled agents from configuration
- Lists available agents in
.ccagents/not in config
- Enables/disables agents by managing symlinks
- Updates
.agents.jsonenabled status - Preserves agent source in configuration
- Removes orphaned agents (missing sources) from configuration
- Interactive confirmation (bypass with
--force) - Cleans up broken symlinks
- Comprehensive diagnostics for:
- Missing sources
- Broken/missing symlinks
- Duplicate agents
- Orphaned symlinks
--fixautomatically repairs fixable issues
- Displays version information
- Shows build timestamp and git info (when available)
project/
├── .agents.json # Agent configuration (uses relative paths)
├── .ccagents/ # Storage for downloaded/copied agents
│ └── agent-name/
└── .claude/
└── agents/ # Active agents via symlinks
└── agent-name -> ../../.ccagents/agent-name
{
"agents": [
{
"name": "agent-name",
"source": {
"type": "Local",
"value": ".ccagents/agent-name"
},
"enabled": true
},
{
"name": "github-agent",
"source": {
"type": "GitHub",
"value": "https://github.com/user/repo"
},
"enabled": false
}
]
}- Missing sources: Detected in list, can be cleaned with
cleancommand - Broken symlinks: Shown in status, fixable with
doctor --fix - Orphaned symlinks: Removed during sync or by doctor
- Duplicate agents: Detected and fixed by doctor
- Portability: Uses relative paths in
.agents.json
Current version: 0.1.0
See CHANGELOG.md for version history.