Shaping & Breadboarding
Structured methodology for defining problems, exploring solutions, and planning implementation. Based on Shape Up adapted for working with an LLM.
Source: rjs/shaping-skills by @rjs (Ryan Singer, author of Shape Up)
Two Skills in One
Shaping — Iterate on problem (requirements) and solution (shapes) before committing to implementation. Separates what you need from how you might build it, with fit checks to see what's solved and what isn't.
Breadboarding — Map a system into UI affordances, code affordances, and wiring. Shows what users can do and how it works underneath in one view. Good for slicing into vertical scopes.
When to Use
- Exploring a new feature or product direction
- Comparing solution approaches before building
- Mapping an existing system to understand where changes land
- Breaking a selected solution into vertical implementation slices
- Any "should we build X or Y?" discussion
Entry Points
- Start from R (Requirements) — Describe the problem, pain points, constraints. Build up requirements and let shapes emerge.
- Start from S (Shapes) — Sketch a solution already in mind. Capture it as a shape and extract requirements as you go.
No required order. R and S inform each other throughout.
Core Notation
| Level |
Notation |
Meaning |
Relationship |
| Requirements |
R0, R1, R2... |
Problem constraints |
Members of set R |
| Shapes |
A, B, C... |
Solution options |
Pick one from S |
| Components |
C1, C2, C3... |
Parts of a shape |
Combine within shape |
| Alternatives |
C3-A, C3-B... |
Approaches to a component |
Pick one per component |
Phases
Shaping → Slicing
- Shaping: Explore problem/solution space, select and detail a shape
- Slicing: Break down for implementation into vertical slices with demo-able UI
Key Actions
- Populate R — Gather requirements as they emerge
- Sketch a shape — Propose a high-level approach
- Detail — Break shape into components or concrete affordances
- Check fit — Build decision matrix (R × S), binary ✅/❌ only
- Breadboard — Map to UI/Code affordances with wiring
- Spike — Investigate unknowns
- Slice — Break breadboarded shape into vertical increments
Detailed Reference
For the complete methodology, notation rules, examples, and procedures:
- Shaping reference: See references/shaping.md — Full shaping methodology including fit checks, parts, spikes, documents, multi-level consistency
- Breadboarding reference: See references/breadboarding.md — Complete breadboarding procedure, affordance tables, places, wiring, Mermaid conventions, chunking, slicing
Load the relevant reference when entering that phase of work.
Quick Reference: Fit Check Format
| Req | Requirement | Status | A | B | C |
|-----|-------------|--------|---|---|---|
| R0 | Full requirement text | Core goal | ✅ | ✅ | ✅ |
| R1 | Full requirement text | Must-have | ✅ | ❌ | ✅ |
- Always show full requirement text, never abbreviate
- Binary only: ✅ or ❌. No ⚠️ in fit checks
- Explanations go in Notes section below the table
Quick Reference: Affordance Tables
UI Affordances: # | Place | Component | Affordance | Control | Wires Out | Returns To
Code Affordances: Same columns
Controls: click, type, call, observe, write, render
Wires Out (solid →): Control flow — calls, triggers, writes
Returns To (dashed -.->): Data flow — return values, reads
Quick Reference: Slicing
- Every slice must end in demo-able UI
- Max 9 slices
- Each slice demonstrates a mechanism working
- Format:
V1: Name — affordances, demo statement
1---2name: shaping3description: Shape Up methodology for product and feature development. Use when collaboratively shaping a solution — iterating on problem definition (requirements) and solution options (shapes), breadboarding systems into affordances and wiring, and slicing into vertical implementation increments. Triggers include "shape this feature", "breadboard the system", "let's shape", "slice this into increments", "fit check", "define requirements", or any product/feature scoping discussion using Shape Up methodology.4---56# Shaping & Breadboarding78Structured methodology for defining problems, exploring solutions, and planning implementation. Based on [Shape Up](https://basecamp.com/shapeup) adapted for working with an LLM.910Source: [rjs/shaping-skills](https://github.com/rjs/shaping-skills) by [@rjs](https://github.com/rjs) (Ryan Singer, author of [Shape Up](https://basecamp.com/shapeup))1112## Two Skills in One1314**Shaping** — Iterate on problem (requirements) and solution (shapes) before committing to implementation. Separates what you need from how you might build it, with fit checks to see what's solved and what isn't.1516**Breadboarding** — Map a system into UI affordances, code affordances, and wiring. Shows what users can do and how it works underneath in one view. Good for slicing into vertical scopes.1718## When to Use1920- Exploring a new feature or product direction21- Comparing solution approaches before building22- Mapping an existing system to understand where changes land23- Breaking a selected solution into vertical implementation slices24- Any "should we build X or Y?" discussion2526## Entry Points2728- **Start from R (Requirements)** — Describe the problem, pain points, constraints. Build up requirements and let shapes emerge.29- **Start from S (Shapes)** — Sketch a solution already in mind. Capture it as a shape and extract requirements as you go.3031No required order. R and S inform each other throughout.3233## Core Notation3435| Level | Notation | Meaning | Relationship |36|-------|----------|---------|--------------|37| Requirements | R0, R1, R2... | Problem constraints | Members of set R |38| Shapes | A, B, C... | Solution options | Pick one from S |39| Components | C1, C2, C3... | Parts of a shape | Combine within shape |40| Alternatives | C3-A, C3-B... | Approaches to a component | Pick one per component |4142## Phases4344```45Shaping → Slicing46```4748- **Shaping**: Explore problem/solution space, select and detail a shape49- **Slicing**: Break down for implementation into vertical slices with demo-able UI5051## Key Actions5253- **Populate R** — Gather requirements as they emerge54- **Sketch a shape** — Propose a high-level approach55- **Detail** — Break shape into components or concrete affordances56- **Check fit** — Build decision matrix (R × S), binary ✅/❌ only57- **Breadboard** — Map to UI/Code affordances with wiring58- **Spike** — Investigate unknowns59- **Slice** — Break breadboarded shape into vertical increments6061## Detailed Reference6263For the complete methodology, notation rules, examples, and procedures:6465- **Shaping reference**: See [references/shaping.md](references/shaping.md) — Full shaping methodology including fit checks, parts, spikes, documents, multi-level consistency66- **Breadboarding reference**: See [references/breadboarding.md](references/breadboarding.md) — Complete breadboarding procedure, affordance tables, places, wiring, Mermaid conventions, chunking, slicing6768Load the relevant reference when entering that phase of work.6970## Quick Reference: Fit Check Format7172```markdown73| Req | Requirement | Status | A | B | C |74|-----|-------------|--------|---|---|---|75| R0 | Full requirement text | Core goal | ✅ | ✅ | ✅ |76| R1 | Full requirement text | Must-have | ✅ | ❌ | ✅ |77```7879- Always show full requirement text, never abbreviate80- Binary only: ✅ or ❌. No ⚠️ in fit checks81- Explanations go in Notes section below the table8283## Quick Reference: Affordance Tables8485**UI Affordances**: `# | Place | Component | Affordance | Control | Wires Out | Returns To`86**Code Affordances**: Same columns87**Controls**: click, type, call, observe, write, render88**Wires Out** (solid →): Control flow — calls, triggers, writes89**Returns To** (dashed -.->): Data flow — return values, reads9091## Quick Reference: Slicing9293- Every slice must end in **demo-able UI**94- Max 9 slices95- Each slice demonstrates a mechanism working96- Format: `V1: Name` — affordances, demo statement