/project-retrospective
Generate LESSONS.md retrospective files that capture institutional knowledge, especially failures. Use when closing out journalism projects, investigations, events, or publications. Includes templates for research projects, event post-mortems, editorial tools, and publications.
$ npx -y skills add jamditis/claude-skills-journalism --skill project-retrospective --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/project-retrospective
Context preview
The summary Claude sees to decide when to auto-load this skill.
Generate LESSONS.md retrospective files that capture institutional knowledge, especially failures. Use when closing out journalism projects, investigations, events, or publications. Includes templates for research projects, event post-mortems, editorial tools, and publications.
SKILL.md
project-retrospective.SKILL.mdname: project-retrospective
description: Generate LESSONS.md retrospective files that capture institutional knowledge, especially failures. Use when closing out journalism projects, investigations, events, or publications. Includes templates for research projects, event post-mortems, editorial tools, and publications.
Project retrospective writer
Create LESSONS.md files that capture institutional knowledge, especially failures. Think like a journalist writing about your own project — be specific, be honest, name the actual mistakes.
Frame the retrospective: blame-aware, not pure-blameless
The 2024–2026 consensus in incident-analysis writing (PagerDuty, J. Paul Reed, Lorin Hochstein) is that pure blamelessness is neurobiologically unrealistic — humans default to blame. Healthier framing: acknowledge the blame bias exists and counter it deliberately. Source: https://postmortems.pagerduty.com/culture/blameless/
Cognitive biases to counter explicitly:
- **Fundamental attribution error** — blaming individuals for failures the system permitted
- **Confirmation bias** — looking for evidence that confirms a pre-formed narrative
- **Hindsight bias** — judging past decisions by knowledge that wasn't available at the time
- **Negativity bias** — over-weighting what went wrong vs. what worked
The voice rule isn't "no blame" — it's "name the system that permitted the human action, not just the action."
Drop the single-root-cause framing
Allspaw's canonical critique (still the dominant view in 2024–2026) calls Five Whys / single-root-cause analysis "seductively satisfying and compellingly simple — but false." It locks analysts into a linear causal chain that terminates in individual blame. Source: https://www.kitchensoap.com/2014/11/14/the-infinite-hows-or-the-dangers-of-the-five-whys/
Use "how" narratives instead, gathering on four prompts:
- **Cues** — what signals were available, who saw them when?
- **Interpretation** — how did people make sense of those signals?
- **Goals** — what were people trying to accomplish?
- **Taking action** — what did they do, and what did they expect to happen?
The retrospective's job is to surface contributing factors, not declare a root cause.
When to run a retrospective
Pre-define triggers before incidents happen, not after. Google SRE specifies criteria: user-visible downtime past a threshold, any data loss, on-call rollbacks, monitoring failures requiring manual discovery, stakeholder request. Source: https://sre.google/sre-book/postmortem-culture/
Translated to journalism:
| Trigger | Examples | |---|---| | Live-event failure | Live-blog downtime during election night, breaking-news embed breakage, paywall regression mid-investigation | | Editorial process failure | Missed correction window, source-management breach, fact-check process bypass | | Tool failure affecting subscribers | CMS migration regression, paywall logic affecting >X% of readers | | Stakeholder request | Editor / publisher / source explicitly asking "what happened?" |
Pre-defined triggers prevent retrospective theater on routine work and ensure they happen on real failures.
Timing: aim for under one week
Google's good-vs-bad postmortem comparison cites a "four months later" example as a quality failure because contributors' memories had decayed. Source: https://sre.google/workbook/postmortem-culture/
Recommended cadence:
| Project type | Target window | |---|---| | Live-event retro (election night, breaking news) | Same-day debrief, written within 48h | | Tool / CMS incident | Within one week | | Investigation or publication launch | Within one month of project close | | Annual review of ongoing initiative | Once per year, scoped to discrete decision points |
The empirical floor is "fresh in contributors' minds." Past one week and the narrative gets reconstructed rather than remembered.
For event-type retros, use AAR structure
The US Army's After Action Review (FM 7-0 Appendix K) was designed for facilitated post-event debriefs and fits live-news realities better than a project-close template. Source: https://www.first.army.mil/Portals/102/FM%207-0%20Appendix%20K.pdf
Four prompts: 1. **What was supposed to happen?** 2. **What did happen?** 3. **What was right or wrong about the difference?** 4. **How do we perform to standard next time?**
Run AAR immediately after the event with all participants — election night newsroom team, live-blog runners, breaking-news desk. Use `event.md` template for this; project-close templates are wrong for live-event retros.
The critical section: "The real problem"
This is the most valuable part of any retrospective. It answers:
> "What did we THINK we were building vs. what was ACTUALLY needed?"
**Strong example:** > We built an admin dashboard for editors when they actually needed a Slack bot. They live in Slack — forcing them to open a web app was friction they'd never accept. The dashboard has 2 monthly active users; the Slack bot prototype we built in a day has 47.
**Weak example:** > We learned the importance of user research.
Template structure
# LESSONS.md
## Project
- **Name:** [Project name]
- **Dates:** [Start - End]
- **Status:** [Completed / Abandoned / Ongoing]
- **Author:** [Your name]
- **Retrospective written:** [Date — should be within timing window above]
## Summary
[One paragraph: what it did, what impact it had, why it matters]
## What worked
### Technical wins
- [Specific decision and WHY it worked]
- [Tool/pattern that saved time]
### Process wins
- [Methodology that helped]
- [Communication pattern that worked]
## What didn't work
For each item below, separate the system layer from the people layer.
"What did the system permit or require?" comes before "What did the
people inside that system do?"
### Critical failures
- **System:** [What the architecture / process / tooling permitted]
- **People:** [What humans did inside that constraint]
- **Cost:** [Quantified
Read more
name: project-retrospective description: Generate LESSONS.md retrospective files that capture institutional knowledge, especially failures. Use when closing out journalism projects, investigations, events, or publications. Includes templates for research projects, event post-mortems, editorial tools, and publications.
Project retrospective writer
Create LESSONS.md files that capture institutional knowledge, especially failures. Think like a journalist writing about your own project — be specific, be honest, name the actual mistakes.
Frame the retrospective: blame-aware, not pure-blameless
The 2024–2026 consensus in incident-analysis writing (PagerDuty, J. Paul Reed, Lorin Hochstein) is that pure blamelessness is neurobiologically unrealistic — humans default to blame. Healthier framing: acknowledge the blame bias exists and counter it deliberately. Source: https://postmortems.pagerduty.com/culture/blameless/
Cognitive biases to counter explicitly:
- **Fundamental attribution error** — blaming individuals for failures the system permitted
- **Confirmation bias** — looking for evidence that confirms a pre-formed narrative
- **Hindsight bias** — judging past decisions by knowledge that wasn't available at the time
- **Negativity bias** — over-weighting what went wrong vs. what worked
The voice rule isn't "no blame" — it's "name the system that permitted the human action, not just the action."
Drop the single-root-cause framing
Allspaw's canonical critique (still the dominant view in 2024–2026) calls Five Whys / single-root-cause analysis "seductively satisfying and compellingly simple — but false." It locks analysts into a linear causal chain that terminates in individual blame. Source: https://www.kitchensoap.com/2014/11/14/the-infinite-hows-or-the-dangers-of-the-five-whys/
Use "how" narratives instead, gathering on four prompts:
- **Cues** — what signals were available, who saw them when?
- **Interpretation** — how did people make sense of those signals?
- **Goals** — what were people trying to accomplish?
- **Taking action** — what did they do, and what did they expect to happen?
The retrospective's job is to surface contributing factors, not declare a root cause.
When to run a retrospective
Pre-define triggers before incidents happen, not after. Google SRE specifies criteria: user-visible downtime past a threshold, any data loss, on-call rollbacks, monitoring failures requiring manual discovery, stakeholder request. Source: https://sre.google/sre-book/postmortem-culture/
Translated to journalism:
| Trigger | Examples | |---|---| | Live-event failure | Live-blog downtime during election night, breaking-news embed breakage, paywall regression mid-investigation | | Editorial process failure | Missed correction window, source-management breach, fact-check process bypass | | Tool failure affecting subscribers | CMS migration regression, paywall logic affecting >X% of readers | | Stakeholder request | Editor / publisher / source explicitly asking "what happened?" |
Pre-defined triggers prevent retrospective theater on routine work and ensure they happen on real failures.
Timing: aim for under one week
Google's good-vs-bad postmortem comparison cites a "four months later" example as a quality failure because contributors' memories had decayed. Source: https://sre.google/workbook/postmortem-culture/
Recommended cadence:
| Project type | Target window | |---|---| | Live-event retro (election night, breaking news) | Same-day debrief, written within 48h | | Tool / CMS incident | Within one week | | Investigation or publication launch | Within one month of project close | | Annual review of ongoing initiative | Once per year, scoped to discrete decision points |
The empirical floor is "fresh in contributors' minds." Past one week and the narrative gets reconstructed rather than remembered.
For event-type retros, use AAR structure
The US Army's After Action Review (FM 7-0 Appendix K) was designed for facilitated post-event debriefs and fits live-news realities better than a project-close template. Source: https://www.first.army.mil/Portals/102/FM%207-0%20Appendix%20K.pdf
Four prompts: 1. **What was supposed to happen?** 2. **What did happen?** 3. **What was right or wrong about the difference?** 4. **How do we perform to standard next time?**
Run AAR immediately after the event with all participants — election night newsroom team, live-blog runners, breaking-news desk. Use `event.md` template for this; project-close templates are wrong for live-event retros.
The critical section: "The real problem"
This is the most valuable part of any retrospective. It answers:
> "What did we THINK we were building vs. what was ACTUALLY needed?"
**Strong example:** > We built an admin dashboard for editors when they actually needed a Slack bot. They live in Slack — forcing them to open a web app was friction they'd never accept. The dashboard has 2 monthly active users; the Slack bot prototype we built in a day has 47.
**Weak example:** > We learned the importance of user research.
Template structure
# LESSONS.md ## Project - **Name:** [Project name] - **Dates:** [Start - End] - **Status:** [Completed / Abandoned / Ongoing] - **Author:** [Your name] - **Retrospective written:** [Date — should be within timing window above] ## Summary [One paragraph: what it did, what impact it had, why it matters] ## What worked ### Technical wins - [Specific decision and WHY it worked] - [Tool/pattern that saved time] ### Process wins - [Methodology that helped] - [Communication pattern that worked] ## What didn't work For each item below, separate the system layer from the people layer. "What did the system permit or require?" comes before "What did the people inside that system do?" ### Critical failures - **System:** [What the architecture / process / tooling permitted] - **People:** [What humans did inside that constraint] - **Cost:** [Quantified
A collection of Agent Skills for journalists, researchers, academics, media professionals, and communications practitioners. The same repository serves Claude Code and Codex while keeping Claude-only commands, agents, and hooks clearly labeled.
Repo: jamditis/claude-skills-journalism
Other skills on claude-skills-journalism.
- /accessibility-compliance
Web accessibility patterns for news sites, journalism tools, and academic platforms. Use when building accessible interfaces, auditing existing sites for WCAG compliance, writing alt text for news images, creating accessible data visualizations, or ensuring content reaches all
Open skill - /claude-md-updater
Use this skill when the user asks to update CLAUDE.md, save a lesson, or persist something from the current session: phrases like "update claude.md", "what should we remember", "save this lesson", or "add to context". Scans the conversation for hard-won lessons, new file paths,
Open skill - /electron-dev
Electron desktop application development with React, TypeScript, and Vite. Use when building desktop apps, implementing IPC communication, managing windows/tray, handling PTY terminals, integrating WebRTC/audio, or packaging with electron-builder. Covers patterns from AudioBash,
Open skill - /mobile-debugging
Remote JavaScript console access and debugging on mobile devices. Use when debugging web pages on phones/tablets, accessing console errors without desktop DevTools, testing responsive designs on real devices, or diagnosing mobile-specific issues. Covers locally hosted Eruda and
Open skill - /one-way-door
Use this skill when creating new files that represent architectural decisions — data models, infrastructure configs, auth boundaries, API contracts, CI/CD pipelines, or event systems. Flags irreversible decisions and forces a discussion about trade-offs before committing.
Open skill - /python-pipeline
Python data processing pipelines with modular architecture. Use when building content processing workflows, implementing dispatcher patterns, integrating Google Sheets/Drive APIs, or creating batch processing systems. Covers patterns from rosen-scraper, image-analyzer, and
Open skill

