ponytail

ponytail is a cursor rule for Cursor from s0vers/next-app-i18n-starter. It costs 578 tokens per session, scanned A, a copy of ponytail, MIT.

A coding rule that favors the simplest working solution and avoiding unnecessary code. It asks whether a feature is needed, already exists, or can be handled by the standard library or an installed dependency.

In plain words
What is it for?
Use it as a general rule while investigating problems and making code changes. It guides reuse, minimal diffs, dependency choices, and the scope of bug fixes.
Why use it?
It helps prevent overengineering, duplicated helpers, unnecessary dependencies, and unrelated refactoring. It also directs bug fixes toward the shared root cause rather than only one symptom.

Cursor rule for Cursor

Written for Cursor: installed under .cursor/.

Good fit Use it as a general rule while investigating problems and making code changes. It guides reuse, minimal diffs, dependency choices, and the scope of bug fixes.

Compare 6 cursor rules from other repositories ↓
Install with agentmods
npx agentmods add rules/s0vers/next-app-i18n-starter/ponytail
Install

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.

Clone the repo
git clone --depth 1 https://github.com/s0vers/next-app-i18n-starter

Made for: Cursor.

Wrote 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.

agentmods badge for ponytail

README.md
[![agentmods](https://agentmods.dev/badge/rules/s0vers/next-app-i18n-starter/ponytail.svg)](https://agentmods.dev/rules/s0vers/next-app-i18n-starter/ponytail)
Your own site
<a href="https://agentmods.dev/rules/s0vers/next-app-i18n-starter/ponytail"><img src="https://agentmods.dev/badge/rules/s0vers/next-app-i18n-starter/ponytail.svg" alt="Measured on agentmods" height="20"></a>
Per session 578 This file is loaded in full into every session.
When invoked 578 The same file — it is already loaded in full.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin 91% copy Near-identical to another mod in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5.1 $0.00578 $0.00578
Opus 5 $0.00289 $0.00289
Sonnet 5 $0.00116 $0.00116
Haiku 4.5 $0.00058 $0.00058

Measured 8d ago against content hash 46087e2f8a23, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-07, from the pricing page.

Security

Grade A, and why

ponytail 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 8d 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.

Origin

This is a copy

91% identical to ponytail — 3 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.

.cursor/rules/ponytail.mdc · 36 lines

What it actually says

Ponytail, lazy senior dev mode

You are a lazy senior developer. Lazy means efficient, not careless. The best code is the code never written.

Before writing any code, stop at the first rung that holds:

  1. Does this need to be built at all? (YAGNI)
  2. Does it already exist in this codebase? Reuse the helper, util, or pattern that's already here, don't re-write it.
  3. Does the standard library already do this? Use it.
  4. Does a native platform feature cover it? Use it.
  5. Does an already-installed dependency solve it? Use it.
  6. Can this be one line? Make it one line.
  7. Only then: write the minimum code that works.

The ladder runs after you understand the problem, not instead of it: read the task and the code it touches, trace the real flow end to end, then climb.

Bug fix = root cause, not symptom: a report names a symptom. Grep every caller of the function you touch and fix the shared function once — one guard there is a smaller diff than one per caller, and patching only the path the ticket names leaves a sibling caller still broken.

Rules:

  • No abstractions that weren't explicitly requested.
  • No new dependency if it can be avoided.
  • No boilerplate nobody asked for.
  • Deletion over addition. Boring over clever. Fewest files possible.
  • Shortest working diff wins, but only once you understand the problem. The smallest change in the wrong place isn't lazy, it's a second bug.
  • Question complex requests: "Do you actually need X, or does Y cover it?"
  • Pick the edge-case-correct option when two stdlib approaches are the same size, lazy means less code, not the flimsier algorithm.
  • Mark intentional simplifications with a ponytail: comment. If the shortcut has a known ceiling (global lock, O(n²) scan, naive heuristic), the comment names the ceiling and the upgrade path.

Not lazy about: understanding the problem (read it fully and trace the real flow before picking a rung, a small diff you don't understand is just laziness dressed up as efficiency), input validation at trust boundaries, error handling that prevents data loss, security, accessibility, the calibration real hardware needs (the platform is never the spec ideal, a clock drifts, a sensor reads off), anything explicitly requested. Lazy code without its check is unfinished: non-trivial logic leaves ONE runnable check behind, the smallest thing that fails if the logic breaks (an assert-based demo/self-check or one small test file; no frameworks, no fixtures). Trivial one-liners need no test.

Changes

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.

  1. 8d ago First seen · 36 lines · 578 tokens per session scan A 46087e2f8a23

Subscribe to this mod's changes

ponytail is a cursor rule published in the GitHub repository s0vers/next-app-i18n-starter (64 stars, last pushed 2mo ago), licensed MIT. It adds 578 tokens to every session, about $0.0029 per session on Opus 5. A static security scan graded it A with 0 findings. It is 91% identical to ponytail, differing in 3 lines, and is treated as a copy.

Related

Other cursor rules, from other repositories

components

React component architecture for creating composable, accessible components with data attributes. Use when creating/updating composable components, not for higher-level feature/page components.

udecode/plate-playground-template · 31 tokens

react

React patterns with destructured props, compiler optimization, Effects, and Tailwind v4 syntax. ALWAYS use when using React.

udecode/plate-playground-template · 25 tokens

browser-debug-setup

One-time setup for a persistent debug browser on 127.0.0.1:9222 for dev-browser --connect. Use when browser work is needed but no reusable debug browser is running yet.

udecode/plate-playground-template · 43 tokens

dev-browser

Fallback browser automation with persistent Chrome state. Use only when Browser Use is unavailable or blocked.

udecode/plate-playground-template · 18 tokens

agent-browser-issue

Open a concise GitHub follow-up for reusable browser-use limitations. Use when browser automation is blocked by a likely tool-side issue that is worth fixing separately, especially for clicks, dropdowns, file inputs, focus traps, or other repeatable agent/browser failures.

udecode/plate-playground-template · 52 tokens

hard-cut

Remove a feature completely with no backward compatibility. Use when the user says "hard cut", "rip it out", "delete it", "unship", "kill this feature", or wants dead code removed instead of deprecated. Delete the surface, callers, tests, docs, comments, fallbacks, and stubs.

udecode/plate-playground-template · 64 tokens