Borrowing it
Nothing to install: this file belongs to robconery/cassini-workshop. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/robconery/cassini-workshop/main/.claude/skills/design-principles/SKILL.mdgit clone --depth 1 https://github.com/robconery/cassini-workshopWrote 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/skills/robconery/cassini-workshop/design-principles)<a href="https://agentmods.dev/skills/robconery/cassini-workshop/design-principles"><img src="https://agentmods.dev/badge/skills/robconery/cassini-workshop/design-principles/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/robconery/cassini-workshop/design-principles"><img src="https://agentmods.dev/badge/skills/robconery/cassini-workshop/design-principles.svg" alt="Reviewed on agentmods" width="80" 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.00143 | $0.01656 |
| Opus 5.5 | $0.00057 | $0.00662 |
| Sonnet 5.5 | $0.00029 | $0.00331 |
| Haiku 4.5 | $0.00014 | $0.00166 |
Grade A, and why
design-principles 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 2mo 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.
This is a copy
100% identical to design-principles — 0 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.
How it starts
The opening of the file, as written. The whole thing — 115 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Design Principles in TypeScript (beyond SOLID & GoF)
The design heuristics that predate and underpin SOLID: how to measure and reduce coupling, maximize cohesion, avoid premature/false abstraction, and keep objects in charge of their own data — adapted to idiomatic TypeScript.
🎯 Why: Design for Change
The goal of writing software is to be able to change it safely. Coupling is the cost of the next change; cohesion is its locality. Tell-Don't-Ask, Demeter, encapsulation, composition-over-inheritance — all of these exist to shrink the blast radius of an edit. DRY and YAGNI cut both ways: too little abstraction and a change ripples; too much and the seam is in the wrong place. Pick the abstraction that makes the next diff small.
Scope — how this differs from the other two skills
solid-principlesowns SRP, OCP, LSP, ISP, DIP. This skill does not re-explain those. Where a principle here is adjacent (Separation of Concerns ≈ SRP at the architecture level; Program-to-an-Interface ≈ DIP/ISP), the reference file states the distinction and defers tosolid-principles.gof-patternsowns the 23 named patterns. This skill explains the forces (coupling, cohesion, Tell-Don't-Ask) that motivate those patterns but never re-documents a pattern. "Composition over inheritance" here is the general principle; the patterns that apply it (Strategy, Decorator) live ingof-patterns.
How to use this skill
- Match the symptom in the decision guide to a principle.
- Open
references/principles.mdfor that principle's full before/after TypeScript example and its "when this is over-engineering" note. - Apply the smallest change that removes real pain. These are heuristics that trade off against each other (DRY vs. coupling, YAGNI vs. extensibility) — resolve the conflict in favor of the code that is cheapest to change now.
Reference file
references/principles.md— all principles with intent, a smell, a bad example, a refactor, TypeScript-specific notes, and when not to apply.
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
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.
- 2mo ago First seen · 115 lines · 143 tokens per session scan A a29b8060cdca
design-principles is a skill published in the GitHub repository robconery/cassini-workshop (1 stars, last pushed 4mo ago), licensed MIT. It adds 143 tokens to every session and 1,656 once invoked, about $0.0006 per session on Opus 5.5. A static security scan graded it A with 0 findings. It is 100% identical to design-principles, differing in 0 lines, and is treated as a copy.
Other skills, from other repositories
frontmcp-setup
Use when starting, scaffolding, or organizing a FrontMCP project. Covers creating a new project (CLI scaffold or manual) for Node, Vercel, and other targets; standalone versus Nx-monorepo layout, naming conventions, generators, and dependency rules; composing multiple @App classes, ESM packages, and remote MCP servers…
edge-commerce
Reduce latency globally by running geo-routing, A/B tests, and personalization logic at the network edge using Cloudflare Workers or Vercel.
review-stack
Stack review of one or more third-party tools (OXC, TanStack, Vite, cf, Sentry, pnpm, Claude Code...) against current official best practices, or of what a dependency bump brings (bumped): one parallel subagent per tool, verified findings, one consolidated plan in chat. USE WHEN: user runs /review-stack or explicitly…
spatialite
Use when adding spatial SQL to a single-file SQLite database with SpatiaLite — modspatialite loading, InitSpatialMetaData, AddGeometryColumn, CreateSpatialIndex/MbrWithin, STTransform and GEOS predicates, spatialitetool or ogr2ogr import of Shapefile, and GPKG fallback; also for 'no such module: modspatialite', 'no…
research-brief
Produce a concise source-backed research brief with tradeoffs and confidence.
cf
USE WHEN: running, finding, or troubleshooting Cloudflare CLI (cf) commands in this repo - dev servers, builds and their Build Output, Env types, startup profiling, production profiles, Workers Issues, and telemetry, local KV/D1/R2 data, the commands that still need Wrangler, or the cf equivalent of a Wrangler habit.…