Update
🏃 Sprint — every TODO item gets a full mini-sprint: autonomous plan→implement→review for Claude Code via git-hook agent chain, isolated worktree, deterministic gate & fail-closed review
npx -y skills add leonhoffmann86/team-sprint --skill updateAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Updates the vendored Sprint chain in bootstrapped repos from the plugin source. Refreshes scripts, subagents, MCP config, and git hooks. Use --all to update every registered repo. Leaves configuration and lifecycle files untouched.
SKILL.md
5.3 KB, as published. Nobody here has run it
You are updating the vendored Sprint chain in already-bootstrapped repos from the
freshly-installed plugin templates. The plugin ships the canonical agents/ + .mcp.json
(those auto-update with the plugin); this command refreshes the vendored copies that the
headless git-hook path depends on, plus the stage scripts and hooks.
Only refresh logic. Never touch the user's config or content: leave sprint.conf,
TODO.md, DONE.md, AGENT_LOG.md, AGENTS.md, CLAUDE.md and .gitignore alone.
0. Locate templates + the target repo(s)
Templates come from the plugin as installed — never from a development checkout:
TPL="${CLAUDE_PLUGIN_ROOT:-}/templates"
# Fallback when CLAUDE_PLUGIN_ROOT is unset (e.g. skill executed manually): resolve the
# INSTALLED plugin from the marketplace cache — most recently installed version wins.
[ -d "$TPL" ] || TPL="$(ls -dt "$HOME"/.claude/plugins/cache/*/sprint/*/templates 2>/dev/null | head -1)"
[ -d "${TPL:-}" ] || { echo "sprint is not installed. Run:
claude plugin marketplace add leonhoffmann86/team-sprint
claude plugin install sprint@team-sprint"; }
REG="${XDG_CONFIG_HOME:-$HOME/.config}/sprint/registry" # one repo path per line
If neither resolves, stop with that install instruction. Do NOT search the filesystem
for a plugin source tree and do NOT accept a git checkout of the plugin repo as $TPL —
only the installed (versioned) copy is a valid template source (see docs/DISTRIBUTION.md).
- No argument → operate on the current repo only:
ROOT="$(git rev-parse --show-toplevel)". --all→ read$REG(if present) and operate on each listed path that is still a git repo with ascripts/sprint-lib.sh(i.e. actually bootstrapped). Report missing/!bootstrapped entries and skip them. If$REGis absent, tell the user no repos are registered and that/sprint:bootstraprecords repos there (see step 4).
1. Refresh the logic files (overwrite — these are NOT user-owned)
For each target ROOT, copy over (overwrite) ONLY:
cp "$TPL/scripts/sprint-lib.sh" "$ROOT/scripts/sprint-lib.sh"
cp "$TPL/scripts/sprint-plan.sh" "$ROOT/scripts/sprint-plan.sh"
cp "$TPL/scripts/sprint-implement.sh" "$ROOT/scripts/sprint-implement.sh"
cp "$TPL/scripts/sprint-review.sh" "$ROOT/scripts/sprint-review.sh"
cp "$TPL/scripts/sprint-gate.sh" "$ROOT/scripts/sprint-gate.sh"
cp "$TPL/githooks/post-commit" "$ROOT/.githooks/post-commit"
cp "$TPL/githooks/README.md" "$ROOT/.githooks/README.md"
mkdir -p "$ROOT/.claude/agents"
cp "$TPL"/.claude/agents/*.md "$ROOT/.claude/agents/"
chmod +x "$ROOT/.githooks/post-commit" "$ROOT"/scripts/sprint-*.sh
For .mcp.json: if the repo's file is identical to a prior template version, overwrite it; if the
user has customized it (extra servers), merge the codegraph server in rather than clobbering —
show the diff and confirm. Before overwriting any file that the user may have hand-edited, show a
diff and ask.
2. Surface config drift (don't auto-edit sprint.conf)
Compare the keys defined in $TPL/sprint.conf against the repo's sprint.conf. For any key present
in the template but missing in the repo (e.g. a newly added SPRINT_*), print it with its
default and a one-line description, and tell the user to add it if they want the new behavior.
Never rewrite their sprint.conf automatically.
3. Sanity-check
Run bash -n on each refreshed script; report any failure.
4. Tooling report (MANDATORY — the chain lives on its tool use)
The chain degrades gracefully when supporting tools are missing, but the user must be told EXPLICITLY. Check and report each:
- codegraph (https://github.com/colbymchenry/codegraph):
command -v codegraphand the repo index.codegraph/codegraph.db. Missing binary → roles run WITHOUT code-graph intelligence; missing index → suggestcodegraph sync .once. - fallow (https://docs.fallow.tools): on PATH or
./node_modules/.bin/fallow(unlessSPRINT_FALLOW=off). Missing → the gate runs without static analysis; suggestnpm i -g fallow+fallow init. - jq and timeout/gtimeout: missing → degraded JSON parsing / no per-phase timeout.
For anything missing, print the install command and the concrete impact — the same status
appears as the
### Toolingsection in everyTODO.review.md.
5. Registry (consume-only — NEVER self-register)
$REG is a newline-delimited path list consumed by --all. Registration is exclusively
/sprint:bootstrap's job and opt-in there — this command must NOT add the current repo
(users keep internal repos out of the registry deliberately; see docs/DISTRIBUTION.md).
If an entry no longer exists or isn't bootstrapped, drop it and note the cleanup.
6. Summarize
Print, per repo: which files were refreshed/skipped, any .mcp.json merge, the config-drift keys to
consider, the tooling report, and the reminder that sprint.conf + lifecycle files were
intentionally left untouched.