Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add rules/louisbrulenaudet/monorepo-template/releasegit clone --depth 1 https://github.com/louisbrulenaudet/monorepo-templateWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/rules/louisbrulenaudet/monorepo-template/release)<a href="https://agentmods.dev/rules/louisbrulenaudet/monorepo-template/release"><img src="https://agentmods.dev/badge/rules/louisbrulenaudet/monorepo-template/release.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00000 | $0.01528 |
| Opus 5 | $0.00000 | $0.00764 |
| Sonnet 5 | $0.00000 | $0.00306 |
| Haiku 4.5 | $0.00000 | $0.00153 |
Grade A, and why
release scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 51 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Releases
Changesets computes versions; the pipeline is .github/workflows/release.yml. Read it for the job list; long step bodies live as bash-invoked scripts under .github/actions/ (convention: ops/ci.md). Human-facing "how do I" lives in .changeset/README.md; CI internals in ops/ci.md; the deploy in ops/cd.md.
Nothing is published to npm. Every workspace is private: true, no publishConfig, no .npmrc. A release is a git tag plus a Cloudflare Workers promote.
State machine
push to main ──► Release (concurrency release-main, queue: max, never cancelled)
├─ gate ALWAYS. uses ci.yml (full graph, not --affected)
├─ select-mode 'version' | 'none' ('publish' is unreachable here)
├─ mode == 'version' → version → open/update the "chore: release" PR [END]
└─ mode != 'version' → tag (needs gate) → created? → deploy → uses cd.yml
Invariants
gateruns on every push to main, in both modes. While a release PR is open the mode is alwaysversion, so a gate placed only on the release path would leavemainunvalidated for that PR's whole life. Do not move it under themode != 'version'branch.- The tag is the idempotency key.
create-release-tagskips whenvX.Y.Zexists and reportscreated=false;deployis gated oncreated == 'true', so re-runningReleasenever re-deploys. The existence probe is three-way: 2xx skips, 404 creates, and any other probe failure fails the job rather than guessing. To redeploy on purpose usecd.yml'sworkflow_dispatchwith the tag. mode != 'version', notmode == 'publish'.select-modereturnspublishonly when publishable packages exist, and all of ours are private, sopublishis unreachable and the equality test would never fire. This condition is load-bearing.privatePackages.tag: falseis deliberate.changeset git-tag(the v3 name ofchangeset tag) would emit one<app>@X.Y.Zper app; the deploy keys on one sharedvX.Y.Z, which is why the tag is cut bycreate-release-taginstead.fixed: [["*"]]is the app set, and it rests on apps being unscoped. Changesets expands everyfixedentry with picomatch against package names, and*does not cross/- so the group is exactly the unscoped workspaces (the apps) and never an@repo/*package. A new app joins the shared version by existing. Nothing machine-checks the convention underneath -.syncpackrc.json's@repo/**group governs dependency specifiers, not workspace names, andpnpm boundariesnever looks at a name - so it is kept by hand: never give an app a scoped name, and never add an unscoped package underpackages/. An unscoped package there would silently join the release group and start bumping to the app version.baseBranch: "main"andprivatePackages.version: trueare load-bearing. The documented defaults are"master"and{version: false, tag: false}— the latter would version nothing at all here.- The version PR branch is force-pushed, not accumulated. Every push to
mainresetschangeset-release/mainfrom the tip, re-runschangeset version, and force-pushes one commit. It can never be behindmainor conflict with it, and manual edits to it are destroyed. Verified on PR #19: base tracked the newestmainSHA with a single commit. - Tags created with
GITHUB_TOKENdo not trigger workflows. This is whycd.ymlhas nopush: tags:trigger andrelease.ymlcalls it directly. Do not "restore" a tag trigger; it is dead code (GitHubGITHUB_TOKENdocs; changesets/action#669). queue: max, not the default. Withqueue: single, a third push replaces the pending run and that release is silently dropped.- CI is skipped on
changeset-release/**head branches via a job-levelif— apull_requestbranches-ignorefilters the base branch and cannot express this. The release commit is validated bygateon the merge commit instead, so no branch-protection exemption is needed.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago First seen · 51 lines · 0 tokens per session scan A 02d8cc5e7d6a
release is a cursor rule published in the GitHub repository louisbrulenaudet/monorepo-template (19 stars, last pushed 4d ago), licensed Apache-2.0. It costs nothing until one of its globs matches a file; then it loads 1,528 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
Other cursor rules, from other repositories
mcp-releasing
Steps and procedures for releasing MCP (Model Context Protocol) servers as NPM packages.
changelog-generator-manual
This rule generates a comprehensive changelog.md file by analyzing all git tags and commits, creating a chronological record of all project changes with proper semantic versioning structure. The changelog.md file is stored at the root of the project.
release-commit-analysis-auto
This rule analyzes commits to determine if they should trigger a version bump. It categorizes conventional and non-conventional commits into Features, Bug Fixes, Breaking Changes, Documentation, and Other. It uses intelligent keyword matching for non-conventional commits and analyzes file changes to help categorize…
release-git-tags-auto
This rule checks for existing tags before creating new ones. It also offers to push the tag to the remote repository. It runs when users request release creation, version bumping, or package publishing.
release-validation-auto
This rule validates release prerequisites including branch naming conventions and package.json structure. It runs when users request release creation, version bumping, or package publishing. The rule ensures releases only occur from appropriate branches (release/, hotfix/, fix/) and validates package.json exists with…
release-version-bump-auto
Apply when the user is creating or preparing a release, version bump, tag, publish, or deploy. Validates semantic version bumps against change analysis (breaking/feat/fix), blocks inappropriate bumps, and guides major/minor/patch or custom version choice. Use for release workflows, package versioning, and…