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/backendforth/next-sanity-starter/modulesgit clone --depth 1 https://github.com/backendforth/next-sanity-starterWhat 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 | $0.00000 | $0.00521 |
| Opus 5 | $0.00000 | $0.00260 |
| Sonnet 5 | $0.00000 | $0.00104 |
| Haiku 4.5 | $0.00000 | $0.00052 |
Grade A, and why
modules 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 yesterday.
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.
What it actually says
A module is a paired Sanity object (module.<id>) plus a React component (Module<Name>.tsx). Adding, renaming, or removing one is atomic across 8 files:
studio/schemas/objects/modules/module<Name>.ts—defineType,name: "module.<id>", fields,preview, optionalicon.studio/schemas/index.ts— import + add toschemaTypes.studio/schemas/objects/editors/richTextMedia.ts— append{ type: "module.<id>" }toof.studio/schemas/fields/modulesArrayField.ts— append{ type: "module.<id>" }tomoduleTypes.web/src/components/modules/Module<Name>.tsx— accepts{ data, locale, siteLocale }, setsdata-sanityattrs.web/src/components/modules/index.ts— re-export from barrel and register inModulesRenderer.tsx.web/sanity/queries/components/modules/<name>.ts— GROQ projection, full i18n arrays, re-export fromindex.ts.web/sanity/types/modules/<name>.ts— hand-maintained TS shape, re-export fromindex.ts.
After steps 1–4 land, run pnpm studio:generate and commit the gen artifacts.
DO:
- Ship all 8 in a single commit.
- Reuse
media.image,media.video,media.videoLoopfromstudio/schemas/objects/media/. - Project i18n fields as full
{ _key, _type, language, value }arrays. - Read i18n via
pickLocalizedString/parseLocalizedText.
DON'T:
- Land schema without component (or vice versa).
- Add
{ type: "module.<id>" }to only one ofrichTextMedia.ts/modulesArrayField.ts. - Index i18n arrays directly (
title[0].value). coalesce(field[language==$locale].value, ...)in GROQ.- Hand-edit
studio/sanity.types.gen.tsorstudio/schema.json.
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.
- yesterday First seen · 37 lines · 0 tokens per session scan A 9cf5b06ff76b
modules is a cursor rule published in the GitHub repository backendforth/next-sanity-starter (4 stars, last pushed 25d ago), licensed ISC. It costs nothing until one of its globs matches a file; then it loads 521 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-08-31.
Other cursor rules, from other repositories
cursorrules
Cursor rule "cursorrules" from KyaniteLabs/DialectOS, covering kyanitelabs — ai agent instructions, organization, code quality, security and testing.
project-structure
Project structure, conventions, and where things live.
context
Cursor rule "context" from Takt365/Takt.Wpf, covering 上下文管理规范, 上下文分类, 文件引用规范, 上下文完整性检查 and 上下文更新规范.
naming
Cursor rule "naming" from Takt365/Takt.Wpf, covering 命名规范, 类命名, 接口命名, 方法命名 and 文件命名.
prompt
Cursor rule "prompt" from Takt365/Takt.Wpf, covering 提示语编写规范, 标准结构, 任务类型标签, 完整示例 and 禁止事项.
git-workflow
Git branching and PR workflow.