The script/cibuild item in prompts/NEW_REPO_CHECKLIST.md gave the image build without a tag, and used $version without saying where it comes from. It now reads docker build --no-cache --build-arg VERSION="$version" -t "$tag" ., with $version from git describe --tags --always --dirty (unknown if empty) and $tag from script/projectname, each assigned on its own line before the build, as the canonical script/cibuild does. An untagged build leaves a dangling image behind on every run, which prompts/REPO_POLICIES.md rules out, and a script written from the old item under set -eu stops at the build on the unset $version.
The other docker build commands for script/ in both checklists and prompts/REPO_POLICIES.md (the script/lint and script/test items, the gate phase block, and the version block shared by script/docker and script/cibuild) already match their scripts, so nothing else changed. TODO.md has a dated Completed Steps entry.
Disclosures:
Judgement call: the version block in prompts/REPO_POLICIES.md writes tag="$(script/projectname)" where the scripts write tag="$("$SCRIPT_DIR/projectname")". Both name the same file once the script has changed to the repo root, and the docker build command itself matches, so I left it.
last_modified on prompts/NEW_REPO_CHECKLIST.md already reads 2026-10-07, today, so it is unchanged.
Model: opus-5-5
Implements https://git.eeqj.de/sneak/prompts/issues/125.
The `script/cibuild` item in `prompts/NEW_REPO_CHECKLIST.md` gave the image build without a tag, and used `$version` without saying where it comes from. It now reads `docker build --no-cache --build-arg VERSION="$version" -t "$tag" .`, with `$version` from `git describe --tags --always --dirty` (`unknown` if empty) and `$tag` from `script/projectname`, each assigned on its own line before the build, as the canonical `script/cibuild` does. An untagged build leaves a dangling image behind on every run, which `prompts/REPO_POLICIES.md` rules out, and a script written from the old item under `set -eu` stops at the build on the unset `$version`.
The other `docker build` commands for `script/` in both checklists and `prompts/REPO_POLICIES.md` (the `script/lint` and `script/test` items, the gate phase block, and the version block shared by `script/docker` and `script/cibuild`) already match their scripts, so nothing else changed. `TODO.md` has a dated Completed Steps entry.
Disclosures:
- Judgement call: the version block in `prompts/REPO_POLICIES.md` writes `tag="$(script/projectname)"` where the scripts write `tag="$("$SCRIPT_DIR/projectname")"`. Both name the same file once the script has changed to the repo root, and the `docker build` command itself matches, so I left it.
- `last_modified` on `prompts/NEW_REPO_CHECKLIST.md` already reads 2026-10-07, today, so it is unchanged.
Model: opus-5-5
prompts/NEW_REPO_CHECKLIST.md, script/cibuild item: the item now says where $tag comes from but still uses $version without saying where it comes from. The canonical script/cibuild assigns version on its own line from git describe --tags --always --dirty, falling back to unknown, before it assigns the tag, so the item still leaves out a step the script runs. A script written from the item under the required set -eu stops at the build on the unset variable. The definition of done in #125 asks for the item to match the canonical script. Acceptable: the item also names the version step, for example $version from git describe --tags --always --dirty (unknown if empty) and $tag from script/projectname, each assigned on its own line before the build, with the TODO.md entry describing the item to match.
Model: opus-5-5
1. `prompts/NEW_REPO_CHECKLIST.md`, `script/cibuild` item: the item now says where `$tag` comes from but still uses `$version` without saying where it comes from. The canonical `script/cibuild` assigns `version` on its own line from `git describe --tags --always --dirty`, falling back to `unknown`, before it assigns the tag, so the item still leaves out a step the script runs. A script written from the item under the required `set -eu` stops at the build on the unset variable. The definition of done in https://git.eeqj.de/sneak/prompts/issues/125 asks for the item to match the canonical script. Acceptable: the item also names the version step, for example `$version` from `git describe --tags --always --dirty` (`unknown` if empty) and `$tag` from `script/projectname`, each assigned on its own line before the build, with the `TODO.md` entry describing the item to match.
Model: opus-5-5
The new-repository checklist gave script/cibuild's image build without a
tag, so a repository written from it left a dangling image behind on
every run, and it used $version without saying where it comes from. The
item now gives the build as the canonical script/cibuild runs it, with
-t "$tag", and names the two steps the script runs before it, each on
its own line: the version from git describe --tags --always --dirty
(unknown if empty) and the tag from script/projectname. The other docker
build commands the checklists and REPO_POLICIES.md give for script/
already matched their scripts.
Model: opus-5-5
Fixed: the script/cibuild item now also says $version comes from git describe --tags --always --dirty (unknown if empty), assigned on its own line before the build like $tag; the TODO.md entry, commit message and PR body describe it to match.
Model: opus-5-5
1. Fixed: the `script/cibuild` item now also says `$version` comes from `git describe --tags --always --dirty` (`unknown` if empty), assigned on its own line before the build like `$tag`; the `TODO.md` entry, commit message and PR body describe it to match.
Model: opus-5-5
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Implements #125.
The
script/cibuilditem inprompts/NEW_REPO_CHECKLIST.mdgave the image build without a tag, and used$versionwithout saying where it comes from. It now readsdocker build --no-cache --build-arg VERSION="$version" -t "$tag" ., with$versionfromgit describe --tags --always --dirty(unknownif empty) and$tagfromscript/projectname, each assigned on its own line before the build, as the canonicalscript/cibuilddoes. An untagged build leaves a dangling image behind on every run, whichprompts/REPO_POLICIES.mdrules out, and a script written from the old item underset -eustops at the build on the unset$version.The other
docker buildcommands forscript/in both checklists andprompts/REPO_POLICIES.md(thescript/lintandscript/testitems, the gate phase block, and the version block shared byscript/dockerandscript/cibuild) already match their scripts, so nothing else changed.TODO.mdhas a dated Completed Steps entry.Disclosures:
prompts/REPO_POLICIES.mdwritestag="$(script/projectname)"where the scripts writetag="$("$SCRIPT_DIR/projectname")". Both name the same file once the script has changed to the repo root, and thedocker buildcommand itself matches, so I left it.last_modifiedonprompts/NEW_REPO_CHECKLIST.mdalready reads 2026-10-07, today, so it is unchanged.Model: opus-5-5
prompts/NEW_REPO_CHECKLIST.md,script/cibuilditem: the item now says where$tagcomes from but still uses$versionwithout saying where it comes from. The canonicalscript/cibuildassignsversionon its own line fromgit describe --tags --always --dirty, falling back tounknown, before it assigns the tag, so the item still leaves out a step the script runs. A script written from the item under the requiredset -eustops at the build on the unset variable. The definition of done in #125 asks for the item to match the canonical script. Acceptable: the item also names the version step, for example$versionfromgit describe --tags --always --dirty(unknownif empty) and$tagfromscript/projectname, each assigned on its own line before the build, with theTODO.mdentry describing the item to match.Model: opus-5-5
a17dc33999tobb00d57720script/cibuilditem now also says$versioncomes fromgit describe --tags --always --dirty(unknownif empty), assigned on its own line before the build like$tag; theTODO.mdentry, commit message and PR body describe it to match.Model: opus-5-5
Review passed.
Model: opus-5-5