retro-marimo-pair — Claude Code skill: session retrospective
A skill that runs a retrospective on a marimo pairing session, finds the friction and turns it into something the team can act on.
npx skills add marimo-team/marimo-pair --skill retro-marimo-pair -a claude-codeWhat retro-marimo-pair does
The skill walks back through the conversation and looks for friction: user corrections, repeated attempts, runtime errors, workarounds, forgotten instructions. It lists each finding with a short note and where it happened, then asks which ones you want to dig into.
From there it works through root causes: skill structure, a gap in the docs, misleading docs, marimo._code_mode ergonomics, a missing API, an API bug, context window. The output is a diagnosis with contributing factors and open questions, not a patch. By default it offers to draft an issue or discussion, and leaves the actual filing to you.
It never edits files in github://marimo-team/marimo-pair without explicit approval. If you do ask for a change, it reads the target file first, shows the diff, applies it only after sign-off, then checks that SKILL.md stays under 500 lines. To inspect the live API, the skill points at a notebook scratchpad snippet using marimo._code_mode and cm.get_context().
What it helps with
- find where a pairing session with the agent stalled
- tell a skill doc gap apart from an API bug
- write up the problem for the marimo team to triage
- list the public
marimo._code_modemethods from a notebook - check whether
SKILL.mdgrew past its line budget
Example prompts for the agent
- /retro-marimo-pair — review our session and show me where we got stuck
- run a retro on the last session, what went wrong with
_code_mode - write up the friction as a diagnosis and offer to file it as an issue
How to install retro-marimo-pair
1Skills CLI (Vercel)
npx skills add marimo-team/marimo-pair --skill retro-marimo-pair -a claude-code2Manually: put the files in place
~/.claude/skills/retro-marimo-pair/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/retro-marimo-pair/
1Skills CLI (Vercel)
npx skills add marimo-team/marimo-pair --skill retro-marimo-pair -a codex2Manually: put the files in place
.agents/skills/retro-marimo-pair/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add marimo-team/marimo-pair --skill retro-marimo-pair -a cursor2Manually: put the files in place
.cursor/skills/retro-marimo-pair/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install marimo-team/marimo-pair retro-marimo-pair2Manually: put the files in place
.github/skills/retro-marimo-pair/SKILL.md1Skills CLI (Vercel)
npx skills add marimo-team/marimo-pair --skill retro-marimo-pair -a gemini-cli2Platform CLI
gemini skills install https://github.com/marimo-team/marimo-pair --path skills/retro-marimo-pairManually: put the files in place
.devin/skills/retro-marimo-pair/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add marimo-team/marimo-pair --skill retro-marimo-pair -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about retro-marimo-pair
How do I install retro-marimo-pair in Claude?
Run npx skills add marimo-team/marimo-pair --skill retro-marimo-pair -a claude-code. The skill lands at ~/.claude/skills/retro-marimo-pair/SKILL.md.
What does retro-marimo-pair do?
It reviews a past marimo session, surfaces friction and narrows it down to a diagnosis with contributing factors. Then it offers to draft that as an issue or discussion.
Does the skill edit the marimo-pair files itself?
No. It will not touch github://marimo-team/marimo-pair without explicit approval. A change only happens if you ask for it, see the diff and sign off.
Source text
SKILL.md · Apache-2.0
---
name: retro-marimo-pair
description: >-
Session retrospective for improving marimo-pair and marimo._code_mode.
Use when the user wants to analyze friction from a pairing session, identify
what went wrong, and brainstorm improvements to the skill docs or the
underlying API. Trigger on: "retro", "what went wrong", "improve the skill",
"session review", "friction", or /retro-marimo-pair.
---
# Session Retrospective
You are helping a **marimo team member** review a pairing session to find
friction and turn it into improvements. The target is always one or both of:
1. **The marimo-pair skill** (`github://marimo-team/marimo-pair`)
2. **`marimo._code_mode`** — the underlying notebook metaprogramming API
This is a **conversation**, not an automated report. You surface findings,
the user steers which ones matter, and together you decide what to do about
them.
## Guard Rails
- **NEVER** edit files in `github://marimo-team/marimo-pair` without explicit
user approval.
- **ALWAYS** start with session analysis (Step 1) — do not jump to solutions.
- **Present friction points before root causes** — let the user choose which
ones to dig into.
- If the user invoked with a specific complaint, focus your analysis there but
still scan for other friction in the background.
## Step 1: Session Analysis
Review the current conversation and identify friction. Look for:
| Signal | What to look for |
|--------|-----------------|
| **User frustration** | Corrections ("no not that"), repeated attempts, backtracking, confusion, tone shifts |
| **Inefficiency** | Multiple rounds for a one-step task, over-engineering, wrong API usage |
| **Errors** | Compile-check failures, runtime errors, silent failures, wrong output |
| **Workarounds** | User or Claude working around a limitation instead of doing it directly |
| **Context loss** | Claude forgetting instructions from earlier, re-asking things the skill covers |
Present a numbered summary of friction points found. For each, note:
- What happened (brief)
- Where in the conversation it occurred (quote or paraphrase)
- Initial category guess (skill structure / skill gap / API issue / etc.)
Then ask: **"Which of these should we dig into? Or is there something I missed?"**
## Step 2: Root Cause Discussion
For each friction point the user selects, work through these lenses:
| Lens | Question | Example improvement |
|------|----------|-------------------|
| **Skill structure** | Was the right info in the skill but hard to find? Buried in reference/ when it should be in SKILL.md? | Promote to guard rail, restructure progressive disclosure |
| **Skill gap** | Was information missing entirely from the skill? | Add new section, example, or anti-pattern |
| **Misleading docs** | Did the skill say something that led Claude astray? | Correct the docs, add clarifying examples |
| **API ergonomics** | Was `_code_mode` clunky or unintuitive for this task? | Propose API improvement (better defaults, clearer errors) |
| **Missing API** | Is there something `_code_mode` simply can't do that it should? | Design a new API surface |
| **API bug** | Did `_code_mode` behave incorrectly? | Characterize the bug, propose fix or workaround |
| **Context window** | Did Claude forget instructions due to long context? | Shorter, more prominent guard rails |
Discuss each lens briefly, then converge on the most likely root cause with the
user. It's okay to have multiple contributing causes.
## Step 3: Diagnose & Capture
The goal of a retro is **diagnosis**, not a contribution. Based on the root
cause, write up a clear diagnosis the team can act on — don't jump to proposing
or authoring a fix.
For each friction point, produce:
- **Diagnosis** — What went wrong and why it was frustrating, in plain terms
- **Contributing factors** — Skill structure, gap, misleading docs, API
ergonomics, missing API, API bug, context window (from Step 2)
- **Considerations** — Trade-offs, open questions, or things that would need to
be true for a fix to make sense. Note possible directions here, but frame
them as considerations rather than committed solutions.
The default next step is to **capture the diagnosis as an issue or discussion**
so the team can weigh it — not to immediately make a contribution. Concrete
code changes (skill edits, API designs) come *after* an issue/discussion
exists and the user explicitly chooses to go further.
Present the diagnosis and ask: **"Want me to draft this as an issue or
discussion?"**
## Step 4: File or Follow Up
### Default: file an issue / discussion
Write it up clearly for the marimo team to triage:
- **Problem:** What happened and why it's painful
- **Current behavior:** What the skill or `_code_mode` does today
- **Considerations:** Trade-offs and open questions (not a committed solution)
- **Example:** A minimal snippet or quote from the session, if helpful
Leave the actual filing to the user — do not auto-file. This is the preferred
outcome: surface friction for the team rather than ship a fix from the retro.
### Only if the user explicitly wants to go further
A skill edit or API change should follow an issue/discussion, not replace it.
If — and only if — the user explicitly asks to draft a change now:
1. Read the target file in `github://marimo-team/marimo-pair`
2. Show the proposed diff to the user
3. Only apply after explicit sign-off
4. After applying, verify SKILL.md stays under 500 lines (reference/ files
have no limit)
### Wrapping up
After completing the cycle for the selected friction points, ask if the user
wants to revisit any remaining items from Step 1, or if the retro is done.
## Key Files Reference
| File | Purpose |
|------|---------|
| `github://marimo-team/marimo-pair/SKILL.md` | Main skill instructions |
| `github://marimo-team/marimo-pair/reference/execute-code.md` | Scratchpad & cell operation recipes |
| `github://marimo-team/marimo-pair/reference/rich-representations.md` | Widget & display patterns |
| `github://marimo-team/marimo-pair/scripts/` | Bundled discovery & execution scripts |
To inspect the live `_code_mode` API surface during a retro, the user can
run in their notebook scratchpad:
```python
import marimo._code_mode as cm
async with cm.get_context() as ctx:
# List all public methods/attributes
print([x for x in dir(ctx) if not x.startswith('_')])
help(ctx)
```
© marimo-team · Apache-2.0 · marimo-team/marimo-pair