Repository navigation
Add CLAUDE.md as a short card for agent sessions - #127
Merged
Merged
Conversation
The repo had no agent doc. The card says what the repo is, the exact gate behind the required checks (verify (22), verify (24), actionlint) in CI order, the hazard that a change to the PHI-scan engine or the parser template turns detection off wherever they run, and six rules, each with the PR that proved it. 59 lines. No changeset: CLAUDE.md is in no package's files. Harness-Task: 67 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds this repo's first
CLAUDE.md: a 59-line card (wc -l < CLAUDE.mdprints 59) that an agent session reads first. It has four parts, in this order:verifyjob's steps inci.ymlorder, plusactionlint, with three notes for running them outside CI.Nothing else changes. No other file linked to a section of a root
CLAUDE.md, because there was none. No changeset:CLAUDE.mdis in no package'sfiles.Every command the card names, and how it was checked (checked, not run)
node scripts/changeset-guard.mjsgit ls-files scripts/changeset-guard.mjs: 1 filenode scripts/release-notes.mjs prepare --repo . --out "$RUNNER_TEMP/release-notes"git ls-files scripts/release-notes.mjs: 1 filenode scripts/credential-surface.mjsgit ls-files: 1 filenode scripts/install-hardening.mjsgit ls-files: 1 filenode scripts/readme-check.mjsgit ls-files: 1 filenode scripts/drift-check.jsgit ls-files: 1 filenodecommand -v node:/usr/local/bin/node. CI installs it withactions/setup-nodepnpm install --frozen-lockfilecommand -v pnpm. CI installs pnpm withpnpm/action-setuppnpm check:no-emdash,pnpm format:check,pnpm typecheck,pnpm lint,pnpm test,pnpm build,pnpm attwjq -r '.scripts | keys[]' package.jsonactionlintcommand -v actionlintfinds it on PATH. CI installs it throughreviewdog/action-actionlintgit add,git ls-filescommand -v gitdrift-manifest.json,packages/script-utils/phi-scan.js,packages/script-utils/CHANGELOG.md,documentation/decisions/0003-the-phi-scan-engine-gap-settlements.md,.github/workflows/no-emdash.ymlgit ls-files <path>: 1 file eachscripts/parser-template/git ls-files scripts/parser-template: 36 filestest/*scaffold*.test.tsgit ls-files 'test/*scaffold*.test.ts': 4 filesrelease-dry-runjob,fetch-depth: 0,persist-credentials: false.github/workflows/ci.ymland in all three jobs ofrelease.ymlWhere each rule comes from
prepublishOnly: (Stop prepublishOnly running a tool that packs #40).attwthere broke every version bump.npm_config_*inheritance: (fix(attw): the gate's nested npm pack no longer inherits a dry run (CONFIG-PREPUBLISH-ATTW-ENOENT) #47). A dry run reached a nestednpm pack.test/never runs here, and new parsers were born red.fetch-depth: 0andpersist-credentials: false: (fix(release): close the three ways this repo's releases lied about themselves #45).git add: (fix(format): point format:check at .mjs, which it had never once read (CONFIG-FORMAT-CHECK-SKIPS-MJS) #56). The em-dash gate read a new file it had never been handed.OK: no hits. ADR 0003, for recording a change that narrows refusals. The 0.1.0 entry inpackages/script-utils/CHANGELOG.md, "a finding names a position".Some rules found in the CHANGELOG were left out: ones a gate already enforces mechanically (install hardening, the em-dash file gate), and the hand-promotion of package
[Unreleased]sections, which today's package changelogs do not show being followed.Gate
The full
verifysequence plusactionlintwas run locally on this branch with the card staged. Every step exits 0, and the tests pass: 1076 at the root, 50 in script-utils, 225 in process and 195 in test-utils. Two local quirks are written into the card's gate notes:pnpmon PATH: a barepnpmnewer than 10.34.5 failspnpm typecheck(ERR_PNPM_BAD_PM_VERSION) and one pax case inpackages/test-utils/test/attw-gate.test.ts. That happens even on unchanged main. With pnpm 10.34.5 first on PATH, both pass.drift-check.js: from a checkout whose directory is not namedconfig, it exits 2, "nothing was graded". Run from a copy at<dir>/config/, it exits 0.Follow-up, not in this PR
drift-manifest.json'sconfigSubject.exemptionsentry foragentDoc.agentDocgives as its reason that config "carries no CLAUDE.md or AGENTS.md today". That stops being true once this merges. Deleting the entry would grade this card against the package baseline's five required headings, which a short card does not carry. Whether to drop the exemption or reword its reason is a separate change.Harness-Task: 67
🤖 Generated with Claude Code