Skip to content

docs(LINCHPIN-5254): Correct the release tooling described in CLAUDE.md - #12

Merged
aaronware merged 1 commit into
mainfrom
docs/claude-md-release-tooling
Jul 30, 2026
Merged

docs(LINCHPIN-5254): Correct the release tooling described in CLAUDE.md#12
aaronware merged 1 commit into
mainfrom
docs/claude-md-release-tooling

Conversation

@aaronware

Copy link
Copy Markdown
Contributor

Closes LINCHPIN-5254.

Problem

CLAUDE.md said:

Unlike the projects that consume it, this repo has no commitlint, husky, release-please, or Renovate — it's a plain npm package published by hand.

Only the commitlint/husky half is true. Verified against the repo:

Claim Reality
no commitlint ✅ true — no config
no husky ✅ true — no .husky/
no release-please release-please.yml, release-please-config.json, .release-please-manifest.json; cut #6, #9, #11
no Renovate renovate.json; opened #3, #4, #7, #8
published by hand ❌ npm publish job via Trusted Publishing (OIDC) — no stored token

The same section also told maintainers to run npm version patch \|\| minor \|\| major && npm publish from main, which would fight release-please and bypass Trusted Publishing.

Why it matters

An agent trusting that paragraph would hand-edit package.json and CHANGELOG.md — precisely what commit-and-release forbids — and wouldn't know the PR title is CI-enforced. That gate is load-bearing: squash merges make the PR title the commit message release-please parses, so a malformed title corrupts CHANGELOG.md instead of failing loudly.

I hit this while shipping #10 — reading the workflows rather than the doc is how I knew NO-TASK was an accepted scope and that feat maps to "Features ✨".

Change

Docs only. Rewrites both passages to describe the real setup, points at commit-and-release rather than restating its rules (one owner per concern), and notes that README.md is a release-please extra-files target so its version markers stay untouched.

Verify

npm run validate → 22 skills, 0 errors, 0 warnings.

🤖 Generated with Claude Code

CLAUDE.md claimed this repo "has no commitlint, husky, release-please, or
Renovate — it's a plain npm package published by hand". Only the commitlint and
husky half was true.

Actually present: release-please (release-please.yml, release-please-config.json,
.release-please-manifest.json) which has cut #6, #9 and #11; Renovate, which has
opened #3, #4, #7 and #8; and an npm publish job authenticating via Trusted
Publishing over OIDC rather than a stored token.

The same section also told maintainers to run npm version and npm publish from
main, which would fight release-please and bypass Trusted Publishing entirely.

An agent reading this would hand-edit package.json and CHANGELOG.md, which is
exactly what commit-and-release forbids, and would not know the PR title is
CI-enforced. That gate matters because squash merges turn the PR title into the
commit message release-please parses, so a malformed title corrupts the
changelog rather than failing loudly.

Also notes that README.md is a release-please extra-files version target, so its
x-release-please markers are not to be touched.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@aaronware
aaronware merged commit 129b0e2 into main Jul 30, 2026
2 checks passed
@aaronware
aaronware deleted the docs/claude-md-release-tooling branch July 30, 2026 04:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant