After the GitHub org migration from bsautner to Sautner-Studio-LLC, eleven
files in this repo still referenced bsautner/krill in active workflow text:
shell command examples in CLAUDE.md, the PR template checklist, the
dev-cross-repo.yml placeholder, the docs/lessons/README.md schema example
that every new lesson copy-pastes, and historical lesson + openspec docs.
Local clones already had correct git remotes, so git push and gh repo view
worked — only the in-repo doc text was stale, which silently misled any agent
that pasted the example commands.
The org migration updated remotes and CI workflow repository: fields but
left literal bsautner/krill* strings in human-readable docs. There is no CI
guard that enforces org consistency in markdown.
Single-pass sed across all matches:
1
git grep -l 'bsautner/krill' | xargs sed -i 's#bsautner/krill#Sautner-Studio-LLC/krill#g'
Verified with git grep 'bsautner/krill' returning empty. Remaining
bsautner matches are all author: bsautner byline frontmatter in
docs/_posts/ — that is a person’s GitHub username, not an org reference,
and is intentionally untouched.
git grep -hoE
'bsautner/krill[a-zA-Z0-9_-]*' | sort -u returned only bsautner/krill
(no -oss, -qa, or other suffixes), so a single substitution couldn’t
collide. Always enumerate distinct matches before bulk replacement.bsautner alone matches
blog post authorship metadata, which has different semantics from a repo
slug. Anchor on bsautner/krill (or whatever the repo prefix is), not on
the user/org name in isolation.repository: fields were already correct. Operational paths
(CI, deployments) had been migrated; only narrative docs lagged. Future
org renames should treat docs as a separate sweep with its own checklist.