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.
git clone --depth 1 https://github.com/marcoemrich/mad-tdd-mob-ai-drivenWrote 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/marcoemrich/mad-tdd-mob-ai-driven/simple-design)<a href="https://agentmods.dev/rules/marcoemrich/mad-tdd-mob-ai-driven/simple-design"><img src="https://agentmods.dev/badge/rules/marcoemrich/mad-tdd-mob-ai-driven/simple-design.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.00992 | $0.00992 |
| Opus 5 | $0.00496 | $0.00496 |
| Sonnet 5 | $0.00198 | $0.00198 |
| Haiku 4.5 | $0.00099 | $0.00099 |
Grade A, and why
simple-design 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 7d 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 — 134 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Rules of Simple Design
Description
Kent Beck's Four Rules of Simple Design - fundamental principles for writing clean, maintainable code. These rules are applied in priority order and work synergistically with TDD.
The Four Rules (in priority order)
1. Tests Pass
- All tests must pass
- The code must work correctly
- This is the highest priority rule - never compromise working code
- If tests don't pass, fix them before applying other rules
2. Reveals Intent
- Code should clearly express what it does
- Use meaningful names for variables, functions, and classes
- Structure code to be self-documenting
- Prefer explicit over clever code
- Comments should explain "why", not "what"
3. No Duplication (DRY)
- Don't repeat yourself
- Extract common functionality into reusable components
- Look for both obvious duplication and conceptual duplication
- Knowledge should have a single, unambiguous representation
4. Fewest Elements
- Minimize the number of classes, methods, and other code elements
- Remove unnecessary abstractions
- Keep it simple - don't over-engineer
- Only add complexity when it serves a clear purpose
Application Guidelines
Priority Order
- Apply rules in order: 1 → 2 → 3 → 4
- Never violate a higher-priority rule to satisfy a lower-priority one
- If rule #3 conflicts with rule #2, choose clarity over DRY
Integration with TDD
- Red Phase: Focus on rule #1 (make tests pass)
- Green Phase: Still focus on rule #1 (minimal working code)
- Refactor Phase: Apply rules #2, #3, #4 while preserving #1
Examples
Rule 2: Reveals Intent
// Bad
function calc(w: string[]): boolean {
return w.every((x, i) => i === 0 || diff(x, w[i-1]) === 1);
}
// Good
function isValidWordChain(words: string[]): boolean {
return words.every((word, index) =>
index === 0 || differsByOneLetter(word, words[index - 1])
);
}
Rule 3: No Duplication
// Bad
function differsByOneLetter(word1: string, word2: string): boolean {
if (word1.length !== word2.length) return false;
let differences = 0;
for (let i = 0; i < word1.length; i++) {
if (word1[i] !== word2[i]) differences++;
}
return differences === 1;
}
function isAdjacent(a: string, b: string): boolean {
if (a.length !== b.length) return false;
let diffs = 0;
for (let i = 0; i < a.length; i++) {
if (a[i] !== b[i]) diffs++;
}
return diffs === 1;
}
// Good - Extract common logic
function countDifferences(word1: string, word2: string): number {
if (word1.length !== word2.length) return Infinity;
return word1.split('').reduce((count, char, i) =>
char !== word2[i] ? count + 1 : count, 0
);
}
function differsByOneLetter(word1: string, word2: string): boolean {
return countDifferences(word1, word2) === 1;
}
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.
- 7d ago First seen · 134 lines · 992 tokens per session scan A 3c0ec83baadb
simple-design is a cursor rule published in the GitHub repository marcoemrich/mad-tdd-mob-ai-driven (33 stars, last pushed 10mo ago), licensed MIT. It adds 992 tokens to every session, about $0.0050 per session on Opus 5. 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-30.
Other cursor rules, from other repositories
qa-review
QA verification protocol — apply when reviewing completed work.
refactoring
Refactoring: systematic approach, extract/inline, guard clauses, early returns.
safeword-tdd-review
Step-aware quality review at TDD phase boundaries — review test quality after RED, implementation correctness after GREEN, completed scenario after REFACTOR. Use when user says 'review my test', 'review my implementation', 'is this GREEN solid?', or just finished a TDD step. (Note: Claude Code triggers this…
ponytail
Ponytail, lazy senior dev mode. Always pick the simplest solution that works.
angular-20
This rule provides comprehensive best practices and coding standards for Angular development, focusing on modern TypeScript, standalone components, signals, and performance optimizations.
dev-standard
Apache Superset development standards and guidelines for Cursor IDE.