Summary
Conductor Quick Start can fail when creating a new project from the gstack template because the setup/build path assumes git rev-parse HEAD works. In a brand-new generated repo before the first commit exists, HEAD is unborn, so git rev-parse HEAD exits 128 and the template setup aborts.
This is separate from the public garrytan/gstack repository itself: the upstream repo has a valid main HEAD. The failure is triggered by the generated Conductor workspace state during bootstrapping.
Observed Error
From Conductor while creating a new Quick Start project named test at /Users/jonas/conductor/repos with the gstack template:
Installing gstack...
error: script "build" exited with code 128
'git <command> [<revision>...] -- [<file>...]'
Use '--' to separate paths from revisions, like this:
fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree.
Node server bundle ready: /Users/jonas/conductor/repos/test/.claude/skills/gstack/browse/dist/server-node.mjs
Likely Setup Path
Current main appears to route Conductor setup like this:
conductor.json runs bin/dev-setup
bin/dev-setup creates .claude/skills/gstack -> repo root
bin/dev-setup calls .claude/skills/gstack/setup
setup runs bun run build when compiled browse output is missing or stale
package.json writes git rev-parse HEAD into these version files:
browse/dist/.version
design/dist/.version
make-pdf/dist/.version
The hard failure is here in the build script:
"build": "... && git rev-parse HEAD > browse/dist/.version && git rev-parse HEAD > design/dist/.version && git rev-parse HEAD > make-pdf/dist/.version && ..."
Reproduction Mechanism
I reproduced the same Git failure mode locally by creating a new parent Git repo with no commits, then placing a gstack copy under .claude/skills/gstack without its own .git metadata. From inside that directory:
returns:
fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
That matches the Conductor screenshot error and explains why a normal git clone of garrytan/gstack does not reproduce the issue: a normal clone has a resolved HEAD, while Conductor's generated repo can be in an unborn-HEAD state before the initial commit.
Suggested Fix
Make the build version fallback tolerate unborn Git repos. For example, centralize the version resolution once and write the fallback to all version files:
GSTACK_BUILD_VERSION="$(git rev-parse HEAD 2>/dev/null || printf unknown)"
printf '%s\n' "$GSTACK_BUILD_VERSION" > browse/dist/.version
printf '%s\n' "$GSTACK_BUILD_VERSION" > design/dist/.version
printf '%s\n' "$GSTACK_BUILD_VERSION" > make-pdf/dist/.version
Or inline the same fallback in package.json if keeping the build script single-line is preferred:
(git rev-parse HEAD 2>/dev/null || echo unknown) > browse/dist/.version
(git rev-parse HEAD 2>/dev/null || echo unknown) > design/dist/.version
(git rev-parse HEAD 2>/dev/null || echo unknown) > make-pdf/dist/.version
This should preserve normal cloned-repo behavior while allowing Conductor/new-repo bootstrapping before the first commit exists.
Workaround
Before setup runs, create an initial commit in the generated workspace:
git add -A
git commit -m "Initial commit"
bin/dev-setup
If there is nothing to commit, an empty commit should be enough to create HEAD:
git commit --allow-empty -m "Initialize workspace"
bin/dev-setup
Summary
Conductor Quick Start can fail when creating a new project from the
gstacktemplate because the setup/build path assumesgit rev-parse HEADworks. In a brand-new generated repo before the first commit exists,HEADis unborn, sogit rev-parse HEADexits128and the template setup aborts.This is separate from the public
garrytan/gstackrepository itself: the upstream repo has a validmainHEAD. The failure is triggered by the generated Conductor workspace state during bootstrapping.Observed Error
From Conductor while creating a new Quick Start project named
testat/Users/jonas/conductor/reposwith thegstacktemplate:Likely Setup Path
Current
mainappears to route Conductor setup like this:conductor.jsonrunsbin/dev-setupbin/dev-setupcreates.claude/skills/gstack -> repo rootbin/dev-setupcalls.claude/skills/gstack/setupsetuprunsbun run buildwhen compiled browse output is missing or stalepackage.jsonwritesgit rev-parse HEADinto these version files:browse/dist/.versiondesign/dist/.versionmake-pdf/dist/.versionThe hard failure is here in the
buildscript:Reproduction Mechanism
I reproduced the same Git failure mode locally by creating a new parent Git repo with no commits, then placing a gstack copy under
.claude/skills/gstackwithout its own.gitmetadata. From inside that directory:returns:
That matches the Conductor screenshot error and explains why a normal
git cloneofgarrytan/gstackdoes not reproduce the issue: a normal clone has a resolvedHEAD, while Conductor's generated repo can be in an unborn-HEAD state before the initial commit.Suggested Fix
Make the build version fallback tolerate unborn Git repos. For example, centralize the version resolution once and write the fallback to all version files:
Or inline the same fallback in
package.jsonif keeping the build script single-line is preferred:This should preserve normal cloned-repo behavior while allowing Conductor/new-repo bootstrapping before the first commit exists.
Workaround
Before setup runs, create an initial commit in the generated workspace:
git add -A git commit -m "Initial commit" bin/dev-setupIf there is nothing to commit, an empty commit should be enough to create
HEAD:git commit --allow-empty -m "Initialize workspace" bin/dev-setup