changelog-rewriter

Rewrites changelog entries with cheeky, narrative flair following project conventions. Use this when asked to rewrite or update CHANGELOG.md entries.

23 stars

Best use case

changelog-rewriter is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Rewrites changelog entries with cheeky, narrative flair following project conventions. Use this when asked to rewrite or update CHANGELOG.md entries.

Teams using changelog-rewriter should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/changelog-writer/SKILL.md --create-dirs "https://raw.githubusercontent.com/christophacham/agent-skills-library/main/skills/game-dev/changelog-writer/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/changelog-writer/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How changelog-rewriter Compares

Feature / Agentchangelog-rewriterStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Rewrites changelog entries with cheeky, narrative flair following project conventions. Use this when asked to rewrite or update CHANGELOG.md entries.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Changelog Rewriter Skill

This skill rewrites changelog entries to contain tone: cheeky, pragmatic, humorous, and narrative-driven. No commit-by-commit archaeology, no corporate sanitization, just honest summaries that explain *why* something changed.

## Core Formatting Rules

### Version Header Format

```markdown
## [X.Y.Z](compare-url) (YYYY-MM-DD) emoji
```

- Always include GitHub compare link
- Always include emoji(s) that match release vibe
- Date in ISO format: `(2026-01-14)`

### Opening Quote

- Italicized, sarcastic/humorous summary in blockquote
- Sets the tone for the release
- Examples:
  - `> _Because even the tiniest version bump deserves a drumroll, or at least a polite cough._`
  - `> _Ok, I lied._ No pottery. This turned into cleanup, config alignment, and wrestling CI until it stopped freelancing.`

### Body Structure

**For single-fix patches:**

- Quote + narrative paragraph only
- No bullet lists
- Example:

```markdown
## [0.1.4](https://github.com/ChecKMarKDevTools/rai-lint/compare/v0.1.3...v0.1.4) (2026-01-14) 🧹

> _Because even the tiniest version bump deserves a drumroll, or at least a polite cough._

A quick patch to fix the commitlint package version that was apparently auditioning for a game of hide-and-seek. No user-facing changes, just the machinery getting its act together.
```

**For multi-change releases:**

- Quote + optional "Highlights" section + closing paragraph
- Highlights use bold claims with plain text explanations
- Example:

```markdown
## [0.1.3](https://github.com/ChecKMarKDevTools/rai-lint/compare/v0.1.2...v0.1.3) (2026-01-08) 📡📡📡

> _A boring release, in the best possible way:_ this one is about making CI/release automation less fragile and keeping dependencies current.

No user-facing rule behavior changes in either package. If you linted commits yesterday, you're linting commits today — just with fewer ways for the release machinery to hurt itself.

### Highlights

- **Release automation is harder to derail.** Release Please configuration and "single-tag" wiring were fixed so tags/versions line up cleanly across this monorepo instead of drifting into "wait, which package did we publish?" territory.
- **Security + supply chain posture got a tune-up.** The security audit workflow was improved, and the `astral-sh/setup-uv` action was bumped so the Python toolchain setup stays aligned with the ecosystem.
```

## Breaking Changes

**Stable releases (≥ v1.0.0, excluding prereleases):**

Surface breaking changes with bold, unmissable formatting and humorous framing. This is not the time for subtlety.

- Use emphatic headers: `**🚨 Breaking Changes (Yes, Really):**`, `**⚠️ The Part Where Things Break:**`
- State *what* broke, *why* it broke, and *what* users must do
- Make the section visually distinct—readers should trip over it
- Example tone: "The config schema grew opinions. If you're still using `old_field`, it's time to say goodbye."

**Prerelease or pre-v1 releases:**

Still document breaking changes, but with sardonic acknowledgment that instability is the entire point.

- Use sarcastic headers: `**Breaking Changes (Shocking, I Know):**`, `**Things That Changed Because v0.x Means 'Surprise Mechanics':**`
- Keep the same structural clarity (what/why/action), just adjust the tone
- Example: "Yes, the API changed again. That's what happens when the version number starts with zero."

## Tone & Style Guide

### ✅ Do This:

- **Be dry and blunt:** "The release workflow decided that 'working' was negotiable."
- **Use humor:** "If this doesn't work, I'm learning pottery."
- **Explain impact:** "Release automation is harder to derail" instead of "fixed release config"
- **Acknowledge failure:** "prompting a debugging session I would describe as 'character-building'"
- **Stay concise:** No marketing speak, no feature bloat

### ❌ Don't Do This:

- Don't enumerate commits: ❌ `* commit abc123`
- Don't use corporate tone: ❌ "We're excited to announce..."
- Don't link individual PRs in content bullets
- Don't sanitize personality out of prose

## Emoji Selection

Choose emoji(s) that capture the release's essence or mood. Prioritize creative, contextually appropriate choices over clichéd defaults. Reuse previous emojis only if they genuinely fit and no better option exists.

Think laterally: what symbol represents this particular change in a way that hasn't been beaten to death? Repetition for emphasis (e.g., `📡📡📡`) is acceptable when it serves the narrative.

## Execution Workflow

When invoked to rewrite a changelog entry:

1. **Read CHANGELOG.md** to extract existing tone/structure patterns
2. **Identify release type and breaking changes:**
   - Single-fix patch → quote + narrative paragraph
   - Multi-change release → quote + highlights + summary
   - Breaking changes present → add Breaking Changes section with appropriate tone (stable vs prerelease/pre-v1)
3. **Select emoji(s)** matching release theme (be creative, avoid clichés)
4. **Craft italicized opening quote** explaining the "why" or "mood"
5. **Write body content:**
   - Patches: 1-2 sentence narrative
   - Releases: Breaking Changes (if applicable) + Highlights section + closing summary
6. **Validate:**
   - Version header links to GitHub compare view
   - Date in ISO format
   - Quote italicized
   - Breaking changes unmissable if present
   - No PR/commit links in body bullets

## Important Constraints

- **No commit SHAs or PR numbers** in body content (version header only if needed)
- **Focus on impact**, not implementation archaeology
- **Preserve existing CHANGELOG.md content** below the section being rewritten
- **Match the existing narrative voice** rather than imposing external conventions
- **Breaking changes must be surfaced** with appropriate tone for version maturity

Related Skills

changelog-automation

23
from christophacham/agent-skills-library

Automate changelog generation from commits, PRs, and releases following Keep a Changelog format. Use when setting up release workflows, generating release notes, or standardizing commit conventions.

semgrep-rule-variant-creator

23
from christophacham/agent-skills-library

Creates language variants of existing Semgrep rules. Use when porting a Semgrep rule to specified target languages. Takes an existing rule and target languages as input, produces independent rule+test directories for each language.

searchnews

23
from christophacham/agent-skills-library

当用户要求"搜索新闻"、"查询AI新闻"、"整理新闻"、"获取某天的新闻",或提到需要搜索、整理、汇总指定日期的AI行业新闻时,应使用此技能。

search-specialist

23
from christophacham/agent-skills-library

Expert web researcher using advanced search techniques and

scorecard-marketing

23
from christophacham/agent-skills-library

Build quiz and assessment funnels that generate qualified leads at 30-50% conversion. Use when the user mentions "lead magnet", "quiz funnel", "assessment tool", "lead generation", or "score-based segmentation". Covers question design, dynamic results by tier, and automated follow-up sequences. For landing page conversion, see cro-methodology. For full marketing plans, see one-page-marketing.

scikit-learn

23
from christophacham/agent-skills-library

Machine learning in Python with scikit-learn. Use when working with supervised learning (classification, regression), unsupervised learning (clustering, dimensionality reduction), model evaluation, hyperparameter tuning, preprocessing, or building ML pipelines. Provides comprehensive reference documentation for algorithms, preprocessing techniques, pipelines, and best practices.

scholar-evaluation

23
from christophacham/agent-skills-library

Systematically evaluate scholarly work using the ScholarEval framework, providing structured assessment across research quality dimensions including problem formulation, methodology, analysis, and writing with quantitative scoring and actionable feedback.

sarif-parsing

23
from christophacham/agent-skills-library

Parses and processes SARIF files from static analysis tools like CodeQL, Semgrep, or other scanners. Triggers on "parse sarif", "read scan results", "aggregate findings", "deduplicate alerts", or "process sarif output". Handles filtering, deduplication, format conversion, and CI/CD integration of SARIF data. Does NOT run scans — use the Semgrep or CodeQL skills for that.

kaizen:root-cause-tracing

23
from christophacham/agent-skills-library

Use when errors occur deep in execution and you need to trace back to find the original trigger - systematically traces bugs backward through call stack, adding instrumentation when needed, to identify source of invalid data or incorrect behavior

rice

23
from christophacham/agent-skills-library

RICE prioritization scoring initiatives by Reach, Impact, Confidence, and Effort. Use for feature prioritization, roadmap planning, or when comparing initiatives objectively.

retro

23
from christophacham/agent-skills-library

Start-Stop-Continue retrospective identifying what to Start doing, Stop doing, and Continue doing. Use for sprint retros, personal reflection, team process reviews, or habit audits.

fpf:reset

23
from christophacham/agent-skills-library

Reset the FPF reasoning cycle to start fresh