sacho

Manages changelogs as Markdown fragments compiled into CHANGES.md at release time.

2.0k|56|Updated Apr 16, 2024
One-click install
npx skills add https://github.com/dahlia/logtape --skill sacho
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: sacho
Source: https://github.com/dahlia/logtape/tree/main/.agents/skills/sacho
Command: npx skills add https://github.com/dahlia/logtape --skill sacho

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Maintaining user-facing release notes is tedious and error-prone: entries get forgotten, merge conflicts pile up in a single CHANGES.md file, and auto-generated notes from commit messages read poorly for end users. This Skill guides maintainers through adopting and operating Sacho, a changelog manager that stores one small Markdown fragment per change under changes.d/ and compiles them into a dated CHANGES.md section at release time.

Core Features & Use Cases

  • Fragment-based workflow: Create, format, preview, and validate changelog entries with sacho add, sacho fmt, sacho preview, and sacho check, keeping each entry in the same commit series as its code change.
  • Release management: Compile fragments into dated CHANGES.md sections with sacho release, publish notes via sacho show piped to GitHub Releases, and forward-port bugfix releases across maintenance branches with sacho carry.
  • Coverage enforcement: Wire sacho check into CI or pre-commit hooks so commits touching configured paths require a fragment, with a Changelog: none trailer as an explicit opt-out.
  • Use Case: After fixing a bug, you run sacho add fix-timeout, write a user-facing entry starting with a past-tense verb, and let CI verify the fragment exists before merge; at release time one command compiles all fragments into the new version section.

Quick Start

Ask the assistant to check whether this repository has a sacho.toml or changes.d/ directory, then run sacho init to adopt Sacho or sacho add to write a changelog fragment for your latest change.

Frequently Asked Questions about sacho

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I add a changelog entry with Sacho?▼

Run `sacho add <topic-name>` to create a fragment under changes.d/, write a user-facing entry starting with a past-tense verb like Added or Fixed, then run `sacho fmt`, `sacho preview`, and `sacho check`. Name the file after the change itself, not an issue or PR number.

How do I cut a release with Sacho?▼

Set the version with `sacho next 1.2.0`, review the output of `sacho preview`, then run `sacho release --next 1.3.0`. The release command stamps a dated section in CHANGES.md, deletes the consumed fragments, and records the next version.

Does Sacho generate changelog entries from commit messages?▼

No. Sacho never generates entries from commit messages, and the skill explicitly instructs against doing so. A changelog entry must be written for users, describing what changed on the public surface and what to do when upgrading.

How do I enforce changelog coverage in CI?▼

Configure `[check].paths` in sacho.toml with the globs whose changes require a fragment, then run `sacho check --base origin/main` in CI. A commit with no user-visible effect can opt out using a `Changelog: none` trailer in its message.

How do I forward-port a bugfix release across maintenance branches?▼

If you merge before releasing, the fragment travels with the merge and each branch consumes its own copy. If you merge an already-released tag, run `sacho carry 1.1.5` to decompile that section back into fragments for the receiving branch's next release.

Why does sacho check fail and how do I fix it?▼

Failures fall into three layers: fragment validity and formatting, drift between CHANGES.md and the fragments, and missing-fragment coverage for changed paths. Run `sacho check --fix` for mechanical repairs, or write the missing entry or add a `Changelog: none` exemption.