agentleFS
jmfedericojmfederico/pi-web/.agents/skills/changeset-changelog/SKILL.md

changeset-changelog

Skill882 starsChanged 16 days agoMITView on GitHub

Use this skill whenever the user asks about changelogs, Changesets, release notes, conventional commits, commit messages for release notes, or making user-visible project changes that should appear in a future npm/GitHub release. Trigger when preparing commits or PRs that include features, fixes, docs users rely on, package behavior changes, CLI changes, install changes, or release process changes. This skill keeps CHANGELOG.md generated at release time instead of manually edited during development.

We split this skill into the rules it gives an agent

14 rules. About 0 are common, 12 are distinctive, and 2 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈12

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Do not manually edit CHANGELOG.md during normal feature/fix work.

    line 13
  2. Distinctive:

    Use Conventional Commit style for commit messages when committing, but do not rely on commit messages as the only changelog source.

    line 14
  3. Distinctive:

    Write release notes for users, not as raw implementation logs.

    line 15
  4. Distinctive:

    Create a changeset for changes that affect users, operators, package consumers, or release/install behavior, including:

    line 19
  5. Distinctive:

    When in doubt, ask briefly or create a patch changeset with a clear note.

    line 32
  6. Distinctive:

    Prefer the CLI when interaction is practical:

    line 36
  7. Very specific:

    Use the package name from package.json.

    line 52
  8. Distinctive:

    Keep entries concise and user-facing:

    line 68
  9. Distinctive:

    Start with an imperative or past-tense summary of the user impact.

    line 70
  10. Distinctive:

    Avoid internal-only details like file names unless they help users.

    line 72
  11. Distinctive:

    Avoid vague notes like “misc fixes” or “update code”.

    line 73
  12. Distinctive:

    When asked to commit, use Conventional Commit style:

    line 97
  13. Distinctive:

    Keep commits and changesets aligned, but remember their audiences differ:

    line 104
  14. Distinctive:

    Commit message: developer history.

    line 106

≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Changeset changelog workflow

This project uses Changesets so release notes are collected as small per-change markdown files during development and converted into CHANGELOG.md during release prep. This avoids multiple branches editing the same CHANGELOG.md section.

Core rules

  • For user-visible changes, add a .changeset/*.md fragment.
  • Do not manually edit CHANGELOG.md during normal feature/fix work. Let changeset version generate or update it during release prep.
  • Use Conventional Commit style for commit messages when committing, but do not rely on commit messages as the only changelog source.
  • Write release notes for users, not as raw implementation logs.

When a changeset is needed

Create a changeset for changes that affect users, operators, package consumers, or release/install behavior, including:

  • New features or UI behavior
  • Bug fixes users can observe
  • CLI, package exports, install, service, or configuration changes
  • Documentation users rely on for setup or usage
  • Dependency/runtime requirement changes
  • Release-process changes that future maintainers need to see

A changeset is usually not needed for purely internal refactors, tests, lint-only changes, or build cleanup unless the user wants them recorded.

A changeset is also not needed for changes that are not part of what a pi-web release ships to users. The release is the published npm package, and its contents are an allowlist defined by the files field in package.json (plus package.json itself). Anything outside that allowlist never reaches package consumers, so it cannot be a user-visible release change. This includes repo-only material such as agent skills under .agents/ and skills/, internal docs, CI config, and developer tooling. If you are unsure whether a path ships, check it against package.json files (or run npm pack --dry-run); when a change lives entirely outside the published files, skip the changeset unless the user explicitly wants it recorded.

When in doubt, ask briefly or create a patch changeset with a clear note.

How to create a changeset

Prefer the CLI when interaction is practical:

npm run changeset

For non-interactive agent work, create a file manually under .changeset/ with a unique kebab-case name:

---
"@jmfederico/pi-web": patch
---

Fix session command handling so browser/API restarts do not interrupt active Pi sessions.

Use the package name from package.json; for this repo it is @jmfederico/pi-web.

Choosing patch/minor/major

This repo uses CalVer shaped as semver: MAJOR.YYYYMM.PATCH (for example, 1.202605.3). The semver minor position is the release month, not feature size. Because only the first component represents breaking compatibility, choose Changeset bump types this way:

  • patch: all non-breaking changes, including bug fixes, docs corrections, polish, release-process improvements, small compatible behavior changes, and new backward-compatible user-facing capabilities.
  • minor: do not use for this repo. The release workflow sets YYYYMM from the release date.
  • major: use only when the user explicitly requests a breaking/major release. Breaking changes can include changes to CLI, install expectations, package API, config, data formats, or supported runtime behavior.

If you believe a change is breaking but the user has not explicitly requested a major release, pause and ask the user to confirm whether to release it as a breaking major version or change the work so it remains non-breaking. Do not infer or perform a major version bump on your own.

During release prep, the npm release skill always computes the version from the release date (MAJOR.YYYYMM.PATCH) and increments PATCH only when another release already exists for that major/month. Do not ask whether to choose a patch increase or a date change for normal releases.

Writing good changeset text

Keep entries concise and user-facing:

  • Start with an imperative or past-tense summary of the user impact.
  • Mention the affected area when useful: sessions, web UI, CLI, install, extensions, release workflow.
  • Avoid internal-only details like file names unless they help users.
  • Avoid vague notes like “misc fixes” or “update code”.

Good examples:

Preserve active Pi sessions when the web/API development service restarts.
Add a project-local release workflow skill that publishes npm packages through GitHub Actions instead of local publishing.

Poor examples:

Changed sessionCommandService.ts.
Fix stuff.

Conventional Commit guidance

When asked to commit, use Conventional Commit style:

  • feat: add persistent session reconnect handling
  • fix: preserve queued commands across API restarts
  • docs: document systemd user services
  • chore(release): v1.202605.4

Keep commits and changesets aligned, but remember their audiences differ:

  • Commit message: developer history.
  • Changeset text: future release notes for users.

Release prep handoff

During release prep, use the npm-release-via-github-actions skill. It should run:

npm run release:version

That consumes .changeset/*.md, updates package.json / lockfile versions, and generates or updates CHANGELOG.md. Publishing still happens only through GitHub Actions after a GitHub Release is published.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.