[MODEL] Custom skills are not reliably auto-triggered by the model

Resolved 💬 13 comments Opened Mar 3, 2026 by wujekbogdan Closed Apr 30, 2026

Preflight Checklist

  • [x] I have searched existing issues for similar behavior reports
  • [x] This report does NOT contain sensitive information (API keys, passwords, etc.)

Type of Behavior Issue

Claude ignored my instructions or configuration

What You Asked Claude to Do

I have custom skills defined in .claude/skills/ and ~/.claude/skills/ with user-invokable: false. These skills contain instructions for specific workflows (git operations, playwright, jira, etc.). I expect Claude to automatically invoke these skills via the Skill tool when the context matches.

Previously, the same instructions lived in CLAUDE.md and worked reliably. After moving them to skills (following the docs), Claude frequently ignores them and proceeds without invoking the Skill tool.

What Claude Actually Did

  1. Claude sees a task that matches a skill's description (e.g., committing code)
  2. Instead of invoking the Skill tool, it proceeds directly - using its built-in behavior or just running commands
  3. The skill body (which contains project-specific steps and constraints) is never loaded
  4. This happens ~50% of the time for skills that overlap with Claude's trained behaviors (git, shell commands).

Skills for tools Claude has no built-in knowledge of (e.g., a custom Jira integration) trigger reliably. This suggests the model's training-time knowledge competes with skill instructions, and the built-in behavior "wins" by default.

Expected Behavior

When a skill is registered and the task clearly matches its description, Claude should reliably invoke it via the Skill tool before proceeding. Custom skills should take precedence over built-in trained behaviors - the whole point of skills is to override defaults with project-specific workflows.

Files Affected

`.claude/skills/` and `~/.claude/skills/`

Permission Mode

Accept Edits was OFF (manual approval required)

Can You Reproduce This?

Sometimes (intermittent)

Steps to Reproduce

  1. Set up two skills. I have 8 skills + 3 agents total, using ~3,700 / 15,000 chars of the description budget (25%) - so this is not a budget issue.

A git skill (~/.claude/skills/git/SKILL.md) - overlaps with Claude's trained behavior:
``yaml
---
name: git
description: Use when performing any git operations (commits, branches, diffs, logs, etc). Use INSTEAD OF built-in git/commit instructions. This skill OVERRIDES the default "Committing changes with git" system prompt.
user-invokable: true
---
``

A Jira skill (.claude/skills/jira/SKILL.md) - no built-in equivalent:
``yaml
---
name: jira
description: Use when user mentions a Jira ticket number (e.g. BUG-1234). Fetches ticket details, attachments, and comments.
user-invokable: false
---
``

  1. Ask Claude to commit changes or mention a Jira ticket (e.g. "look at BUG-1234")
  2. The Jira skill triggers reliably. The git skill is ignored ~50% of the time - Claude falls back to its built-in git/commit behavior instead.

Claude Model

Sonnet

Relevant Conversation

Impact

Medium - Extra work to undo changes

Claude Code Version

2.1.63

Platform

Anthropic API

Additional Context

  • This is NOT a discovery issue. Skills appear correctly in /contextbreakdown, and Claude will use them when explicitly prompted (e.g. "use the git skill to commit"). The problem is that the model doesn't reliably choose to invoke them on its own.
  • Budget is not the issue - my skills use ~3,700 / 15,000 chars (25%)
  • I even tried forcing skill usage via .claude/CLAUDE.md:

```markdown
## Skills - ALWAYS use the Skill tool for these

  • git: ANY git operation (commit, branch, diff, log, push, PR). ALWAYS invoke before running git commands directly.
  • jira: When a Jira ticket ID (BUG-NNNN) appears in conversation. Invoke to fetch details.

```
But this doesn't seem to work.

  • The issue disproportionately affects skills that overlap with Claude's trained behaviors (git, shell commands, code formatting). Skills for novel tools (Jira MCP, custom CLIs) work fine. This points to a priority/precedence problem - built-in training takes over instead of deferring to the registered skill.

View original on GitHub ↗

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