-
Notifications
You must be signed in to change notification settings - Fork 9.2k
Project-local .claude/skills/gstack install breaks /browse and setup can report false success #3
Copy link
Copy link
Closed
Description
While auditing the install/deploy path end to end, I found a reproducible issue in the README-supported project install flow.
Summary
- A repo-local install at
.claude/skills/gstackcan break/browseif there is no matching user-level install under~/.claude/skills/gstack. - Separately,
./setupcan printgstack readyeven whenbrowse/dist/browsewas not actually produced.
Why this matters
- The README explicitly positions project-local install as a supported path for teammates.
- In practice, a clean repo-level install can leave
/browseunusable, which makes the deploy story look successful when it is not.
Repro
- Install gstack only at the project level (for example
.claude/skills/gstack) and do not keep a user-level~/.claude/skills/gstackinstall around. - Run
./setupfrom that project-localgstackdirectory. - Run the compiled binary from that project-local install.
Observed behavior
- The compiled CLI can fail trying to resolve
server.tsfrom~/.claude/skills/gstack/browse/src/server.tsinstead of from the adjacent project-local install. - In my audit,
./setupalso printedgstack readyeven whenbrowse/dist/browsewas still missing.
Expected behavior
- A project-local install should be self-contained: compiled
browseshould resolve its server script from the installed repo it lives in. ./setupshould exit non-zero if the binary is still missing after the build step../setupshould also rebuild when source files are newer than the compiled binary, not only when the binary is missing.
Root cause
browse/src/cli.tsfalls back topath.resolve(process.env.HOME || "/tmp", ".claude/skills/gstack/browse/src/server.ts")when running from the compiled binary, so the runtime assumes a user-level install exists.setuponly checkedif [ ! -x "$GSTACK_DIR/browse/dist/browse" ]before building, and it did not verify the artifact existed afterward.
I validated a fix locally by:
- resolving
server.tsfrom the compiled binary's adjacentbrowse/src/server.tsfirst, - keeping the env override and HOME fallback,
- making
setupfail hard ifbrowse/dist/browseis still missing, - and adding regression coverage for the compiled project-install path.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels