Smaller findings from a Windows install: exec bit, CRLF re-install, lint, scaffold count, overhead #5
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Field report from installing
f498b6fon 2026-09-12 into a real, busy repository (Python app, ~1,500 tests, background jobs that write tracked data files, a 120 KB CLAUDE.md).Environment: Windows 11, Git for Windows (bash 5.3.9,
core.autocrlf=truefromthe system gitconfig), Python 3.14 (
python3is the WindowsApps alias and works),Claude Code 2.1.269 → 2.1.270.
How it was checked: the kit's own suite; the hooks driven exactly as
settings.jsonholds them; and four live headlessclaude -psessions readingthe
hook_responseevents. Nothing here was run on Linux or macOS.These are design notes with untested proposals.
B2. The exec bit is not recorded when installing from Windows
install.shrunschmod +x, but git on Windows does not record it(
core.filemode=false). Installed and committed from Windows, both hooks andthe lint script land as
100644.settings.jsonruns them by path, so onLinux or macOS they fail with
Permission denied. Hooks fail open, so thatfailure is silent. Git Bash runs them by shebang anyway, so nothing looks
wrong on the machine that installed them.
This is inferred, not executed, since no Linux was available. We fixed our repo
with
git update-index --chmod=+x.Proposal: print
git add --chmod=+x .claude/hooks/*.sh .claude/scripts/*.shin the installer's "Next steps", or run it when the target is a git repo.
Prefixing the commands with
bashalso works, but the merge's exact-matchdedupe would then add a second entry to existing installs.
B3. Re-installing on a CRLF checkout creates phantom modifications
The installer's
sedrewrites the.claude/machinery as LF. On anautocrlf=truecheckout that leaves four files showingMingit status,while
git diff --quietreports no content change. That alone trips the Stopguard.
Re-install also silently reverts local edits to
SKILL.mdand the hooks. Thatis documented ("machinery is refreshed"), but it is easy to miss. It would help
to say where local policy should live instead.
B4. Lint cannot see a stale number
STALEcompares dates, so commits later on the same day asupdatedareinvisible.
page citing only those is reported
LINT-CLEAN.Most measured numbers come from exactly such sources: caches, APIs, generated
files.
Proposal: report
UNDATED-SOURCEinstead of clean, and compare committimestamps, for example by recording a SHA in frontmatter.
B5. Smaller things
(3 pages, last update <install date>)when all three files are scaffolding. Count category pages only, or print
empty.$TMPDIRand are never pruned.The guard costs ~460 ms per stop on Windows because Python starts before the
cheap git checks.
installed. Claude Code truncates the skill listing on 200k-window models:
27 skills, 8704 chars > 8000 budgetshowed- wikiwith no description(observed on haiku; 1M-window models are unaffected). Under ~150 characters
would survive.
stop-hook-error("Stop hook error occurred") in stream-json. That is not thekit's doing, but a README line saves someone debugging the nudge as a failure.
The interactive TUI was not checked.
What works well
content is never overwritten.
python3.wikiskillwas registered and loaded with its body, and the once-per-session marker held
across
--resume.Companion issues from the same install: #3 (the Stop guard keys on the tree, not the session; B1 in the original numbering) and #4 (Windows defects with a tested patch; part A).