feat(claude): ship a git-workflow skill alongside bodhi-compute - #6
Merged
Merged
Conversation
Git work happens in sinteractive sessions, and an agent starting one has no standing guidance about how it should be done — so it re-derives the conventions every time, or guesses. bodhi-compute already solved the same problem for cluster etiquette; this rides the rails it established and reaches every session on every node with no per-session setup. The skill is deliberately general: semantic versioning with annotated vX.Y.Z tags, Conventional Commit messages, one worktree per branch under .claude/worktrees/, landing through a pull request rather than committing to main, and running the repo's own CI gates before pushing. It names no project and defers to a repository that documents something stricter of its own, so it is useful in whatever checkout the session happens to be sitting in. Adding it meant the installer could no longer name what it ships. --install-claude now copies every skills/*/SKILL.md found beside the script, and the Makefile installs the whole tree from a $(SKILLS) wildcard rather than one hardcoded path per target. skills/bodhi-compute appeared in six places across the script, install-user, install-system and both branches of the nodes fan-out; any one of them missed on the next skill would have shipped a partial set to the compute nodes, where the gap is invisible until someone runs --install-claude from inside a session and gets the older half. find_claude_assets still probes for skills/bodhi-compute rather than skills/, so an empty skills/ from a half-finished install does not pass for a complete one. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Git work happens inside sinteractive sessions, and an agent starting one has no
standing guidance about how it should be done — so it re-derives the
conventions each time, or guesses.
bodhi-computealready solved the sameproblem for cluster etiquette; this rides the rails it established and reaches
every session on every node with no per-session setup.
The skill
skills/git-workflow/SKILL.mdis deliberately general — it names no project,and defers to any repository that documents something stricter of its own:
<repo>/.claude/worktrees/<name>, with a note onwhat
worktree.baseRefchooses and to ignore the directory.maindirectly, and noforce-pushing shared branches.
that explains why rather than restating the diff.
vX.Y.Ztags, including the pre-1.0shift and why a lightweight tag is not good enough.
of them, then roll the changelog and tag.
own allocation (cross-referencing
bodhi-compute).Why the installer changed
A second skill meant the installer could no longer name what it ships.
--install-claudenow copies everyskills/*/SKILL.mdfound beside thescript, and the Makefile installs the tree from a
$(SKILLS)wildcard ratherthan one hardcoded path per target.
skills/bodhi-computeappeared in six places — the script,install-user,install-system, and both branches of thenodesfan-out. Any one of themmissed on the next skill would have shipped a partial set to the compute
nodes, where the gap stays invisible until somebody runs
--install-claudefrom inside a session and gets the older half. Adding a skill is now dropping
a directory into
skills/.find_claude_assetsstill probes forskills/bodhi-computerather thanskills/, so an emptyskills/left by a half-finished install does not passfor a complete one.
Verification
All four
validate.ymlgates run clean locally (bash -n,shellcheck --severity=warning,groff -ww -z,json.tool). Beyond that:--install-claudeinto a throwawayCLAUDE_CONFIG_DIRlands bothskills/*/SKILL.mdplus the hooks, at the right modes; a second run reportsthe hooks already registered and leaves settings alone.
make install-userinto a temp prefix produces the expectedshare/tree,and
--install-clauderun from that installed copy discovers it throughbin/../share/sinteractive.make -n nodesexpands correctly on both branches; the tar-fallback skillloop was exercised against a real tarball into a temp destination.
🤖 Generated with Claude Code