feat(tools): add tool alias registry for Claude Code skill compatibility

Add alias support to the tool Registry so Claude Code skills can reference
Anthropic tool names (Read, Write, Edit, Bash, etc.) and have them resolve
to GoClaw canonical tools (read_file, write_file, edit, exec, etc.).

- Registry: aliases map, RegisterAlias(), resolve(), Aliases()
- Policy engine: auto-includes alias defs when canonical tool passes filter
- System prompt: alias entries in coreToolSummaries + missing use_skill
- Legacy toolAliases migrated to Registry.RegisterAlias() at startup
This commit is contained in:
viettranx committed 2026-03-11 17:33:28 +07:00
1 parent c25e770d43
commit ec34f488df
4 files changed
+120 -10

No files matched your search

+22
View File
@@ -536,6 +536,28 @@ func runGateway() {
toolsReg.Register(tools.NewMessageTool())
slog.Info("session + message tools registered")
// Register legacy tool aliases (backward-compat names from policy.go).
for alias, canonical := range tools.LegacyToolAliases() {
toolsReg.RegisterAlias(alias, canonical)
}
// Register Claude Code tool aliases so Claude Code skills work without modification.
// LLM calls alias name → registry resolves to canonical tool → executes.
for alias, canonical := range map[string]string{
"Read": "read_file",
"Write": "write_file",
"Edit": "edit",
"Bash": "exec",
"WebFetch": "web_fetch",
"WebSearch": "web_search",
"Agent": "spawn",
"Skill": "use_skill",
"ToolSearch": "mcp_tool_search",
} {
toolsReg.RegisterAlias(alias, canonical)
}
slog.Info("tool aliases registered", "count", len(toolsReg.Aliases()))
// Allow read_file to access skills directories and CLI workspaces (outside workspace).
// Skills can live in ~/.goclaw/skills/, ~/.agents/skills/, ~/.goclaw/skills-store/, etc.
// CLI workspaces live in ~/.goclaw/cli-workspaces/ (agent working files).