[BUG]

Resolved 💬 2 comments Opened Nov 14, 2025 by feijitong Closed Dec 27, 2025

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

Bug Report: Skills Not Loading on Windows

Summary

Skills fail to load on Windows with error "Error: unknown skill" and "skill not registered with the system", while the same skills work on Linux/macOS.

Environment

  • OS: Windows 10/11 (windows32 2.6.2)
  • Claude Code Version: 2.0.37
  • Installation Type: Native installer
  • Working Directory: C:\Users\jmors\.claude

Problem Description

When attempting to invoke any skill using the Skill tool, Claude Code returns:

  • Error: unknown skill
  • skill not registered with the system

The debug logs show that 0 skills are being loaded despite having:

  • 47+ custom user skills in C:\Users\jmors\.claude\skills\
  • Official Anthropic marketplace skills in C:\Users\jmors\.claude\plugins\marketplaces\anthropic-agent-skills\

Evidence from Debug Logs

From C:\Users\jmors\.claude\debug\86443684-052f-498d-9782-eb7e39a0b5da.txt:

[DEBUG] Loading skills from directories: managed=C:\ProgramData\ClaudeCode\.claude\skills, user=C:\Users\jmors\.claude\skills, project=C:\Users\jmors\.claude\.claude\skills
[DEBUG] >>>>> getPluginSkills CALLED <<<<<
[DEBUG] getPluginSkills: Processing 0 enabled plugins
[DEBUG] Total plugin skills loaded: 0
[DEBUG] Total plugin commands loaded: 0
[DEBUG] Loaded 0 unique skills (managed: 0, user: 0, project: 0, duplicates removed: 0)
[DEBUG] getSkillsIfEnabled returning: 0 skill dir commands, 0 plugin skills

Key observation: Line 19 shows Loaded 0 unique skills with all counts at 0.

Skills Are Properly Formatted

Verified that SKILL.md files have correct frontmatter:

Example 1: skills/Research/Analytics/python-paper-implementation/SKILL.md

---
name: python-paper-implementation
description: Translate academic papers in Economics (Ph.D. level), Actuarial Science (Ph.D./Actuary level), and Insurance into interactive Python applications using Dash/Plotly with dynamic widgets for parameter exploration. Use when implementing mathematical models from papers as web-based interactive dashboards, creating Python implementations of academic economics/actuarial models, or building Dash applications with sliders and real-time visualization for exploring paper results.
---

Example 2: Official Anthropic skill plugins/marketplaces/anthropic-agent-skills/document-skills/pdf/SKILL.md

---
name: pdf
description: Comprehensive PDF manipulation toolkit for extracting text and tables, creating new PDFs, merging/splitting documents, and handling forms. When Claude needs to fill in a PDF form or programmatically process, generate, or analyze PDF documents at scale.
license: Proprietary. LICENSE.txt has complete terms
---

File System Verification

Confirmed skills exist with proper structure:

$ find skills -name "SKILL.md" | wc -l
47

$ ls plugins/marketplaces/anthropic-agent-skills/document-skills/*/SKILL.md
plugins/marketplaces/anthropic-agent-skills/document-skills/docx/SKILL.md
plugins/marketplaces/anthropic-agent-skills/document-skills/pdf/SKILL.md
plugins/marketplaces/anthropic-agent-skills/document-skills/pptx/SKILL.md
plugins/marketplaces/anthropic-agent-skills/document-skills/xlsx/SKILL.md

Root Cause Hypothesis

This appears to be a Windows-specific path handling bug in the skill loader. Likely causes:

  1. Using Unix-style path separators (/) in file search patterns on Windows
  2. Not properly normalizing Windows paths with backslashes (\)
  3. File glob pattern incompatibility with Windows filesystem API
  4. Case-sensitivity assumptions that don't match Windows behavior

Expected Behavior

Skills should load successfully on Windows just as they do on Linux/macOS.

Actual Behavior

Zero skills are discovered/loaded, resulting in all skill invocations failing with "skill not registered with the system".

Impact

  • Complete inability to use custom skills on Windows
  • Complete inability to use official Anthropic marketplace skills on Windows
  • Feature parity broken between Windows and Linux/macOS

Reproduction Steps

  1. Install Claude Code 2.0.37 on Windows
  2. Create any SKILL.md file with proper frontmatter in %USERPROFILE%\.claude\skills\
  3. Attempt to invoke the skill using the Skill tool
  4. Observe error: "Error: unknown skill" and "skill not registered with the system"
  5. Check debug logs showing Loaded 0 unique skills

Additional Context

  • Same skill files work correctly on Linux/macOS (confirmed by user)
  • Issue affects both user skills and official marketplace skills
  • Skills directory structure follows documentation standards
  • File permissions appear correct (readable by user)

Workaround

None available. Skills are completely non-functional on Windows until this bug is fixed.

What Should Happen?

Claude should load the skill properly

Error Messages/Logs

[DEBUG] Watching for changes in setting files C:\Users\jmors\.claude\settings.json...
[DEBUG] Using bash path: "C:\Program Files\Git\bin\bash.exe"
[DEBUG] [LSP MANAGER] initializeLspServerManager() called
[DEBUG] [LSP MANAGER] Created manager instance, state=pending
[DEBUG] [LSP MANAGER] Starting async initialization (generation 1)
[DEBUG] [LSP SERVER MANAGER] initialize() called
[DEBUG] [LSP SERVER MANAGER] Calling getAllLspServers()
[DEBUG] Found 0 plugins (0 enabled, 0 disabled)
[DEBUG] Total LSP servers loaded: 0
[DEBUG] [LSP SERVER MANAGER] getAllLspServers returned 0 server(s)
[DEBUG] LSP manager initialized with 0 servers
[DEBUG] LSP server manager initialized successfully
[DEBUG] LSP notification handlers registered successfully for all 0 server(s)
[DEBUG] Loading skills from directories: managed=C:\ProgramData\ClaudeCode\.claude\skills, user=C:\Users\jmors\.claude\skills, project=C:\Users\jmors\.claude\.claude\skills
[DEBUG] >>>>> getPluginSkills CALLED <<<<<
[DEBUG] getPluginSkills: Processing 0 enabled plugins
[DEBUG] Total plugin skills loaded: 0
[DEBUG] Total plugin commands loaded: 0
[DEBUG] Loaded 0 unique skills (managed: 0, user: 0, project: 0, duplicates removed: 0)
[DEBUG] getSkillsIfEnabled returning: 0 skill dir commands, 0 plugin skills
[DEBUG] Registered 0 hooks from 0 plugins
[DEBUG] Creating shell snapshot for bash (C:\Program Files\Git\bin\bash.exe)
[DEBUG] Looking for shell config file: C:\Users\jmors\.bashrc
[DEBUG] Shell config file not found: C:\Users\jmors\.bashrc, creating snapshot with Claude Code defaults only
[DEBUG] Snapshots directory: C:\Users\jmors\.claude\shell-snapshots
[DEBUG] Creating snapshot at: C:\Users\jmors\.claude\shell-snapshots\snapshot-bash-1763116579326-7eikl6.sh
[DEBUG] Shell binary exists: true
[DEBUG] Execution timeout: 10000ms
[DEBUG] Writing to temp file: C:\Users\jmors\.claude\todos\86443684-052f-498d-9782-eb7e39a0b5da-agent-86443684-052f-498d-9782-eb7e39a0b5da.json.tmp.6052.1763116579351
[DEBUG] Temp file written successfully, size: 2 bytes
[DEBUG] Renaming C:\Users\jmors\.claude\todos\86443684-052f-498d-9782-eb7e39a0b5da-agent-86443684-052f-498d-9782-eb7e39a0b5da.json.tmp.6052.1763116579351 to C:\Users\jmors\.claude\todos\86443684-052f-498d-9782-eb7e39a0b5da-agent-86443684-052f-498d-9782-eb7e39a0b5da.json
[DEBUG] File C:\Users\jmors\.claude\todos\86443684-052f-498d-9782-eb7e39a0b5da-agent-86443684-052f-498d-9782-eb7e39a0b5da.json written atomically
[DEBUG] Agent file C:\Users\jmors\.claude\agents\clauide marketplaces.md is missing required 'name' in frontmatter
[DEBUG] Failed to parse agent from C:\Users\jmors\.claude\agents\clauide marketplaces.md: Missing required "name" field in frontmatter
[DEBUG] Agent file C:\Users\jmors\.claude\agents\clauide marketplaces.md is missing required 'name' in frontmatter
[DEBUG] Failed to parse agent from C:\Users\jmors\.claude\agents\clauide marketplaces.md: Missing required "name" field in frontmatter
[DEBUG] Total plugin agents loaded: 0
[DEBUG] Ripgrep first use test: PASSED (mode=builtin, path=C:\Users\jmors\.local\bin\claude.exe)
[DEBUG] Writing to temp file: C:\Users\jmors\.claude.json.tmp.6052.1763116579988
[DEBUG] Preserving file permissions: 100666
[DEBUG] Temp file written successfully, size: 50493 bytes
[DEBUG] Applied original permissions to temp file
[DEBUG] Renaming C:\Users\jmors\.claude.json.tmp.6052.1763116579988 to C:\Users\jmors\.claude.json
[DEBUG] File C:\Users\jmors\.claude.json written atomically
[DEBUG] Getting matching hook commands for SessionStart with query: startup
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "startup" (0 before deduplication)
[DEBUG] Writing to temp file: C:\Users\jmors\.claude.json.tmp.6052.1763116580100
[DEBUG] Preserving file permissions: 100666
[DEBUG] Temp file written successfully, size: 50385 bytes
[DEBUG] Applied original permissions to temp file
[DEBUG] Renaming C:\Users\jmors\.claude.json.tmp.6052.1763116580100 to C:\Users\jmors\.claude.json
[DEBUG] File C:\Users\jmors\.claude.json written atomically
[DEBUG] Writing to temp file: C:\Users\jmors\.claude.json.tmp.6052.1763116580119
[DEBUG] Preserving file permissions: 100666
[DEBUG] Temp file written successfully, size: 50385 bytes
[DEBUG] Applied original permissions to temp file
[DEBUG] Renaming C:\Users\jmors\.claude.json.tmp.6052.1763116580119 to C:\Users\jmors\.claude.json
[DEBUG] File C:\Users\jmors\.claude.json written atomically
[DEBUG] AutoUpdaterWrapper: Installation type: native
[DEBUG] performStartupChecks called
[DEBUG] Starting background plugin installations
[DEBUG] performBackgroundPluginInstallations called
[DEBUG] Skills and commands included in Skill tool:
[DEBUG] Slash commands included in SlashCommand tool:
[DEBUG] Setting installation status: 0 marketplaces, 0 installable plugins, 0 uninstallable plugins
[DEBUG] Loaded plugins - Enabled: 0, Disabled: 0, Commands: 0, Agents: 0, Errors: 0
[DEBUG] Shell snapshot created successfully (283 bytes)
[DEBUG] Checking for native installer update to version 2.0.37
[DEBUG] Version 2.0.37 already installed, updating symlink
[DEBUG] Successfully updated to version 2.0.37
[DEBUG] Writing to temp file: C:\Users\jmors\.claude.json.tmp.6052.1763116580866
[DEBUG] Preserving file permissions: 100666
[DEBUG] Temp file written successfully, size: 50385 bytes
[DEBUG] Applied original permissions to temp file
[DEBUG] Renaming C:\Users\jmors\.claude.json.tmp.6052.1763116580866 to C:\Users\jmors\.claude.json
[DEBUG] File C:\Users\jmors\.claude.json written atomically
[DEBUG] Writing to temp file: C:\Users\jmors\.claude.json.tmp.6052.1763116580876
[DEBUG] Preserving file permissions: 100666
[DEBUG] Temp file written successfully, size: 50385 bytes
[DEBUG] Applied original permissions to temp file
[DEBUG] Renaming C:\Users\jmors\.claude.json.tmp.6052.1763116580876 to C:\Users\jmors\.claude.json
[DEBUG] File C:\Users\jmors\.claude.json written atomically
[DEBUG] Writing to temp file: C:\Users\jmors\.claude.json.tmp.6052.1763116580889
[DEBUG] Preserving file permissions: 100666
[DEBUG] Temp file written successfully, size: 50493 bytes
[DEBUG] Applied original permissions to temp file
[DEBUG] Renaming C:\Users\jmors\.claude.json.tmp.6052.1763116580889 to C:\Users\jmors\.claude.json
[DEBUG] File C:\Users\jmors\.claude.json written atomically
[DEBUG] Stream started - received first chunk
[DEBUG] Stream started - received first chunk
[DEBUG] Getting matching hook commands for SubagentStop with query: undefined
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "no match query" (0 before deduplication)
[DEBUG] Getting matching hook commands for SubagentStop with query: undefined
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "no match query" (0 before deduplication)
[DEBUG] LSP Diagnostics: getLSPDiagnosticAttachments called
[DEBUG] LSP Diagnostics: Checking registry - 0 pending
[DEBUG] LSP Diagnostics: Returning 0 diagnostic set(s) for delivery
[DEBUG] Hooks: getAsyncHookResponseAttachments called
[DEBUG] Hooks: checkForNewResponses called
[DEBUG] Hooks: Found 0 total hooks in registry
[DEBUG] Hooks: checkForNewResponses returning 0 responses
[DEBUG] Getting matching hook commands for UserPromptSubmit with query: undefined
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "no match query" (0 before deduplication)
[DEBUG] FileHistory: Added snapshot for 81aa6d09-3cc7-4219-84a1-376629251cf5, tracking 0 files
[DEBUG] Writing to temp file: C:\Users\jmors\.claude.json.tmp.6052.1763116620473
[DEBUG] Preserving file permissions: 100666
[DEBUG] Temp file written successfully, size: 50538 bytes
[DEBUG] Applied original permissions to temp file
[DEBUG] Renaming C:\Users\jmors\.claude.json.tmp.6052.1763116620473 to C:\Users\jmors\.claude.json
[DEBUG] File C:\Users\jmors\.claude.json written atomically
[DEBUG] Skills and commands included in Skill tool:
[DEBUG] Slash commands included in SlashCommand tool:
[DEBUG] Stream started - received first chunk
[DEBUG] Stream started - received first chunk
[DEBUG] Stream started - received first chunk
[ERROR] Error: Error: Language not supported while highlighting code, falling back to markdown: 
    at $5 (B:/~BUN/root/claude.exe:1226:4395)
    at <anonymous> (B:/~BUN/root/claude.exe:1226:4117)
    at map (native:1:11)
    at M4 (B:/~BUN/root/claude.exe:1226:4109)
    at vXI (B:/~BUN/root/claude.exe:1590:6668)
    at IE (B:/~BUN/root/claude.exe:101:19663)
    at H2 (B:/~BUN/root/claude.exe:103:42806)
    at rw (B:/~BUN/root/claude.exe:103:38344)
    at cf (B:/~BUN/root/claude.exe:103:38272)
    at Q7 (B:/~BUN/root/claude.exe:103:38126)
[DEBUG] executePreToolHooks called for tool: Bash
[DEBUG] executePreToolHooks called for tool: Glob
[DEBUG] Getting matching hook commands for PreToolUse with query: Bash
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "Bash" (0 before deduplication)
[DEBUG] Getting matching hook commands for PreToolUse with query: Glob
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "Glob" (0 before deduplication)
[DEBUG] Session environment not yet supported on Windows
[DEBUG] Getting matching hook commands for PostToolUse with query: Bash
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "Bash" (0 before deduplication)
[DEBUG] Getting matching hook commands for PostToolUse with query: Glob
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "Glob" (0 before deduplication)
[DEBUG] executePreToolHooks called for tool: Bash
[DEBUG] Getting matching hook commands for PreToolUse with query: Bash
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "Bash" (0 before deduplication)
[DEBUG] Stream started - received first chunk
[DEBUG] Stream started - received first chunk
[DEBUG] Permission suggestions for Bash: [
  {
    "type": "addRules",
    "rules": [
      {
        "toolName": "Bash",
        "ruleContent": "dir:*"
      }
    ],
    "behavior": "allow",
    "destination": "localSettings"
  }
]
[DEBUG] Getting matching hook commands for Notification with query: permission_prompt
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "permission_prompt" (0 before deduplication)
[DEBUG] Persisting permission update: addRules to source 'localSettings'
[DEBUG] Persisting 1 allow rule(s) to localSettings
[DEBUG] Writing to temp file: C:\Users\jmors\.claude\.claude\settings.local.json.tmp.6052.1763116651231
[DEBUG] Temp file written successfully, size: 99 bytes
[DEBUG] Renaming C:\Users\jmors\.claude\.claude\settings.local.json.tmp.6052.1763116651231 to C:\Users\jmors\.claude\.claude\settings.local.json
[DEBUG] File C:\Users\jmors\.claude\.claude\settings.local.json written atomically
[DEBUG] Applying permission update: Adding 1 allow rule(s) to destination 'localSettings': ["Bash(dir:*)"]
[DEBUG] AutoUpdaterWrapper: Installation type: native
[DEBUG] Session environment not yet supported on Windows
[DEBUG] Checking for native installer update to version 2.0.37
[DEBUG] Version 2.0.37 already installed, updating symlink
[DEBUG] Successfully updated to version 2.0.37
[DEBUG] Getting matching hook commands for PostToolUse with query: Bash
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "Bash" (0 before deduplication)
[DEBUG] LSP Diagnostics: getLSPDiagnosticAttachments called
[DEBUG] LSP Diagnostics: Checking registry - 0 pending
[DEBUG] LSP Diagnostics: Returning 0 diagnostic set(s) for delivery
[DEBUG] Hooks: getAsyncHookResponseAttachments called
[DEBUG] Hooks: checkForNewResponses called
[DEBUG] Hooks: Found 0 total hooks in registry
[DEBUG] Hooks: checkForNewResponses returning 0 responses
[DEBUG] Skills and commands included in Skill tool:
[DEBUG] Slash commands included in SlashCommand tool:
[DEBUG] Stream started - received first chunk
[DEBUG] Stream started - received first chunk
[DEBUG] executePreToolHooks called for tool: Bash
[DEBUG] executePreToolHooks called for tool: Glob
[DEBUG] Getting matching hook commands for PreToolUse with query: Bash
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "Bash" (0 before deduplication)
[DEBUG] Getting matching hook commands for PreToolUse with query: Glob
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "Glob" (0 before deduplication)
[DEBUG] Session environment not yet supported on Windows
[DEBUG] Getting matching hook commands for PostToolUse with query: Bash
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "Bash" (0 before deduplication)
[DEBUG] Getting matching hook commands for PostToolUse with query: Glob
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "Glob" (0 before deduplication)
[DEBUG] LSP Diagnostics: getLSPDiagnosticAttachments called
[DEBUG] LSP Diagnostics: Checking registry - 0 pending
[DEBUG] LSP Diagnostics: Returning 0 diagnostic set(s) for delivery
[DEBUG] Hooks: getAsyncHookResponseAttachments called
[DEBUG] Hooks: checkForNewResponses called
[DEBUG] Hooks: Found 0 total hooks in registry
[DEBUG] Hooks: checkForNewResponses returning 0 responses
[DEBUG] Stream started - received first chunk
[DEBUG] Skills and commands included in Skill tool:
[DEBUG] Slash commands included in SlashCommand tool:
[DEBUG] Stream started - received first chunk
[DEBUG] executePreToolHooks called for tool: Read
[DEBUG] Getting matching hook commands for PreToolUse with query: Read
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "Read" (0 before deduplication)
[DEBUG] Getting matching hook commands for PostToolUse with query: Read
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "Read" (0 before deduplication)
[DEBUG] executePreToolHooks called for tool: Read
[DEBUG] Getting matching hook commands for PreToolUse with query: Read
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "Read" (0 before deduplication)
[DEBUG] Stream started - received first chunk
[DEBUG] Getting matching hook commands for PostToolUse with query: Read
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "Read" (0 before deduplication)
[DEBUG] executePreToolHooks called for tool: Bash
[DEBUG] Getting matching hook commands for PreToolUse with query: Bash
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "Bash" (0 before deduplication)
[DEBUG] Stream started - received first chunk
[DEBUG] Stream started - received first chunk
[DEBUG] Permission suggestions for Bash: [
  {
    "type": "addRules",
    "rules": [
      {
        "toolName": "Bash",
        "ruleContent": "cat:*"
      }
    ],
    "behavior": "allow",
    "destination": "localSettings"
  }
]
[DEBUG] Getting matching hook commands for Notification with query: permission_prompt
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "permission_prompt" (0 before deduplication)
[DEBUG] Persisting permission update: addRules to source 'localSettings'
[DEBUG] Persisting 1 allow rule(s) to localSettings
[DEBUG] Writing to temp file: C:\Users\jmors\.claude\.claude\settings.local.json.tmp.6052.1763116682674
[DEBUG] Preserving file permissions: 100666
[DEBUG] Temp file written successfully, size: 120 bytes
[DEBUG] Applied original permissions to temp file
[DEBUG] Renaming C:\Users\jmors\.claude\.claude\settings.local.json.tmp.6052.1763116682674 to C:\Users\jmors\.claude\.claude\settings.local.json
[DEBUG] File C:\Users\jmors\.claude\.claude\settings.local.json written atomically
[DEBUG] Applying permission update: Adding 1 allow rule(s) to destination 'localSettings': ["Bash(cat:*)"]
[DEBUG] AutoUpdaterWrapper: Installation type: native
[DEBUG] Session environment not yet supported on Windows
[DEBUG] Checking for native installer update to version 2.0.37
[DEBUG] Version 2.0.37 already installed, updating symlink
[DEBUG] Successfully updated to version 2.0.37
[DEBUG] Getting matching hook commands for PostToolUse with query: Bash
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "Bash" (0 before deduplication)
[DEBUG] LSP Diagnostics: getLSPDiagnosticAttachments called
[DEBUG] LSP Diagnostics: Checking registry - 0 pending
[DEBUG] LSP Diagnostics: Returning 0 diagnostic set(s) for delivery
[DEBUG] Hooks: getAsyncHookResponseAttachments called
[DEBUG] Hooks: checkForNewResponses called
[DEBUG] Hooks: Found 0 total hooks in registry
[DEBUG] Hooks: checkForNewResponses returning 0 responses
[DEBUG] Skills and commands included in Skill tool:
[DEBUG] Slash commands included in SlashCommand tool:
[DEBUG] Stream started - received first chunk
[DEBUG] Stream started - received first chunk
[DEBUG] Stream started - received first chunk
[DEBUG] executePreToolHooks called for tool: Bash
[DEBUG] executePreToolHooks called for tool: Glob
[DEBUG] Getting matching hook commands for PreToolUse with query: Bash
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "Bash" (0 before deduplication)
[DEBUG] Getting matching hook commands for PreToolUse with query: Glob
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "Glob" (0 before deduplication)
[DEBUG] Session environment not yet supported on Windows
[DEBUG] Getting matching hook commands for PostToolUse with query: Bash
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "Bash" (0 before deduplication)
[DEBUG] Getting matching hook commands for PostToolUse with query: Glob
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "Glob" (0 before deduplication)
[DEBUG] LSP Diagnostics: getLSPDiagnosticAttachments called
[DEBUG] LSP Diagnostics: Checking registry - 0 pending
[DEBUG] LSP Diagnostics: Returning 0 diagnostic set(s) for delivery
[DEBUG] Hooks: getAsyncHookResponseAttachments called
[DEBUG] Hooks: checkForNewResponses called
[DEBUG] Hooks: Found 0 total hooks in registry
[DEBUG] Hooks: checkForNewResponses returning 0 responses
[DEBUG] Stream started - received first chunk
[DEBUG] Skills and commands included in Skill tool:
[DEBUG] Slash commands included in SlashCommand tool:
[DEBUG] Stream started - received first chunk
[DEBUG] executePreToolHooks called for tool: Read
[DEBUG] Getting matching hook commands for PreToolUse with query: Read
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "Read" (0 before deduplication)
[DEBUG] Getting matching hook commands for PostToolUse with query: Read
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "Read" (0 before deduplication)
[DEBUG] LSP Diagnostics: getLSPDiagnosticAttachments called
[DEBUG] LSP Diagnostics: Checking registry - 0 pending
[DEBUG] LSP Diagnostics: Returning 0 diagnostic set(s) for delivery
[DEBUG] Hooks: getAsyncHookResponseAttachments called
[DEBUG] Hooks: checkForNewResponses called
[DEBUG] Hooks: Found 0 total hooks in registry
[DEBUG] Hooks: checkForNewResponses returning 0 responses
[DEBUG] Skills and commands included in Skill tool:
[DEBUG] Slash commands included in SlashCommand tool:
[DEBUG] Stream started - received first chunk
[DEBUG] Stream started - received first chunk
[ERROR] Error: Error: Language not supported while highlighting code, falling back to markdown: 
    at $5 (B:/~BUN/root/claude.exe:1226:4395)
    at <anonymous> (B:/~BUN/root/claude.exe:1226:4117)
    at map (native:1:11)
    at M4 (B:/~BUN/root/claude.exe:1226:4109)
    at vXI (B:/~BUN/root/claude.exe:1590:6668)
    at IE (B:/~BUN/root/claude.exe:101:19663)
    at H2 (B:/~BUN/root/claude.exe:103:42806)
    at rw (B:/~BUN/root/claude.exe:103:38344)
    at cf (B:/~BUN/root/claude.exe:103:38272)
    at Q7 (B:/~BUN/root/claude.exe:103:38126)
[DEBUG] executePreToolHooks called for tool: AskUserQuestion
[DEBUG] Getting matching hook commands for PreToolUse with query: AskUserQuestion
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "AskUserQuestion" (0 before deduplication)
[DEBUG] Getting matching hook commands for Notification with query: permission_prompt
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "permission_prompt" (0 before deduplication)
[DEBUG] AutoUpdaterWrapper: Installation type: native
[DEBUG] Getting matching hook commands for PostToolUse with query: AskUserQuestion
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "AskUserQuestion" (0 before deduplication)
[DEBUG] LSP Diagnostics: getLSPDiagnosticAttachments called
[DEBUG] LSP Diagnostics: Checking registry - 0 pending
[DEBUG] LSP Diagnostics: Returning 0 diagnostic set(s) for delivery
[DEBUG] Hooks: getAsyncHookResponseAttachments called
[DEBUG] Hooks: checkForNewResponses called
[DEBUG] Hooks: Found 0 total hooks in registry
[DEBUG] Hooks: checkForNewResponses returning 0 responses
[DEBUG] Skills and commands included in Skill tool:
[DEBUG] Slash commands included in SlashCommand tool:
[DEBUG] Checking for native installer update to version 2.0.37
[DEBUG] Version 2.0.37 already installed, updating symlink
[DEBUG] Successfully updated to version 2.0.37
[DEBUG] Stream started - received first chunk
[DEBUG] executePreToolHooks called for tool: Read
[DEBUG] Getting matching hook commands for PreToolUse with query: Read
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "Read" (0 before deduplication)
[DEBUG] Getting matching hook commands for PostToolUse with query: Read
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "Read" (0 before deduplication)
[DEBUG] executePreToolHooks called for tool: Bash
[DEBUG] Getting matching hook commands for PreToolUse with query: Bash
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "Bash" (0 before deduplication)
[DEBUG] Stream started - received first chunk
[DEBUG] Stream started - received first chunk
[DEBUG] Permission suggestions for Bash: [
  {
    "type": "addRules",
    "rules": [
      {
        "toolName": "Bash",
        "ruleContent": "head:*"
      }
    ],
    "behavior": "allow",
    "destination": "localSettings"
  }
]
[DEBUG] AutoUpdaterWrapper: Installation type: native
[DEBUG] Session environment not yet supported on Windows
[DEBUG] Checking for native installer update to version 2.0.37
[DEBUG] Version 2.0.37 already installed, updating symlink
[DEBUG] Successfully updated to version 2.0.37
[DEBUG] Getting matching hook commands for PostToolUse with query: Bash
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "Bash" (0 before deduplication)
[DEBUG] executePreToolHooks called for tool: Bash
[DEBUG] Getting matching hook commands for PreToolUse with query: Bash
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "Bash" (0 before deduplication)
[DEBUG] Session environment not yet supported on Windows
[DEBUG] Stream started - received first chunk
[DEBUG] Getting matching hook commands for PostToolUse with query: Bash
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "Bash" (0 before deduplication)
[DEBUG] LSP Diagnostics: getLSPDiagnosticAttachments called
[DEBUG] LSP Diagnostics: Checking registry - 0 pending
[DEBUG] LSP Diagnostics: Returning 0 diagnostic set(s) for delivery
[DEBUG] Hooks: getAsyncHookResponseAttachments called
[DEBUG] Hooks: checkForNewResponses called
[DEBUG] Hooks: Found 0 total hooks in registry
[DEBUG] Hooks: checkForNewResponses returning 0 responses
[DEBUG] Stream started - received first chunk
[DEBUG] Skills and commands included in Skill tool:
[DEBUG] Slash commands included in SlashCommand tool:
[DEBUG] Stream started - received first chunk
[DEBUG] Stream started - received first chunk
[DEBUG] Writing to temp file: C:\Users\jmors\.claude.json.tmp.6052.1763116769054
[DEBUG] Preserving file permissions: 100666
[DEBUG] Temp file written successfully, size: 50538 bytes
[DEBUG] Applied original permissions to temp file
[DEBUG] Renaming C:\Users\jmors\.claude.json.tmp.6052.1763116769054 to C:\Users\jmors\.claude.json
[DEBUG] File C:\Users\jmors\.claude.json written atomically
[DEBUG] executePreToolHooks called for tool: Bash
[DEBUG] Getting matching hook commands for PreToolUse with query: Bash
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "Bash" (0 before deduplication)
[DEBUG] Session environment not yet supported on Windows
[DEBUG] executePreToolHooks called for tool: Read
[DEBUG] Getting matching hook commands for PreToolUse with query: Read
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "Read" (0 before deduplication)
[DEBUG] Getting matching hook commands for PostToolUse with query: Bash
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "Bash" (0 before deduplication)
[DEBUG] Stream started - received first chunk
[DEBUG] Getting matching hook commands for PostToolUse with query: Read
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "Read" (0 before deduplication)
[DEBUG] LSP Diagnostics: getLSPDiagnosticAttachments called
[DEBUG] LSP Diagnostics: Checking registry - 0 pending
[DEBUG] LSP Diagnostics: Returning 0 diagnostic set(s) for delivery
[DEBUG] Hooks: getAsyncHookResponseAttachments called
[DEBUG] Hooks: checkForNewResponses called
[DEBUG] Hooks: Found 0 total hooks in registry
[DEBUG] Hooks: checkForNewResponses returning 0 responses
[DEBUG] Skills and commands included in Skill tool:
[DEBUG] Slash commands included in SlashCommand tool:
[DEBUG] Stream started - received first chunk
[DEBUG] Stream started - received first chunk
[DEBUG] Writing to temp file: C:\Users\jmors\.claude.json.tmp.6052.1763116793562
[DEBUG] Preserving file permissions: 100666
[DEBUG] Temp file written successfully, size: 50563 bytes
[DEBUG] Applied original permissions to temp file
[DEBUG] Renaming C:\Users\jmors\.claude.json.tmp.6052.1763116793562 to C:\Users\jmors\.claude.json
[DEBUG] File C:\Users\jmors\.claude.json written atomically
[DEBUG] Getting matching hook commands for Stop with query: undefined
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "no match query" (0 before deduplication)
[DEBUG] Skills and commands included in Skill tool:
[DEBUG] Slash commands included in SlashCommand tool:
[DEBUG] Stream started - received first chunk
[ERROR] Error: Error: Language not supported while highlighting code, falling back to markdown: 
    at $5 (B:/~BUN/root/claude.exe:1226:4395)
    at <anonymous> (B:/~BUN/root/claude.exe:1226:4117)
    at map (native:1:11)
    at M4 (B:/~BUN/root/claude.exe:1226:4109)
    at vXI (B:/~BUN/root/claude.exe:1590:6668)
    at IE (B:/~BUN/root/claude.exe:101:19663)
    at H2 (B:/~BUN/root/claude.exe:103:42806)
    at rw (B:/~BUN/root/claude.exe:103:38344)
    at cf (B:/~BUN/root/claude.exe:103:38272)
    at Q7 (B:/~BUN/root/claude.exe:103:38126)
[DEBUG] executePreToolHooks called for tool: Write
[DEBUG] Getting matching hook commands for PreToolUse with query: Write
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "Write" (0 before deduplication)
[DEBUG] Permission suggestions for Write: [
  {
    "type": "setMode",
    "mode": "acceptEdits",
    "destination": "session"
  }
]
[DEBUG] AutoUpdaterWrapper: Installation type: native
[DEBUG] FileHistory: Tracked file modification for C:\Users\jmors\.claude\BUG_REPORT_SKILLS_NOT_LOADING_WINDOWS.md
[DEBUG] Checking for native installer update to version 2.0.37
[DEBUG] Version 2.0.37 already installed, updating symlink
[DEBUG] Successfully updated to version 2.0.37
[DEBUG] Writing to temp file: C:\Users\jmors\.claude\BUG_REPORT_SKILLS_NOT_LOADING_WINDOWS.md.tmp.6052.1763116835226
[DEBUG] Temp file written successfully, size: 4987 bytes
[DEBUG] Renaming C:\Users\jmors\.claude\BUG_REPORT_SKILLS_NOT_LOADING_WINDOWS.md.tmp.6052.1763116835226 to C:\Users\jmors\.claude\BUG_REPORT_SKILLS_NOT_LOADING_WINDOWS.md
[DEBUG] File C:\Users\jmors\.claude\BUG_REPORT_SKILLS_NOT_LOADING_WINDOWS.md written atomically
[DEBUG] Getting matching hook commands for PostToolUse with query: Write
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "Write" (0 before deduplication)
[DEBUG] LSP Diagnostics: getLSPDiagnosticAttachments called
[DEBUG] LSP Diagnostics: Checking registry - 0 pending
[DEBUG] LSP Diagnostics: Returning 0 diagnostic set(s) for delivery
[DEBUG] Hooks: getAsyncHookResponseAttachments called
[DEBUG] Hooks: checkForNewResponses called
[DEBUG] Hooks: Found 0 total hooks in registry
[DEBUG] Hooks: checkForNewResponses returning 0 responses
[DEBUG] Skills and commands included in Skill tool:
[DEBUG] Slash commands included in SlashCommand tool:
[DEBUG] Stream started - received first chunk
[DEBUG] Writing to temp file: C:\Users\jmors\.claude.json.tmp.6052.1763116844762
[DEBUG] Preserving file permissions: 100666
[DEBUG] Temp file written successfully, size: 50563 bytes
[DEBUG] Applied original permissions to temp file
[DEBUG] Renaming C:\Users\jmors\.claude.json.tmp.6052.1763116844762 to C:\Users\jmors\.claude.json
[DEBUG] File C:\Users\jmors\.claude.json written atomically
[DEBUG] Getting matching hook commands for Stop with query: undefined
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "no match query" (0 before deduplication)
[DEBUG] Writing to temp file: C:\Users\jmors\.claude.json.tmp.6052.1763116844818
[DEBUG] Preserving file permissions: 100666
[DEBUG] Temp file written successfully, size: 50563 bytes
[DEBUG] Applied original permissions to temp file
[DEBUG] Renaming C:\Users\jmors\.claude.json.tmp.6052.1763116844818 to C:\Users\jmors\.claude.json
[DEBUG] File C:\Users\jmors\.claude.json written atomically
[DEBUG] Getting matching hook commands for Notification with query: idle_prompt
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "idle_prompt" (0 before deduplication)

Steps to Reproduce

Steps to Reproduce

Minimal Reproduction

  1. Install Claude Code 2.0.37 on Windows (any Windows 10/11 version)
  1. Create a test skill directory:

``cmd
mkdir %USERPROFILE%\.claude\skills\test-skill
``

  1. Create a minimal SKILL.md file:

Create %USERPROFILE%\.claude\skills\test-skill\SKILL.md with:

```yaml
---
name: test-skill
description: A minimal test skill to verify skill loading works
---

# Test Skill
This is a test skill.
```

  1. Restart Claude Code (close and reopen the terminal/application)
  1. Verify skills are not loaded:

Enable debug logging and check the debug log:

``cmd
type %USERPROFILE%\.claude\debug\*.txt | findstr "Loaded.*unique skills"
``

Expected output: Loaded 1 unique skills (user: 1, ...)

Actual output: Loaded 0 unique skills (managed: 0, user: 0, project: 0, duplicates removed: 0)

  1. Attempt to invoke the skill:

In Claude Code session, try to invoke the skill programmatically or via the Skill tool with skill name test-skill

Expected: Skill loads and executes

Actual: Error messages:

  • Error: unknown skill
  • skill not registered with the system
  1. Verify the skill file exists and is readable:

``cmd
type %USERPROFILE%\.claude\skills\test-skill\SKILL.md
``

Should display the file contents correctly.

Full Reproduction with Official Skills

  1. Install Claude Code 2.0.37 on Windows
  1. Install official Anthropic skills marketplace:

``
claude plugins install anthropic-agent-skills
``

Or verify it's already installed:

``cmd
dir %USERPROFILE%\.claude\plugins\marketplaces\anthropic-agent-skills\document-skills\pdf\SKILL.md
``

  1. Restart Claude Code
  1. Check debug logs:

``cmd
type %USERPROFILE%\.claude\debug\*.txt | findstr /C:"Total plugin skills loaded"
``

Expected: Total plugin skills loaded: 15 (or similar non-zero number)

Actual: Total plugin skills loaded: 0

  1. Attempt to use the pdf skill:

Try invoking the pdf skill (which should be available from the marketplace)

Expected: Skill loads

Actual: Error: unknown skill and skill not registered with the system

Key Debug Log Lines to Check

After any Claude Code session, examine the latest debug file in %USERPROFILE%\.claude\debug\:

type %USERPROFILE%\.claude\debug\*.txt | findstr /C:"Loading skills from" /C:"Loaded.*unique skills" /C:"Total plugin skills"

What you'll see on broken Windows installation:

[DEBUG] Loading skills from directories: managed=C:\ProgramData\ClaudeCode\.claude\skills, user=C:\Users\[USER]\.claude\skills, project=C:\Users\[USER]\.claude\.claude\skills
[DEBUG] Total plugin skills loaded: 0
[DEBUG] Loaded 0 unique skills (managed: 0, user: 0, project: 0, duplicates removed: 0)

What you should see on working installation:

[DEBUG] Loading skills from directories: managed=C:\ProgramData\ClaudeCode\.claude\skills, user=C:\Users\[USER]\.claude\skills, project=C:\Users\[USER]\.claude\.claude\skills
[DEBUG] Total plugin skills loaded: 15
[DEBUG] Loaded 48 unique skills (managed: 0, user: 47, project: 0, duplicates removed: 14)

Environment Verification Commands

echo Windows Version:
ver

echo Claude Code Version:
claude --version

echo Skills directory exists:
dir %USERPROFILE%\.claude\skills

echo Skills in directory:
dir /s /b %USERPROFILE%\.claude\skills\SKILL.md

echo Plugin skills exist:
dir /s /b %USERPROFILE%\.claude\plugins\marketplaces\anthropic-agent-skills\*\SKILL.md

Additional Context

Claude Model

Sonnet (default)

Is this a regression?

Yes, this worked in a previous version

Last Working Version

_No response_

Claude Code Version

2.0.37

Platform

Anthropic API

Operating System

Windows

Terminal/Shell

Warp

Additional Information

_No response_

View original on GitHub ↗

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