AgentConfig interface to define how to detect and install skills for each supported coding agent.
AgentConfig Interface
Defined insrc/types.ts, the AgentConfig interface specifies the configuration for each agent:
Field Reference
Unique identifier for the agent in kebab-case. Used in CLI commands with the
--agent flag.Examples:claude-codecursorgithub-copilot
AgentType used throughout the codebase.Human-readable name shown in CLI output and prompts.Examples:
"Claude Code""Cursor""GitHub Copilot"
Relative path where skills are installed in project scope.Examples:
.claude/skills- Claude Code.agents/skills- Universal agents (Cursor, OpenCode, etc.)skills- OpenClaw (no dot prefix)
This path is relative to the current working directory when installing project-scoped skills.
Absolute path where global skills are installed (typically in user’s home directory).Set to
undefined if the agent doesn’t support global installation.Examples:~/.claude/skills- Claude Code global skills~/.config/opencode/skills- OpenCode global skills~/.codeium/windsurf/skills- Windsurf global skills
Async function that returns
true if the agent is installed on the system.Common detection strategies:- Check if config directory exists:
existsSync(join(home, '.agent')) - Check for project marker file:
existsSync(join(cwd(), '.replit')) - Check multiple possible locations (OpenClaw supports 3 legacy paths)
Whether to show this agent in the universal agents list.Set to
false for:- Agents that shouldn’t be auto-selected (e.g.,
universalmeta-agent) - Platform-specific agents (e.g., Replit)
Agent Types
All supported agent identifiers are defined in theAgentType union type:
Agent Registry
All agent configurations are stored in theagents object in src/agents.ts:
Universal Agents
Some agents share a common skills directory (.agents/skills/). These are called “universal agents”:
- Amp
- Cline
- Codex
- Cursor
- Gemini CLI
- GitHub Copilot
- Kimi Code CLI
- OpenCode
- Replit
- No symlinks needed between agents
- Single installation serves multiple agents
- Easier to manage and update
Agent Detection
The CLI automatically detects which agents are installed:Environment Variables
Some agents support custom configuration paths via environment variables:Custom Claude Code config directory.Default:
~/.claudeExample:Custom Codex home directory.Default:
~/.codexExample:Platform Differences
The agent system handles platform-specific path differences:XDG Base Directory
On Linux/macOS, some agents follow the XDG Base Directory specification:- OpenCode:
~/.config/opencode/skills/ - Goose:
~/.config/goose/skills/ - Amp:
~/.config/amp/skills/ - Crush:
~/.config/crush/skills/
Windows Compatibility
Paths work across platforms using Node’spath module:
Adding a New Agent
To add support for a new agent:Agent-Specific Notes
OpenClaw
OpenClaw
OpenClaw supports three legacy directory names:This ensures backwards compatibility with older installations.
Kiro CLI
Kiro CLI
Kiro CLI requires manual configuration after skill installation:Edit This is because Kiro uses a custom resource loading mechanism.
.kiro/agents/<agent>.json:Replit
Replit
Replit detection looks for Also has
.replit file:showInUniversalList: false since it’s platform-specific.Universal Meta-Agent
Universal Meta-Agent
The It represents the shared
universal agent is a meta-agent that never detects as installed:.agents/skills/ directory used by universal agents.Utility Functions
getAgentConfig(type: AgentType): AgentConfig
Get configuration for a specific agent:
getUniversalAgents(): AgentType[]
Get all agents using .agents/skills/ directory:
getNonUniversalAgents(): AgentType[]
Get agents with custom skill directories:
isUniversalAgent(type: AgentType): boolean
Check if an agent uses universal directory:
Related Documentation
CLI Options
Learn how to target specific agents
Compatibility
Agent feature compatibility matrix
Contributing
How to add a new agent
Skill Format
SKILL.md format specification