version
Skill0 starsChanged 16 days agoMITView on GitHub
Cuts a new `v<major>.<minor>.<patch>` tag on the loupe-mcp repository, deciding the bump level (major / minor / patch) by analyzing the commits since the last tag. Use when the user asks to release, tag a version, cut a release, bump the version, or publish a new image.
- Commits and pushes
10 other projects use a version of this.
Adopted by
Most recently taken up by
- buildomator/buildomatortheir own version, first seen Nov 4, 2026
- bmtrnavsky/disciplined-vibe-codingtheir own version, first seen Nov 1, 2026
- kellymears/agentstheir own version, first seen Oct 13, 2026
- kdrezo/claude-skillstheir own version, first seen Oct 13, 2026
- tim-mccrimmon/scs-teamtheir own version, first seen Oct 11, 2026
- astubenbord/paperless-mobiletheir own version, first seen Oct 8, 2026
Other versions10 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 10
- remotion-dev/remotion★ 72ksame name
- astubenbord/paperless-mobile★ 1.5ksame name
- buildomator/buildomator★ 102same name
- bmtrnavsky/disciplined-vibe-coding★ 15same name
- robmclarty/trellis★ 2same name
- tim-mccrimmon/scs-team★ 1same name
- kdrezo/claude-skills★ 0same name
- kellymears/agents★ 0same name
- robmclarty/trailhead★ 0same name
- sector137/crew★ 0same name
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.
The file
We split this skill into the rules it gives an agent
4 rules. 0 are common, 2 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 9 edited versions we read keep these.
2
Distinctive
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
- Very specific: line 38
When the semantic table is ambiguous, fall back to the commit's [<type>] prefix:
- Very specific: line 48
Always read the commit body (and the diff if needed) before classifying — a [refactor] or [fix] subject can hide a changed default, a …
- Distinctive: line 108
Create the annotated tag at the chosen commit:
- Distinctive: line 121
Do not push automatically.
“Common” is measured: kept by at least 6 in 10 of the 9 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.
Files
Version
This project's version-tag rules are defined in PROJECT.md → "Names" and "Conventions → Version tags". Tags are the source of truth for versions: git describe --tags --candidates=100 --match='v[0-9]*' --abbrev=4 derives the version of any commit. No version file exists to bump; the release pipeline builds the version from the tag into the image (LOUPE_VERSION).
A pushed tag is the release: .github/workflows/release.yml builds and publishes ghcr.io/coreprocess/loupe-mcp:<major>.<minor>.<patch> and :<major>.<minor>. Projects then pick it up by changing the pinned image version in their infrastructure code.
Format
Tags MUST match ^v[0-9]+\.[0-9]+\.[0-9]+$ — three numeric components, prefixed with v. PROJECT.md allows the broader glob v[0-9]*; the strict three-segment form is the convention enforced here. Tags are annotated (git tag -a), never lightweight, so they carry a message and a timestamp.
The public contract
Loupe is consumed by deployments that pin an image version and by agents that call its tools. Its public contract is:
- Configuration: environment variable names, accepted values and defaults (
docs/configuration.md). - Tools: tool names, input parameters, and the shape of their responses (
submit,get_job,read_result, …), including the quality levels. - Result formats: the manifest, the result file layout and page markup (
docs/CONCEPT.md§2, §6), the upload and download URL schemes and their responses. - Terraform module: input variables and outputs (
terraform/). - Accepted inputs: a file type or name that was accepted before but is refused now is a contract change for its users, even when it is the right change.
Deciding the bump level
Pick the highest applicable level from the table. If any commit since the last tag qualifies for major, the release is major, even if other commits in the range are minor or patch.
| Level | Bump from vX.Y.Z | Use when at least one commit since the last tag... |
major | v(X+1).0.0 | Breaks the public contract: a removed or renamed environment variable, a changed default that alters behavior, a removed or renamed tool or parameter, an incompatible change to the manifest or result format, a removed Terraform variable or output, or an input type that is no longer accepted. |
minor | vX.(Y+1).0 | Adds something without breaking existing usage: a new input type, a new tool or optional parameter, a new optional environment variable, a new Terraform input with a default, a new field in a response. |
patch | vX.Y.(Z+1) | Backward-compatible polish only: bug fixes, upload-check fixes that close a gap without refusing legitimate files, internal refactors, dependency bumps, build/CI changes, doc edits, repo hygiene. |
Mapping by commit type (fallback heuristic)
When the semantic table is ambiguous, fall back to the commit's [<type>] prefix:
| Commit type(s) in the range | Default level |
[feature] introducing a breaking change | major |
[feature] (additive) | minor |
[refactor] that changes a public contract | major |
[refactor] (internal only) | patch |
[fix] / [build] / [ci] / [docs] / [chore] only | patch |
Always read the commit body (and the diff if needed) before classifying — a [refactor] or [fix] subject can hide a changed default, a renamed variable or a stricter upload check.
Pre-1.0 mode
Apply this section whenever no tags exist yet or the latest tag's major is 0 (i.e. it matches v0.*):
- The first tag is
v0.1.0. - A
major-class change bumps the minor segment instead:v0.(Y+1).0. - A
minor-class change bumps the patch segment:v0.Y.(Z+1). patch-class changes still bump the patch segment.- Bump to
v1.0.0only when the maintainer explicitly declares the system stable.
Once v1.0.0 exists, use the standard table above without adjustment.
Workflow
Confirm the target commit is on
main's canonical history (HEAD by default):git merge-base --is-ancestor "$COMMIT" main && echo "on main"Confirm CI passed for the target commit (both the
checkandintegrationjobs):gh run list --commit "$(git rev-parse "$COMMIT")" --workflow CI --json conclusion,statusFind the last release tag, if any:
git describe --tags --candidates=100 --match='v[0-9]*' --abbrev=0 2>/dev/nullList the commits in scope. Read both subjects and bodies:
git log "$LAST_TAG"..HEAD --no-merges # if a tag exists git log --no-merges # first releaseInspect individual diffs when needed:
git show <sha>. For the contract, diff the documents directly:git diff "$LAST_TAG"..HEAD -- docs/configuration.md terraform/variables.tf terraform/outputs.tf src/tools/ src/results/types.ts.- Classify each commit using the semantic table; fall back to the type heuristic if unclear. Apply pre-1.0 mode if it applies.
Compute the new version. Verify the tag is unused:
git rev-parse --verify "refs/tags/vX.Y.Z" 2>/dev/null && echo "EXISTS"Present the maintainer with:
- the previous tag (or "first release"),
- the commits being released,
- the chosen bump level and one-sentence rationale,
- for a
major-class change: what consumers must adapt (configuration, Terraform inputs, tool usage), - the proposed new tag.
Wait for explicit confirmation before tagging —
PROJECT.mdrequires tags to be created manually by the maintainer.Create the annotated tag at the chosen commit:
git tag -a vX.Y.Z -m "Release vX.Y.Z" "$COMMIT" # omit "$COMMIT" to tag HEADVerify with
git describe:git describe --tags --candidates=100 --match='v[0-9]*' --abbrev=4 "$COMMIT" # expected: vX.Y.Z (no -N-g<sha> suffix means the commit is exactly tagged)Do not push automatically. Show the maintainer the command instead:
git push origin vX.Y.ZPushing the tag starts the release pipeline; the image appears at
ghcr.io/coreprocess/loupe-mcp:X.Y.Zwhen it succeeds.
Pre-tag checklist
- Tag matches
^v[0-9]+\.[0-9]+\.[0-9]+$. - Tag does not already exist locally.
- Target commit is on
main's canonical history. - CI passed for the target commit.
- Bump level matches the highest-applicable change since the last tag.
- Pre-1.0 mode applied if the current major is
0(or if no prior tag exists). - Tag is annotated (
git tag -a), with a non-empty message and no AI attribution. - Maintainer has confirmed the proposal.
Common mistakes to avoid
- Tagging a branch tip instead of a commit on
main. Tags must live onmain's canonical history. - Lightweight tags (
git tag vX.Y.Zwithout-a). Always use annotated tags. - Bumping the major segment while pre-1.0. Apply the pre-1.0 shift instead.
- Editing a version number in a file. There is none to edit; the tag is the version.
- Re-tagging an existing commit because of a wrong version. Delete the local tag (
git tag -d vX.Y.Z) and retag; if it was already pushed, the image is already published, so release a new version instead of moving the tag. - Pushing the tag in the same step as creating it. Confirmation and push are explicitly the maintainer's call.
- Inferring a bump level from subjects alone. Read bodies and diffs.
Source of truth
PROJECT.md → "Names" (tag pattern) and "Conventions → Version tags" (discovery command, release pipeline) are authoritative for the format and mechanism. The major / minor / patch semantics above are defined by this skill; if PROJECT.md later specifies them, PROJECT.md wins and this skill should be updated to match.
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
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.

