Guides "ship or iterate?" decisions using Shreyas Doshi's frameworks, Marty Cagan's shipping philosophy, and Tobi Lutke's reversible decision-making. Use when deciding if feature is ready, preventing perfectionism paralysis, applying one-way vs two-way door thinking, or balancing technical debt vs shipping speed.
npx skills add https://github.com/menkesu/awesome-pm-skills --skill ship-decisions
Claude uses this skill when:
One-Way vs Two-Way Doors:
> "Some decisions are like one-way doors - hard to reverse. Most decisions are like two-way doors - easy to reverse. Don't treat all decisions the same."
The Framework:
🚪 Two-Way Doors (Reversible)
🚪 One-Way Doors (Irreversible)
How to Apply:
Before shipping, ask:
1. "Can we reverse this decision?"
- YES → Two-way door → Ship fast, iterate
- NO → One-way door → Go slow, get it right
2. "What's the cost of being wrong?"
- LOW → Ship and learn
- HIGH → Research more
3. "Can we learn more by shipping?"
- YES → Ship to learn
- NO → Prototype/test first
Examples:
TWO-WAY DOORS (Ship Fast):
✅ Button color
✅ Copy/messaging
✅ UI layout
✅ Feature flag experiments
✅ Pricing (for small customers)
ONE-WAY DOORS (Go Slow):
⚠️ Database schema (migrations expensive)
⚠️ API contracts (breaking changes hurt users)
⚠️ Brand decisions (hard to rebrand)
⚠️ Pricing (for enterprise customers)
⚠️ Architecture (refactoring expensive)
Is It Ready?
> "Don't ship broken products. But also don't wait for perfect. Ship when it's good enough for real users to get value."
The 5-Check System:
✅ 1. Core Functionality Works
✅ 2. Edge Cases Acceptable
✅ 3. Reversible Decision
✅ 4. Learning Value > Polish Value
✅ 5. Risk Mitigated
Scoring:
5/5 checks → SHIP NOW
4/5 checks → SHIP TO SMALL GROUP
3/5 checks → ITERATE ONE MORE CYCLE
<3/5 checks → NOT READY
The Tradeoff:
> "Technical debt isn't inherently bad. It's bad when it slows you down. Ship fast, pay down debt strategically."
When to Ship with Tech Debt:
When to Pay Down Debt First:
Framework:
Assess Tech Debt:
1. What's the carrying cost?
- Slows future features?
- Blocks other teams?
- Creates bugs?
2. What's the payoff of fixing?
- Unblocks work?
- Reduces bugs?
- Improves velocity?
3. What's the user value of shipping now?
- Solves immediate problem?
- Competitive advantage?
- Revenue impact?
Decision:
IF (user value > debt cost) → SHIP
IF (debt blocks future) → REFACTOR
IF (uncertain) → SHIP TO SMALL GROUP
Don't Ship to Everyone at Once:
> "The safest way to ship is gradually. Start small, monitor, expand."
The Rollout Ladder:
Stage 1: Internal (1-10 users)
Stage 2: Early Adopters (1-5% users)
Stage 3: Broader Beta (10-25%)
Stage 4: General Availability (100%)
Rollback Plan:
// Feature flag implementation
if (isFeatureEnabled(user, 'new-feature')) {
return newExperience();
} else {
return oldExperience();
}
// Quick rollback = change flag, no deploy
FEATURE: Ready to evaluate
│
├─ Core functionality works? ───────NO──→ FIX CRITICAL BUGS
│ YES ↓
│
├─ Is this reversible decision? ────────┐
│ YES (two-way door) ──────────────────┤
│ NO (one-way door) → RESEARCH MORE │
│ ↓
├─ Edge cases acceptable? ──────────────┤
│ YES ─────────────────────────────────┤
│ NO → FIX OR GRACEFUL DEGRADATION │
│ ↓
├─ Can we learn from shipping? ─────────┤
│ YES ─────────────────────────────────┤
│ NO → TEST/PROTOTYPE MORE │
│ ↓
├─ Risk mitigated? ─────────────────────┤
│ YES → SHIP GRADUALLY │
│ NO → ADD MONITORING/ROLLBACK │
│ ↓
└─ SHIP ←───────────────────────────────┘
Start: Internal → 5% → 25% → 100%
# Feature: [Name]
## Shipping Scorecard
### 1. Core Functionality Works
- [ ] Happy path works end-to-end
- [ ] User can complete main job
- [ ] No critical bugs blocking core use
**Status:** [Ready / Needs work]
### 2. Edge Cases Acceptable
- [ ] Error states handled gracefully
- [ ] User can recover from failures
- [ ] Edge cases don't break experience
**Status:** [Acceptable / Needs improvement]
### 3. Reversible Decision
- Is this reversible? [Yes / No]
- Rollback plan: [describe]
- Two-way door? [Yes / No]
**Status:** [Safe to ship / Risky]
### 4. Learning Value
- Will shipping teach us more? [Yes / No]
- Do we need real user feedback? [Yes / No]
- Is polish speculative without data? [Yes / No]
**Status:** [Ship to learn / Build more first]
### 5. Risk Mitigated
- [ ] Monitoring in place
- [ ] Gradual rollout plan
- [ ] Critical failure modes addressed
**Status:** [Risks managed / Needs work]
## Score: [X / 5]
**Decision:**
- 5/5 → Ship to 5% immediately
- 4/5 → Ship to internal first
- 3/5 → One more iteration
- <3 → Not ready
## Rollout Plan
- [ ] Internal (team): [date]
- [ ] Early adopters (5%): [date]
- [ ] Broader beta (25%): [date]
- [ ] General availability (100%): [date]
# Feature: [Name]
## Technical Debt Assessment
### Current Debt
[Describe shortcuts taken, code quality issues]
### Carrying Cost
- Slows future features? [Yes / No / How much]
- Blocks other teams? [Yes / No]
- Creates bugs? [Yes / No / Frequency]
- Security/privacy risk? [Yes / No]
**Debt Impact:** [High / Medium / Low]
### Payoff of Fixing Now
- Time to refactor: [X days]
- Would unblock: [list]
- Would improve: [list]
**Refactor Value:** [High / Medium / Low]
### User Value of Shipping Now
- User problem solved: [describe]
- Revenue/metric impact: [estimate]
- Competitive advantage: [Yes / No]
- User waiting for this: [Yes / No]
**Shipping Value:** [High / Medium / Low]
## Decision
IF Shipping Value > Debt Impact:
→ **SHIP NOW, refactor later**
Plan: [when to address debt]
IF Debt Impact > Shipping Value:
→ **REFACTOR FIRST, then ship**
Plan: [how to refactor]
IF Uncertain:
→ **SHIP TO SMALL GROUP (5%)**
Monitor: [specific metrics]
# Decision: [Description]
## Reversibility Analysis
### Can we reverse this decision?
[Yes / No / Partially]
### Cost to reverse
- Time: [X days/weeks]
- Money: [$X]
- User impact: [High / Medium / Low]
- Team impact: [High / Medium / Low]
### Why hard to reverse?
[Technical, contractual, brand, user expectations, etc.]
## Door Type
**Two-Way Door (Reversible):**
→ Decide in: Hours/days
→ Process: Ship fast, iterate
→ Research: Minimal
**One-Way Door (Irreversible):**
→ Decide in: Weeks/months
→ Process: Research, debate, consensus
→ Research: Extensive
## Decision
Door type: [Two-way / One-way]
Decision timeline: [X time]
Process: [describe]
Before Evaluating:
The 5 Questions:
Decision Rules:
Rollout Ladder:
Approach: Ship fast, break things (early days)
Evolution: "Move fast with stable infrastructure"
Challenge: Changing API breaks customers
Decision: ONE-WAY DOOR
Result: Trust through stability
Challenge: Ship new features vs refactor
Decision Framework:
Result: Strategic debt paydown, maintained velocity
Problem: Slow decision-making, perfectionism
Fix: Identify two-way doors, ship fast on those
Problem: "Move fast and break things" gone wrong
Fix: Core must work, edge cases can be rough
Problem: Ship breaks, no way to undo
Fix: Feature flags, gradual rollout
Problem: Short-term speed, long-term slowdown
Fix: Strategic debt paydown
Jeff Bezos (Amazon):
> "Some decisions are consequential and irreversible - one-way doors. Make those slowly. Most decisions are reversible - two-way doors. Make those fast."
Shreyas Doshi:
> "The best PMs know when 'good enough' is good enough. Ship to learn, not to be perfect."
Marty Cagan:
> "Technical debt isn't the enemy. The enemy is debt that compounds and slows you down."
Tobi Lutke (Shopify):
> "Trust is built on shipping what you promise. Ship early, ship often, ship small."
Control Cursor AI code editor via CLI. Open files, folders, diffs, and manage extensions.
Comprehensive checklist for conducting thorough code reviews covering functionality, security, performance, and maintainability
Systematically evaluate architecture decisions, document trade-offs, and select appropriate patterns. This skill should be used when the user asks about 'architecture decision', 'ADR', 'design pattern selection', 'technology choice', or needs to evaluate architectural trade-offs. Keywords: architecture, ADR, patterns, trade-offs, technical debt, quality attributes, decision record.
Facilitates deliberate skill development during AI-assisted coding. Offers interactive learning exercises after architectural work (new files, schema changes, refactors). Use when completing features, making design decisions, or when user asks to understand code better. Triggers on "learning exercise", "help me understand", "teach me", "why does this work", or after creating new files/modules. Do NOT use for urgent debugging, quick fixes, or when user says "just ship it".
Organize project files and folders for maintainability and scalability. Use when structuring new projects, refactoring folder structure, or establishing conventions. Handles project structure, naming conventions, and file organization best practices.
Automatically trigger review agents after task completion. Use when strategic-planner finishes planning tasks (calls plan-consultant) or when main agent completes coding tasks in /implement workflow (calls code-reviewer). Triggers on phrases like "plan complete", "implementation done", "coding finished", "ready for review".
Provides a structured workflow for planning and executing code reviews like a senior engineer. Use when asked to review code, PRs, or plan a code review task.
Recall project-first and global-supplement ChatCrystal memories before substantive implementation, refactoring, migration, configuration, investigation, or optimization work. Use when the task is non-trivial, has repository or project context, and prior fixes, decisions, pitfalls, or reusable patterns may change the approach.
Take menkesu/ship-decisions from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.