retrospective/SKILL.md
Interactive post-session retrospective that captures learnings, updates skills, and saves memories. Use when the user says "/retrospective", "let's do a retro", "what did we learn", "session review", "retro", or "wrap up". Also use at the end of long productive sessions when significant patterns or corrections emerged. Supports multi-session mode — by default processes all of today's sessions across projects.
npx skillsauth add glebis/claude-skills retrospectiveInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Interactive post-session retro. Scans sessions, asks focused questions, proposes concrete actions the user approves in one step.
Scans the current conversation only. This is the original behavior.
Scans all sessions from a given day (default: today) across all projects. Extracts user corrections, skill failures, and patterns from JSONL transcripts.
Trigger: /retrospective at the start of a fresh session, or /retrospective today, or /retrospective 2026-05-24.
# Find today's sessions (default)
find ~/.claude/projects -maxdepth 2 -name "*.jsonl" -not -path "*/subagents/*" -mtime 0
# Or for a specific date, filter by file modification date
find ~/.claude/projects -maxdepth 2 -name "*.jsonl" -not -path "*/subagents/*" -newermt "YYYY-MM-DD" ! -newermt "YYYY-MM-DD + 1 day"
For each JSONL file found, extract a summary:
projects/, decoded from the path-encoding)user and assistant messages (type user and assistant)message.content (may be string or array of {type: "text", text: "..."})message.content array where type == "text"Show the user what was found:
Found N sessions today:
- project-name-1 (session-id[:8]) — "first user message preview..."
- project-name-2 (session-id[:8]) — "first user message preview..."
Then continue to Step 1a with the combined findings from all sessions. Each candidate action should note which session it came from (project name + short ID).
Scan the conversation and estimate session depth. Look for tool calls (Read, Edit, Write, Bash, Skill invocations), errors encountered, and back-and-forth exchanges. Don't try to count exactly — judge by feel:
Silently scan the conversation and collect:
Then read existing state:
glob ~/.claude/projects/*/memory/MEMORY.md and read it plus relevant memory files~/.claude/skills/{name}/skill.md)test -f ~/.claude/skills/linear/scripts/linear && echo "configured" || echo "not configured"Generate up to 5 candidate actions, ranked by signal strength:
Dedup rules:
Present everything in a single AskUserQuestion call (up to 4 questions):
| # | Question | Type |
|---|----------|------|
| 1 | "Quick session check?" | Single select: Productive / Mixed / Rough / Skip retro |
| 2 | "What felt slow or broken?" | Free text via Other (optional) |
| 3 | "Anything to carry forward as a rule?" | Free text via Other (optional) |
| 4 | "Which of these should I save?" | Multi-select: generated candidates with descriptions. Always include a "Nothing / skip all" option. |
If Q1 = "Skip retro" → exit immediately.
If Q1 = "Rough" and Q2/Q3 are empty → exit with "Nothing to save — session closed." Don't add another question after the user already signaled they're done.
Single AskUserQuestion call with one question:
If "Nothing" → exit. If free text → save as memory, exit.
For each approved item from Q4 (plus any insights from Q2/Q3 free text):
Action types and their targets:
| Type | Target | Tool |
|------|--------|------|
| Skill update | ~/.claude/skills/{name}/skill.md | Edit |
| Memory (feedback) | Current project's memory/feedback_*.md + MEMORY.md | Write |
| Memory (project) | Current project's memory/project_*.md + MEMORY.md | Write |
| CLAUDE.md rule | ~/.claude/CLAUDE.md or project CLAUDE.md | Edit |
| Linear task | ~/.claude/skills/linear/scripts/linear issue create --title "..." --description "..." | Bash |
One-line per action taken:
Updated telegram skill — added chat type mismatch note
Saved memory — Qwen /api/chat not /api/generate
Skipped: pdf-generation update (already documented)
Done. No trailing commentary.
Session transcripts are stored as JSONL files at ~/.claude/projects/{project-path}/{session-id}.jsonl.
Each line is a JSON object with a type field. Relevant types:
user — user message. Content at message.content (string or array of {type: "text", text: "..."})assistant — Claude's response. Content at message.content (array of content blocks; extract where type == "text")ai-title — auto-generated session titleTo extract a readable transcript from a JSONL file, use a Python one-liner or read the file and filter for user/assistant types.
Project name decoding: The directory name uses the absolute path with slashes replaced by dashes, e.g., -Users-glebkalinin-ai-projects-foo → ~/ai_projects/foo.
When /retrospective is invoked:
/retrospective invocation) → multi-session mode (scan today's sessions)Each candidate in Q4 must have a description showing the exact proposed content, not just a title. The user judges candidates by reading descriptions, not by opening files.
Good: "Add to telegram skill: get_chat_type() misclassifies private chats as channels — use Telethon client.send_message() directly for DMs"
Bad: "Update telegram skill with DM fix"
This skill only captures session learnings. It does not review code quality, analyze PRs, create documentation, or run tests. For those, use the appropriate dedicated skills.
Engine logic is tested in retro_engine.py with 9 scenario fixtures and 30 pytest tests.
Run: cd ~/.claude/skills/retrospective && python3 -m pytest test_retro_engine.py -v
development
--- name: agency-docs-updater description: End-to-end pipeline for publishing Claude Code lab meetings. Accepts optional args: date (YYYYMMDD, "yesterday", "today") and lab number (e.g. "04"). Examples: "yesterday 04", "20260420 05", "04" (today, lab 04), "" (today, auto-detect lab). --- # Agency Docs Updater Execute ALL steps automatically in sequence. Only pause if a step fails and cannot be recovered. Read `references/learnings.md` before starting for known pitfalls. **Configuration**: pat
tools
This skill should be used when applying proper typography to prose text or files in Russian, English, German, or French — smart quotes per locale («ёлочки», “curly”, „Gänsefüßchen“, « guillemets »), correct dashes (тире, em/en dash, Gedankenstrich, tiret), non-breaking spaces, ranges, ellipsis, and French espaces insécables before ! ? ; :. Fully deterministic via a pinned typograf-based CLI; never apply these rules by hand. Triggers on "типографика", "typograf", "оттипографь", "smart quotes", "fix typography", "неразрывные пробелы".
development
This skill should be used when inspecting or applying advanced OpenType features of a font (woff2/otf/ttf) — ligatures, stylistic sets (ss01–ss20), character variants (cvXX), texture healing, slashed zero, tabular/oldstyle figures, fractions, small caps, case-sensitive forms — and generating the CSS to enable them. Interviews the user via cenno to pick features. Triggers on "OpenType features", "font features", "stylistic sets", "ligatures", "texture healing", "tabular figures", "what can this font do".
tools
--- name: pre-session-portrait description: Build a compressed, visualizable "portrait" of a consulting/coaching client before a session, so the paid hour is spent solving, not scoping. Runs a 7-lens JTBD-inspired interview (where / how / what / problem / ideal / tension / jobs-to-be-done) that takes rich open answers in and compresses them to an 11-field YAML portrait out. Delivers three ways: raw paste-into-a-clean-chat prompt, a secret GitHub gist link, or a Codex CLI one-liner. Use when prep