From contributor-writing
Drafts RELEASE_INFO and UPGRADE entries for Shopware core by analyzing branch diffs against trunk and synthesizing narratives calibrated to change magnitude.
How this skill is triggered — by the user, by Claude, or both
Slash command
/contributor-writing:release-info-writingsonnetThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Draft entries for `RELEASE_INFO-6.x.md` and `UPGRADE-6.x.md` in the Shopware core repository. The skill auto-generates the mechanical "what changed" from code analysis but requires human input for "why external developers should care."
Draft entries for RELEASE_INFO-6.x.md and UPGRADE-6.x.md in the Shopware core repository. The skill auto-generates the mechanical "what changed" from code analysis but requires human input for "why external developers should care."
File write scope: Edit only RELEASE_INFO-6.*.md and UPGRADE-6.*.md. Read everything else.
Parse .danger.php in the repo root to get the canonical file names CI enforces.
.danger.phpmatches('RELEASE_INFO- — extract the file name from the string argument (e.g., RELEASE_INFO-6.7.md)matches('UPGRADE- or referencing UPGRADE- in failure messages — extract the file name (e.g., UPGRADE-6.8.md)RELEASE_INFO-6.*.md and UPGRADE-6.*.md in the repo root. Pick the file with the highest version number.Verify both files exist before proceeding.
Understand the full story of the branch, not just individual changes.
trunk:
mcp__plugin_gh-tooling_gh-tooling__pr_diff and mcp__plugin_gh-tooling_gh-tooling__pr_filesgit diff trunk...HEAD --stat and git log trunk..HEAD --onelineStep 1 — Is this externally relevant?
Skip if ALL are true:
Step 2 — Which files need entries?
| Signal in diff | RELEASE_INFO | UPGRADE |
|---|---|---|
| New public feature / extension point | Yes | No |
| New/changed config option | Yes | No |
Deprecation added (@deprecated) | Yes | Yes (next major) |
| Method/class removed | No | Yes |
| Method signature changed (breaking) | Possibly | Yes |
| Behavioral change (non-breaking but notable) | Yes | No |
| Behavioral change (breaking) | Yes | Yes |
| Critical bug fix | Yes | No |
| New API endpoint | Yes | No |
| API endpoint removed/changed | Yes | Yes |
Step 3 — Present classification to user:
"Based on the branch changes, this looks like [classification]. I'd suggest entries in [file(s)]. Does that match your intent?"
The user can override — they know the story better than the diff.
references/writing-rules.md for style guidancereferences/entry-examples.md for sizing calibrationreferences/file-structure.md for heading hierarchy and placement rulesreferences/writing-rules.md, then check the draft literally (not from memory):
Edit to insert the entry under the correct heading in the correct fileDo not commit. The user decides when to commit.
changelog/_unreleased/ — warn the user if files exist there (old format rejected by CI)RELEASE_INFO-6.*.md filesnpx claudepluginhub shopwarelabs/ai-coding-tools --plugin contributor-writingGenerates human-readable release notes from git history between tags, branches, dates, or commits. Groups changes by type (features, fixes, improvements) in client-friendly language.
Generates human-friendly changelogs from git history, PRs, or ref ranges. Follows Keep a Changelog format and polishes commit messages.
Generates changelog entries, deployment checklists, and updates GitHub PR descriptions for release branches. Use when preparing a release or running /pr-release.