Write Key Results
When to use
When KRs need the outcome test — measurable change in an indicator, not confirmation a deliverable shipped.
What this skill does not do
- Does not draft objectives — route to
/okr:draft-objectives. - Does not set targets — route to
/okr:set-targetsafter baselines known. - Does not instrument metrics — route unknown baselines to
/okr:instrument-metrics.
Preconditions
| Input | If missing |
|---|---|
| Objective the KR set serves | Ask — every check depends on it |
| Candidate KRs (or request to draft) | Ask user to provide or draft from objective |
Provisional mode
Without baseline data: flag Baseline status: unknown per KR; do not imply targets are ready.
Trust spine
- Confidence bands (
structured-aggregation):- High: Outcome-shaped KRs, vanity risks named, set collectively sufficient.
- Medium: Some output-shaped flags with reframes.
- Low: Majority deliverable-shaped — set not ready for targets.
- Failure modes:
- Strategic advice vs. support: Verdicts diagnostic; strategist owns final KRs.
- Client confidentiality: KRs may be pre-release — CONFIDENTIAL header.
- Accountability gap: Deliverables relocated to tasks, not silently kept as KRs.
- Analytical Rigor: Set-level sufficiency check — hitting all KRs proves objective?
- Incentive Gaming: Vanity-metric and sandbagging-by-proxy checks — easy-to-hit numbers that don't prove objective.
- Escalation triggers: Set insufficient even if every KR passes individually — name gap.
Workflow
- Get the objective — explicit, not implied.
- Outcome test per KR — deliverable language ("ship," "launch") → reframe to outcome.
- Vanity-metric check — would unrelated improvement fool readers?
- Baseline check — unknown → flag for
instrument-metrics. - Set sufficiency — would hitting all KRs prove the objective?
- Completeness check before output.
Output format
CONFIDENCE: [defensible recommendation | structured first pass]
LOAD-BEARING ASSUMPTIONS: [if any]
OBJECTIVE: [text]
KR 1: [text]
Verdict: [PASS | FLAG — output-shaped | FLAG — vanity metric risk]
Baseline status: [known | unknown — flag for instrument-metrics]
[repeat per KR]
SET-LEVEL CHECK: [would hitting all KRs prove the objective? any gap?]
Worked example
Input: Objective "Improve enterprise retention." KR "Ship onboarding v2."
Expected output (excerpt):
KR 1: Ship onboarding v2
Verdict: FLAG — output-shaped; suggested outcome: 90-day logo retention ≥ 92%
Baseline status: unknown — flag for instrument-metrics
SET-LEVEL CHECK: insufficient — single output KR doesn't prove retention objective
Quality checks before delivering
- Objective explicit at top
- Outcome test on every KR
- Vanity-metric check run
- Baseline status per KR
- Set-level sufficiency assessed
- Figures source-tagged or omitted
Propose profile update
When a stable convention surfaces during this run (thresholds, naming, tone, output format, or recurring corrections), propose a profile update: show the exact diff against ~/.claude/plugins/config/claude-for-strategy/okr/CLAUDE.md (org-wide facts go to org-profile.md), ask for confirmation, and write only on yes. Only /okr:practice-setup auto-applies a full profile write.
Outputs
Follows plugin CLAUDE.md § Outputs. Next: instrument-metrics, set-targets, or revise flagged KRs.