Skip to content

docs: add an agent release runbook and make AGENTS.md canonical - #3

Merged
ajmarkow merged 1 commit into
masterfrom
docs/agent-instructions
Sep 15, 2026
Merged

ajmarkow merged 1 commit into
masterfrom
docs/agent-instructions

Conversation

@ajmarkow

Copy link
Copy Markdown
Owner

Writes down the release process and gives every coding agent one source to read.

docs/updating-version.md

Releases were undocumented, so each one meant rediscovering which files carry the version and which must be left alone. This records it:

  • Change exactly two fileslib/snippet_cli/version.rb and CHANGELOG.md
  • Never hand-edit the three that derive from SnippetCli::VERSION (gemspec, the version command, its spec)
  • nix/gemset.nix and nix/Gemfile.lock are different — they pin the published gem and must stay on the old version during a release, because bundix cannot resolve a version RubyGems has not indexed. CI repins them afterwards.
  • Why the release marker belongs in the pull request title, not a commit message
  • What each CI job does, what gemset-check is expected to report on a release PR, and the failure modes
  • How to regenerate the Nix pins by hand, and why both commands matter

AGENTS.md

New, and now the canonical place for repo instructions — the devenv/Ruby rule, the Nix packaging notes including the gum binary patch, and the aruba test caveat where five cli_spec.rb examples fail in a polluted local Bundler environment but pass in CI.

CLAUDE.md

Claude Code reads CLAUDE.md, not AGENTS.md. Per the Claude Code docs, the supported bridge is an @AGENTS.md import, which expands at session start. That is stronger than prose telling the agent to open the file, and it keeps one source instead of two that drift.

So the hand-written devenv section is gone from CLAUDE.md and lives in AGENTS.md instead. The Backlog.md block is also dropped, since this repo does not use it.

Net effect: CLAUDE.md is the import plus the RTK block, and every agent reads the same instructions.

Notes

Neither new file ships in the gem. spec.files only matches lib/, exe/, and a root README, CHANGELOG, or LICENSE.

🤖 Generated with Claude Code

Releases were undocumented, so each one relied on rediscovering which files carry the version and which must be left alone. docs/updating-version.md writes that down: the two files that change, the derived files that must not be hand-edited, and why nix/gemset.nix stays on the old version until CI repins it after publish.

It also records why the release marker belongs in the pull request title. The master ruleset requires a PR, so the push to master is the squash commit, and GitHub builds that message from the title. A marker in a branch commit does not survive.

AGENTS.md becomes the one place repo instructions live, so every coding agent reads the same source. Claude Code reads CLAUDE.md rather than AGENTS.md, so CLAUDE.md now imports it instead of restating the devenv rule and drifting from it. The Backlog.md block is dropped; this repo does not use it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@ajmarkow
ajmarkow force-pushed the docs/agent-instructions branch from b0d6f45 to d38fad9 Compare September 15, 2026 17:55
@ajmarkow
ajmarkow merged commit d43b0b1 into master Sep 15, 2026
27 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant