Skip to content

chore(claude): add release-notes command and sharpen curated-notes sequencing - #169

Merged
jfrench9 merged 3 commits into
mainfrom
chore/claude-command-review
Aug 5, 2026
Merged

chore(claude): add release-notes command and sharpen curated-notes sequencing#169
jfrench9 merged 3 commits into
mainfrom
chore/claude-command-review

Conversation

@jfrench9

@jfrench9 jfrench9 commented Aug 5, 2026

Copy link
Copy Markdown
Member

Summary

Ports the /release-notes command from the robosystems repo, adapted for a published post-1.0 SDK. Part of a cross-repo command review: all eight repos that carry the curated-release-notes mechanism (tag-release.yml + .github/release-notes/v<version>.md) now have the command.

Changes

  • .claude/commands/release-notes.md (new) — the SDK version inverts the application repos' framing. Curation is mandatory for a major and for any minor that deprecates surface, rather than a judgment call. The central review check is the compatibility contract: every public-surface change gets sorted into added / deprecated / removed / changed-semantics, anchored to the public-surface definition already in CLAUDE.local.md (facades, root exports, documented models, error classes, auth config; generated internals exempt unless surfaced in a facade signature). Also checks regeneration honesty (just generate-sdk, ariadne-codegen against the checked-in schema.graphql), upstream API coupling, and runtime/dependency floors.
  • .github/release-notes/README.md — sharpened the sequencing paragraph. It said the notes file "belongs in release prep alongside the version bump," which is imprecise enough to mislead: create-release.yml bumps the version on main itself, cuts release/<version> from the result, and tags it in the same run. Pushing that release branch is also what triggers publish.yml, so the notes are fixed by the time the package reaches PyPI — they have to be merged to main before the dispatch.

Testing

Pre-commit gate ran green: 518 passed, 17 skipped.

Notes

  • No workflow or client code is touched — docs and Claude Code configuration only.
  • The command tells the drafter to stop and raise it if the range contains a removal, rename, or semantic change while the intended bump is a minor. The integration template pins >=1,<2, so that combination breaks real consumers.

…odebase

Ports the command overhaul from the sibling repos — frontmatter on every file,
modernized gh usage, public-repo disclosure hygiene — and grounds it in what
this package actually is: a generated, published, post-1.0 Python SDK.

- compatibility is now a required judgment in every review and PR body, and a
  regeneration is explicitly not assumed safe: an API schema change can turn a
  field required and reach consumers as a break with no hand-written line
- hand edits under api/, models/, and graphql/generated/ are called out as
  blocking, with the three places a fix actually belongs
- the checked-in schema.graphql snapshot gets its own drift check, since the
  hermetic GraphQL codegen only reflects the last refresh-schema
- sync/async parity and py.typed are now explicit review items
- test: test-all mutates the tree and never builds a distribution, so
  packaging bugs pass the whole gate and fail at publish time
- publish: new; the release/** push is the publishing event, and a PyPI
  version can be yanked but never re-uploaded
The repo had no PR template, so /create-pr described the de-facto convention
from recent merged PRs instead. That works until the convention drifts — which
is exactly what just happened in the service repo, where the command still
listed the template's previous headings.

Adds the house four-section skeleton with Compatibility in the third slot,
since that is this package's real risk: post-1.0 on PyPI, where a regeneration
can turn a model field required and reach consumers as a break with no
hand-written line involved. Testing notes that the gate never builds a
distribution, so packaging changes need build-package. /create-pr points at the
file rather than restating it.
@jfrench9
jfrench9 merged commit d6f9db1 into main Aug 5, 2026
1 check passed
@jfrench9
jfrench9 deleted the chore/claude-command-review branch August 5, 2026 06:27
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