Skip to content

Linux case-sensitivity issue: Claude Code expects lowercase directories #239

@chrisplough

Description

@chrisplough

Hola! I ran into this, when deploying PAI on both macos and linux (Omarchy) environments. Worked on macos, but not linux and was a head-scratcher for a bit.

Description

Claude Code looks for lowercase directory names (skills, commands, tools, etc.) but PAI uses TitleCase (Skills, Commands, Tools). This works on macOS with a case-insensitive (ish) filesystem but fails on Linux which is more strictly case-sensitive.

Claude Code silently creates lowercase directories when it can't find TitleCase ones, leading to:

  • Skills not being recognized
  • Slash commands not working (/pa, /paiupdate)
  • Hooks not executing
  • History not being captured properly

Environment

  • OS: Arch Linux (Omarchy)
  • Filesystem: btrfs (case-sensitive)
  • Claude Code version: 2.0.70 (and 2.0.75 on macos)
  • PAI version: Fresh clone as of 2025-12-22 (tried multiple clones to ensure it wasn't on my side)

Directories requiring symlinks

At ~/.claude/ level:

ln -s Commands commands
ln -s Skills skills
ln -s Tools tools
ln -s History history
ln -s Agents agents
ln -s Hooks hooks
ln -s Scratchpad scratchpad

Inside ~/.claude/History/:

ln -s Raw-Outputs raw-outputs
ln -s Sessions sessions

Note: There may be additional directories I haven't discovered yet.

Temporary workaround

After cloning PAI, run:

cd ~/.claude
ln -s Commands commands
ln -s Skills skills
ln -s Tools tools
ln -s History history
ln -s Agents agents
ln -s Hooks hooks
ln -s Scratchpad scratchpad

cd ~/.claude/History
ln -s Raw-Outputs raw-outputs
ln -s Sessions sessions

Suggested fix

Either:

  1. Rename PAI directories to lowercase to match what Claude Code expects
  2. Document the symlink requirement for Linux users in the README/QUICKSTART

Reproduction steps

  1. Fresh install PAI on Linux (case-sensitive filesystem)
  2. Run claude
  3. Try /pa or /paiupdate - fails with "Unknown slash command"
  4. Try use fabric to summarize "test" - fails with "Unknown skill: Fabric"
  5. Create symlinks per workaround above
  6. Commands and skills now work

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions