12-clean-code-architecture

12-clean-code-architecture is a cursor rule for Cursor from MarcoPorcellato/matryca-plumber. It costs 0 tokens per session (847 once invoked), scanned A, original, Apache-2.0.

A set of project rules for keeping code responsibilities separate and dependencies flowing toward the core domain. Clean Architecture is a way to organize code so business logic is less tied to interfaces or infrastructure.

In plain words
What is it for?
It guides changes to source structure, module boundaries, configuration parsing, prompts, APIs, command-line tools, and refactors in the Matryca Plumber project.
Why use it?
It prevents duplicate write paths, tangled modules, oversized interfaces, and configuration or prompt logic in the wrong layer.

Cursor rule for Cursor

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.

agentmods
npx agentmods add rules/marcoporcellato/matryca-plumber/12-clean-code-architecture
Clone the repo
git clone --depth 1 https://github.com/MarcoPorcellato/matryca-plumber

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 12-clean-code-architecture

README.md
[![agentmods](https://agentmods.dev/badge/rules/marcoporcellato/matryca-plumber/12-clean-code-architecture.svg)](https://agentmods.dev/rules/marcoporcellato/matryca-plumber/12-clean-code-architecture)
Your own site
<a href="https://agentmods.dev/rules/marcoporcellato/matryca-plumber/12-clean-code-architecture"><img src="https://agentmods.dev/badge/rules/marcoporcellato/matryca-plumber/12-clean-code-architecture.svg" alt="Measured on agentmods" height="20"></a>
Per session 0 Nothing until a file matches its globs; then the whole rule loads.
When invoked 847 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found 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 $0.00000 $0.00847
Opus 5 $0.00000 $0.00424
Sonnet 5 $0.00000 $0.00169
Haiku 4.5 $0.00000 $0.00085

Measured 4d ago against content hash 2388935a50a5, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

12-clean-code-architecture 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 4d 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.

.cursor/rules/12-clean-code-architecture.mdc · 57 lines

How it starts

The opening of the file, as written. The whole thing — 57 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Clean Code & Clean Architecture (Matryca Plumber)

Load when editing src/ structure, module boundaries, config parsing, or contributor-facing refactors.

SSOT: docs/CLEAN_CODE_ARCHITECTURE.md. Prompt-specific tiers: docs/PROMPT_ARCHITECTURE.md.

Rule routing: Complements 00-karpathy-agent-behavior.mdc (minimal diff), 02-python-standards.mdc, 04-spatial-parser.mdc.

Dependency Rule (inward only)

  • src/graph/ is domain — must not import agent, daemon, or rag. CI: tests/test_graph_layer_boundary.py.
  • Surfaces (MCP, CLI, FastAPI) delegate to graph_dispatch / graph/* — no second write path.
  • Tier-1 prompts: domain */prompts.py imports only src/agent/prompts/core.py.

SOLID (practical)

Principle Do
SRP One reason to change per module; no new inline system strings in llm_client.py
DIP Inject config via PlumberLintConfig / load_plumber_lint_config_from_environ(env); use utils/env_parse in graph code
ISP Prefer narrow protocols (HarvestLLM) over fat god-interfaces

Clean Code

  • Fat modules, thin edges — logic in graph/, plumber_modules/; @mcp.tool() and CLI stay delegates.
  • Meaningful namesStrEnum / Literal over magic strings when values cross module boundaries.
  • Tests as spec — extend pytest when behavior is non-obvious; no # type: ignore in src/.
  • Boy Scout Rule — within PR scope only: e.g. migrate one stray os.environ block to env_parse when you already touch the file.

Config & env

v1 — do NOT do in a scoped PR

  • Introduce domain/ports.py or full hexagonal split (v2 #17, #20).
  • Refactor entire graph_dispatch or maintenance_daemon (#59, #58) unless the issue explicitly scopes a slice.
  • Global Result[T, E] error-protocol rewrite.

Read the full file on GitHub · 57 lines

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. 4d ago First seen · 57 lines · 0 tokens per session scan A 2388935a50a5

Subscribe to this mod's changes

12-clean-code-architecture is a cursor rule published in the GitHub repository MarcoPorcellato/matryca-plumber (96 stars, last pushed yesterday), licensed Apache-2.0. It costs nothing until one of its globs matches a file; then it loads 847 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-30.