[Feature Request] Add XDG Base Directory Specification support for config management

Resolved 💬 3 comments Opened Jan 27, 2026 by jimmiefulton-ybor Closed Jan 31, 2026

Bug Description
Please add XDG Base Directory support for organization and easier dotfile versioning and sharing. Claude Code config is a hot mess. Also, you are throwing an exception trying to scan a non-existent directory instead of handling it gracefully.

Environment Info

  • Platform: darwin
  • Terminal: WezTerm
  • Version: 2.1.16
  • Feedback ID: 03094043-1424-4a53-80e0-6cf9459cdd80

Errors

[{"error":"Error: ENOENT: no such file or directory, scandir '/Library/Application Support/ClaudeCode/.claude/skills'\n    at readdirSync (unknown)\n    at <anonymous> (/$bunfs/root/claude:12:1903)\n    at vW (/$bunfs/root/claude:11:35097)\n    at readdirSync (/$bunfs/root/claude:12:1864)\n    at y2R (/$bunfs/root/claude:1479:380)\n    at y2R (/$bunfs/root/claude:1479:1350)\n    at <anonymous> (/$bunfs/root/claude:1479:4440)\n    at <anonymous> (/$bunfs/root/claude:1479:5171)\n    at A (/$bunfs/root/claude:11:7244)\n    at pX8 (/$bunfs/root/claude:4784:4342)\n    at async <anonymous> (/$bunfs/root/claude:6099:2116)","timestamp":"2026-01-27T17:22:37.119Z"},{"error":"Error: Request was aborted.\n    at makeRequest (/$bunfs/root/claude:161:3940)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-01-27T17:28:15.588Z"},{"error":"Error: Request was aborted.\n    at vQR (/$bunfs/root/claude:2297:44939)\n    at JnB (/$bunfs/root/claude:5080:1534)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-01-27T18:35:38.621Z"},{"error":"Error: Request was aborted.\n    at makeRequest (/$bunfs/root/claude:161:3940)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-01-27T18:44:43.251Z"},{"error":"Error\n    at ZP (/$bunfs/root/claude:42:1143)\n    at <anonymous> (/$bunfs/root/claude:47:10094)\n    at emit (node:events:92:22)\n    at endReadableNT (internal:streams/readable:861:50)\n    at processTicksAndRejections (native:7:39)\n    at request (/$bunfs/root/claude:49:2148)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-01-27T18:45:16.029Z"},{"error":"Error\n    at ZP (/$bunfs/root/claude:42:1143)\n    at <anonymous> (/$bunfs/root/claude:47:10094)\n    at emit (node:events:92:22)\n    at endReadableNT (internal:streams/readable:861:50)\n    at processTicksAndRejections (native:7:39)\n    at request (/$bunfs/root/claude:49:2148)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-01-27T18:45:48.755Z"},{"error":"Error\n    at ZP (/$bunfs/root/claude:42:1143)\n    at <anonymous> (/$bunfs/root/claude:47:10094)\n    at emit (node:events:92:22)\n    at endReadableNT (internal:streams/readable:861:50)\n    at processTicksAndRejections (native:7:39)\n    at request (/$bunfs/root/claude:49:2148)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-01-27T18:45:52.988Z"},{"error":"Error\n    at ZP (/$bunfs/root/claude:42:1143)\n    at <anonymous> (/$bunfs/root/claude:47:10094)\n    at emit (node:events:92:22)\n    at endReadableNT (internal:streams/readable:861:50)\n    at processTicksAndRejections (native:7:39)\n    at request (/$bunfs/root/claude:49:2148)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-01-27T18:45:56.804Z"},{"error":"Error: Request was aborted.\n    at makeRequest (/$bunfs/root/claude:161:3940)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-01-27T18:47:02.014Z"},{"error":"Error\n    at ZP (/$bunfs/root/claude:42:1143)\n    at <anonymous> (/$bunfs/root/claude:47:10094)\n    at emit (node:events:92:22)\n    at endReadableNT (internal:streams/readable:861:50)\n    at processTicksAndRejections (native:7:39)\n    at request (/$bunfs/root/claude:49:2148)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-01-27T18:47:52.220Z"},{"error":"Error\n    at ZP (/$bunfs/root/claude:42:1143)\n    at <anonymous> (/$bunfs/root/claude:47:10094)\n    at emit (node:events:92:22)\n    at endReadableNT (internal:streams/readable:861:50)\n    at processTicksAndRejections (native:7:39)\n    at request (/$bunfs/root/claude:49:2148)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-01-27T18:47:52.283Z"},{"error":"Error: ENOENT: no such file or directory, scandir '/Library/Application Support/ClaudeCode/.claude/skills'\n    at readdirSync (unknown)\n    at <anonymous> (/$bunfs/root/claude:12:1903)\n    at vW (/$bunfs/root/claude:11:35097)\n    at readdirSync (/$bunfs/root/claude:12:1864)\n    at y2R (/$bunfs/root/claude:1479:380)\n    at y2R (/$bunfs/root/claude:1479:1350)\n    at <anonymous> (/$bunfs/root/claude:1479:4440)\n    at <anonymous> (/$bunfs/root/claude:1479:5171)\n    at A (/$bunfs/root/claude:11:7244)\n    at pX8 (/$bunfs/root/claude:4784:4342)","timestamp":"2026-01-27T18:50:04.353Z"}]

View original on GitHub ↗

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