一键导入
okr-status
Generate the weekly OKR status email — Zynga-style from Radical Focus. Triggers: "status email", "weekly status", "okr update email", "write status"
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Generate the weekly OKR status email — Zynga-style from Radical Focus. Triggers: "status email", "weekly status", "okr update email", "write status"
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Friday Wins Celebration from Radical Focus. End the week by celebrating progress, recognizing focus, and gathering team feedback. Use when: "friday wins", "weekly celebration", "demo day", "wins session".
Monday Commitment Meeting — the Four-Square format from Radical Focus. Triggers: "monday meeting", "weekly commitments", "four-square", "check in on OKRs", "monday check-in", "weekly OKR review", "commitment meeting"
Generate a one-pager for new team members joining mid-quarter. Use when: "onboard new hire", "okr intro", "new team member", "explain our okrs", "what are we working on", "alignment doc".
Quarterly OKR setting session. Facilitates the Wodtke method from Radical Focus. Use when: "set okrs", "new quarter", "define objectives", "okr setting", "quarterly planning", "set key results", "start Q2", "start Q3", "new okrs", "what should we focus on", "quarterly goals".
First-time OKR onboarding. Sets up mission, strategy, and prerequisites. Use when: "setup okrs", "get started with okrs", "okr onboarding", "define our mission", "okr prerequisites", "first time okrs".
Format OKR outputs for Slack, email, or Attio CRM. Use when: "sync to slack", "format for email", "share okrs", "post to slack", "send status email", "update attio", "okr sync", "export okrs".
| name | okr-status |
| version | 0.1.0 |
| description | Generate the weekly OKR status email — Zynga-style from Radical Focus. Triggers: "status email", "weekly status", "okr update email", "write status" |
| allowed-tools | ["Read","Write","Edit","Glob","Bash","AskUserQuestion"] |
You generate a plain-text status email the CEO can copy-paste and send. The format is inspired by the Zynga weekly status emails described in Christina Wodtke's Radical Focus: compact, scannable, no fluff.
Before any interaction, silently run these three commands and absorb their output. Do NOT print the raw output to the user.
bin/okr-update-check # check for okr-os updates
bin/okr-quarter-info # quarter name, week number, phase
bin/okr-state # current objective, KRs, confidence, health
If UPGRADE_AVAILABLE is printed, tell the user: "A newer version of
okr-os is available. Run /okr-upgrade to update."
From bin/okr-quarter-info capture:
QUARTER (e.g. Q2-2026)WEEK (1-13)PHASE (early, mid, late, final)YEARFrom bin/okr-state capture:
OBJECTIVE textKR{n} with description, confidence score, and targetHEALTH metric statusesCODE_RED statusLAST_MONDAY filepathLAST_FRIDAY filepathIf bin/okr-state exits with code 1 (no objective set), print:
No active OKR set. Run
/okr-setfirst.
Then stop.
Find the current week's Monday file at:
.okr/quarters/{QUARTER}/weekly/{YYYY-MM-DD}-monday.md
where {YYYY-MM-DD} is the most recent Monday (today if Monday, else
the preceding Monday).
If no monday.md exists for this week, stop and tell the user:
"Run /monday first. The status email pulls from this week's Monday Commitment Meeting data."
This is a hard requirement. The status email is generated FROM the Monday meeting, not as a replacement for it.
Parse the YAML frontmatter to extract:
priorities — this week's P1 commitments (with kr_connection)confidence — kr1, kr2, kr3 scores (1-10)last_week_results — each item with status (done/not_done) and
optional reasonhealth_metrics — each with name and status (green/yellow/red)health_score — composite score (0-100)code_red — booleanIf a previous monday.md exists (the file before this week's), parse
its confidence block to get the prior week's KR scores. These become
the "was N" values for week-over-week comparison.
If no prior week exists (first week of quarter), omit the "was N" notation and skip the LAST WEEK section.
Read .okr/quarters/{QUARTER}/objective.md for the full KR
descriptions and targets (the key_results array in frontmatter).
Run:
bin/okr-health-score --quarter {QUARTER}
Capture the score value from the JSON output. If the command fails
(insufficient data), fall back to computing a simple score from health
metrics: green=100, yellow=50, red=0, averaged.
Use AskUserQuestion for two pieces the data files do not contain:
Ask:
"Any risks or blockers to flag in the status email? These should be things stakeholders need to know about — resource constraints, external dependencies, decisions needed. Type 'none' if all clear."
Ask:
"Any additional notes for the status email? Team wins, context for stakeholders, upcoming changes. Type 'none' to skip."
Build a plain-text email following these design conventions:
Subject line:
[OKR Status] Week {N}/13 -- Health: {score}/100
KR lines: Each KR line must fit 72 chars. Use dot-leaders between the description and the score. Format:
KR{n}: {desc} ........... {score}/10 (was {prev}) -> {actual}
{desc} if needed to fit within 72 charsDROPPING with a warning emoji(was {prev}){actual} is a brief current-state note if available from the
monday.md, otherwise omit the arrow and actualLast week results:
LAST WEEK
{mark} {item text}
This week priorities:
THIS WEEK (P1s)
1. {priority text} ({KR tag})
2. {priority text} ({KR tag})
3. {priority text} ({KR tag})
Risks & Blockers:
RISKS & BLOCKERS
. {risk description}
If none, omit this section entirely.
Notes:
NOTES
. {note text}
If none, omit this section entirely.
Subject: [OKR Status] Week {N}/13 -- Health: {score}/100
OBJECTIVE: {objective text}
----------------------------------------------
KR1: {desc} ........... {n}/10 (was {prev})
KR2: {desc} ........... {n}/10 (was {prev}) DROPPING
KR3: {desc} ........... {n}/10 (was {prev})
LAST WEEK
{checkmark} done item
{x} not done item -- brief reason
THIS WEEK (P1s)
1. priority (KR1)
2. priority (KR2)
3. priority (KR3)
RISKS & BLOCKERS
. risk description
NOTES
. note
After generating the email, verify every line is at most 72 characters. If any line exceeds 72 chars, wrap it intelligently:
Write the generated email to:
.okr/quarters/{QUARTER}/weekly/{YYYY-MM-DD}-status.md
where {YYYY-MM-DD} is today's date.
Create the directory if it does not exist:
mkdir -p .okr/quarters/{QUARTER}/weekly
The file should contain the full email text as-is (no additional frontmatter — it is a copy-paste artifact, not a data file).
After saving, print the full email to the terminal so the CEO can copy-paste it directly. Introduce it with:
"Status email saved and ready to send:"
Then print the email text verbatim.
*** CODE RED: {metric} -- OKR work paused ***
(All KRs high-confidence -- are targets ambitious enough?)
** Multiple KRs declining -- consider reprioritizing **