From internal-docs-writer
Generate a changelog from git history, PRs, or a list of changes. Written for the target audience (users or developers).
npx claudepluginhub hpsgd/turtlestack --plugin internal-docs-writerThis skill is limited to using the following tools:
Generate a changelog for $ARGUMENTS using the mandatory process below.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Retrieves current documentation, API references, and code examples for libraries, frameworks, SDKs, CLIs, and services via Context7 CLI. Ideal for API syntax, configs, migrations, and setup queries.
Uses ctx7 CLI to fetch current library docs, manage AI coding skills (install/search/generate), and configure Context7 MCP for AI editors.
Generate a changelog for $ARGUMENTS using the mandatory process below.
Run these commands to extract the change data:
# Get the commit log with author and date
git log --format="%h %s (%an, %ad)" --date=short $RANGE
# Get the full diff stat for scope assessment
git diff --stat $RANGE
# Get any tags in range for version markers
git tag --merged HEAD --no-merged $BASE_REF --sort=-version:refname
# Get PR merge commits if using PR-based workflow
git log --merges --format="%h %s" $RANGE
Replace $RANGE with the user's specified range (e.g., v1.0.0..HEAD). If the user says "since last release," first find the latest tag:
git describe --tags --abbrev=0
If no tags exist, ask the user for a commit range or use the last 50 commits.
For every commit/PR, assign it to exactly one group:
| Group | Include when | Conventional Commits prefixes |
|---|---|---|
| Added | New feature, new endpoint, new capability that didn't exist before | feat: |
| Changed | Modification to existing behaviour, UI changes, API changes | refactor:, style:, perf: |
| Fixed | Bug fix — something was broken and is now correct | fix: |
| Removed | Feature, endpoint, or option that has been removed | feat!:, BREAKING CHANGE |
| Deprecated | Feature marked for future removal | deprecate: |
| Security | Vulnerability fix, dependency update for CVE, auth change | security:, fix: with security context |
| Skip if | Reason |
|---|---|
CI/CD pipeline changes (.github/, Jenkinsfile, .circleci/) | Not user-visible |
Dependency version bumps (chore(deps):, bump) | Noise — unless it fixes a CVE, then put in Security |
Code formatting, linting fixes (style:, chore: format) | Not user-visible |
| Internal refactoring with no behaviour change | Not user-visible |
| Merge commits that duplicate PR content | Avoid double-counting |
Test additions/changes (test:) | Not user-visible |
Version bump commits (chore: release, bump version) | Meta, not a change |
When uncertain whether to include a change: if a user would notice the difference, include it. If they wouldn't, skip it.
Write from the user's perspective. Describe what changed for them, not what changed in the code.
maxRetries parameter to HttpClient"Write from the developer's perspective. Include technical details, breaking changes, migration steps.
maxRetries parameter to HttpClient constructor (default: 3). Set to 0 to disable."User.getProfile() now returns a Promise<Profile> instead of Profile. Update all call sites to use await."Every changelog entry MUST follow these rules:
(#123)**BREAKING:** and explain what to doUse this format:
## [version] — YYYY-MM-DD
### Added
- [entry]
- [entry]
### Changed
- [entry]
### Fixed
- [entry]
### Removed
- [entry]
### Security
- [entry]
Rules for assembly:
### ⚠ Breaking changes
- **BREAKING:** [description and migration steps]
At the top of the changelog, include a brief summary:
**[version]** brings [N] new features, [N] fixes, and [N] improvements.
[One sentence highlighting the most significant change.]
If comparing two versions, include the diff stats:
**Comparing [old] → [new]**: [N] commits, [N] files changed, [N] contributors
Before delivering, verify:
| Check | Pass? |
|---|---|
| Every entry uses imperative mood | |
| No CI/deps/formatting changes leaked in | |
| Breaking changes are clearly marked | |
| Audience is appropriate (user vs developer language) | |
| Entries are sorted by impact within groups | |
| No duplicate entries (from merge commits) | |
| Version number and date are present | |
| Empty groups are omitted |