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/gof-patterns/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/gof-patterns)<a href="https://agentmods.dev/skills/robconery/cassini-workshop/gof-patterns"><img src="https://agentmods.dev/badge/skills/robconery/cassini-workshop/gof-patterns/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/gof-patterns"><img src="https://agentmods.dev/badge/skills/robconery/cassini-workshop/gof-patterns.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.00079 | $0.01015 |
| Opus 5 | $0.00039 | $0.00508 |
| Sonnet 5 | $0.00016 | $0.00203 |
| Haiku 4.5 | $0.00008 | $0.00102 |
Grade A, and why
gof-patterns 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 9d 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.
Copies of this mod
2 near-identical copies found in the catalogue:
- gof-patterns — 100% identical, 0 lines differ
- gof-patterns — 100% identical, 0 lines differ
How it starts
The opening of the file, as written. The whole thing — 89 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Gang of Four Patterns in TypeScript
The 23 classic design patterns from Design Patterns: Elements of Reusable Object-Oriented Software (Gamma, Helm, Johnson, Vlissides), adapted to idiomatic TypeScript.
🎯 Why: Design for Change
The goal of writing software is to be able to change it safely. Every GoF pattern is a named seam that isolates one axis of change: Strategy hides algorithm choice, Adapter hides a vendor swap, Observer hides who's listening, Factory hides what's instantiated. Reach for a pattern when you have a demonstrated axis of change to absorb. A pattern installed speculatively adds coupling without buying any change-safety.
How to use this skill
- Identify the kind of problem from the decision guide below.
- Open the matching reference file for the full TypeScript example and the "when to use / when not to" notes.
- Prefer the simplest construct that solves the problem. In TypeScript, a union type, a closure, or a plain function often beats a class-heavy pattern. Reach for a GoF pattern when the indirection earns its keep.
Reference files
references/creational.md— object creation: Factory Method, Abstract Factory, Builder, Prototype, Singleton.references/structural.md— object composition: Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy.references/behavioral.md— object interaction & responsibility: Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor.
Decision guide — symptom → pattern
| You are trying to… | Consider | Category |
|---|---|---|
| Create objects without naming the concrete class | Factory Method, Abstract Factory | Creational |
| Build a complex object step by step | Builder | Creational |
| Copy an existing object | Prototype | Creational |
| Guarantee exactly one instance | Singleton (often a module instead) | Creational |
| Make an incompatible interface usable | Adapter | Structural |
| Vary abstraction and implementation independently | Bridge | Structural |
| Treat individual objects and groups uniformly | Composite | Structural |
| Add behavior to objects without subclassing | Decorator | Structural |
| Hide a complex subsystem behind one interface | Facade | Structural |
| Share many fine-grained objects cheaply | Flyweight | Structural |
| Control access to an object (lazy, remote, guarded) | Proxy | Structural |
| Pass a request along a series of handlers | Chain of Responsibility | Behavioral |
| Encapsulate a request as an object (undo, queue) | Command | Behavioral |
| Evaluate sentences in a small language | Interpreter | Behavioral |
| Traverse a collection without exposing its structure | Iterator | Behavioral |
| Reduce many-to-many object coupling | Mediator | Behavioral |
| Capture and restore object state | Memento | Behavioral |
| Notify dependents of state changes | Observer | Behavioral |
| Change behavior when internal state changes | State | Behavioral |
| Swap one of several algorithms at runtime | Strategy | Behavioral |
| Fix an algorithm skeleton, vary steps | Template Method | Behavioral |
| Add operations to a class hierarchy without editing it | Visitor | Behavioral |
What ships with it
3 files 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.
- 9d ago First seen · 89 lines · 79 tokens per session scan A 368a9c5885cb
gof-patterns is a skill published in the GitHub repository robconery/cassini-workshop (1 stars, last pushed 2mo ago), licensed MIT. It adds 79 tokens to every session and 1,015 once invoked, about $0.0004 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-31.
Other skills, from other repositories
github-workflow
A GitHub collaboration guide for managing pull requests, issues, automated checks, code reviews, and files in remote repositories.
incident-review
Summarize an incident with timeline, likely cause, impact, and follow-up actions.
review-architecture
Architecture-focused monorepo review. USE WHEN: user runs /review-architecture or explicitly asks for this review. DO NOT USE WHEN: implementing features or fixing bugs unless the user asked for a review.
review-code-quality
Lint, style, maintainability review. USE WHEN: user runs /review-code-quality or explicitly asks for this review. DO NOT USE WHEN: implementing features or fixing bugs unless the user asked for a review.
review-configuration
Config, env, wrangler review. USE WHEN: user runs /review-configuration or explicitly asks for this review. DO NOT USE WHEN: implementing features or fixing bugs unless the user asked for a review.
review
Full multi-dimension code/PR/docs review → structured plan. USE WHEN: user runs /review or explicitly asks for this review. DO NOT USE WHEN: implementing features or fixing bugs unless the user asked for a review.