OKR Reviews skill for Codex
Score the quarter on evidence, not effort. Codex closes the quarter properly: it freezes data, scores each key result against the original target with linear or predefined partial credit, treats committed and aspirational OKRs differently, and classifies every miss as execution, wrong bet, external, bad target or deprioritised. It then runs a focused retro and writes a QBR with scorecard, wins, misses, risks, next-quarter priorities and explicit asks.
curl -fsSL codexskills.dev/install.sh \ | sh -s -- okr-reviews Installs to ~/.agents/skills/okr-reviews/ for every project on this machine.
curl -fsSL codexskills.dev/cli.mjs -o codex-skills.mjsnode codex-skills.mjs install okr-reviews The CLI also searches, updates and removes skills. Run it with no arguments to pick from a list. Needs Node 20.12+.
curl -fsSL codexskills.dev/install.sh \ | sh -s -- --project okr-reviews Installs to .agents/skills/okr-reviews/ in the current repository. Commit it and everyone who runs Codex there gets it.
curl -fsSLO codexskills.dev/downloads/okr-reviews.zipunzip -o okr-reviews.zip -d ~/.agents/skills/ The archive holds the skill folder with its generated agents/openai.yaml. Unzip into .agents/skills/ to scope it to a repo.
& ([scriptblock]::Create((irm codexskills.dev/install.ps1))) okr-reviews PowerShell 5.1 or 7. Installs to %USERPROFILE%\.agents\skills\. Add -Project for the current repo.
104-line POSIX script. No sudo, no telemetry. Read install.sh
Use it in Codex
Start a prompt with $okr-reviews, or pick it from /skills.
You can also just describe the task: Codex reads the description below and loads the playbook when your request matches.
What Codex reads before loading it
Runs end-of-quarter OKR retrospectives and quarterly business reviews (QBRs) - data freeze, evidence-based key result scoring for committed vs aspirational OKRs, classifying misses (execution, wrong bet, external, bad target), calibration across teams, lessons and carry-over decisions, and a QBR document or deck with scorecard, wins, misses, risks and asks for next quarter. Use when asked to score OKRs, write a quarterly review, prepare a QBR for leadership or the board, run an OKR retro, or summarise a team's quarter.
Use it when
- The quarter has ended and OKRs need scoring
- Leadership or the board expects a QBR document or deck
- Teams score OKRs inconsistently and need calibration
- You want lessons from the quarter to change next quarter's plan
Use something else when
- You are drafting next quarter's objectives and key results: use okr-writing
- You are running a business review with a customer account: use customer-success-playbooks
How to check the result
Every score links to a frozen data source and uses the original target, every miss has a single primary cause, and each retro change has an owner.
The mistake it prevents
Quietly rewriting key results near quarter end to match what was achieved, which makes every score meaningless.
A quarterly review is worth the time when scores are backed by data anyone can check, misses are explained by cause rather than excuse, each lesson changes something next quarter, and leadership leaves knowing what is asked of them. Reviews that grade effort instead of outcomes teach teams to sandbag.
Workflow
- Freeze the data: pick a cut-off date and pull every key result’s final value from its source (dashboard, query, tracker), with a link
- Owners self-score with evidence and a cause for each shortfall
- Calibrate scores across teams (same scale, same standards)
- Hold the retro per team: what worked, what did not, what changes
- Draft the QBR: scorecard, narrative, misses, risks, asks, next-quarter priorities
- Decide carry-overs explicitly (continue, change, drop) - feed into okr-writing
- Publish and archive with the source data links
Read the original OKR document first. Score against the key results as written at the start of the quarter; if a KR was formally changed mid-quarter, note the change and the reason beside the score.
Scoring
Use a 0.0-1.0 scale (or 0-100%) based on how much of the measurable target was achieved.
| OKR type | Expected score | Interpretation |
|---|---|---|
| Committed (must deliver) | 1.0 | Anything below 1.0 is a miss needing explanation and a plan |
| Aspirational (stretch) | 0.6-0.7 on average | Consistent 1.0 means targets were too safe; consistent 0.3 means overreach or poor execution |
Linear scoring for numeric KRs: score = (actual - baseline) / (target - baseline),
capped at 0 and 1. Example: activation baseline 32%, target 40%, actual 37% gives
(37 - 32) / (40 - 32) = 0.625.
For milestone KRs (ship X by date), define partial credit before the quarter, or score binary. Never award points for activity (“worked on”, “started”).
Classifying misses
Every KR below its expectation gets one primary cause:
| Cause | Signal | Typical response |
|---|---|---|
| Execution | Plan was sound; delivery slipped (capacity, dependencies, quality) | Fix planning, staffing or dependencies |
| Wrong bet | Delivered the work, metric did not move | Record the learning; change approach, not just effort |
| External | Market, regulation, partner, outage beyond control | Note it; consider leading indicators next time |
| Bad target | Baseline wrong, metric unmeasurable, target arbitrary | Fix measurement before setting the next target |
| Deprioritised | Leadership moved focus mid-quarter | Record the decision and who made it |
“Wrong bet” is valuable information, not failure; aspirational OKRs exist to make bets.
Calibration
- Compare scores across teams for the same kind of KR. If one team scores milestone KRs generously, adjust or flag it.
- Challenge any 1.0 on an aspirational KR (was it a stretch?) and any score without a data link.
- Check for KRs that were achieved while the objective clearly was not (for example, shipped all features but customers did not use them). Comment on the objective, not just the KRs.
Retro format (45-60 minutes per team)
- Scorecard walk-through (10 min): scores and causes, no debate on numbers that have sources.
- What helped us hit targets? (10 min, silent writing then share)
- What got in the way? (15 min, grouped into themes)
- What will we change next quarter? (15 min): at most three changes, each with an owner.
- Carry-over decisions (5 min): continue, change or drop each unfinished objective.
Facilitation techniques are in meeting-facilitation.
QBR document structure
# <Team/Company> - Q<n> <year> business review
**Headline:** <one sentence: the quarter in outcome terms>
## Scorecard
| Objective | Key result | Baseline | Target | Actual | Score | Type | Cause if missed | Source |
|---|---|---|---|---|---|---|---|---|
## Key metrics vs plan
| Metric | Plan | Actual | vs last quarter | Comment |
|---|---|---|---|---|
<revenue, customers, retention, delivery, hiring, burn - whatever the business runs on>
## Wins (3 max)
<Outcome, evidence, what made it work>
## Misses (all material ones)
<KR, cause, what we learned, what changes>
## Customer and market signals
<Patterns from customers, competitors, sales; with examples>
## Risks for next quarter
| Risk | Likelihood | Impact | Mitigation | Owner |
## Next quarter priorities
<3-5 objectives, draft; link to OKR doc>
## Asks
<Decisions, budget, headcount, cross-team help - each with who and by when>
For a board or customer-facing QBR, keep the scorecard and asks; move team-level detail to an appendix. Customer QBRs (vendor to client) belong to customer-success-playbooks.
Writing the narrative
- Lead each section with the conclusion, then the evidence.
- Report misses with the same prominence as wins. Leaders trust reviews that show bad news early.
- Use numbers with comparison: vs target, vs last quarter, vs same quarter last year.
- Lessons must name a change (“we will set targets only on metrics with 8 weeks of baseline data”), not a sentiment (“communication could improve”).
Gotchas
- Rewriting KRs late in the quarter to match what was achieved; it destroys the signal.
- Scoring from memory or optimism the night before; freeze data and link sources.
- Too many KRs (more than 3-4 per objective) makes the review a list-reading exercise.
- Average scores across committed and aspirational OKRs hide missed commitments.
- Retros with no follow-up: check last quarter’s “what will change” items first.
- Treating OKR scores as individual performance ratings encourages sandbagging.
Output
Scored OKR table with sources, retro notes with up to three owned changes, carry-over decisions, and the QBR document (or deck outline for pptx-presentations) with asks.
What the zip contains
SKILL.md plus the interface file below. Nothing runs on install.
agents/openai.yaml
Gives the Codex app a display name, a one-line description and a starter prompt for this skill.
interface:
display_name: "OKR Reviews"
short_description: "Score the quarter on evidence, not effort"
default_prompt: "$okr-reviews Score our Q3 OKRs from these dashboards and explain each miss" About this skill
Written and maintained by the Codex Skills editors to the same editorial standard as every skill here: a selective description, a real workflow, known pitfalls and a way to verify the work. First published , last updated . MIT licensed. Something wrong or out of date? Tell us.