riekelt/technical-writer

writing-changelogs

Use when writing a changelog entry, release notes, or a "what shipped" summary after completing work.

View source
Original skill document

Rendered from the source repository. Headings, examples, code, tables, links, and referenced images are preserved.

Writing changelogs

REQUIRED BACKGROUND: the technical-writing skill (hard rules, truth rules, style).

Overview

The changelog is one of the few document types where the change, not the current state, is the subject; migration docs and release notes are the others. It is historical: entries are never rewritten, only appended.

When to invoke, and not

Invoke after shipping a meaningful change (a feature, a fix of real size, a removal), when writing release notes, or when summarizing what shipped. Do NOT invoke for trivial edits (roughly three changed files, or three commits), and never rewrite or delete existing entries.

Rules

  • One entry per shipped change, newest first, ISO dates, grouped by version where versions exist.
  • Standard categories where the file uses them: Added / Changed / Deprecated / Fixed / Removed / Security. A Deprecated entry carries the removal date and the replacement.
  • Breaking changes lead the entry, above the categories, each with the required migration action stated (and the migration guide linked when one exists). A breaking change buried under Added is the entry the reader needed most and found last.
  • User-visible impact over implementation detail.
  • Present tense, active voice, and no jargon the reader would not know.
  • Group related changes, and never duplicate an existing entry.
  • Record removals, not just additions: readers chase dead concepts otherwise.
  • Release notes are the audience-facing cut of the same facts: what changed, who it affects, what to do about it. The changelog speaks to engineers; release notes to users of the system. Both draw on the same sources and must never contradict each other.

Entry shape

Document-type exception: the bold leads required below override the shared ban on bold-lead bullets. The exception covers changelog outcomes and the named known-issue, deferred-item, and omission categories only. Repeated label-value bullets remain banned elsewhere.

Bold lead stating the outcome, then root cause, then the fix, with exact names inline:

markdown
- **Reference-to-video routing fixed.** The resolver only knew three operation
  kinds, so requests with reference media routed to image-to-video. A
  `hasReferenceMedia()` check now gives reference-to-video a higher-priority
  branch.

Fixed entries explain the failure mode, not the diff. The bold lead carries the user impact, which is what lets a reader triage a change list.

Honesty conventions

Three entry types make a changelog citable:

  • Known issues surfaced but not fixed in this change, named as such.
  • Deferred items still owed ("one deploy needed to restore the webhook key").
  • Deliberate omissions, described by category, so the same omission is not re-litigated or mistaken for an oversight.

Never mark anything implemented, deployed, or verified unless that exact action was completed and checked. Distinguish implemented (in the repo) from deployed (live) from externally verified.

Handover / completion summary

For handing finished work to a reviewer or operator, cover these sections in order:

  1. Why this work exists
  2. What shipped
  3. Where to point the review (the decisions a reviewer must understand before judging)
  4. Verification status: exact commands and their results, never a bare checkmark
  5. Honest caveats and things I got wrong
  6. Residual risks and what NOT to do
  7. State and what is owed (merged-not-pushed, migrations, ordered steps with the consequence of wrong ordering)

Naming a section for self-reported error makes it socially safe to write.

from this repository

More skills

All skills
riekelt
Community

documenting-legacy-codebases

Use when documenting an existing codebase whose documentation is missing, stale, or untrusted - an inherited system, a legacy application, a repo where the docs lie - or when regrounding a documentation tree against the code, or when someone asks what a system actually does. Encodes the survey-first inventory, the writer-side evidence hierarchy, depth-per-surface rules, the refactor test, dead-or-alive proofs, the quirks-and-findings split, the coverage ledger, the parallel campaign, and the docs-tree skeleton. Use whenever documentation must be reconstructed from the code rather than written alongside a change.

installs
410
GitHub stars
15
Updated
Aug 30
riekelt
Community

technical-writing

Use when writing, restructuring, or revising any technical document - specs, design docs, READMEs, reference documentation, plans, reports - or any prose that must survive being read twice by someone in a hurry. Encodes the house style, the truth and sourcing rules, and the banned-constructions list. Use whenever you produce repository-bound text longer than a paragraph, even if nobody says "document". Foundation for the sibling document-type skills.

installs
414
GitHub stars
15
Updated
Aug 30
riekelt
Community

reviewing-technical-prose

Use when reviewing, rewriting, or editing someone else's technical text, when writing a review report on a document, or as the final check before delivering any document. Encodes the severity mapping, the findings format, the what-not-to-flag list, and the delivery checklist. Use before any document ships, even when it looks fine.

installs
412
GitHub stars
15
Updated
Aug 30
riekelt
Community

writing-runbooks

Use when writing operational documentation - runbooks, setup guides, release procedures, migration guides, deprecation guides, troubleshooting entries, or any ordered procedure someone will execute under time pressure. Encodes the runbook skeleton, the risk legend, the symptom-first troubleshooting format, and the migration-guide rules (mapping table, mandatory rollback, deprecation dates, built-in expiry). Use whenever someone will execute the text, even if it is called a "guide" or "setup notes".

installs
412
GitHub stars
15
Updated
Aug 30