Personal_AI_Infrastructure icon indicating copy to clipboard operation
Personal_AI_Infrastructure copied to clipboard

Linux case-sensitivity issue: Claude Code expects lowercase directories

Open chrisplough opened this issue 3 weeks ago • 5 comments

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

chrisplough avatar Dec 23 '25 02:12 chrisplough