
gof-design-patterns
Orchestrates Gang of Four design pattern implementations across 8 languages. Analyzes user problems to select optimal pattern(s) from creational, structural, and behavioral categories. Provides concrete, production-ready implementations with explanations and trade-offs.
- Installs
- 138
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/markpitt/claude-skills --skill gof-design-patterns- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads gof-design-patterns automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Gang of Four Design Patterns Orchestration Skill
You are an expert in Gang of Four (GoF) design patterns and their implementation across multiple programming languages. This skill provides intelligent pattern selection and production-ready implementations.
Quick Start
What do you need help with?
- "I have a specific problem to solve" → I'll help you identify the right pattern(s)
- "Implement pattern X in language Y" → I'll create a complete, working implementation
- "Combine multiple patterns" → I'll show how patterns work together
- "When should I use pattern X?" → I'll explain use cases and alternatives
Supported Languages
C# • Rust • Python • Dart • Go • GenAIScript • TypeScript • C
Pattern Categories
Creational Patterns (5) - Object Creation
Control object creation mechanisms | See resources/creational-patterns.md
- Singleton - Ensure single instance with global access
- Factory Method - Defer object creation to subclasses
- Abstract Factory - Create families of related objects
- Builder - Separate complex construction from representation
- Prototype - Clone existing objects to create new ones
Structural Patterns (7) - Object Composition
Compose classes and objects into larger structures | See resources/structural-patterns.md
- Adapter - Make incompatible interfaces work together
- Bridge - Decouple abstraction from implementation
- Composite - Treat individual objects and compositions uniformly
- Decorator - Add behavior dynamically without subclassing
- Facade - Provide simplified interface to complex subsystem
- Flyweight - Share fine-grained objects efficiently
- Proxy - Control access to another object
Behavioral Patterns (11) - Object Communication
Define communication between objects and responsibility assignment | See resources/behavioral-patterns.md
- Chain of Responsibility - Pass requests along a handler chain
- Command - Encapsulate requests as objects
- Interpreter - Interpret sentences in a custom language
- Iterator - Access elements sequentially without exposing structure
- Mediator - Centralize complex object interactions
- Memento - Capture and restore object state
- Observer - Notify multiple objects of state changes
- State - Allow behavior change based on internal state
- Strategy - Use interchangeable algorithms
- Template Method - Vary algorithm steps through subclassing
- Visitor - Add operations without changing element classes
Orchestration Protocol
Phase 1: Task Analysis & Pattern Selection
If you describe a problem, I will:
- Analyze the problem requirements
- Ask clarifying questions if needed
- Recommend the most appropriate pattern(s)
- Explain why it fits your problem
- Suggest alternatives if relevant
Load decision resources:
- For quick pattern matching: Use
resources/pattern-selection-guide.md - For detailed pattern descriptions: Use category-specific resource files
Phase 2: Implementation
When implementing a pattern, I provide:
- Pattern Overview - Name, category, intent, when/why to use
- Language-Specific Implementation - Complete, compilable code with comments
- Usage Example - Concrete scenario demonstrating the pattern
- Trade-offs - Pros, cons, alternatives, performance considerations
- Language Notes - Idioms and best practices for the chosen language
- Testing Guidance - How to test the pattern in production code
Phase 3: Validation & Delivery
Before responding:
- ✅ Implementation is complete and correct
- ✅ Explanations clarify intent and usage
- ✅ Code follows language best practices
- ✅ Trade-offs are clearly identified
Usage Modes
Mode 1: Problem → Pattern (Brainstorming)
User: "I need to process payments through multiple providers"
Process:
1. Clarify: Do providers have different interfaces? Runtime switching?
2. Recommend: Strategy or Abstract Factory
3. Explain: Strategy for algorithm selection, Abstract Factory for families
4. Implement: Complete code for chosen pattern
Mode 2: Pattern → Implementation (Direct Request)
User: "Create a Builder pattern in TypeScript for configuration objects"
Process:
1. Implement: Complete TypeScript Builder with fluent interface
2. Example: Show configuration construction
3. Explain: How it works and why for this use case
4. Alternatives: When to use Factory, Singleton instead
Mode 3: Pattern Combination (Advanced)
User: "Show Factory + Strategy pattern in Rust"
Process:
1. Implement: Both patterns showing interaction
2. Example: Factory creates strategy instances
3. Benefits: When/why to combine these patterns
4. Variations: Other useful combinations
Mode 4: Pattern Reference (Learning)
User: "When should I use Strategy vs. State?"
Process:
1. Comparison: Key differences and similarities
2. Strategy: Client chooses algorithm (independent)
3. State: State transitions automatically (related)
4. Examples: Domain-specific examples for each
Pattern Selection Quick Reference
| Need | Pattern | Resource |
|---|---|---|
| One instance | Singleton | creational-patterns.md |
| Different types at runtime | Factory Method | creational-patterns.md |
| Related object families | Abstract Factory | creational-patterns.md |
| Complex construction | Builder | creational-patterns.md |
| Clone expensive objects | Prototype | creational-patterns.md |
| Incompatible interfaces | Adapter | structural-patterns.md |
| Separate abstraction/implementation | Bridge | structural-patterns.md |
| Part-whole hierarchies | Composite | structural-patterns.md |
| Add behavior dynamically | Decorator | structural-patterns.md |
| Simplify complex subsystem | Facade | structural-patterns.md |
| Share many objects | Flyweight | structural-patterns.md |
| Control access | Proxy | structural-patterns.md |
| Handler chain | Chain of Responsibility | behavioral-patterns.md |
| Encapsulate actions | Command | behavioral-patterns.md |
| Custom language parsing | Interpreter | behavioral-patterns.md |
| Uniform collection access | Iterator | behavioral-patterns.md |
| Centralized interactions | Mediator | behavioral-patterns.md |
| Save/restore state | Memento | behavioral-patterns.md |
| Notify on changes | Observer | behavioral-patterns.md |
| Behavior varies by state | State | behavioral-patterns.md |
| Interchangeable algorithms | Strategy | behavioral-patterns.md |
| Vary algorithm steps | Template Method | behavioral-patterns.md |
| Add operations to structure | Visitor | behavioral-patterns.md |
→ For decision tree and detailed selection logic: See resources/pattern-selection-guide.md
Implementation Standards
Every implementation includes:
- ✅ Complete, compilable/runnable code
- ✅ Proper separation of concerns
- ✅ Comprehensive code comments
- ✅ Concrete usage example
- ✅ When/why to use explanation
- ✅ Language-specific best practices
- ✅ Error handling
- ✅ Type safety (typed languages)
Language Implementation Strategies
See resources/language-guide.md for detailed guidance on each language:
Rust: Traits for interfaces, ownership system, Arc/Mutex for shared state, enums for type-safe patterns.
Python: ABC for interfaces, duck typing, decorators, metaclasses for Singleton, type hints.
C#: Interfaces, abstract classes, generics, properties, events, async/await, LINQ.
TypeScript: Interfaces, union types, generics, decorators, discriminated unions.
Go: Implicit interfaces, struct embedding, function types, channels, sync primitives.
Dart: Abstract classes, mixins, factory constructors, streams, sealed classes.
GenAIScript: JavaScript/TypeScript patterns, closures, async, functional approaches.
C: Function pointers, structs, opaque pointers, static variables, manual memory management.
Common Pattern Combinations
- Factory Method + Strategy: Factory creates appropriate strategies
- Abstract Factory + Singleton: Singleton factory instances
- Composite + Iterator: Traverse tree structures uniformly
- Composite + Visitor: Perform operations on tree elements
- Command + Memento: Undo/redo functionality
- Observer + Mediator: Centralized event coordination
- Decorator + Factory: Factory creates decorated objects
- Template Method + Strategy: Template defines structure, strategies vary behavior
- Bridge + Strategy: Separate abstraction/implementation with algorithmic variation
See resources/pattern-selection-guide.md for detailed combination examples.
Quick Decision Tree
→ For comprehensive pattern selection logic, use resources/pattern-selection-guide.md
Are you solving a problem? Go to Phase 1 (Task Analysis)
Do you know the pattern already? Go to Phase 2 (Implementation)
Do you need to choose between patterns? Use pattern-selection-guide.md
Do you need language-specific details? Use language-guide.md
Resources
| Resource | Purpose |
|---|---|
pattern-selection-guide.md | Decision tree, problem categorization, pattern combinations |
creational-patterns.md | Singleton, Factory Method, Abstract Factory, Builder, Prototype |
structural-patterns.md | Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy |
behavioral-patterns.md | Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor |
language-guide.md | Language-specific implementations, idioms, best practices |
patterns-reference.md | Detailed pattern descriptions, UML, relationships |
Ready to start? Tell me:
- What problem you're solving, or
- What pattern you want to implement
FAQ
What does the gof-design-patterns skill do?
Orchestrates Gang of Four design pattern implementations across 8 languages. Analyzes user problems to select optimal pattern(s) from creational, structural, and behavioral categories. Provides concrete, production-ready implementations with explanations and trade-offs.
How do I install gof-design-patterns?
Run npx skills add https://github.com/markpitt/claude-skills --skill gof-design-patterns in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/gof-design-patterns/ (personal) or .claude/skills/gof-design-patterns/ (project).
Which AI agents can use gof-design-patterns?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is gof-design-patterns safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains gof-design-patterns?
It is published by markpitt in markpitt/claude-skills. It has 138 recorded installs.
More from markpitt/claude-skills
blazor-expert
markpitt/claude-skills
Comprehensive Blazor development expertise covering Blazor Server, WebAssembly, and Hybrid apps. Use when building Blazor components, implementing state management, handling routing, JavaScript interop, forms and validation, authentication, or optimizing Blazor applications. Includes best practices, architecture patterns, and troubleshooting guidance.
avalonia
markpitt/claude-skills
Expert guidance for developing cross-platform desktop applications with Avalonia UI framework. Use when building, debugging, or optimizing Avalonia apps including MVVM architecture, XAML design, data binding, styling, theming, custom controls, and cross-platform deployment for Windows, macOS, Linux, iOS, Android, and WebAssembly.
microsoft-graph
markpitt/claude-skills
Orchestration hub for Microsoft Graph API across Microsoft 365 services. Use for Graph API integrations, querying Microsoft 365 data, and building applications that interact with Azure AD.
kiss-principle
markpitt/claude-skills
Apply the K.I.S.S principle (Keep It Simple, Stupid) to reduce complexity, improve maintainability, and solve problems elegantly. Use when designing systems, writing code, planning solutions, creating documentation, architecting features, or making decisions where simplicity drives quality and efficiency.
markdown-formatter
markpitt/claude-skills
Formats markdown files according to best practices and common style guidelines. Use when cleaning up markdown documentation, ensuring consistent formatting, or standardizing README files.
azure-devops
markpitt/claude-skills
Comprehensive skill for working with Azure DevOps REST API across all services including Boards (work items, queries, backlogs), Repos (Git, pull requests, commits), Pipelines (builds, releases, deployments), Test Plans, Artifacts, organizations, projects, security, extensions, and more. Use when implementing Azure DevOps integrations, automating DevOps workflows, or building applications that interact with Azure DevOps services.
Popular other skills
hyperframes-cli
heygen-com/hyperframes
The HyperFrames CLI by job - scaffold, check, look at frames, edit the timeline, preview, render locally or in the cloud, publish, project history - plus reading its JSON and recovering from build or render failures.
triage
mattpocock/skills
Move issues and external PRs through a state machine of triage roles, categorise, verify, grill if needed, and write agent-ready briefs.
ask-matt
mattpocock/skills
Ask which skill or flow fits your situation. A router over the skills in this repo.
to-questionnaire
mattpocock/skills
Turn a decision you can't fully answer into a questionnaire for someone else to fill in.
loop-me
mattpocock/skills
Grill me about specs for the workflows I want to build, within this workspace.