CLAUDE.md
CLAUDE.mdCLAUDE.mdroot
Quality
89/100
Scores the file, not the repository.Length
729 words
11 headings · 2 code blocksRepository
613
— · pushed 70 days agoLast changed
3 days ago
First indexed 3 days ago.1# CLAUDE.md — sno-ai/mda23Project memory for Claude Code. Read on every session.45## Release process for @markdown-ai/cli67**No more asking the user about version numbers, npm tokens, trusted8publishing, or auth.** Everything below is settled. Just execute.910### To cut a release (any 1.1.x, 1.2.0, 2.0.0 — same flow)11121. Edit `apps/cli/package.json` → bump `version`132. `pnpm cli:test` (must pass; tests dynamically read the version)143. `git add apps/cli/package.json && git commit -m "chore(cli): bump to <version>"`154. `git push origin main`165. `git tag v<version> HEAD`176. `git push origin v<version>`187. `gh run watch $(gh run list --workflow=publish-cli.yml --limit 1 --json databaseId --jq '.[0].databaseId')`198. `npm view @markdown-ai/cli@<version> version` to confirm registry209. **Write real GitHub Release notes by hand and publish them.** See21 "Release notes — non-negotiable" below. This step is part of the22 release; the release is not done until the GitHub Release exists23 with a written body.2425The user does not need to do anything for any of these steps. Do not ask26which version number to use — for a publish-only request, increment the27patch. Do not ask whether to write release notes — always write them.2829### Release notes — non-negotiable3031The GitHub Release body **must** be hand-written for every version.32`--generate-notes` produces a useless "Full Changelog: vA...vB" one-liner33when there are no merged PRs between tags (which is most patch releases34in this repo), so the workflow no longer creates the Release35automatically. Writing the body is the agent's responsibility.3637Minimum required structure:3839```md40## What's new4142<one sentence per user-facing change, lead with the change name in bold.43example: **`mda demo`** — one command to see the four-artifact flow ...>4445## Other changes4647<bullet list of smaller things: docs, CI, internal>4849## Why the version jump (only if patches were skipped)5051<one paragraph explaining which version numbers were skipped and why>5253## Install / upgrade5455<copy-pasteable npm install + npx invocation>56```5758Source for the notes: `git log --oneline <previous-shipped-tag>..v<new>59-- apps/cli/` plus `git show <commit>` on anything that looks60user-facing. Ignore `chore(cli): bump to ...` and pure-CI commits — they61are not what users care about. Group by user-visible feature, not by62commit.6364Write the body to a temp file, then:6566```sh67gh release create v<version> \68 --title "@markdown-ai/cli <version>" \69 --notes-file /tmp/v<version>-notes.md \70 --latest \71 --verify-tag72```7374(Use `gh release edit ... --notes-file` if the release already exists.)7576After creation, eyeball https://github.com/sno-ai/mda/releases/tag/v<version>77once to confirm the body actually renders the way you expect. If it78shows only "Full Changelog: vA...vB", the notes file was wrong — fix79and re-edit.8081### Auth — already configured, do not touch8283- npmjs.com has a Trusted Publisher binding on `@markdown-ai/cli`:84 - Repo: `sno-ai/mda`85 - Workflow: `publish-cli.yml`86 - Environment: (blank)87- Workflow uses OIDC via `id-token: write` permission. No NPM_TOKEN, no88 `registry-url` on setup-node, no `env: NODE_AUTH_TOKEN` block.89- Provenance is signed with sigstore via the same OIDC token.9091If CI ever fails with `OIDC token exchange error - package not found`,92the binding was removed/changed npmjs-side. That is the only npmjs.com93issue worth flagging to the user — and only after confirming via the94verbose publish log. Do not preemptively ask them to "verify the95binding."9697### What NOT to do (lessons from the v1.1.3–v1.1.6 publish loop)9899- Do not add `NODE_AUTH_TOKEN` env or `registry-url` to setup-node.100 Either one breaks OIDC: empty `NODE_AUTH_TOKEN` makes npm send an101 empty bearer (404 from registry); a configured token blocks OIDC102 auto-detection entirely.103- Do not assume a 404 means "package missing" — npm registry returns104 404 for "auth ok but no permission" too. Read `--loglevel=verbose`105 output before guessing.106- Do not reuse a failed tag (don't delete and recreate `vX.Y.Z`). Bump107 the patch instead — tag deletion is destructive and unnecessary.108- Do not amend release commits or force-push. New commits only.109- Failed publish tags from 2026-05-26 (v1.1.3 through v1.1.6) are110 harmless leftovers. Do not delete them without explicit ask.111112### When the publish fails1131141. `gh run view <run-id> --log 2>&1 | awk '/Run npm publish/,/Process completed/'`1152. Diagnose from the verbose log alone — do not add diagnostic steps to116 the workflow unless the log is genuinely insufficient.1173. Communicate the exact npm error + the exact fix in one message. Do118 not ask the user to "check" or "verify" anything they can read off119 the URL you'd link them to.120
Similar configs
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| Adit-Jain-srm/NightmareNetCLAUDE.md · 45 | CLAUDE.md | buildtestlint-formatstyle+6 | 100/100 | 3 days ago | |
| nimbalyst/nimbalystpackages/android/CLAUDE.md · 1.4k | CLAUDE.md | setupbuildstylearch+2 | 100/100 | 3 days ago | |
| dotCMS/corecore-web/CLAUDE.md · 949 | CLAUDE.md | teststylearchtesting-strategy+3 | 100/100 | 3 days ago | |
| microsoft/playwrightCLAUDE.md · 94k | CLAUDE.md | buildtestlint-formatstyle+7 | 100/100 | 3 days ago | |
| filamentphp/filamentCLAUDE.md · 32k | CLAUDE.md | buildtestlint-formatstyle+7 | 100/100 | 3 days ago | |
| bagisto/bagistoCLAUDE.md · 28k | CLAUDE.md | setupbuildteststyle+5 | 100/100 | 3 days ago | |
| dotCMS/coreCLAUDE.md · 949 | CLAUDE.md | setupbuildteststyle+7 | 99/100 | today | |
| lollipopkit/flutter_server_boxCLAUDE.md · 8.3k | CLAUDE.md | buildteststylearch+2 | 98/100 | 3 days ago |
