retro
Captures structured learnings and persists them. The OS gets smarter every time this runs. Built on Five Whys (Taiichi Ohno) for root cause analysis and Start-Stop-Continue for action planning. The combination prevents "surface retros" - where the team identifies symptoms but repeats the same mistakes with different details.
Frameworks
Five Whys - Taiichi Ohno, Toyota Production System
When something goes wrong - or unexpectedly right - ask "why?" five times. Each answer becomes the basis for the next "why." The goal is the root cause, not the symptom.
Marketing example:
- Campaign missed pipeline target by 40%. Why?
- Lead quality was poor. Why?
- We targeted too broadly. Why?
- We hadn't updated our ICP definition. Why?
- No one owns ICP maintenance. Why?
- There's no process for reviewing ICP after each cycle.
- Root cause: missing process, not bad execution.
Without Five Whys, the team would have concluded "lead quality was poor" and changed the ad creative. The problem would repeat.
Five Whys applies to wins too. An unexpected outperformance has a root cause. Understanding it is how you replicate it, not just celebrate it.
Start-Stop-Continue
START: What should we begin doing that we haven't tried?
STOP: What should we stop doing because it's not working or is waste?
CONTINUE: What's working that we should do more of?
Start-Stop-Continue is the action layer. Five Whys is the analysis layer. The two work together: Five Whys identifies WHY something happened, Start-Stop-Continue determines WHAT TO DO about it.
Reusable insight classification
Every insight from a retro must be classified:
- This campaign only: a one-off factor (specific timing, specific partner, one-time event) that won't recur
- All future campaigns: a structural finding that applies broadly and should update how we operate
Only "all future campaigns" insights go into knowledge/learnings.md. Campaign-only insights stay in the retro document.
When to use
- "Run a retro on the Q3 launch"
- "Let's debrief the campaign"
- "Capture what we learned from "
- "Post-mortem on the webinar"
Inputs needed
- What's being retro'd: campaign name, launch, sprint, etc.
- Time period: DD-MM-YYYY to DD-MM-YYYY
- Outcome: did it hit its primary KPI? What was the target vs actual?
- Who was involved: marketing, sales, product, contractors, agencies
Process
Load context. Read the relevant output/campaign-brief/<file>.md if a brief exists. Read knowledge/learnings.md so you know what was already learned and don't repeat the same insight.
Gather performance data. Never fill a number the user did not give you.
For every metric record target, actual, delta, and where the number came from. Ask for
any metric you do not have. If a metric is unavailable, write [NEEDS INPUT: <metric>] in
the table and leave the row incomplete.
A retro table is a record, not a draft. Once written it is quoted back for quarters. An
agent-supplied "actual" is indistinguishable from a measured one the moment it is on the page.
Flag any metric that missed by more than 10% or outperformed by more than 20%. Those are the
Five Whys candidates.
Run Five Whys on every flagged metric. Every "why" carries a source.
The Five Whys is an interview technique, not a reasoning exercise. Taiichi Ohno ran it on a
factory floor with the people who were there. Run without evidence it becomes a plausible-story
generator, and the story is written in the same words a real finding would use.
Tag every step with one of three tiers:
| Tier |
Means |
Allowed source |
[DATA] |
A number or artifact supports it |
Analytics, CRM, the brief, a document |
[STATED] |
A person who was there said it |
Named teammate, call note, Slack thread |
[HYPOTHESIS] |
Nobody verified this |
Reasoning only. Never promoted without evidence |
Metric: <name>
Target: <X> Actual: <Y> Delta: <Z%> Source: <where the actual came from>
Why 1: <factor> [DATA|STATED|HYPOTHESIS] <- source
Why 2: <cause> [DATA|STATED|HYPOTHESIS] <- source
...
Root cause: <one sentence>
Confidence: <supported | partly supported | unverified>
Reusable: <this campaign only | all future campaigns>
"We do not know yet" is a valid terminal answer. If the chain reaches a point where nobody
has evidence, stop there, mark it [HYPOTHESIS], and name the one thing that would settle it.
A chain that runs to five confident whys on zero evidence is worse than a chain that stops at
two and says so, because it will be believed.
Stop when you reach a process, ownership, or assumption gap, not a tactic.
Run the retro structure:
# Retro: <Initiative> (DD-MM-YYYY)
## Outcome
- **Primary KPI**: target <X>, actual <Y>, delta <%>
- **Verdict**: hit / missed / partial
## Performance breakdown
| Metric | Target | Actual | Source of actual | Delta | Root cause | Confidence |
|---|---|---|---|---|---|---|
| <metric> | <X> | <Y or [NEEDS INPUT]> | <analytics / user / brief> | <Z%> | <root cause> | <supported / partly / unverified> |
## Root cause analysis (Five Whys)
<Full Five Whys drill for each flagged metric. See process step 3 above.>
## What worked
List 3-5 things. Each must be specific and reusable.
- <Specific tactic, channel, or decision> -> <observed outcome> -> <root cause of the win>
- Example: "Founder-voice LinkedIn posts pulled 4x engagement vs company-voice. Root cause:
personal credibility signals outperform brand signals in this ICP."
Avoid vague statements like "the team executed well" or "messaging resonated."
## What didn't work
List 3-5 things. Each must include the root cause from Five Whys:
- <What failed> -> <Five Whys root cause>
- Example: "Webinar attendance was 22% of registrants. Root cause: no ICP match in the
registration list - we optimized for volume, not fit."
"It just didn't perform" is a failure of analysis where evidence exists. Where it does not,
"we do not know why, and here is what would tell us" is the correct answer. Do not manufacture
a cause to avoid an empty cell.
## Start-Stop-Continue
<Actions derived from the root causes above. Every action traces to a Five Whys finding.>
**START:**
- <Action we should begin. What root cause does it address?>
**STOP:**
- <Action we should stop. What root cause revealed this is waste?>
**CONTINUE:**
- <Action we should keep. What root cause confirms it's working?>
## Surprises
Things we didn't predict. These are the most valuable findings because they update our model.
Apply Five Whys to surprises too - understanding WHY something surprised us is the real insight.
## Reusable insights
Classify each insight:
- <Insight> | applies to: <campaign type, channel, audience> | scope: <this campaign only | all future campaigns>
Only "all future campaigns" insights go to knowledge/learnings.md.
## Root cause vs symptom check
For each "what didn't work" item: is this insight about WHAT happened or WHY it happened?
If it's about what happened, run Five Whys again until you reach why.
## Counterfactual check
What would have happened if we had not run this campaign at all?
If the answer is "roughly the same", flag it. Attribution matters.
Persist to knowledge/learnings.md. Confirm with the user first, and never append an unverified claim.
knowledge/learnings.md is read by campaign-brief, social-calendar, content-writer,
email-nurture, ad-campaign-writer and kpi-review. Anything written there becomes a constraint
on future plans, and the provenance is gone by the next quarter. Treat it as institutional
memory, not as notes.
Three gates, all mandatory:
- Only
supported or partly supported insights may be appended. An unverified
hypothesis stays in the retro document, where it is visibly a hypothesis.
- Show the user the exact block before writing it and get explicit confirmation. This is
the only skill that writes to shared memory, so it is the only one that asks.
- Every appended line carries its tier and date. A future reader must be able to tell a
measurement from a guess without opening the original retro.
## <Initiative> retro (DD-MM-YYYY)
**Result**: <hit|missed|partial> primary KPI - actual <Y> vs target <X>
**Root causes (Five Whys)**:
- <Metric that missed>: root cause was <finding> [DATA|STATED] (source: <where>)
- <Metric that outperformed>: root cause was <finding> [DATA|STATED] (source: <where>)
**Start-Stop-Continue (reusable actions)**:
- START: <action> (applies to: <scope>)
- STOP: <action> (applies to: <scope>)
- CONTINUE: <action> (applies to: <scope>)
**Reusable insights** (all future campaigns):
- <Insight 1> (applies to: <scope>) [DATA|STATED] confidence: <supported|partly> - DD-MM-YYYY
- <Insight 2> (applies to: <scope>) [DATA|STATED] confidence: <supported|partly> - DD-MM-YYYY
Self-check before writing anything to knowledge/
- Every "actual" in the performance table has a named source, or reads
[NEEDS INPUT]
- No metric was filled in from inference. If it was not supplied, it is not in the table
- Every why in every chain carries
[DATA], [STATED] or [HYPOTHESIS]
- No chain runs to five whys on zero evidence
- At least one chain, if the evidence is thin, terminates in "we do not know, and X would tell us"
- Nothing tagged
[HYPOTHESIS] appears in the block being appended to knowledge/learnings.md
- The user saw the exact append block and confirmed it
- Every appended line carries its tier, its confidence and the date
What this retro cannot tell you
Close every retro with this section, filled in:
- Metrics we could not obtain, and who owns them
- Causes we could not verify, and the one piece of evidence that would settle each
- Whether the result would have happened anyway (the counterfactual check), stated plainly as
unknown if nobody measured a holdout
Rules
- Never invent a metric, a cause, or a quote from a teammate. Tag it and move on. An invented
root cause is the single most expensive output in this whole skill set, because six other
skills read it as fact and nobody can trace it back.
- Never promote a
[HYPOTHESIS] to a learning because it sounds right. Evidence promotes it, or
it stays in the retro doc.
- Never write to
knowledge/learnings.md without showing the block and getting a yes.
- If a past entry in
knowledge/learnings.md is contradicted by this campaign, say so and offer
to date-stamp the old entry rather than deleting it. The record of being wrong is useful.
Related skills
/kpi-review produces the numbers this retro interprets. Run it first if the metrics are not to hand
/campaign-brief reads knowledge/learnings.md, so anything written here shapes the next plan
/brand-context owns the rest of knowledge/, and creates learnings.md in the first place
/growth-experiment is where an unverified hypothesis from this retro should go to be tested
Order: newest entries at the top. Every skill that reads learnings.md will see this.
Cross-link: if the retro contradicts or confirms an earlier learning, note it:
"This contradicts the retro finding that . Updated assumption: ."
Save the full retro to output/retro/<DD-MM-YYYY>-<initiative>.md.
Offer next actions:
- Schedule the next campaign brief with the new constraints applied (
/campaign-brief)
- Update
knowledge/icp/personas.md if persona insights changed
- Update
knowledge/markets/positioning.md if positioning insights changed
Rules
- Specificity is non-negotiable. "Messaging resonated" is not a learning. "Subject line with a number outperformed without by 38%" is.
- Every "what didn't work" entry must have a Five Whys root cause. Not a symptom. Not a hypothesis. A root cause.
- Five Whys applies to wins, not just misses. Wins you don't understand are luck, not capability.
- Start-Stop-Continue actions must trace back to a specific root cause. If an action doesn't map to a Five Whys finding, it's a guess.
- "Reusable" classification is mandatory. Campaign-only insights do not go into knowledge/. They clutter future retros.
- Always check the counterfactual. Sometimes campaigns "succeed" because the market was already moving.
- The
knowledge/learnings.md summary is the most-read artifact in this OS. Make it tight, scannable, and actionable.
1---2name: retro3description: Capture learnings from a campaign, launch, sprint, or initiative using Five Whys (Taiichi Ohno, Toyota Production System) for root cause analysis and Start-Stop-Continue for action planning. Append reusable insights to knowledge/learnings.md so future runs of the OS get smarter. Use when the user asks for a retro, retrospective, post-mortem, "what did we learn", "campaign wrap-up", "lessons learned", or after a campaign or launch ends. Critical feedback loop that makes the OS compound over time. For the numbers review itself, see kpi-review. For planning the next campaign, see campaign-brief.4---56# retro78Captures structured learnings and persists them. The OS gets smarter every time this runs. Built on Five Whys (Taiichi Ohno) for root cause analysis and Start-Stop-Continue for action planning. The combination prevents "surface retros" - where the team identifies symptoms but repeats the same mistakes with different details.910## Frameworks1112### Five Whys - Taiichi Ohno, Toyota Production System1314When something goes wrong - or unexpectedly right - ask "why?" five times. Each answer becomes the basis for the next "why." The goal is the root cause, not the symptom.1516Marketing example:17- Campaign missed pipeline target by 40%. Why?18- Lead quality was poor. Why?19- We targeted too broadly. Why?20- We hadn't updated our ICP definition. Why?21- No one owns ICP maintenance. Why?22- There's no process for reviewing ICP after each cycle.23- **Root cause: missing process, not bad execution.**2425Without Five Whys, the team would have concluded "lead quality was poor" and changed the ad creative. The problem would repeat.2627**Five Whys applies to wins too.** An unexpected outperformance has a root cause. Understanding it is how you replicate it, not just celebrate it.2829### Start-Stop-Continue3031**START**: What should we begin doing that we haven't tried?32**STOP**: What should we stop doing because it's not working or is waste?33**CONTINUE**: What's working that we should do more of?3435Start-Stop-Continue is the action layer. Five Whys is the analysis layer. The two work together: Five Whys identifies WHY something happened, Start-Stop-Continue determines WHAT TO DO about it.3637### Reusable insight classification3839Every insight from a retro must be classified:40- **This campaign only**: a one-off factor (specific timing, specific partner, one-time event) that won't recur41- **All future campaigns**: a structural finding that applies broadly and should update how we operate4243Only "all future campaigns" insights go into `knowledge/learnings.md`. Campaign-only insights stay in the retro document.4445## When to use4647- "Run a retro on the Q3 launch"48- "Let's debrief the campaign"49- "Capture what we learned from <initiative>"50- "Post-mortem on the webinar"5152## Inputs needed5354- **What's being retro'd**: campaign name, launch, sprint, etc.55- **Time period**: DD-MM-YYYY to DD-MM-YYYY56- **Outcome**: did it hit its primary KPI? What was the target vs actual?57- **Who was involved**: marketing, sales, product, contractors, agencies5859## Process60611. **Load context.** Read the relevant `output/campaign-brief/<file>.md` if a brief exists. Read `knowledge/learnings.md` so you know what was already learned and don't repeat the same insight.62632. **Gather performance data. Never fill a number the user did not give you.**6465 For every metric record target, actual, delta, **and where the number came from**. Ask for66 any metric you do not have. If a metric is unavailable, write `[NEEDS INPUT: <metric>]` in67 the table and leave the row incomplete.6869 A retro table is a record, not a draft. Once written it is quoted back for quarters. An70 agent-supplied "actual" is indistinguishable from a measured one the moment it is on the page.7172 Flag any metric that missed by more than 10% or outperformed by more than 20%. Those are the73 Five Whys candidates.74753. **Run Five Whys on every flagged metric. Every "why" carries a source.**7677 The Five Whys is an interview technique, not a reasoning exercise. Taiichi Ohno ran it on a78 factory floor with the people who were there. Run without evidence it becomes a plausible-story79 generator, and the story is written in the same words a real finding would use.8081 Tag every step with one of three tiers:8283 | Tier | Means | Allowed source |84 |---|---|---|85 | `[DATA]` | A number or artifact supports it | Analytics, CRM, the brief, a document |86 | `[STATED]` | A person who was there said it | Named teammate, call note, Slack thread |87 | `[HYPOTHESIS]` | Nobody verified this | Reasoning only. Never promoted without evidence |8889 ```90 Metric: <name>91 Target: <X> Actual: <Y> Delta: <Z%> Source: <where the actual came from>9293 Why 1: <factor> [DATA|STATED|HYPOTHESIS] <- source94 Why 2: <cause> [DATA|STATED|HYPOTHESIS] <- source95 ...9697 Root cause: <one sentence>98 Confidence: <supported | partly supported | unverified>99 Reusable: <this campaign only | all future campaigns>100 ```101102 **"We do not know yet" is a valid terminal answer.** If the chain reaches a point where nobody103 has evidence, stop there, mark it `[HYPOTHESIS]`, and name the one thing that would settle it.104 A chain that runs to five confident whys on zero evidence is worse than a chain that stops at105 two and says so, because it will be believed.106107 Stop when you reach a process, ownership, or assumption gap, not a tactic.1081094. **Run the retro structure**:110111 ```112 # Retro: <Initiative> (DD-MM-YYYY)113114 ## Outcome115 - **Primary KPI**: target <X>, actual <Y>, delta <%>116 - **Verdict**: hit / missed / partial117118 ## Performance breakdown119 | Metric | Target | Actual | Source of actual | Delta | Root cause | Confidence |120 |---|---|---|---|---|---|---|121 | <metric> | <X> | <Y or [NEEDS INPUT]> | <analytics / user / brief> | <Z%> | <root cause> | <supported / partly / unverified> |122123 ## Root cause analysis (Five Whys)124 <Full Five Whys drill for each flagged metric. See process step 3 above.>125126 ## What worked127 List 3-5 things. Each must be specific and reusable.128 - <Specific tactic, channel, or decision> -> <observed outcome> -> <root cause of the win>129 - Example: "Founder-voice LinkedIn posts pulled 4x engagement vs company-voice. Root cause:130 personal credibility signals outperform brand signals in this ICP."131132 Avoid vague statements like "the team executed well" or "messaging resonated."133134 ## What didn't work135 List 3-5 things. Each must include the root cause from Five Whys:136 - <What failed> -> <Five Whys root cause>137 - Example: "Webinar attendance was 22% of registrants. Root cause: no ICP match in the138 registration list - we optimized for volume, not fit."139140 "It just didn't perform" is a failure of analysis where evidence exists. Where it does not,141 "we do not know why, and here is what would tell us" is the correct answer. Do not manufacture142 a cause to avoid an empty cell.143144 ## Start-Stop-Continue145 <Actions derived from the root causes above. Every action traces to a Five Whys finding.>146147 **START:**148 - <Action we should begin. What root cause does it address?>149150 **STOP:**151 - <Action we should stop. What root cause revealed this is waste?>152153 **CONTINUE:**154 - <Action we should keep. What root cause confirms it's working?>155156 ## Surprises157 Things we didn't predict. These are the most valuable findings because they update our model.158 Apply Five Whys to surprises too - understanding WHY something surprised us is the real insight.159160 ## Reusable insights161 Classify each insight:162 - <Insight> | applies to: <campaign type, channel, audience> | scope: <this campaign only | all future campaigns>163164 Only "all future campaigns" insights go to knowledge/learnings.md.165166 ## Root cause vs symptom check167 For each "what didn't work" item: is this insight about WHAT happened or WHY it happened?168 If it's about what happened, run Five Whys again until you reach why.169170 ## Counterfactual check171 What would have happened if we had not run this campaign at all?172 If the answer is "roughly the same", flag it. Attribution matters.173 ```1741755. **Persist to `knowledge/learnings.md`. Confirm with the user first, and never append an unverified claim.**176177 `knowledge/learnings.md` is read by campaign-brief, social-calendar, content-writer,178 email-nurture, ad-campaign-writer and kpi-review. Anything written there becomes a constraint179 on future plans, and the provenance is gone by the next quarter. Treat it as institutional180 memory, not as notes.181182 Three gates, all mandatory:183184 1. **Only `supported` or `partly supported` insights may be appended.** An `unverified`185 hypothesis stays in the retro document, where it is visibly a hypothesis.186 2. **Show the user the exact block before writing it** and get explicit confirmation. This is187 the only skill that writes to shared memory, so it is the only one that asks.188 3. **Every appended line carries its tier and date.** A future reader must be able to tell a189 measurement from a guess without opening the original retro.190191 ```192 ## <Initiative> retro (DD-MM-YYYY)193194 **Result**: <hit|missed|partial> primary KPI - actual <Y> vs target <X>195196 **Root causes (Five Whys)**:197 - <Metric that missed>: root cause was <finding> [DATA|STATED] (source: <where>)198 - <Metric that outperformed>: root cause was <finding> [DATA|STATED] (source: <where>)199200 **Start-Stop-Continue (reusable actions)**:201 - START: <action> (applies to: <scope>)202 - STOP: <action> (applies to: <scope>)203 - CONTINUE: <action> (applies to: <scope>)204205 **Reusable insights** (all future campaigns):206 - <Insight 1> (applies to: <scope>) [DATA|STATED] confidence: <supported|partly> - DD-MM-YYYY207 - <Insight 2> (applies to: <scope>) [DATA|STATED] confidence: <supported|partly> - DD-MM-YYYY208 ```209210## Self-check before writing anything to knowledge/211212- Every "actual" in the performance table has a named source, or reads `[NEEDS INPUT]`213- No metric was filled in from inference. If it was not supplied, it is not in the table214- Every why in every chain carries `[DATA]`, `[STATED]` or `[HYPOTHESIS]`215- No chain runs to five whys on zero evidence216- At least one chain, if the evidence is thin, terminates in "we do not know, and X would tell us"217- Nothing tagged `[HYPOTHESIS]` appears in the block being appended to `knowledge/learnings.md`218- The user saw the exact append block and confirmed it219- Every appended line carries its tier, its confidence and the date220221## What this retro cannot tell you222223Close every retro with this section, filled in:224225- Metrics we could not obtain, and who owns them226- Causes we could not verify, and the one piece of evidence that would settle each227- Whether the result would have happened anyway (the counterfactual check), stated plainly as228 unknown if nobody measured a holdout229230## Rules231232- **Never invent a metric, a cause, or a quote from a teammate.** Tag it and move on. An invented233 root cause is the single most expensive output in this whole skill set, because six other234 skills read it as fact and nobody can trace it back.235- Never promote a `[HYPOTHESIS]` to a learning because it sounds right. Evidence promotes it, or236 it stays in the retro doc.237- Never write to `knowledge/learnings.md` without showing the block and getting a yes.238- If a past entry in `knowledge/learnings.md` is contradicted by this campaign, say so and offer239 to date-stamp the old entry rather than deleting it. The record of being wrong is useful.240241## Related skills242243- `/kpi-review` produces the numbers this retro interprets. Run it first if the metrics are not to hand244- `/campaign-brief` reads `knowledge/learnings.md`, so anything written here shapes the next plan245- `/brand-context` owns the rest of `knowledge/`, and creates `learnings.md` in the first place246- `/growth-experiment` is where an `unverified` hypothesis from this retro should go to be tested247248 Order: newest entries at the top. Every skill that reads `learnings.md` will see this.2492506. **Cross-link**: if the retro contradicts or confirms an earlier learning, note it:251 "This contradicts the <DD-MM-YYYY> retro finding that <X>. Updated assumption: <Y>."2522537. **Save the full retro** to `output/retro/<DD-MM-YYYY>-<initiative>.md`.2542558. **Offer next actions**:256 - Schedule the next campaign brief with the new constraints applied (`/campaign-brief`)257 - Update `knowledge/icp/personas.md` if persona insights changed258 - Update `knowledge/markets/positioning.md` if positioning insights changed259260## Rules261262- Specificity is non-negotiable. "Messaging resonated" is not a learning. "Subject line with a number outperformed without by 38%" is.263- Every "what didn't work" entry must have a Five Whys root cause. Not a symptom. Not a hypothesis. A root cause.264- Five Whys applies to wins, not just misses. Wins you don't understand are luck, not capability.265- Start-Stop-Continue actions must trace back to a specific root cause. If an action doesn't map to a Five Whys finding, it's a guess.266- "Reusable" classification is mandatory. Campaign-only insights do not go into knowledge/. They clutter future retros.267- Always check the counterfactual. Sometimes campaigns "succeed" because the market was already moving.268- The `knowledge/learnings.md` summary is the most-read artifact in this OS. Make it tight, scannable, and actionable.