Skill tool uses /commit as example, conflicts with MCP tools handling 'commit'

Resolved 💬 3 comments Opened Feb 7, 2026 by rui-branco Closed Feb 7, 2026

Problem

The built-in Skill tool description uses /commit as the primary example:

/<skill-name> (e.g., /commit) is shorthand for users to invoke a user-invocable skill.

When a user says "commit", the model always tries Skill("commit") first because of this example — even when there's no "commit" skill registered, and even when an MCP tool (mcp__claude-commands__commit) is properly configured to handle commit workflows.

This results in a wasted tool call every time:

  1. Skill("commit") → fails with "Unknown skill: commit"
  2. Falls back to MCP tool → works correctly

Reproduction

  1. Set up an MCP server (e.g., claude-commands) with a commit tool
  2. Add MCP server instructions with a routing table that maps "commit" → MCP tool
  3. Say "commit" in a session
  4. Model tries Skill("commit") first, fails, then uses the MCP tool

Expected behavior

The model should check available skills before attempting the Skill tool. If "commit" isn't in the registered skills list, it should not attempt Skill("commit").

Alternatively, consider:

  • Changing the example in the Skill tool description to something less common (e.g., /format, /lint)
  • Allowing MCP server instructions to override built-in tool routing for specific keywords

Environment

  • Claude Code v2.1.37
  • Model: Opus 4.6
  • MCP server: claude-commands with commit tool registered as deferred tool

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗