A Claude skill bundling 13 C2 PPR (Portland Pattern Repository) pattern languages for navigating recurring software design problems.
- SKILL.md — Main skill file with triggering patterns, quick reference by problem, and design decision checklist
- references/PATTERNS.md — Comprehensive pattern index with force-driven selection and pattern sequences
- references/*.html — Full C2 PPR pattern documents (13 patterns, ~400KB)
- scripts/pattern_lookup.py — Python utility for pattern lookup by domain, problem, or force
- TESTING.md — Field test guide with 7 test scenarios
| Pattern | Author | Domain | Use When |
|---|---|---|---|
| CHECKS | Ward Cunningham | Input validation, data integrity | Validating user input without coupling UI to domain |
| Early Development | Kent Beck | OO design, frameworks | Building extensible systems; teaching practices |
| User Interface | Kent Beck | UI patterns, state management | Building interactive systems |
| Temporary Variables | Kent Beck | Code readability, refactoring | Improving code clarity |
| Code Formatting | Kent Beck | Style, conventions, tooling | Establishing team standards |
| Caterpillar's Fate | Norm Kerth | Domain modeling, OO design | Moving from requirements to architecture |
| Stars | Steve Peterson | Data warehousing, analytics | Designing analytical query systems |
| Parallel Patterns | Paul McKenney | Concurrency, synchronization | Multi-threaded systems, lock contention |
| EPISODES | Ward Cunningham | Product development, release planning | Rapid iteration with market pressure |
| Partitioning | Bobby Woolf | Modularity, code organization | Scaling teams, establishing code boundaries |
| Recurring Events | Martin Fowler | Temporal event modeling | Scheduling, subscriptions, calendar systems |
| ValueModels | Bobby Woolf | State management, MVC/MVP | Decoupling UI from domain state |
| Architecture | Larry Best | Design systems, frameworks | Organizational consistency, design handbooks |
Describe your design problem:
"I'm building a form for collecting user data.
I need to validate input without coupling the UI to my backend domain model.
Users enter invalid times sometimes. What pattern should I use?"
The skill will:
- Identify CHECKS pattern is relevant
- List key patterns: Whole Value, Echo Back, Deferred Validation
- Explain forces: UI flexibility vs. domain purity
- Describe consequences: tradeoffs of each pattern
# references/scripts/pattern_lookup.py
from pattern_lookup import search_by_domain, search_by_problem
# Find patterns for a domain
search_by_domain("concurrency") # → Parallel Patterns
# Find patterns for a problem
search_by_problem("validating user input") # → CHECKSSee TESTING.md for:
- 7 test scenarios (Astro Persona, friendly-feed, commons-wire)
- Success criteria
- Integration points
- Known limitations
This skill is built on three principles:
-
Forces over solutions. Understanding why a pattern exists (what forces it resolves) is more valuable than memorizing it.
-
Patterns sequence. Design decisions build on each other. Don't optimize synchronization before you've profiled contention.
-
Patterns have consequences. No pattern is universally good. Understanding tradeoffs tells you when to apply a pattern and when not to.
All patterns sourced from C2 PPR (Portland Pattern Repository), the canonical reference for object-oriented and systems design patterns.
Authors:
- Ward Cunningham (CHECKS, EPISODES)
- Kent Beck (Early Development, UI, Temporary Variables, Code Formatting)
- Norm Kerth (Caterpillar's Fate)
- Steve Peterson (Stars)
- Paul McKenney (Parallel Synchronization)
- Bobby Woolf (Partitioning, ValueModels)
- Martin Fowler (Recurring Events)
- Larry Best (Architectural Software Development)
Use for architectural decisions in code generation:
"Help me design the Astro Persona MCP server API structure"
→ Suggests Partitioning + Architecture patterns
Use for design critique and alternative patterns:
Scout-Two designing a new Bluesky feed strategy
→ Mercury suggests EPISODES for product sequencing
Tested on:
- Astro Persona: CHECKS (tier validation), ValueModels (chart state), Partitioning (MCP server)
- friendly-feed: Stars (analytics schema), Parallel Patterns (WebSocket consumer), EPISODES (product roadmap)
- commons-wire: Partitioning (code organization), CHECKS (markdown frontmatter validation)
- Bird Simulator: Caterpillar's Fate (GDD → object structure)
✓ Built: Skill core, pattern index, full PPR corpus, field test guide
🟡 Testing: Integration with Astro Persona & friendly-feed
⏳ Next: Refinement based on field tests, community feedback
software-patterns/
├── SKILL.md # Main skill (192 lines)
├── TESTING.md # Field test guide
├── README.md # This file
├── references/
│ ├── PATTERNS.md # Full pattern index (193 lines)
│ ├── patterns-index.json # Searchable index
│ └── *.html # Full C2 PPR documents (13 files)
└── scripts/
└── pattern_lookup.py # Pattern lookup utility (181 lines)
C2 PPR patterns are copyrighted by their respective authors and available under the distribution permissions at http://c2.com/ppr/about/copyright.html. This skill bundles and indexes them for educational use.
Built for Jason — Building patterns into design practice, one project at a time.
Last updated: 2026-04-09