changelog
Generate CHANGELOG.md from conventional commits and stage a release with the Release-Tag trailer
Skill by markwharton
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/markwharton-changelog
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/changelog
What's inside
- Skill name
changelog- Description
- Generate CHANGELOG.md from conventional commits and stage a release with the Release-Tag trailer
- License
- MIT
- Instructions
- 134 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# pk changelog
Reads the conventional commits since the last version tag, infers the
next version, writes the section into `CHANGELOG.md`, and commits with
a `Release-Tag` trailer. No git tag is created; `pk release` creates
it, so the release stays a two-step: generate and review, then tag
and push.
## Version inference
A breaking change (`type!:` or a `BREAKING CHANGE:` footer) bumps
major, `feat` bumps minor, anything else bumps patch. The commits
decide the version; `--dry-run` shows the one they infer, and a version
named before the commits existed is a guess, never a target. When the
inferred version is not the one expected, stop and say so. A commit
with the wrong type is fixed by amending its type, while it is
unpushed, not by overriding the bump.
`--bump major|minor|patch` overrides the inference, and the run names
the override next to the version it generates:
```
Generating v0.8.1 (--bump patch; the commits infer minor)
```
`--bump` and `--exclude` are the developer's: `--bump` for the case
the commits cannot show, `--exclude` to leave commits out of the
section. Use either only when the developer asks, with the exact value
given. guard asks before a `--bump` lower than the commits infer; see
`pk help guard`, Version bumps.
Types map to sections via `changelog.types` in `.pk.json`; hidden
types are tracked but never listed. The default table `pk init`
writes:
```
feat Added
fix Fixed
deprecate Deprecated
revert Removed
security Security
refactor Changed
perf Changed
docs Documentation
chore Maintenance
test Maintenance
build Maintenance
ci Maintenance
style Maintenance
plan (hidden: written by pk preserve, never listed)
```
Edit `changelog.types` to rename sections, add types, or hide more.
An empty table means the default table.
## Usage
```bash
pk changelog --dry-run
pk changelog
pk changelog --exclude abc1234,def5678
pk changelog --undo
```
`--dry-run` prints the section to stdout and runs on a dirty tree.
`--exclude` drops commits by short hash before bump inference.
`--undo` unwinds an unpushed release commit, restoring `CHANGELOG.md`
and version files.
`changelog.versionFiles` names JSON files whose root `version` field
is spliced in place, formatting preserved. `postVersion` and
`preCommit` hooks run with `$VERSION` (no v prefix).
Run it from the working branch. A protected branch is refused. The
last version tag must be in the branch's history: a branch rewritten
after a release is refused, naming the tag, because the entry measured
from it would list that release's work again. Move the tag to the
matching commit in the new history, or delete it if it was never
meant, and update origin's copy.
## The first release
No version tag means nothing has been released. The first release
covers the whole history from an implied `v0.0.0`, and its entry links
to the tag's commits rather than a compare. The run says so first:
`no release yet: the first release covers all N commits`. To keep
earlier history out of it, tag `v0.0.0` at the last commit that is
history before running `pk changelog`; everything after that tag is
the first release.
A clone with no local tags is not a first release when origin has
them: a fresh clone that fetched only the working branch, as a cloud
sandbox does. `pk changelog` fetches origin's tags first and says so,
`fetched tags from origin: latest is v1.2.0`, then measures from that
tag. Only when the fetch itself fails does it stop, with the error and
the hint `git fetch --tags`.
## Flags
<!-- generated: flags -->
```
--bump <value>
Override the inferred bump: major, minor, or patch (the developer's call)
--dry-run
Print the section to stdout without writing or committing
--exclude <value>
Comma-separated commit SHAs to drop from the section (the developer's call)
--undo
Unwind the last pk changelog commit (must be unpushed)
```
Every command also accepts `--plain`, `--project-dir <value>`, and `--quiet`; see `pk help help`.
<!-- /generated: flags -->
## Settings
<!-- generated: settings -->
The `changelog` section of `.pk.json`:From markwharton/plankit, MIT.
More from markwharton/plankit
- 0.631score
craft
markwharton
Engineering standards and reusable prompts for working in a plankit repository - load the standards, or run a named prompt
SkillAFreshness: A★ 12Claude Code +9 - 0.628score
preserve
markwharton
Keep each approved plan as a record in the plans directory, on approval or on request
SkillAFreshness: A★ 12Claude Code +9 - 0.628score
protect
markwharton
Why preserved plans are immutable and how pk protect enforces it
SkillAFreshness: A★ 12Claude Code +9 - 0.628score
release
markwharton
Tag the pending release from the Release-Tag trailer and push it, with pre-flight checks and rollback
SkillAFreshness: A★ 12Claude Code +9 - 0.628score
brief
markwharton
What each session is told about this repository's plankit policy at start, generated from .pk.json
SkillAFreshness: A★ 12Claude Code +9 - 0.628score
ship
markwharton
Cut the pending work as one release - changelog then release in a single command
SkillAFreshness: A★ 12Claude Code +9 - 0.628score
guard
markwharton
How pk guard decides what an agent may do to git, and how to tune it
SkillAFreshness: A★ 12Claude Code +9 - 0.628score
overview
markwharton
Plan-driven development for Claude Code - the model, the modes, and the per-repo footprint
SkillAFreshness: A★ 12Claude Code +9 - 0.625score
status
markwharton
Report plankit configuration and repository state
SkillAFreshness: A★ 12Claude Code +9 - 0.625score
help
markwharton
Show documentation for pk and its commands
SkillAFreshness: A★ 12Claude Code +9 - 0.625score
init
markwharton
Configure a repository for plankit
SkillAFreshness: A★ 12Claude Code +9 - 0.625score
pin
markwharton
Update a version pin in a file, for release hooks
SkillAFreshness: A★ 12Claude Code +9
Signals
- Stars
- 12
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 19, 2026 (11 days ago)
- Last release
- Oct 19, 2026 (11 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/markwharton/plankit
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from markwharton
- 0.631score
craft
markwharton
Engineering standards and reusable prompts for working in a plankit repository - load the standards, or run a named prompt
SkillAFreshness: A★ 12Claude Code +9 - 0.628score
ship
markwharton
Cut the pending work as one release - changelog then release in a single command
SkillAFreshness: A★ 12Claude Code +9 - 0.628score
guard
markwharton
How pk guard decides what an agent may do to git, and how to tune it
SkillAFreshness: A★ 12Claude Code +9 - 0.628score
overview
markwharton
Plan-driven development for Claude Code - the model, the modes, and the per-repo footprint
SkillAFreshness: A★ 12Claude Code +9 - 0.628score
preserve
markwharton
Keep each approved plan as a record in the plans directory, on approval or on request
SkillAFreshness: A★ 12Claude Code +9 - 0.628score
protect
markwharton
Why preserved plans are immutable and how pk protect enforces it
SkillAFreshness: A★ 12Claude Code +9
Cite this page
changelog skill. Agent Mart. https://agentmart.dev/skills/markwharton-changelog (last updated 2026-10-24)