feat(ci): require a Changelog section on every PR - #164
Merged
Conversation
New changelog-section check (.github/workflows/changelog-check.yml) fails a PR unless its body has a ## Changelog section or it carries the skip-changelog label, and posts a help comment explaining how to fix. Re-runs on body/label edits so it clears the moment the PR is updated. Shared parsing (lib.mjs) keeps the gate and the on-merge writer in agreement; from-pr.mjs refactored onto it. AGENTS.md now states the requirement explicitly. Make it blocking by adding 'changelog-section' to the main ruleset's required checks. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Contributor
|
Preview removed for PR #164. |
crs48
added a commit
that referenced
this pull request
Jun 18, 2026
…193/0194) (#201) The `changelog-section` required check was only added in #164, so the 0192/0193/0194 feature batch merged before it never got changelog entries. This backfills the 12 user-facing features that were missing, each dated to its merge day with its PR number and contributors: | PR | Entry | |----|-------| | #138 | A safer foundation for plugins | | #145 | One trust model across plugins and Labs | | #146 | Reliability you can see for managed hubs | | #148 | Drive your own coding agent from xNet | | #149 | AI that can act on your workspace | | #150 | Your Labs become AI tools | | #152 | Your agent can use your workspace | | #154 | AI edits, right inside the editor | | #155 | An agentic dev loop in your terminal | | #158 | Review AI edits before they apply | | #159 | Kick off agentic code tasks from xNet | | #162 | Plugins run on the Labs runtime | Skipped: PRs already covered by umbrella entries (#142 plugin ecosystem, #144 extensibility fabric, #147 automated changelog, #163 agent panel, #180 changelog gallery), internal-only changes (#139 schema authz — zero user-facing effect), and meta/test/docs PRs. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
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.
Makes the changelog required, so agents (and humans) can't merge a PR that silently skips it — addressing the "what if an agent forgets the Changelog section" concern.
What
A new required check,
changelog-section(.github/workflows/changelog-check.yml), fails a PR unless its body has a## Changelogsection or it carries theskip-changeloglabel. It:scripts/changelog/lib.mjs, so "has a changelog?" is decided by the same logic that produces the entry (from-pr.mjsrefactored onto it).AGENTS.mdnow states the requirement up front. Three layers now communicate it: the PR template, the AGENTS.md instruction, and — the backstop — a blocking check.Making it blocking
The workflow ships here; the final step is adding
changelog-sectionto themainruleset's required status checks (an admin/API action). I'll do that right after this merges, then verify with a quick test PR.Verification (local)
skip-changeloglabel → pass; empty block (only the template comment) → fail ✓from-pr.mjsstill writes correct fragments ✓This PR is internal contributor tooling (no user-facing change), so it carries the
skip-changeloglabel — which also exercises the label path of the new check.🤖 Generated with Claude Code