Capture what we learned from a completed ship so the next strategy refresh has accumulated evidence. Adapted from /ce-compound in EveryInc/compound-engineering-plugin v3.5.0 (MIT).
Per Moretti's framing (K1): everything that ships is an experiment. Each ship tests a hypothesis from the strategy doc. Capture the result.
When to run
Invoke when the user says:
"We just shipped [feature] — what did we learn?"
"Run ship-learnings on [release]"
"Post-ship review for [experiment]"
"Compound learnings"
Do NOT invoke when:
The session is the unit (use /session-wrap for session-scoped wrap)
The ship is broken / incident (use engineering:incident-response)
No ship has occurred — this is post-ship only
Distinct from /session-wrap
Skill
Scope
When
/session-wrap
One Claude Code session
End of session
/ship-learnings
One ship / release / experiment
After feature ships, regardless of how many sessions it took
A ship may span 5 sessions; one ship-learnings record captures all of them.
Inputs
Required:
Locked strategy-doc (the hypothesis being tested by this ship)
Ship description: name, date shipped, scope summary
Recommended:
Latest product-pulse (the metric movement post-ship)
User feedback / quotes / support tickets from the ship period
Original strategy track this ship belongs to
Steps
Phase 1 — Load context. Read locked strategy-doc + latest product-pulse. Identify which strategy track this ship belonged to.
Phase 2 — Pull ship signals. Metric deltas (from pulse), user quotes, support volume changes, anomalies.
Phase 3 — Run interview. Walk the user through the 7-section structure. The hardest section is §3 Result — push back if the user says "kind of worked" without evidence.
## Composition rule reference
Ship-learnings is the feedback node in the **PM closed loop** (P3). Strategy → pulse → ship → ship-learnings → strategy refresh. See [.claude/rules/pm-loop.md](../../../../../rules/pm-loop.md).
## Attribution
Adapted from [EveryInc/compound-engineering-plugin](https://github.com/EveryInc/compound-engineering-plugin) v3.5.0 (MIT). Source pattern: `/ce-compound`. Framing basis: K1 "everything that ships is an experiment" from Marcus Moretti's AI PM Guide.
1---2name: ship-learnings3description: Ship-learnings — post-ship compound-learnings capture4---56# Ship-learnings — post-ship compound-learnings capture78Capture what we learned from a completed ship so the next strategy refresh has accumulated evidence. Adapted from `/ce-compound` in [EveryInc/compound-engineering-plugin](https://github.com/EveryInc/compound-engineering-plugin) v3.5.0 (MIT).910Per Moretti's framing (K1): **everything that ships is an experiment.** Each ship tests a hypothesis from the strategy doc. Capture the result.1112## When to run1314Invoke when the user says:15- "We just shipped [feature] — what did we learn?"16- "Run ship-learnings on [release]"17- "Post-ship review for [experiment]"18- "Compound learnings"1920Do NOT invoke when:21- The session is the unit (use `/session-wrap` for session-scoped wrap)22- The ship is broken / incident (use `engineering:incident-response`)23- No ship has occurred — this is post-ship only2425## Distinct from /session-wrap2627| Skill | Scope | When |28|---|---|---|29| `/session-wrap` | One Claude Code session | End of session |30| **`/ship-learnings`** | One ship / release / experiment | After feature ships, regardless of how many sessions it took |3132A ship may span 5 sessions; one ship-learnings record captures all of them.3334## Inputs3536**Required:**37- Locked `strategy-doc` (the hypothesis being tested by this ship)38- Ship description: name, date shipped, scope summary3940**Recommended:**41- Latest `product-pulse` (the metric movement post-ship)42- User feedback / quotes / support tickets from the ship period43- Original strategy track this ship belongs to4445## Steps46471. **Phase 1 — Load context.** Read locked `strategy-doc` + latest `product-pulse`. Identify which strategy track this ship belonged to.482. **Phase 2 — Pull ship signals.** Metric deltas (from pulse), user quotes, support volume changes, anomalies.493. **Phase 3 — Run interview.** Walk the user through the 7-section structure. The hardest section is **§3 Result** — push back if the user says "kind of worked" without evidence.504. **Phase 4 — Compose record.** Apply length discipline: ≤ 600 words total.515. **Phase 5 — Self-roast.** Run checks below.526. **Phase 6 — Push.** Save to ship-learnings folder + flag in next strategy refresh review.5354## Self-roast (run before push)5556- [ ] Hypothesis is quoted directly from strategy-doc (not paraphrased)57- [ ] §3 Result has explicit verdict (validated / partial / invalidated) — not vague58- [ ] §3 Result cites specific evidence (metric delta from pulse, user quote, ticket count) — not opinion59- [ ] §4 What worked and §5 What didn't are concrete (specific decisions / patterns) — not generic ("communication was good")60- [ ] §6 Action items have owners61- [ ] §7 Follow-on experiments are testable hypotheses, not vague ideas62- [ ] Total word count ≤ 600 (compounding-learnings should be easy to skim across many ships)63- [ ] Framing K1 applied: "shipping is an experiment" — verdict is data, not judgment6465# Ship-learnings: {feature name} ({YYYY-MM-DD})6667**Strategy track:** {track name from strategy-doc} · **Pulse ref:** {latest pulse path}6869## Ship summary70{1-2 lines}7172## Hypothesis (from strategy-doc)73> {direct quote from strategy-doc}7475## Result: {validated | partially validated | invalidated}76{paragraph with evidence}7778## What worked79-...8081## What didn't work82-...8384## What to do differently next time85- **{action}** — owner: {name}8687## Follow-on experiments88-...89```9091## Composition rule reference9293Ship-learnings is the feedback node in the **PM closed loop** (P3). Strategy → pulse → ship → ship-learnings → strategy refresh. See [.claude/rules/pm-loop.md](../../../../../rules/pm-loop.md).9495## Attribution9697Adapted from [EveryInc/compound-engineering-plugin](https://github.com/EveryInc/compound-engineering-plugin) v3.5.0 (MIT). Source pattern: `/ce-compound`. Framing basis: K1 "everything that ships is an experiment" from Marcus Moretti's AI PM Guide.98
Run npx skillmds@latest add matteotitta/ship-learnings in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
Ship-learnings — post-ship compound-learnings capture It is listed under Coding & Dev Tools on SkillMD.
This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
matteotitta (@matteotitta) published this skill. Their other Agent Skills are listed on their SkillMD profile.