Borrowing it
Nothing to install: this file belongs to robconery/kolea. 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/kolea/main/.claude/skills/gof-patterns/SKILL.mdgit clone --depth 1 https://github.com/robconery/koleaWrote 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/kolea/gof-patterns)<a href="https://agentmods.dev/skills/robconery/kolea/gof-patterns"><img src="https://agentmods.dev/badge/skills/robconery/kolea/gof-patterns.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.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 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.
This is a copy
100% identical to gof-patterns — 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 — 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.
- 7d ago First seen · 89 lines · 79 tokens per session scan A 368a9c5885cb
gof-patterns is a skill published in the GitHub repository robconery/kolea (1 stars, last pushed 8d 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. It is 100% identical to gof-patterns, differing in 0 lines, and is treated as a copy.
Other skills, from other repositories
add-export
Add a new subpath export to the @cyanheads/mcp-ts-core package. Use when creating a new public API surface that consumers import from a dedicated subpath (e.g., @cyanheads/mcp-ts-core/newutil).
novu-framework-integration
Build code-first notification workflows with @novu/framework. Use when defining workflows in TypeScript (Zod / JSON Schema / Class Validator), composing channel steps (email, SMS, push, chat, in-app) with action steps (delay, digest, custom), exposing Step Controls for non-technical teammates, rendering…
drizzle-orm
Use when modeling data or querying with Drizzle ORM in TypeScript — pgTable schema in .ts, type-safe select/insert/relational queries, drizzle-kit migrations. NOT Prisma Client or schema.prisma (that is prisma-orm), NOT ORM-agnostic migration strategy (that is db-migrations), NOT Postgres engine tuning or EXPLAIN…
hono-core
Hono ultrafast web framework fundamentals - routing, context, handlers, and response patterns for multi-runtime deployment.
review-typescript
TypeScript setup review (shared presets in packages/typescript-config, per-app tsconfigs, TS 7 readiness) against current official best practices. USE WHEN: user runs /review-typescript or explicitly asks for this review. DO NOT USE WHEN: reviewing app code, other dev dependencies, or implementing features.
wraps-workflows
Build email and SMS automation workflows using the @wraps.dev/client TypeScript DSL. Covers triggers, steps, branching, cascades, and the full defineWorkflow API.