chore(claude): add release-notes command and sharpen curated-notes sequencing - #169
Merged
Conversation
…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.
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.
Summary
Ports the
/release-notescommand from therobosystemsrepo, 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 inCLAUDE.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-inschema.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.ymlbumps the version onmainitself, cutsrelease/<version>from the result, and tags it in the same run. Pushing that release branch is also what triggerspublish.yml, so the notes are fixed by the time the package reaches PyPI — they have to be merged tomainbefore the dispatch.Testing
Pre-commit gate ran green: 518 passed, 17 skipped.
Notes
>=1,<2, so that combination breaks real consumers.