Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when conducting weekly retrospective, reviewing past week, or when user says "retro", "weekly retro", "week review". Triggers at end of week or start of new week.
.claude/skills/serejaris-weekly-retro/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 989% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 629% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 1209% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 490% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 531% | 0% |
Part of the Personal Corp framework — running a one-person business through AI agents.
Structured weekly retrospective. Gather facts from code and project management tools, interview the founder, capture findings into issues and canonical files.
Before first use, define these in your project's CLAUDE.md:
markdown## Weekly Retro Config ### Repos to scan List all repos the agent should check for commits: - ~/Projects/main-app - ~/Projects/marketing-site - ~/Projects/docs ### GitHub owner Your GitHub username or org for issue search: - owner: your-github-handle ### GitHub Project ID Project board where retro issues land: - project_id: 7 ### Canonical files (single source of truth) Files that hold authoritative data — agent must check these before writing numbers: - data.md — prices, revenue, historical totals - product.md — current offers - insights.md — strategic conclusions ### Retro log path Where retro artifacts are saved. Two files per retro live here: - `WNN.md` — interview log + final summary - `WNN-outcomes.md` — outcomes scorecard (planned outcomes vs evidence) Example: - retro_log_path: docs/retro/ ### Task routing Map task types to repos so issues land in the right place: | Type | Repo | |------|------| | Backend bugs | main-app | | Marketing | marketing-site | | Strategy, cross-cutting | project-brain | ### Interview topics (customize to your business) Ordered list of areas to cover: 1. Product delivery 2. Sales / pipeline 3. Calendar events 4. New initiatives 5. Research / strategy 6. Open question ### Work Areas (customize names, goals, and colors) Each Area is a stable responsibility lens used by retro, planning, and the living weekly page: 1. Delivery 2. Sales 3. Systems 4. Content 5. People 6. Strategy 7. Wealth (recovery habits such as sport and reflection)
No separate init skill needed — this section is the setup. Copy the config block above into your CLAUDE.md, fill in your values, and the skill is ready.
Retro = looking back. Planning = looking forward. Finish the retro completely, output the backlog, THEN plan.
If the founder wants to switch to planning before retro is done: "OK, N topics still uncovered: list]. Skip or quick pass? After that — planning." Give the choice, don't switch silently.
dotdigraph rules { rankdir=LR; "Calendar event" -> "ASK what it is" [label="don't assume"]; "Want to create issue" -> "VERIFY: gh + ls + git" [label="first"]; "Learned a fact" -> "WRITE immediately" [label="canonical/issue"]; "Want to recommend" -> "Finish gathering facts" [label="not before Phase 4"]; "Numbers diverge" -> "Show divergence" [label="don't write silently"]; }
gh issue list --search) + clarify scope. If fact is NEW and no issue exists — ask the founder: "Is this a task? What exactly should be done, in which repo?" Not every mention = issue.$RETRO_LOG_PATH/WNN.md). Do NOT create issues, do NOT edit canonical files, do NOT touch CRM/contact cards in Phase 2. All canonical mutations are Phase 6 batch. All new issues are Phase 5 batch after explicit founder approve.$RETRO_LOG_PATH/WNN-outcomes.md (written by the planning skill at the start of the week). Fill Status for each outcome via fast subagent (evidence from issues / calendar / canonical files). If the file does not exist — ask founder to reconstruct or skip explicitly, do not silently go into free interview.retro:WNN or WNN) gets a terminal decision: close / drop / promote (to epic) / spillover (with explicit causal reason). "Leave it hanging" is NOT a terminal decision. See Phase 5.5.retro:W{N-2} + retro:W{N-1} and the founder wants another spillover into W{N+1} → STOP. Reformulate as close / drop / promote-to-epic. A re-label is not allowed.| Source | Priority | When to use | |--------|----------|-------------| | Live system query (DB, API, dashboard) | 1 | Canonical if available | | Canonical file (dated snapshot) | 2 | Baseline, may be stale | | Memory / notes | 3 | For context, not decisions | | Founder (verbal) | VERIFY | Don't write without cross-check against #1-2 |
Step 0 — create the retro log file immediately. Before any data gathering, create $RETRO_LOG_PATH/WNN.md (where NN is the closing week). All subsequent writes during the interview land in this single file — not scattered notes, not memory.
All gathering in parallel:
bash# 1. Git commits across all repos (use repos from your CLAUDE.md config) for repo in $YOUR_REPOS; do echo "=== $repo ===" cd $repo 2>/dev/null && git log --oneline --after="YYYY-MM-DD" --before="YYYY-MM-DD" | head -10 cd - done # 2. GitHub issues closed + updated gh search issues --owner $YOUR_OWNER --updated "YYYY-MM-DD..YYYY-MM-DD" --json repository,number,title,state # 3. Open issues on main project board gh issue list -R $YOUR_OWNER/$YOUR_MAIN_REPO --state open --json number,title --limit 30 # 4. Previous retro carry-over (all open retro:W* labels, not only retro:W{N-1}) gh search issues --owner $YOUR_OWNER --state open --json repository,number,title,labels,createdAt \ --jq '[.[] | select(.labels[].name | startswith("retro:W")) | {repo: .repository.nameWithOwner, n: .number, title, labels: [.labels[].name | select(startswith("retro:W"))], created: .createdAt}]'
Show summary to the user. Ask for a calendar screenshot (if they don't provide one — work with git/issues, don't insist).
Group carry-over items by oldest retro:W* label. Column "weeks open" = current_week − min(retro:W labels).
markdown### Carry-over by age | Issue | Repo | Title | Open for | Labels | |---|---|---|---|---| | #157 | main-app | feature X follow-up | 1 week | retro:W{N-1} | | #48 | crm | client Y invoice | 2 weeks | retro:W{N-2}, retro:W{N-1} | | #1 | legal | tax registration | 4 weeks | retro:W{N-4}…W{N-1} | **Stale-warning:** N issues open 2+ weeks. Phase 5.5 will resolve these to terminal decisions before creating the W{N+1} backlog.
This list feeds directly into Phase 5.5.
Without this phase the retro becomes a free conversation about "what happened" instead of an honest check of "what was promised." Outcomes are the only formal link between planning and retro.
$RETRO_LOG_PATH/WNN-outcomes.md (written by the planning skill at the start of week NN).Issues column: gh issue view <N> -R <repo> — open/closed + last commentfind / git log --grep / canonical-file inspection| Symbol | When to set | |---|---| | done | All check-criteria met, evidence proves it | | partial | Some criteria met, what fell short → Notes | | miss | Not done + evidence it wasn't (issue still open / no files / no comms) — Phase 2 explores why | | spillover | Moved to W{N+1} with explicit causal link (new issue or re-label) | | dropped | Removed as irrelevant during the week + reason |
markdown## Outcomes scorecard WNN | ID | Outcome | Status | Evidence | Notes | |---|---|---|---|---| | O1 | <outcome> | done | <issue#> closed, artifact at <path> | — | | O2 | <outcome> | partial | issue closed but Q&A ran long | bonus 30 min | | O5 | <outcome> | miss | issue still open, 0 broadcasts sent | — | | O8 | <outcome> | spillover | re-labeled retro:W{N+1} | overdue 3 weeks | **Summary:** 5 done · 1 partial · 1 miss · 1 spillover · 0 dropped (of 8 outcomes) **Hit rate:** 62% (5/8 done)
Possible causes:
Action:
**Reconstructed:** YYYY-MM-DD (no original plan) in its header. Reconstructed outcomes are baseline only — not as reliable as planned ones (selection bias).dotdigraph interview { "Show data" -> "Ask about topic"; "Ask about topic" -> "Answer unclear" -> "Clarify" -> "Ask about topic"; "Ask about topic" -> "Answer clear" -> "WRITE immediately"; "Ask about topic" -> "Multi-topic answer" -> "Batch save + list back" -> "Continue with most important topic"; "WRITE immediately" -> "Issue?" [shape=diamond]; "Issue?" -> "VERIFY then CREATE" [label="yes"]; "Issue?" -> "Next topic" [label="no"]; "VERIFY then CREATE" -> "Next topic"; "Next topic" -> "Ask about topic" [label="more"]; "Next topic" -> "Phase 3" [label="done"]; }
When the answer covers multiple topics: (1) WRITE each fact immediately (batch is OK), (2) list back to founder: "Saved: X, Y, Z — correct?", (3) continue with the most important uncovered topic, (4) return to skipped items from interview order later.
Use the topics from your CLAUDE.md config. Default order:
After the topic pass, visit every configured Work Area. Show its observed task/activity facts first, then ask these three questions one at a time:
Save the answers immediately under ## Area Interviews in WNN.md. End with an ## Area Goals table containing Area, observed fact, and proposed next-week goal. A proposed Area goal becomes a commitment only when weekly-planning accepts it as an outcome.
bash# Check for duplicate issues gh issue list -R $YOUR_OWNER/$REPO --search "{keywords}" --state all
| What you learned | Where to write IMMEDIATELY | |-----------------|---------------------------| | Fact about project/product | Canonical file (data.md, product.md, etc.) | | Date/plan changed | Relevant config file + any dependent docs | | Process lesson/insight | Insights file or playbook | | Action item | GitHub issue in the CORRECT repo (see task routing in config) |
Offer if retro surfaces 3+ unresolved risks or founder asks.
3 sub-agents in parallel:
The summary is written to the same $RETRO_LOG_PATH/WNN.md that has been collecting interview notes since Phase 1. Append the summary section at the top or bottom of that file — do not create a separate file.
markdown## Retro WNN (dates) ### Outcomes scorecard [copy the table from $RETRO_LOG_PATH/WNN-outcomes.md Status section + hit rate %] ### Done - ... ### In progress - ... ### Not touched - ... ### Carry-over (from previous retro) - [open items from retro:W{N-1}] ### Lessons -> system updates | Lesson | What was updated | ### Area goals for planning | Area | Observed fact | Proposed goal for next week |
If you have 4+ retros with outcomes scorecards, add a trend row below the table:
Hit-rate trend: W{N-3} 70% / W{N-2} 62% / W{N-1} 81% / WNN 75%This gives the founder visibility on whether the process is improving or degrading.
Issues go to the CORRECT repos (per task routing in your config):
bash# Create retro label gh label create "retro:WNN" -R $YOUR_OWNER/$REPO --color "D4C5F9" # Each issue -> correct repo + label + project board gh issue create -R $YOUR_OWNER/$REPO -t "..." -b "..." -a $YOUR_OWNER --label "retro:WNN" gh project item-add $YOUR_PROJECT_ID --owner $YOUR_OWNER --url {url}
Final table:
markdown### Backlog retro:WNN | # | Repo | Task | Filter: `gh search issues --owner $YOUR_OWNER --label "retro:WNN" --state open`
Goal: by end of retro, zero open issues carrying the retro:WNN label of the closing week. Iron Rule 10.
Trigger: runs after Phase 5 (new backlog created). The skill does NOT proceed to Phase 6 until this step completes.
retro:WNN cross-repo:bashgh search issues --owner $YOUR_OWNER --label "retro:WNN" --state open \ --json repository,number,title,labels,createdAt,assignees
markdown### Phase 5.5 — Triage open WNN | # | Repo | Title | Evidence | Propose | Reason | |---|---|---|---|---|---| | 157 | main-app | feature X follow-up | 0 commits in 5 days, scope obsolete | **drop** | initiative cancelled | | 22 | crm | client Y sync | meeting on 02.05, notes saved | **close** | done — evidence at crm/.../notes.md | | 48 | legal | tax registration | open 4 retros, blocker = external party | **promote** | not weekly-scope, becomes epic | | 99 | docs | guide draft | active work, deadline in 5 days | **spillover → W{N+1}** | normal in-flight | **Stale-rollover check (Iron Rule 11):** N issues already spilled over 2+ times — for these spillover is FORBIDDEN; choose close/drop/promote only.
| Decision | Action | |---|---| | close | gh issue close <N> -R <repo> -c "<evidence>"; verify via subagent that state went to closed | | drop | gh issue close <N> -R <repo> -c "dropped: <reason>" + write the decision to your decisions/insights canonical file (without recording the reason it becomes silent abandonment) | | promote | remove retro:WNN label, add epic:<slug> + create a parent epic issue if missing + add to project as long-running | | spillover | re-label to retro:W{N+1} + comment in the issue with the causal blocker / reason + add a row to $RETRO_LOG_PATH/W{N+1}-outcomes.md (create file if absent) |
gh search issues --owner $YOUR_OWNER --label "retro:WNN" --state open → must return 0 results. If not — STOP, do not proceed to Phase 6.spillover with the reason "founder requested defer" + auto-add to next week's outcomes file (so it comes back in Phase 1.5 next retro as accountability).gh search ... --state open ≠ 0 → STOP, return to Phase 5.5.$RETRO_LOG_PATH/WNN.md (same file that's been collecting Phase 1-5 notes; do not move to an archive directory).$RETRO_LOG_PATH/WNN-outcomes.md with final Status column filled.docs: weekly retro WNNgh issue list --search first -> STOP, check for duplicates$RETRO_LOG_PATH/WNN-outcomes.md -> STOP, Phase 1.5 is mandatorydone Status without evidence -> STOP, every done needs an issue closed / artifact found / payment confirmed via subagentdone outcomes -> STOP, founder time wasted; jump to miss / partial / spillover rowsretro:WNN issues remain -> STOP, return to Phase 5.5| Rationalization | Reality | |----------------|---------| | "Calendar says Meeting — must be a meeting" | Calendar titles are unreliable. Ask. | | "Git data is enough for retro" | Git doesn't know context: why, what was decided, what changed | | "I'll write it later, let me gather everything first" | Later = never. Write immediately | | "This is obviously a main-repo issue" | Route to the correct repo per your task routing config | | "Config says date X — so that's the date" | Plans change. Ask for current status | | "Roughly $X revenue" | Not in canonical files? Don't write it. Fabrication is unacceptable | | "Founder said 30 — so it's 30" | Verbal numbers -> cross-check with live stats/canonical. Show divergence | | "This mention needs an issue" | Not every mention = issue. Ask: "Is this a task?" | | "Outcomes file is missing, I'll just run an open interview" | STOP. Tell the founder explicitly and offer reconstruct/skip. Silent skip degrades next week's planning. | | "I remember this outcome was done" | Memory is not evidence. Each done row needs an issue closed / artifact found via subagent before marking. | | "We'll triage next week — leave the open WNN items as-is" | This is what created the current backlog. Iron Rule 10: zero open WNN items before Phase 6, four terminal decisions only. |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 19,039 | 10,162 | -47% | 1 | 1 | 0% | 693 | 6,781 | +878% | 0 | 0 | — |
case-02 | fail→fail | 15,560 | 14,340 | -8% | 1 | 1 | 0% | 332 | 6,803 | +1949% | 0 | 0 | — |
case-03 | fail→fail | 16,456 | 7,763 | -53% | 1 | 1 | 0% | 486 | 6,926 | +1325% | 0 | 0 | — |
case-04 | fail→pass | 12,537 | 10,154 | -19% | 1 | 1 | 0% | 716 | 7,798 | +989% | 0 | 0 | — |
case-05 | fail→pass | 6,583 | 10,613 | +61% | 1 | 1 | 0% | 949 | 6,919 | +629% | 0 | 0 | — |
case-06 | fail→pass | 9,109 | 15,205 | +67% | 1 | 1 | 0% | 565 | 7,395 | +1209% | 0 | 0 | — |
case-07 | pass→pass | 10,506 | 5,641 | -46% | 1 | 1 | 0% | 778 | 6,639 | +753% | 0 | 0 | — |
case-08 | fail→pass | 20,161 | 10,200 | -49% | 1 | 1 | 0% | 1,136 | 6,707 | +490% | 0 | 0 | — |
case-09 | fail→fail | 12,792 | 4,905 | -62% | 1 | 1 | 0% | 1,076 | 6,561 | +510% | 0 | 0 | — |
case-10 | fail→pass | 12,214 | 14,074 | +15% | 1 | 1 | 0% | 1,154 | 7,282 | +531% | 0 | 0 | — |
case-11 | fail→fail | 13,209 | 21,318 | +61% | 1 | 1 | 0% | 1,256 | 6,674 | +431% | 0 | 0 | — |
case-12 | fail→fail | 7,536 | 4,513 | -40% | 1 | 1 | 0% | 1,181 | 6,452 | +446% | 0 | 0 | — |
case-13 | pass→pass | 15,462 | 9,545 | -38% | 1 | 1 | 0% | 1,968 | 7,532 | +283% | 0 | 0 | — |
case-14 | fail→fail | 9,849 | 7,393 | -25% | 1 | 1 | 0% | 879 | 6,386 | +627% | 0 | 0 | — |
case-15 | fail→fail | 19,493 | 5,894 | -70% | 1 | 1 | 0% | 2,240 | 6,815 | +204% | 0 | 0 | — |
case-16 | fail→fail | 8,954 | 4,113 | -54% | 1 | 1 | 0% | 1,114 | 6,438 | +478% | 0 | 0 | — |
case-17 | fail→pass | 3,793 | 4,671 | +23% | 1 | 1 | 0% | 622 | 6,568 | +956% | 0 | 0 | — |
case-18 | pass→pass | 26,215 | 14,526 | -45% | 1 | 1 | 0% | 2,413 | 7,730 | +220% | 0 | 0 | — |
case-19 | fail→pass | 9,137 | 4,257 | -53% | 1 | 1 | 0% | 1,691 | 6,615 | +291% | 0 | 0 | — |
case-20 | pass→fail | 15,906 | 8,099 | -49% | 1 | 1 | 0% | 2,939 | 6,351 | +116% | 0 | 0 | — |
case-21 | pass→fail | 6,277 | 18,418 | +193% | 1 | 1 | 0% | 1,027 | 8,615 | +739% | 0 | 0 | — |
case-22 | pass→pass | 12,125 | 7,045 | -42% | 1 | 1 | 0% | 2,150 | 7,269 | +238% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 17 counted toward the lift figure. The other 5 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +23 percentage points is the difference between those two pass rates over the 17 comparable cases. 3 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.