Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when coordinating product work across the 12 bundled product sub-skills (RICE, OKRs, UX research, design tokens, competitive teardown, analytics, experiments, discovery, roadmaps, spec-to-repo, landing pages, SaaS scaffolding) or the 4 standalone product-team plugins (user stories, Apple HIG, code-to-PRD, research summarizer). Triggers on 'help me prioritize', 'plan a product experiment', 'we ship features nobody uses', 'run the discovery loop', 'is our OST sound'. Forks context to route to
.claude/skills/alirezarezvani-product-skills/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-03 | ✗→✓ | ▲ Improved | 155% | 0% |
| case-04 | ✗→✓ | ▲ Improved | -25% | 0% |
| case-05 | ✗→✓ | ▲ Improved | -3% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 482% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 83% | 0% |
This orchestrator does two jobs. Routing: fork context, classify a product inquiry with scripts/product_goal_router.py across all 16 product-team lanes (12 bundled + 4 standalone plugins), run exactly one, return a digest. Looping: run product work as bounded agentic loops with machine-checkable gates — the continuous-discovery loop (weekly cadence scored by discovery_cadence_tracker.py, tree structure enforced by ost_linter.py) and goal-scale runs through the repo-wide agent-harness.
| Symptom | Sub-skill | |---|---| | "Prioritize features / RICE / PRD" | product-manager-toolkit | | "OKRs, strategy cascade" | product-strategist | | "Personas, usability, research synthesis" | ux-researcher-designer | | "Design tokens, WCAG contrast" | ui-design-system | | "Competitor matrix, teardown" | competitive-teardown | | "Retention, cohorts, funnels, KPIs" | product-analytics | | "A/B test, sample size, hypothesis" | experiment-designer | | "Discovery, assumptions, opportunity trees" | product-discovery | | "Roadmap comms, release notes, changelog" | roadmap-communicator | | "Spec → runnable repo" | spec-to-repo | | "Landing page (Next.js/Tailwind)" | landing-page-generator | | "SaaS boilerplate" | saas-scaffolder | | "User stories, sprint capacity" | agile-product-owner (standalone) | | "Apple HIG audit" | apple-hig-expert (standalone) | | "PRD from an existing codebase" | code-to-prd (standalone) | | "Summarize papers/articles" | research-summarizer (standalone) |
bashpython3 scripts/product_goal_router.py --text "<the goal>" --output json
Exit 0 → route_to names the skill (with skill_path, including the standalone plugins): load its SKILL.md and follow its workflow. Exit 2 → ask ONE clarifying question naming the listed candidates, with a recommended answer. Exit 3 → no signal: ask the user to restate the goal with the deliverable named. Never guess silently; never silently chain — digest first, confirm, then chain.
Modern discovery is a weekly habit, not a project phase (Torres). Run it as a bounded loop with two machine gates:
discovery_log.json (interviews, assumption tests; shape inassets/sample_discovery_log.json) and score the cadence: bash python3 scripts/discovery_cadence_tracker.py --input discovery_log.json Refuses on < 2 interviews (exit 5) — there is no cadence to measure yet. Output: health 0–100, verdict HEALTHY/AT-RISK/DORMANT, named gaps, and next_loop_action.
next_loop_action IS the choice: book the touchpoint,re-anchor the guide on the outcome, or test the top untested assumption (route to product-discovery's assumption_mapper for prioritization).
bash python3 scripts/ost_linter.py --input ost.json # exit 2 = NEEDS-REWORK, fix before citing the tree Rules: one measurable outcome root (O1), opportunities are needs not features (O2), targeted opportunities compare ≥ 2 solutions (O3), every solution has an assumption test (O4), no orphan solutions (O5 — the feature-factory tell).
states: HEALTHY + validated assumption → graduate to experiment-designer (build the A/B gate) or product-manager-toolkit (PRD); DORMANT for 4+ weeks → escalate to the product lead by name — do not quietly let discovery die.
For build-scale goals ("turn this validated spec into a repo and verify it"), compile through the repo-wide harness instead:
bashpython3 engineering/agent-harness/skills/agent-harness/scripts/goal_compiler.py \ --goal "<goal>" --manifest engineering/agent-harness/skills/agent-harness/assets/harnesses/product-team.json \ --out .agent-harness/plan.json
The domain's three strongest close-out gates plug in as task verifications: ../spec-to-repo/scripts/validate_project.py (exit 0), code-to-prd's golden expected_outputs/, and research-summarizer's citation-count check.
ost_linter.pyexits 0; no insight is asserted from a single participant (anecdote, not insight).
is the intake gate.
../experiment-designer/scripts/sample_size_calculator.py, never gut feel; report the MDE with the verdict.
time sensitivity dominates, opportunity scoring for underserved needs — name which and why (see references/product_operating_model.md).
for probabilistic features (references/ai_product_evals.md).
never report as success.
One per turn, recommended answer, canon citation. Never run a sub-skill or start a loop until the lane-defining decision is locked:
number? Recommended: write it as the OST root first — opportunities without an outcome are a feature factory. Canon: Torres, Continuous Discovery Habits; opportunity solution trees (producttalk.org)."
item a quarter erode its value? Recommended: if yes, run WSJF/cost-of-delay alongside RICE and compare ranks; flag items whose rank flips on a one-step estimate change. Canon: Reinertsen, Principles of Product Development Flow; SAFe WSJF false-precision critique."
Recommended: compute n first; if you can't reach it in 4 weeks, test a bigger lever. Canon: statistical power analysis (experiment-designer)."
revenue/vanity? Recommended: leading value metric with an input tree. Canon: Amplitude, The North Star Playbook."
output OKRs are the #1 operating-model failure. Canon: Cagan, Transformed (SVPG, 2024)."
should be built at all? Recommended: link the OST test that survived; building is the most expensive way to test an idea. Canon: Torres; Bland, Testing Business Ideas."
resumable; every tool ships --sample so the shape is visible first.
routes to them by path if not).
project-management.engineering/agent-harness; this orchestrator isthe product-domain adapter (router + discovery gates).
marketing/landing builds from-scratch marketing pages;landing-page-generator here scaffolds product Next.js/TSX pages.
| Mode | Artifact | |---|---| | Route | Sub-skill's own artifact + ≤ 200-word digest with one canon-cited challenge | | Discovery loop | discovery_log.json + cadence report + linted ost.json | | Harness run | .agent-harness/plan.json + state.json + close handoff |
Torres, OST, assumption testing, JTBD switch interviews, story mapping
Transformed, North Star framework, PLG benchmarks, WSJF/ODI vs RICE
cards, evaluator-optimizer loops
engineering/agent-harness · Loop vocabulary: loop-library| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 8,111 | 16,915 | +109% | 1 | 1 | 0% | 1,428 | 2,821 | +98% | 0 | 0 | — |
case-02 | fail→fail | 20,826 | 6,474 | -69% | 1 | 1 | 0% | 3,744 | 2,952 | -21% | 0 | 0 | — |
case-03 | fail→pass | 7,958 | 7,444 | -6% | 1 | 1 | 0% | 1,459 | 3,716 | +155% | 0 | 0 | — |
case-04 | fail→pass | 24,636 | 7,231 | -71% | 1 | 1 | 0% | 5,083 | 3,832 | -25% | 0 | 0 | — |
case-05 | fail→pass | 23,456 | 12,117 | -48% | 1 | 1 | 0% | 5,136 | 5,001 | -3% | 0 | 0 | — |
case-06 | fail→pass | 4,375 | 8,042 | +84% | 1 | 1 | 0% | 675 | 3,926 | +482% | 0 | 0 | — |
case-07 | fail→fail | 9,532 | 20,491 | +115% | 1 | 1 | 0% | 1,717 | 2,844 | +66% | 0 | 0 | — |
case-08 | fail→pass | 11,824 | 6,842 | -42% | 1 | 1 | 0% | 2,050 | 3,757 | +83% | 0 | 0 | — |
case-09 | fail→pass | 11,169 | 6,148 | -45% | 1 | 1 | 0% | 1,878 | 3,526 | +88% | 0 | 0 | — |
case-10 | fail→pass | 12,597 | 6,973 | -45% | 1 | 1 | 0% | 2,038 | 3,593 | +76% | 0 | 0 | — |
case-11 | fail→pass | 10,981 | 10,614 | -3% | 1 | 1 | 0% | 2,106 | 4,671 | +122% | 0 | 0 | — |
case-12 | pass→pass | 12,080 | 9,243 | -23% | 1 | 1 | 0% | 2,014 | 4,038 | +100% | 0 | 0 | — |
case-13 | pass→pass | 10,391 | 5,308 | -49% | 1 | 1 | 0% | 2,063 | 3,447 | +67% | 0 | 0 | — |
case-14 | fail→pass | 7,981 | 4,672 | -41% | 1 | 1 | 0% | 1,424 | 3,322 | +133% | 0 | 0 | — |
case-15 | fail→pass | 9,790 | 8,194 | -16% | 1 | 1 | 0% | 1,612 | 3,496 | +117% | 0 | 0 | — |
case-16 | fail→pass | 12,534 | 8,961 | -29% | 1 | 1 | 0% | 2,227 | 4,041 | +81% | 0 | 0 | — |
case-17 | fail→pass | 13,040 | 8,701 | -33% | 1 | 1 | 0% | 2,263 | 3,836 | +70% | 0 | 0 | — |
case-18 | pass→pass | 9,541 | 6,645 | -30% | 1 | 1 | 0% | 1,671 | 3,516 | +110% | 0 | 0 | — |
case-19 | fail→pass | 7,109 | 5,252 | -26% | 1 | 1 | 0% | 1,256 | 3,350 | +167% | 0 | 0 | — |
case-20 | fail→pass | 7,723 | 2,845 | -63% | 1 | 1 | 0% | 1,370 | 3,035 | +122% | 0 | 0 | — |
case-21 | pass→pass | 11,515 | 9,233 | -20% | 1 | 1 | 0% | 2,066 | 4,041 | +96% | 0 | 0 | — |
case-22 | fail→fail | 8,027 | 5,876 | -27% | 1 | 1 | 0% | 1,382 | 3,523 | +155% | 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 19 counted toward the lift figure. The other 3 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 +64 percentage points is the difference between those two pass rates over the 19 comparable cases. 1 case got worse with the skill loaded, and it is 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.