agentleFS
epamepam/ketcher/.agents/skills/prepare-release/SKILL.md

prepare-release

Skill927 starsChanged 2 days agoApache-2.0View on GitHub

Bump Ketcher package versions and open a bump-X.Y PR (new candidate, candidate update, promote to public, or public patch)

  • Commits and pushes

We split this skill into the rules it gives an agent

7 rules. 0 are common, 1 is distinctive, and 6 are very specific to this project.

  • 0

    Common

    Most of the 46 edited versions we read keep these.

  • 1

    Distinctive

    This author's own choices. Worth a look.

  • 6

    Very specific

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

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

    Create the working branch as bump-X.Y off the mode's source branch.

    line 42
  2. Distinctive:

    If it's not there, stop — the Indigo team needs to publish it first.

    line 70
  3. Very specific:

    Read the current version from packages/ketcher-standalone/package.json (X.Y.0-rc.N).

    line 85
  4. Very specific:

    Ask the user whether indigo-ketcher should also move to a newer published version for this candidate (optional — only needed if the fixes …

    line 88
  5. Very specific:

    Read the current version (X.Y.0-rc.N).

    line 104
  6. Very specific:

    Read the current version — it'll already be public, X.Y.Z with no -rc suffix.

    line 126
  7. Very specific:

    Ask the user whether indigo-ketcher needs bumping to a newer published patch for this fix, same as in update-candidate.

    line 131

“Common” is measured: kept by at least 6 in 10 of the 46 edited versions of this file we could read. “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

Prepare a Ketcher release (version bump)

Parse the mode and version (X.Y) from the arguments the user gave. If either is missing or ambiguous, ask the user rather than guessing — the four modes touch different branches and end in a push + PR, which are hard to fully undo.

This is one half of Ketcher's release process (the other half, tagging and creating the GitHub release once this PR merges, is the create-release skill). Four of Ketcher's release moments turn out to be the same operation — edit four package.json versions, optionally the indigo-ketcher pin, npm install, commit, push a bump-* branch, open a PR — with a different source/target branch and version-string rule each time:

ModeSource branchTarget (PR base)When
new-candidatemastermasterstarting a new release candidate cycle
update-candidaterelease/X.Yrelease/X.Ynew candidate after fixes land
promote-publicrelease/X.Yrelease/X.Ypromoting the final candidate to public
patch-publicrelease/X.Yrelease/X.Yhotfix on an already-public release

Note: the mode names use "candidate" — the actual version strings and git tags still use the real semver/npm convention X.Y.0-rc.N (e.g. 3.19.0-rc.1). Don't rewrite those to "candidate" — rc there is a literal part of the published version string, not just a label.

Shared setup

git status                 # must be clean before switching branches — stash/ask if not
git fetch --all --quiet

Create the working branch as bump-X.Y off the mode's source branch. If bump-X.Y already exists (locally or on origin), it's likely a leftover from a prior bump on this same release that already merged — confirm with the user before deleting and recreating it; if it has unmerged, unexpected content, stop and ask.

Mode: new-candidate — start a new release candidate cycle

git checkout -b bump-X.Y origin/master

Set all four packages' version to X.Y.0-rc.1: packages/ketcher-core/package.json, packages/ketcher-react/package.json, packages/ketcher-macromolecules/package.json, packages/ketcher-standalone/package.json.

indigo-ketcher also needs a new minor version's first candidate — a step up from whatever indigo version master currently pins, not a copy of Ketcher's own version number (indigo and Ketcher have independent version lines). Read the current dependencies.indigo-ketcher value in ketcher-standalone/package.json, bump its minor by 1, target {new-minor}.0-rc.1, and confirm it's actually published:

npm view indigo-ketcher versions --json | grep '"{new-minor}.0-rc.1"'

If it's not there, stop — the Indigo team needs to publish it first; don't substitute a different version.

npm install, sanity-check git diff package-lock.json touches only the packages you changed. Stage the changed files, show the user git diff --cached --stat, and ask before committing as Update Ketcher to release candidate X.Y.0-rc.1. Then go to Wrap-up.

Mode: update-candidate — bump an existing release candidate

git checkout release/X.Y     # must already exist — if not, this is new-candidate instead
git checkout -b bump-X.Y

Read the current version from packages/ketcher-standalone/package.json (X.Y.0-rc.N); bump to X.Y.0-rc.{N+1} in all four packages.

Ask the user whether indigo-ketcher should also move to a newer published version for this candidate (optional — only needed if the fixes being picked up depend on an indigo change). If yes, confirm the target version is published the same way as in new-candidate.

npm install, sanity-check the lockfile diff. Stage the changed files, show the user git diff --cached --stat, and ask before committing as Update Ketcher to release candidate X.Y.0-rc.{N+1}. Then go to Wrap-up.

Mode: promote-public — promote a release candidate to public

git checkout release/X.Y
git checkout -b bump-X.Y

Read the current version (X.Y.0-rc.N); strip the -rc.N suffix to X.Y.0 in all four packages. In ketcher-standalone/package.json, also strip the -rc.N suffix from dependencies.indigo-ketcher — verify the resulting public version exists on npm (npm view indigo-ketcher versions --json) before writing it in; if it hasn't been published yet, stop and say so rather than guessing.

npm install, sanity-check the lockfile diff — past bumps of this shape land around 15-20 changed lines touching only version/resolved/ integrity for the bumped packages (git log --all --grep "Update Ketcher to public version" finds a real precedent commit if you want a concrete anchor). Stage the changed files, show the user git diff --cached --stat, and ask before committing as Update Ketcher to public version X.Y.0. Then go to Wrap-up.

Mode: patch-public — bump a public release for a hotfix

git checkout release/X.Y
git checkout -b bump-X.Y

Read the current version — it'll already be public, X.Y.Z with no -rc suffix. Bump the patch number directly: X.Y.Z → X.Y.{Z+1} in all four packages. This mode does not go through a candidate cycle — the fix lands straight on the release branch with its own patch version.

Ask the user whether indigo-ketcher needs bumping to a newer published patch for this fix, same as in update-candidate.

npm install, sanity-check the lockfile diff. Stage the changed files, show the user git diff --cached --stat, and ask before committing as Update Ketcher to public version X.Y.{Z+1}. Then go to Wrap-up.

Wrap-up (all modes)

Stage exactly the changed package.json files plus package-lock.json — not a blanket git add -A.

Pause here and show the user git show --stat HEAD before pushing. Pushing and opening a PR are the externally-visible, hard-to-fully-undo steps in this flow — get explicit confirmation even if the user asked for the whole release hands-off.

git push -u origin bump-X.Y

Find the PR template (find . -iname pull_request_template.md) and open a PR with gh pr create:

  • title: matches the commit message
  • head: bump-X.Y
  • base: the mode's target branch from the table above
  • body: the repo's PR template filled in — a short description of the bump in Summary, and Memory bank: not needed.

Report the PR URL. Tell the user which create-release mode to run once this PR is merged (draft-candidate after new-candidate/update-candidate, publish-public after promote-public/patch-public) — that's a separate, later step, not something to chain automatically here.

Download now (ZIP)

  • Other versions47 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 47

    1. CherryHQ/cherry-studio★ 53ksame name
    2. redis/go-redis★ 22ksame name
    3. netbox-community/netbox★ 22ksame name
    4. joke2k/faker★ 19ksame name
    5. pybind/pybind11★ 18ksame name
    6. telepresenceio/telepresence★ 7.3ksame name
    7. modelcontextprotocol/csharp-sdk★ 4.6ksame name
    8. CLIUtils/CLI11★ 4.5ksame name
    9. tmoroney/auto-subs★ 4.3ksame name
    10. ethereum/consensus-specs★ 4ksame name

    37 more not listed

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • Used alongsideProjects with it also use sync-docs, review-change and 3 more.

    Other files people use alongside this one.

    Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
    • Eipi-TongSkill

      sync-docs

      Update SPEC.md and docs/DECISIONS.md to reflect recent code changes. Use after completing a feature, or when the user says "sync docs", "update the spec", or "log this decision".

      Also in 4 projects that use this

    • thlaureSkill

      review-change

      Use this skill when the user asks for a code review, a correctness pass, a check before PR, or asks whether a Signalist change follows project conventions.

      Also in 3 projects that use this

    • kiminmonacoSkill

      implement-feature

      Guide for implementing features in ClaudeBar following architecture-first design, TDD, rich domain models, and Swift 6.2 patterns. Use this skill when: (1) Adding new functionality to the app (2) Creating domain models that follow user's mental model (3) Building SwiftUI views that consume domain models directly (4) User asks "how do I implement X" or "add feature Y" (5) Implementing any feature that spans Domain, Infrastructure, and App layers

      Also in 3 projects that use this

    • DockerSkill

      fix-issue

      Fix a single GitHub issue end-to-end: triage, research, write the fix, review, and create a PR. Use when asked to fix an issue: "fix issue 1234", "resolve #500", "create a PR for issue 200".

      Also in 3 projects that use this

    • Hugging FaceSkill

      implement

      Make tests pass. Invoke after /write-tests produces failing tests.

      Also in 3 projects that use this

  • In this repository24 other files it gives its agents.

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.