Update
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.From its SKILL.md
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.
3 things to look at
- reads credentialsReads from 2 credential sources: `XDG_CONFIG_HOME` and 1 more.
- 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.
- runs commandsInstructs the agent to run 8 commands, including `bash -n on each refreshed script` and 7 more.
SKILL.md
5.3 KB, ~1.3k tokens by cl100k_base, 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.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.
Gives 0 of the 12 instructions most project setup skills give in ~1.3k tokens
Counted across 1,553 of the 3,091 authors here whose files we hold, read 2026-09-06
- Write the configuration filein 36 of 1553
- Create the directory structurein 35 of 1553, across 33 files
- Verify the setupin 31 of 1553, across 28 files
- Run the setup scriptin 30 of 1553, across 29 files
- Pre-determine the required sample sizein 29 of 1553, across 12 files
- Check if the configuration already existsin 29 of 1553
- Document every testin 26 of 1553, across 10 files
- Start with a hypothesisin 26 of 1553, across 11 files
- Ask one question at a timein 22 of 1553
- Test a single variable per testin 21 of 1553, across 9 files
- Read product marketing context before asking questionsin 19 of 1553, across 8 files
- Do not peek and stop earlyin 18 of 1553, across 7 files
Said here and by no other author read
- Locate templates from the installed plugin
- Refresh only logic files and overwrite them
- Compare keys in sprint conf for drift
- Run bash n on each refreshed script
- Check and report supporting tools
- Summarize refreshed files and tool reports
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.