Summary
bin/install.js rewrites ~/.claude/ path references in .md files, but a large number of files reference framework assets as @src/... instead. Those are repo-relative and are not rewritten at install time, so after installation they resolve against the user's project directory rather than the installed framework.
58 such references across 23 files in v1.4.0 (960b05c).
Impact
Worst case is /paul:map-codebase, whose only pointer to its workflow is a @src/ path:
src/commands/map-codebase.md:8 @src/workflows/map-codebase.md
src/commands/map-codebase.md:12 **Follow workflow:** @src/workflows/map-codebase.md
After a global install the file lives at ~/.claude/paul-framework/workflows/map-codebase.md, but the command points at ./src/workflows/map-codebase.md relative to whatever project it's run in. Most projects have no root src/ at all (Android → app/src/, Python → package dirs), and even the ones that do won't have src/workflows/.
Every other command file uses the correct form, which is what makes this look like an oversight rather than a convention:
src/commands/plan.md: @~/.claude/paul-framework/workflows/plan-phase.md
src/commands/init.md: @~/.claude/paul-framework/workflows/init-project.md
The remaining @src/ references are inside src/workflows/, src/rules/ and src/references/, e.g.:
src/workflows/init-project.md:26 @src/templates/config.md
src/workflows/map-codebase.md:22-28 @src/templates/codebase/*.md (all 7 templates)
src/rules/commands.md:41 @src/workflows/plan-phase.md
src/references/toml-sync.md:7 @src/templates/paul-toml.md, @src/templates/ledger-toml.md
src/workflows/apply-phase.md:343 @src/references/toml-sync.md
These are more forgiving because Claude can usually infer the intended file, but it's silent extra work at best and a wrong-file read at worst.
Suggested fix
Either extend the rewrite in copyWithPathReplacement() to also handle @src/:
content = content.replace(/~\/\.claude\//g, pathPrefix);
content = content.replace(/@src\/(workflows|templates|references|rules)\//g, `@${pathPrefix}paul-framework/$1/`);
…or change the sources to use @~/.claude/paul-framework/... consistently and let the existing rewrite handle them.
Two cases must be excluded from any regex — they're illustrative user-project paths, not framework assets:
src/references/context-management.md:51,61-63 — @src/models/user.ts, @src/api/routes.ts in the "Load What You Need" good/bad example
src/templates/codebase/structure.md:220 — `@src/workflows/{name}.md` documenting the extension convention (worth updating in prose either way, since it currently teaches the broken form)
Scoping the pattern to @src/(workflows|templates|references|rules)/…\.md and checking the target exists handles both cleanly.
Environment
PAUL v1.4.0 (960b05c), global install to ~/.claude, Claude Code on Windows 11. Verified the same reference layout is present in the repo itself, so it isn't install-specific.
Summary
bin/install.jsrewrites~/.claude/path references in.mdfiles, but a large number of files reference framework assets as@src/...instead. Those are repo-relative and are not rewritten at install time, so after installation they resolve against the user's project directory rather than the installed framework.58 such references across 23 files in
v1.4.0(960b05c).Impact
Worst case is
/paul:map-codebase, whose only pointer to its workflow is a@src/path:After a global install the file lives at
~/.claude/paul-framework/workflows/map-codebase.md, but the command points at./src/workflows/map-codebase.mdrelative to whatever project it's run in. Most projects have no rootsrc/at all (Android →app/src/, Python → package dirs), and even the ones that do won't havesrc/workflows/.Every other command file uses the correct form, which is what makes this look like an oversight rather than a convention:
The remaining
@src/references are insidesrc/workflows/,src/rules/andsrc/references/, e.g.:These are more forgiving because Claude can usually infer the intended file, but it's silent extra work at best and a wrong-file read at worst.
Suggested fix
Either extend the rewrite in
copyWithPathReplacement()to also handle@src/:…or change the sources to use
@~/.claude/paul-framework/...consistently and let the existing rewrite handle them.Two cases must be excluded from any regex — they're illustrative user-project paths, not framework assets:
src/references/context-management.md:51,61-63—@src/models/user.ts,@src/api/routes.tsin the "Load What You Need" good/bad examplesrc/templates/codebase/structure.md:220—`@src/workflows/{name}.md`documenting the extension convention (worth updating in prose either way, since it currently teaches the broken form)Scoping the pattern to
@src/(workflows|templates|references|rules)/…\.mdand checking the target exists handles both cleanly.Environment
PAUL v1.4.0 (
960b05c), global install to~/.claude, Claude Code on Windows 11. Verified the same reference layout is present in the repo itself, so it isn't install-specific.