Install
$ agentstack add skill-stefanoskarakasis-product-marketing-skills-pmm-okrs ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
pmm-okrs
A guided OKR builder for Product Marketing teams. Run it at the start of every quarter. Outputs a complete, review-ready OKR set you can paste directly into the PMM OKR Builder sheet. Learns from prior quarters to improve confidence calibration and KR quality. ---
Trigger
- When: Start of any quarter when setting PMM OKRs. When reviewing or stress-testing
existing KRs before committing. When building a measurement plan or leadership-ready exec narrative from a finalised OKR set.
- Not for: Company-level OKR design (not PMM-specific) → general planning tool.
Revenue forecasting or headcount planning. OKR tooling setup (Lattice, Workday) — this skill produces content, not configuration. If no quarterly strategy exists yet → run hs-pmm-strategy first, then return here.
- Example prompts:
- "Help me set our Q3 OKRs"
- "Are these KRs measurable enough?"
- "Build a scorecard for my chosen option"
- "Write OKRs for my team lead who owns competitive intelligence"
- "Stress-test this KR: improve win rate in enterprise"
- "I need to present our goals to the exec team next week"
Inputs
- Args: Company objective, PMM mandate, team size, primary metric, biggest challenge,
ICP, and named competitors. All optional at start — skill gathers via intake flow.
- Defaults: If no args provided, run intake flow via
/build. If partial context
is provided, infer where possible and surface gaps explicitly before proceeding.
- Context keys:
.agents/product-marketing-context.md— optional but recommended. Load Revenue
Levers, Goals & KPIs, Big Bet Campaigns, Company Overview silently if present.
/context/meta-patterns.md— optional; recurring patterns from all skills (guardrail prompts)knowledge/okrs/rules.md— apply confirmed OKR craft rules by default.knowledge/okrs/hypotheses.md— test any active hypothesis if applicable today.decisions/— check for prior decisions before making new recommendations./context/skill-sessions.md— optional; prior quarter OKR data for confidence calibration
Brain contract: Reads: Section 2 (ICP), Section 3 (Positioning), Section 5 (Revenue), Section 6 (Goals). Writes: /context/skill-sessions.md, /foundation/brain.md Section 5 (if lever weights change). ---
Pre-flight
Load guardrails first: Check /context/meta-patterns.md for recurring OKR patterns. If pattern matches (e.g., "confidence calibration off by 15% in Q2-Q3"), surface guardrail prompt before Step 1.
Before starting, check .agents/product-marketing-context.md. If it exists — load silently:
## Revenue Levers→ align OKRs to the stack-ranked levers## Goals & KPIs→ use North Star + OMTM as anchors## Big Bet Campaigns→ surface as project goals## Company Overview→ stage and business model context
Confidence awareness: If loaded sections are 🔴, flag before building OKRs: > "Revenue Levers is marked as Placeholder — OKRs built on this may need revisiting. Want to update it first?" If missing: Proceed. Surface once: > "Run hs-product-marketing-context BUILD first for sharper OKRs. Continuing."
Load prior quarter data: Check /context/skill-sessions.md for last quarter's OKR results to calibrate confidence: > "Last quarter: confidence was 75%, actual achievement was 78%. You're well-calibrated. Recommend similar range this quarter."
Related skills — cross-reference before or after this skill:
- hs-pmm-strategy → run before this skill if no quarterly strategy exists yet
- hs-product-requirement-doc → PRDs inform project OKRs; check for alignment
- hs-gaccs-brief → campaign briefs should trace back to OKR project goals
- meta-synthesis → after 3+ quarters logged, meta-synthesis detects OKR patterns
Steps
Step 0: Surface Guardrails (NEW)
Before intake, check for patterns:
If /context/meta-patterns.md exists and contains OKR patterns:
🔁 PATTERN DETECTED FROM PRIOR QUARTERS
I've detected [specific pattern] in [N] prior quarters.
Example: "Confidence off by 15%", "External dependency blockers 3+ times", "KR design failure on 'improve adoption'"
Quick question: Are you seeing this pattern again in Q4?
- If YES → we'll flag it as a confirmed problem + propose a fix
- If NO → we'll watch for other patterns
This helps calibrate your confidence and KR design.
Common guardrail patterns to surface:
- "Confidence too high (90%+) but achievement 65%" → "Recommend: set confidence 70% or below"
- "External dependencies blocked 3+ KRs" → "Build dependency risk into confidence"
- "KR too vague again ('improve adoption')" → "Be specific: 'Adoption in SMB segment 60% → 75%'"
- "Lever weight assumptions changed mid-quarter" → "Lock lever weights at start"
If patterns apply, ask guardrail question. User can skip, but they've been warned.
Step 1 — /build
- Run intake (or infer from pasted context).
- Load
knowledge/okrs/rules.md+ check guardrails from/context/meta-patterns.md. - Check
decisions/for prior choices in this area. - Check
/context/skill-sessions.mdfor prior quarter confidence calibration. - Generate three OKR options.
- Run independent evaluation pass (Block 3) on all three.
- Present with Quality Gate results inline + confidence recommendations based on prior quarters.
- Log option selection to
decisions/.
Step 2 — /review
- Accept pasted OKRs.
- Run each KR through all five Quality Gates (binary).
- Flag every failure with an ADVERSARIAL CALLOUT and a rewrite.
- Return annotated set.
Step 3 — /scorecard
- Work from OKRs in session or ask user to paste.
- Map each KR to metric, target, measurement method.
- Group by category.
- Confirm Weight = 100%.
- Output scorecard.
Step 4 — /exec
- Confirm OKRs are finalised (not drafts).
- Translate to one-paragraph exec narrative.
Step 5 — /map
- For each KR, generate required projects with owner type, effort (S/M/L), timeline.
- Flag capacity conflicts if team size known.
- Cross-reference against guardrails: "External dependencies flagged in 3 prior quarters. This KR has 2. Accept risk?"
Step 6 — /stress-test [KR]
- Accept one KR.
- Run through five Quality Gates.
- Return per-gate pass/fail + rewrite.
Step 7: Post-Session Logging (NEW)
After every session, log structured data to /context/skill-sessions.md:
skill: pmm-okrs
session_date: 2026-06-21
quarter: "Q3 2026"
okr_set_version: 1
objectives_count: 3
key_results_count: 9
confidence_level: "medium"
confidence_range: "65-70%"
krs_with_baseline_metrics: 9
krs_with_tracking_mechanism: 7
krs_with_stretch_factor: 6
aggressive_vs_conservative: "mixed"
dependencies_identified: true
dependencies_external: 3
dependencies_internal: 1
prior_quarter_okrs:
- quarter: "Q2 2026"
krs_achieved: 7
krs_partial: 1
krs_missed: 1
achievement_rate: 0.78
confidence_predicted: 0.75
current_vs_prior_stretch: "more_aggressive"
confidence_vs_last_quarter: "higher"
confidence_calibration_delta: "+2%"
output_path: "/foundation/okrs/Q3-2026-PMM-OKRs.md"
guardrails_triggered:
- "External dependencies: 3 (same as Q2). Last quarter we missed 1 KR due to external dependency. Recommend: align with dependent teams by Week 1 of Q3."
- "Stretch factor: 6/9 KRs are ambitious (2x+). This is higher than Q2 (4/8). Recommend: ensure team capacity supports this."
- "Confidence calibration: Q2 predicted 75%, achieved 78%. You're well-calibrated. Recommend similar range (72-78%) for Q3."
brain_updates_proposed: []
This feeds into meta-synthesis skill (monthly) which detects OKR patterns across quarters and updates guardrails.
Step 8: Deliver Output and Log Learning
Deliver the OKR set. Then run the self-improvement loop: write session file → update knowledge base → log decisions → run quality gate → propose confidence adjustments. ---
Outputs
- Files written:
/context/skill-sessions.md— row appended with session metadata and guardrails (NEW)decisions/YYYY-MM-DD-{topic}.mdwhen a strategic OKR choice is logged.knowledge/okrs/hypotheses.mdandrules.mdwhen the self-improvement loop triggers at session end.
- Chat output format: Three OKR option blocks in code-fence structured output,
each with Quality Gate results inline. Scorecard table. Exec Summary paragraph. All formatted for direct paste into the PMM OKR Builder spreadsheet.
- External side effects: None beyond context writes.
Verification
- Guardrails checked before intake (Step 0) — patterns from prior quarters surfaced.
- All
/buildoutput contains three OKR options unless user explicitly requests fewer. - Every option includes Quality Gate results (five binary checks) before delivery.
- No output delivered before the independent evaluation pass (Block 3) has run.
- Adversarial callouts surface inline before delivery, never post-delivery.
- Decision log written whenever a recommendation will affect the user's quarter.
/execoutput produced only from finalised OKRs, not from draft options.- Scorecard Weight confirmed at 100% before delivery.
- Confidence calibration checked against
/context/skill-sessions.mdprior quarter data. - Session logged to
/context/skill-sessions.mdwith all metadata.
Do Not Use For
- hs-pmm-strategy — if no quarterly strategy exists yet, run that first. This skill
builds OKRs from a strategy, not instead of one.
- hs-prioritization-frameworks — for prioritising which initiatives to include in
a quarter before OKRs are set. Run that upstream, then return here.
- hs-gaccs-brief — for campaign planning that traces back to OKRs already set.
Use after /build to brief individual campaigns.
- Company-level OKR design — this skill is PMM-specific. Exec team or company
OKRs require different framing and are out of scope.
- OKR tooling setup — this skill produces OKR content, not Lattice/Workday
configuration or workflow automation. ---
Reasoning Architecture
Block 1 — Knowledge Architecture (Learning Loop)
Before any task:
- Load
knowledge/INDEX.mdand relevant domain folders. - Apply
rules.mdby default. - Test any active hypothesis if applicable today.
- Load
/context/meta-patterns.mdfor cross-skill guardrails. - Load
/context/skill-sessions.mdfor prior quarter confidence calibration.
After any session:
- Extract 1–3 insights.
- Unconfirmed →
hypotheses.md. - Confirmed 3+ times → auto-promote to
rules.md. - Contradicted → demote to
hypotheses.md. - Log confidence calibration delta for future quarters.
> Environment note: Persistent /knowledge/ works in Claude Code and Cowork. > In Claude.ai chat, surface insights at end of session for manual carry-forward.
Block 2 — Decision Journal
Check decisions/ before any recommendation. Log new decisions immediately.
File: decisions/YYYY-MM-DD-{topic}.md
Decision / Context / Alternatives / Reasoning / Trade-offs / Supersedes
Log when:
- Choosing between OKR options.
- Recommending a measurement method.
- Flagging a failing gate.
- Any recommendation affecting the user's quarter.
- Confidence calibration adjustments based on prior quarter data.
Block 3 — Independent Evaluation Pass
After generating any output: re-read cold as evaluator. Run all five Quality Gates binary. Rewrite failures before delivery. Report gate results inline.
Confidence calibration check: Compare predicted confidence vs. actual achievement from prior quarter. Adjust recommendations:
Last quarter: Predicted 75%, Achieved 78% → You're well-calibrated
This quarter: Recommend 72-78% confidence range
Commands
/build
Builds three OKR options from scratch with Quality Gate results and confidence calibration. Example prompts:
Help me set our Q3 OKRs. 3-person PMM team, B2B SaaS, company OKR: grow ARR 40%.Build OKRs for a solo PMM at a Series B. Challenge: positioning isn't landing.
/review
Audits existing OKRs against all five Quality Gates. Returns exact fixes. Example input:
Objective: Improve go-to-market in mid-market.
KR 1: Launch 4 battlecards. KR 2: Run monthly training. KR 3: Increase pipeline.
/scorecard
Maps each KR to metrics, targets, and measurement methods.
/exec
Generates one-paragraph exec-ready OKR narrative for QBRs and VP presentations.
/map
Builds OKR → Projects table with owner type, effort (S/M/L), and timeline. Cross-references guardrails.
/individual [specialty]
Generates OKRs for an individual PMM contributor.
/individual positioning·/individual competitive·/individual gtm
/stress-test [KR]
Runs one KR through all five Quality Gates. Returns pass/fail + rewrite. ---
Output Format
═══════════════════════════════════════════
OPTION [A / B / C] — [Strategic Focus]
═══════════════════════════════════════════
OBJECTIVE: [1–2 sentence qualitative goal.]
KR 1 — [Name]: [Outcome. Target. Deadline. Measurement.]
KR 2 — [Name]: [Outcome. Target. Deadline. Measurement.]
KR 3 — [Name]: [Outcome. Target. Deadline. Measurement.]
CONFIDENCE: [X%]
CONFIDENCE REASONING: [Based on prior quarter calibration: if last quarter predicted 75% achieved 78%, recommend similar range]
CHOOSE THIS WHEN: [1-sentence fit description.]
KEY PROJECTS: 1. [name — KR] 2. [name — KR] 3. [name — KR]
QUALITY GATE RESULTS:
Gate 1 — Outcome not output: ✅ / ❌
Gate 2 — Measurable without ambiguity: ✅ / ❌
Gate 3 — Causally linked to objective: ✅ / ❌
Gate 4 — 60–70% confidence: ✅ / ❌
Gate 5 — Three or fewer KRs: ✅ / ❌
GUARDRAILS: [Cross-skill patterns from prior quarters, if any]
═══════════════════════════════════════════
Quality Gates
| Gate | Test | Fail | Pass | |---|---|---|---| | 1 | Outcome, not output | "Launch 4 battlecards" | "Win rate up 8%" | | 2 | Measurable without ambiguity | "Improve messaging" | "80% resonance from 50 reviews" | | 3 | Causally linked to objective | PMM doesn't own lever | PMM controls what moves this | | 4 | 60–70% confidence | >90% or ⚠️ ADVERSARIAL CALLOUT: [Issue] — [Why it's a problem and what to write instead.] ---
Operating Rules
- Guardrails first. Load
/context/meta-patterns.mdat pre-flight. Surface guardrail prompt if pattern matches this quarter's planning. - Load brain context before intake. Pre-flight runs silently — never ask for context already loaded.
- Load prior quarter data for confidence calibration. Check
/context/skill-sessions.mdbefore confidence recommendations. - Three options minimum on
/build. Choice architecture is the value. - Independent evaluation pass is non-negotiable. Unreviewed output is not delivered.
- Adversarial callouts surface before delivery, not after. Rewrites happen during generation.
- Decision logging is not optional. Every recommendation affecting the quarter gets logged.
- Writes only to
decisions/,knowledge/, and/context/skill-sessions.md. No writes to brain file. - Confidence range is enforced. >90% or <50% triggers an adversarial callout. Calibrate against prior quarter achievement.
- Gate results in table format only. Binary ✅ / ❌ — no narrative substitution.
- Scorecard Weight confirmed at 100% before delivery. Surface discrepancy if unbalanced.
/execonly from finalised OKRs. Prompt for option choice if drafts only.- Always log. Every quarter's OKR session logged to
/context/skill-sessions.md. Meta-synthesis learns from achievement rates across quarters.
Quality Gate
Runs before final delivery. Score each criterion 1–3. Minimum 17/21 to pass. | Criterion | Standard | Score (1–3) | |---|---|---| | Guardrails surfaced | /context/meta-patterns.md checked at pre-flight | | | Confidence calibration | Prior quarter data checked for adjustment recommendations | | | Three option
…
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: stefanoskarakasis
- Source: stefanoskarakasis/Product-Marketing-Skills
- License: MIT
- Homepage: https://stefanoskarakasis.substack.com/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.