Skip to content

Local install: Claude skill paths not rewritten (copyCommandsAsClaudeSkills ignores pathPrefix) #1734

@SyriiAdvent

Description

@SyriiAdvent

Bug

When GSD is installed with --local, the copyCommandsAsClaudeSkills function in install.js (lines 3709-3752) does not rewrite ~/.claude/get-shit-done/ paths in deployed SKILL.md files. The function accepts a pathPrefix parameter but never uses it, leaving all gsd-tools.cjs references pointing at $HOME/.claude/get-shit-done/bin/gsd-tools.cjs — a path that doesn't exist in local installs.

Every skill that invokes gsd-tools.cjs fails with MODULE_NOT_FOUND.

Root Cause

Lines 3700-3701 contain an incorrect comment:

Claude is the native format so no path replacement is needed — only frontmatter restructuring via convertClaudeCommandToClaudeSkill.

This is false for --local installs. The skill templates are authored with ~/.claude/ paths (global install assumption), and local installs need those rewritten to relative .claude/ paths.

Comparison with other runtimes:

  • Codex (lines ~3461-3468): ✅ performs path replacement
  • Cursor (lines ~3514-3521): ✅ performs path replacement
  • Windsurf, Augment, Trae: ✅ perform path replacement
  • Claude (lines 3709-3752): ❌ skips path replacement
  • Copilot: ❌ also skips path replacement

Impact

  • 123 instances of ~/.claude/get-shit-done/ in deployed skill files remain unrewritten
  • Affects 7+ skills that call gsd-tools.cjs: gsd-add-backlog, gsd-research-phase, gsd-thread, gsd-review-backlog, gsd-discuss-phase, gsd-set-profile, gsd-debug
  • Any --local user hitting these skills gets:
Error: Cannot find module '/Users/<user>/.claude/get-shit-done/bin/gsd-tools.cjs'
    at Module._resolveFilename (node:internal/modules/cjs/loader:1456:15)
    code: 'MODULE_NOT_FOUND'

Expected Fix

Add path replacement logic to copyCommandsAsClaudeSkills similar to the Codex/Cursor implementations. The pathPrefix parameter is already computed correctly at line 5105-5107 and passed in at line 5242 — it just needs to be applied.

For local installs, ~/.claude/get-shit-done/.claude/get-shit-done/ (or the resolved pathPrefix value).

Reproduction

npx get-shit-done-cc --claude --local
grep -r '$HOME/.claude/get-shit-done' .claude/skills/
# Returns 123 matches — all unrewritten

node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" init plan-phase "1"
# MODULE_NOT_FOUND

node ".claude/get-shit-done/bin/gsd-tools.cjs" init plan-phase "1"
# Works correctly

Workaround

Replace $HOME/.claude/get-shit-done/bin/gsd-tools.cjs with .claude/get-shit-done/bin/gsd-tools.cjs in all affected SKILL.md files.

Environment

  • GSD v1.32.0
  • Claude Code CLI
  • macOS Darwin 25.4.0
  • Node.js v24.14.1

Related


🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    duplicateThis issue or pull request already exists

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions