qv-addon-changelog
Skill697 starsChanged 18 days agoApache-2.0View on GitHub
Generate changelog entries for a target add-on package. Use when preparing a new release.
We split this skill into the rules it gives an agent
24 rules. About 0 are common, 12 are distinctive, and 12 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈12
Distinctive · estimate
This author's own choices. Worth a look.
12
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 22
If the user doesn't specify, ask which add-on package they want to generate a changelog for.
- Very specific: line 30
Read package.json from main (prev_version) and from HEAD (current_version).
- Very specific: line 33
If the version in package.json is unchanged compared to main, stop and display this exact warning to the user, substituting <addon> with …
- Distinctive: line 38
If this PR includes any changes that must be released in the package, you must bump the package version, commit/push it and re-run this …
- Very specific: line 42
Check addon release workflow tag format in .github/workflows/create-github-release.yml (tag_name).
- Very specific: line 43
Use that format to build upstream_tag for prev_version.
- Very specific: line 50
commit scope example: git log upstream_tag..HEAD -- packages/<addon>/
- Very specific: line 52
If upstream_tag does not exist locally/remotely, warn clearly and fall back to main...HEAD.
- Distinctive: line 54
Do not include uncommitted changes or untracked files: If any uncommitted/untracked files are present, ignore them.
- Very specific: line 61
Look for patterns like #123, (#123), or Merge pull request #123
- Very specific: line 67
Keep PRs that actually touch files under packages/<addon>/.
- Very specific: line 68
If needed, verify with gh pr view <number> --json files and drop unrelated PRs.
- Very specific: line 73
Create or update the matching version section in CHANGELOG.md with these guidelines:
- Very specific: line 77
Version heading: Use exactly ## [X.Y.Z] - YYYY-MM-DD
- Distinctive: line 81
Introduction: Write a brief 2-3 sentence summary of what this release brings
- Distinctive: line 83
Sections: Create each section using narrative prose style.
- Very specific: line 89
Use section headings like ## Breaking Changes, ## Features, etc.
- Distinctive: line 102
Keep all release content for a version inside that block.
- Distinctive: line 103
Do not create standalone release notes files.
- Distinctive: line 104
Ensure the version block is non-empty.
- Distinctive: line 107
Use complete sentences, not bullet fragments
- Distinctive: line 110
Add context where helpful (why this matters)
- Distinctive: line 111
Keep code examples clean and commented
- Distinctive: line 112
Remove internal jargon, make it accessible
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Generate Human-Readable Changelog Entries
Generate changelog entries for add-on packages following the add-on release workflow.
When to use this skill
Use when:
- Preparing a release for an add-on package
- User asks to generate release notes or changelog for an add-on
- User invokes
/qv-addon-changelog
Workflow
Step 1: Identify Target Add-on
If the user doesn't specify, ask which add-on package they want to generate a changelog for.
Step 2: Identify version and changes (mandatory version bump + upstream tag diff)
Identify the full set of changes for the target add-on package only, validate the version bump in the target add-on package.json against main, and compute diff from the previous released tag to HEAD:
- Find the PR base and head: The base is
main. The head is the current branch/commit that the PR will merge. - Read versions:
- Read
package.jsonfrommain(prev_version) and fromHEAD(current_version). - Always compare
package.jsonbetweenmainandHEAD.
- Read
Mandatory version bump check:
- If the
versioninpackage.jsonis unchanged compared tomain, stop and display this exact warning to the user, substituting<addon>with the actual add-on name:
⚠️⚠️⚠️ VERSION BUMP REQUIRED ⚠️⚠️⚠️
Theversioninpackages/<addon>/package.jsonis unchanged compared tomain.
If this PR includes any changes that must be released in the package, you must bump the package version, commit/push it and re-run this command.- If the
- Resolve upstream release tag for
prev_version:- Check addon release workflow tag format in
.github/workflows/create-github-release.yml(tag_name). - Use that format to build
upstream_tagforprev_version. - The tag pattern currently used is
<short_addon_name>-v<version>(example:llamacpp-embed-v0.10.7)
- Check addon release workflow tag format in
- Compute release diff from upstream tag to PR head (package-scoped):
- Primary range for changelog generation:
upstream_tag...HEAD(orupstream_tag..HEADfor commit listing). - Scope all comparisons to the target package path using path filtering:
- diff scope example:
git diff upstream_tag...HEAD -- packages/<addon>/ - commit scope example:
git log upstream_tag..HEAD -- packages/<addon>/
- diff scope example:
- This ensures the changelog is based on changes since the previous released version, up to the latest commit in the PR branch.
- If
upstream_tagdoes not exist locally/remotely, warn clearly and fall back tomain...HEAD.
- Primary range for changelog generation:
- Do not include uncommitted changes or untracked files: If any uncommitted/untracked files are present, ignore them.
The goal is to produce a single, package-scoped change set that reflects what will be released next for the target add-on: from the previous released tag (prev_version) to the current PR head (HEAD).
Step 3: Collect PRs included in this release
- Extract PR numbers from commit messages in the package-scoped range
upstream_tag..HEAD -- packages/<addon>/(or fallbackmain...HEAD -- packages/<addon>/if tag is missing)- Look for patterns like
#123,(#123), orMerge pull request #123
- Look for patterns like
- For each PR found, use
gh pr view <number>to get:- PR title
- PR number
- PR URL
- Filter PRs to package-relevant only:
- Keep PRs that actually touch files under
packages/<addon>/. - If needed, verify with
gh pr view <number> --json filesand drop unrelated PRs.
- Keep PRs that actually touch files under
- Build a list of PRs to include in the release notes
Step 4: Generate changelog entry (single source of truth)
Create or update the matching version section in CHANGELOG.md with these guidelines:
Format Requirements
- Version heading: Use exactly
## [X.Y.Z] - YYYY-MM-DDX.Y.Zmust matchpackage.jsonversion inHEAD- Date must be the release date in
YYYY-MM-DD
- Introduction: Write a brief 2-3 sentence summary of what this release brings
- Sections: Create each section using narrative prose style. Omit a section if there is no information related with it:
- Breaking Changes: Lead with impact, explain what changed and why, provide clear migration steps with before/after code
- New APIs: Describe what's possible now, show practical usage examples
- Features: Explain benefits in user terms, not just what was added
- Bug Fixes: Describe what was broken and how it's fixed
- Other: Summarize briefly
- Use section headings like
## Breaking Changes,## Features, etc. inside the version block
- Pull Requests: At the end, include a "## Pull Requests" section listing all PRs in this release:
## Pull Requests - [#123](https://github.com/tetherto/qvac/pull/123) - PR title here - [#124](https://github.com/tetherto/qvac/pull/124) - Another PR title - Workflow compatibility requirement (mandatory):
- The release workflow extracts the GitHub release body from
CHANGELOG.mdby taking text after## [X.Y.Z] - YYYY-MM-DDuntil the next version heading## [. - Therefore:
- Keep all release content for a version inside that block.
- Do not create standalone release notes files.
- Ensure the version block is non-empty.
- The release workflow extracts the GitHub release body from
- Style Guidelines:
- Use complete sentences, not bullet fragments
- Lead with benefits/impact
- Group related changes together
- Add context where helpful (why this matters)
- Keep code examples clean and commented
- Remove internal jargon, make it accessible
- Skip entries with no informational value — generic entries like "Updated models" or "Bumped dependencies" without specific details should be omitted
Example
CHANGELOG.md (excerpt):
## [0.4.0] - 2026-02-18
This release introduces automated GitHub releases and improves mobile test reliability.
## Features
### Automated GitHub Releases
The release process is now automated with enforced changelog entries. When a version bump is detected on merge to main, a GitHub release is automatically created using the matching `CHANGELOG.md` version block.
## Bug Fixes
### Mobile E2E Test Workflow Fix
Fixed an issue where mobile E2E tests would fail when the "On PR Trigger" workflow was manually run via workflow_dispatch.
## Pull Requests
- [#67](https://github.com/tetherto/qvac/pull/67) - Fix mobile E2E tests workflow_dispatch
- [#70](https://github.com/tetherto/qvac/pull/70) - feat: automate GitHub releases with mandatory release notesIn this repository56 other files it gives its agents.
- AGENTS.mdAGENTS.md
- .github/AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- .cursor/rules/agent-integrations.mdcCursor rule
- .cursor/rules/cpp/string-api-conventions.mdcCursor rule
- .cursor/rules/devops/main.mdcCursor rule
- .cursor/rules/no-remote-code-execution.mdcCursor rule
- .cursor/rules/qip-triage.mdcCursor rule
- .cursor/rules/sdk/commit-and-pr-format.mdcCursor rule
- .cursor/rules/sdk/error-handling.mdcCursor rule
- .cursor/rules/sdk/first-class-product-parity.mdcCursor rule
- .cursor/rules/sdk/main.mdcCursor rule
- .cursor/rules/sdk/public-constants-contract.mdcCursor rule
- .cursor/rules/sdk/request-lifecycle-primitives.mdcCursor rule
- .cursor/rules/sdk/sdk-pod-packages.mdcCursor rule
- .cursor/rules/sdk/skill-authoring-guidelines.mdcCursor rule
- cpp-string-api-reviewSkill
- qv-addon-pr-createSkill
- qv-addon-release-notesSkill
- qv-agent-stack-syncSkill
- qv-asana-syncSkill
- qv-daily-work-updateSkill
- qv-dev-diary-setupSkill
- qv-dev-diarySkill
- qv-devops-daily-updateSkill
- qv-devops-pr-createSkill
- qv-devops-pr-reviewSkill
- qv-devops-pr-statusSkill
- qv-devops-runner-queueSkill
- qv-devops-why-my-pr-notSkill
- qv-docs-solution-createSkill
- qv-docs-updateSkill
- qv-holepunch-devSkill
- qv-merge-guard-wireSkill
- qv-mobile-test-dispatchSkill
- qv-notice-generateSkill
- qv-pr-mineSkill
- qv-pr-reviewSkill
- qv-pr-testSkill
- qv-qip-createSkill
- qv-qip-reviewSkill
- qv-qip-triageSkill
- qv-quality-reportingSkill
- qv-registry-autobase-patternsSkill
- qv-release-trainSkill
- qv-sdk-backmergeSkill
- qv-sdk-changelogSkill
- qv-sdk-e2e-createSkill
- qv-sdk-inference-versionSkill
- qv-sdk-pr-createSkill
- qv-sdk-pr-statusSkill
- qv-sdk-update-modelsSkill
- qv-skill-listSkill
- setupSkill
- setupSkill
- qv-nx-ciSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

