Product Team — Domain Orchestrator & Discovery Loop
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).
How to use it
Claude Code
- Run the line below. It pulls the whole folder into
~/.claude/skills/product-skills, including the files SKILL.md points to. - Describe your job in plain words. Claude Code follows the skill from there.
npx degit alirezarezvani/claude-skills/product-team/skills/product-skills#main ~/.claude/skills/product-skillsFor one project only, change the path to .claude/skills/product-skills. This skill also uses discovery_cadence_tracker.py, ost_linter.py, Next.js, discovery_log.json, ost.json, state.json — copying SKILL.md alone won't be enough. See the folder on GitHub.
Claude (web or desktop app)
- On this page open ⋯ → Download .md.
- Save it as SKILL.md in a folder, zip the folder, then Customize → Skills → + → Create skill → Upload a skill.
- Pick the file and Save. Claude shows the name and description and runs a security scan.
- Check the skill is switched on.
- Start a new chat and describe your job in plain words. The AI follows the skill from there.
ChatGPT or another app
- ChatGPT: make a Project and paste it into Instructions.
- Neither? Paste it at the top of a new chat — it works for that chat.
Not working?
- Check which app you pasted it into — the steps above name the right one.
- Some skills need the paid tier of Claude or ChatGPT.
Paste into Claude, ChatGPT or Cursor.
Source of Product Team — Domain Orchestrator & Discovery Loop
Show the full text181 lines
| name | description | context | version | author | license | tags | compatible_tools |
|---|---|---|---|---|---|---|---|
| product-skills | 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 one sub-skill via a deterministic signal router and returns a digest; can also drive a continuous-discovery loop (Torres cadence tracker + OST linter as machine gates) or a full goal→plan→execute→verify→close run through the repo-wide agent-harness. Distinct from project-management (how to deliver vs what to build), marketing/landing (from-scratch pages), and engineering/agent-harness (the generic loop engine this orchestrator plugs into). | fork | 2.11.1 | Alireza Rezvani | MIT | [product, product-management, orchestrator, discovery, ux, analytics, agent-harness] | [claude-code, codex-cli, cursor, antigravity, opencode, gemini-cli] |
Product Team — Domain Orchestrator & Discovery Loop
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.
When to invoke
| 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) |
Routing logic (deterministic)
python3 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.
The discovery loop (the domain's recurring agentic loop)
Modern discovery is a weekly habit, not a project phase (Torres). Run it as a bounded loop with two machine gates:
- Observe — maintain
discovery_log.json(interviews, assumption tests; shape inassets/sample_discovery_log.json) and score the cadence:
Refuses on < 2 interviews (exit 5) — there is no cadence to measure yet. Output: health 0–100, verdict HEALTHY/AT-RISK/DORMANT, named gaps, andpython3 scripts/discovery_cadence_tracker.py --input discovery_log.jsonnext_loop_action. - Choose — the tracker's
next_loop_actionIS the choice: book the touchpoint, re-anchor the guide on the outcome, or test the top untested assumption (route toproduct-discovery's assumption_mapper for prioritization). - Act — run the interview / assumption test with the routed sub-skill's tools.
- Verify — keep the tree structurally sound before it may drive a roadmap:
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).python3 scripts/ost_linter.py --input ost.json # exit 2 = NEEDS-REWORK, fix before citing the tree - Record / Repeat-or-stop — update the log, keep the weekly streak alive. Stop
states: HEALTHY + validated assumption → graduate to
experiment-designer(build the A/B gate) orproduct-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:
python3 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.
Hard rules
- Evidence before conviction: no roadmap item cites the OST unless
ost_linter.pyexits 0; no insight is asserted from a single participant (anecdote, not insight). - Outcome-first: every loop hangs from one measurable outcome — the linter's O1 rule is the intake gate.
- Experiments are gated by math: sample size from
../experiment-designer/scripts/sample_size_calculator.py, never gut feel; report the MDE with the verdict. - Prioritization shows its framework: RICE for steady-state, WSJF/cost-of-delay when time sensitivity dominates, opportunity scoring for underserved needs — name which and why (see references/product_operating_model.md).
- AI features ship with evals: a golden set + rubric is the PRD's quality contract for probabilistic features (references/ai_product_evals.md).
- Never modify a gate you are judged by; exhausted budgets escalate to a named human, never report as success.
Forcing-question library (grill-with-docs pattern)
One per turn, recommended answer, canon citation. Never run a sub-skill or start a loop until the lane-defining decision is locked:
- DISCOVERY lane: "What is the single outcome this discovery serves, stated with a 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)."
- PRIORITIZE lane: "Does time sensitivity change this ranking — would delaying any 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."
- EXPERIMENT lane: "What baseline rate and MDE justify this test's runtime? Recommended: compute n first; if you can't reach it in 4 weeks, test a bigger lever. Canon: statistical power analysis (experiment-designer)."
- ANALYTICS lane: "Is your North Star a leading indicator of value exchange, or revenue/vanity? Recommended: leading value metric with an input tree. Canon: Amplitude, The North Star Playbook."
- STRATEGY lane: "Are these OKRs outcomes or shipping lists? Recommended: outcomes — output OKRs are the #1 operating-model failure. Canon: Cagan, Transformed (SVPG, 2024)."
- BUILD lanes (spec-to-repo / saas-scaffolder): "Which validated assumption says this 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."
Assumptions
- The user owns (or advises the owner of) the product decision.
- Discovery data lives in the workspace as JSON logs — the loop is file-backed and
resumable; every tool ships
--sampleso the shape is visible first. - The four standalone plugins are installed alongside the bundle (the router still routes to them by path if not).
Non-goals
- Not the delivery loop — sprint/flow/Jira work routes to
project-management. - Not the generic loop engine — that is
engineering/agent-harness; this orchestrator is the product-domain adapter (router + discovery gates). - Not campaign marketing —
marketing/landingbuilds from-scratch marketing pages;landing-page-generatorhere scaffolds product Next.js/TSX pages.
Output artifacts
| 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 |
Anti-patterns (do not)
- ❌ Run all 16 lanes "to be thorough" — route to one, digest, chain on confirmation
- ❌ Cite an OST that fails the linter, or promote a single-participant anecdote to insight
- ❌ Ship an AI feature whose PRD has no eval (golden set + rubric)
- ❌ Let the discovery streak die silently — DORMANT escalates by name
- ❌ Treat RICE as the only prioritization lens when deadlines dominate
References
- references/continuous_discovery_canon.md — Torres, OST, assumption testing, JTBD switch interviews, story mapping
- references/product_operating_model.md — Cagan Transformed, North Star framework, PLG benchmarks, WSJF/ODI vs RICE
- references/ai_product_evals.md — evals-as-PRD, model cards, evaluator-optimizer loops
- Loop engine:
engineering/agent-harness· Loop vocabulary:loop-library
| 1 | |
| 2 | name "product-skills" |
| 3 | description "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 one sub-skill via a deterministic signal router and returns a digest; can also drive a continuous-discovery loop (Torres cadence tracker + OST linter as machine gates) or a full goal→plan→execute→verify→close run through the repo-wide agent-harness. Distinct from project-management (how to deliver vs what to build), marketing/landing (from-scratch pages), and engineering/agent-harness (the generic loop engine this orchestrator plugs into)." |
| 4 | context fork |
| 5 | version 2.11.1 |
| 6 | author Alireza Rezvani |
| 7 | license MIT |
| 8 | tags [product, product-management, orchestrator, discovery, ux, analytics, agent-harness] |
| 9 | compatible_tools [claude-code, codex-cli, cursor, antigravity, opencode, gemini-cli] |
| 10 | |
| 11 | |
| 12 | # Product Team — Domain Orchestrator & Discovery Loop |
| 13 | |
| 14 | This orchestrator does two jobs. **Routing:** fork context, classify a product inquiry |
| 15 | with `scripts/product_goal_router.py` across all 16 product-team lanes (12 bundled + 4 |
| 16 | standalone plugins), run exactly one, return a digest. **Looping:** run product work as |
| 17 | bounded agentic loops with machine-checkable gates — the continuous-discovery loop |
| 18 | (weekly cadence scored by `discovery_cadence_tracker.py`, tree structure enforced by |
| 19 | `ost_linter.py`) and goal-scale runs through the repo-wide agent-harness. |
| 20 | |
| 21 | ## When to invoke |
| 22 | |
| 23 | | Symptom | Sub-skill | |
| 24 | |---|---| |
| 25 | | "Prioritize features / RICE / PRD" | `product-manager-toolkit` | |
| 26 | | "OKRs, strategy cascade" | `product-strategist` | |
| 27 | | "Personas, usability, research synthesis" | `ux-researcher-designer` | |
| 28 | | "Design tokens, WCAG contrast" | `ui-design-system` | |
| 29 | | "Competitor matrix, teardown" | `competitive-teardown` | |
| 30 | | "Retention, cohorts, funnels, KPIs" | `product-analytics` | |
| 31 | | "A/B test, sample size, hypothesis" | `experiment-designer` | |
| 32 | | "Discovery, assumptions, opportunity trees" | `product-discovery` | |
| 33 | | "Roadmap comms, release notes, changelog" | `roadmap-communicator` | |
| 34 | | "Spec → runnable repo" | `spec-to-repo` | |
| 35 | | "Landing page (Next.js/Tailwind)" | `landing-page-generator` | |
| 36 | | "SaaS boilerplate" | `saas-scaffolder` | |
| 37 | | "User stories, sprint capacity" | `agile-product-owner` (standalone) | |
| 38 | | "Apple HIG audit" | `apple-hig-expert` (standalone) | |
| 39 | | "PRD from an existing codebase" | `code-to-prd` (standalone) | |
| 40 | | "Summarize papers/articles" | `research-summarizer` (standalone) | |
| 41 | |
| 42 | ## Routing logic (deterministic) |
| 43 | |
| 44 | |
| 45 | python3 scripts/product_goal_router.py --text "<the goal>" --output json |
| 46 | |
| 47 | |
| 48 | Exit 0 → `route_to` names the skill (with `skill_path`, including the standalone |
| 49 | plugins): load its SKILL.md and follow its workflow. Exit 2 → ask ONE clarifying question |
| 50 | naming the listed candidates, with a recommended answer. Exit 3 → no signal: ask the user |
| 51 | to restate the goal with the deliverable named. Never guess silently; never silently |
| 52 | chain — digest first, confirm, then chain. |
| 53 | |
| 54 | ## The discovery loop (the domain's recurring agentic loop) |
| 55 | |
| 56 | Modern discovery is a weekly habit, not a project phase (Torres). Run it as a bounded |
| 57 | loop with two machine gates: |
| 58 | |
| 59 | **Observe** — maintain `discovery_log.json` (interviews, assumption tests; shape in |
| 60 | `assets/sample_discovery_log.json`) and score the cadence: |
| 61 | |
| 62 | python3 scripts/discovery_cadence_tracker.py --input discovery_log.json |
| 63 | |
| 64 | Refuses on < 2 interviews (exit 5) — there is no cadence to measure yet. Output: |
| 65 | health 0–100, verdict HEALTHY/AT-RISK/DORMANT, named gaps, and `next_loop_action`. |
| 66 | **Choose** — the tracker's `next_loop_action` IS the choice: book the touchpoint, |
| 67 | re-anchor the guide on the outcome, or test the top untested assumption (route to |
| 68 | `product-discovery`'s assumption_mapper for prioritization). |
| 69 | **Act** — run the interview / assumption test with the routed sub-skill's tools. |
| 70 | **Verify** — keep the tree structurally sound before it may drive a roadmap: |
| 71 | |
| 72 | python3 scripts/ost_linter.py --input ost.json # exit 2 = NEEDS-REWORK, fix before citing the tree |
| 73 | |
| 74 | Rules: one measurable outcome root (O1), opportunities are needs not features (O2), |
| 75 | targeted opportunities compare ≥ 2 solutions (O3), every solution has an assumption |
| 76 | test (O4), no orphan solutions (O5 — the feature-factory tell). |
| 77 | **Record / Repeat-or-stop** — update the log, keep the weekly streak alive. Stop |
| 78 | states: HEALTHY + validated assumption → graduate to `experiment-designer` (build the |
| 79 | A/B gate) or `product-manager-toolkit` (PRD); DORMANT for 4+ weeks → escalate to the |
| 80 | product lead by name — do not quietly let discovery die. |
| 81 | |
| 82 | For build-scale goals ("turn this validated spec into a repo and verify it"), compile |
| 83 | through the repo-wide harness instead: |
| 84 | |
| 85 | |
| 86 | python3 engineering/agent-harness/skills/agent-harness/scripts/goal_compiler.py \ |
| 87 | --goal "<goal>" --manifest engineering/agent-harness/skills/agent-harness/assets/harnesses/product-team.json \ |
| 88 | --out .agent-harness/plan.json |
| 89 | |
| 90 | |
| 91 | The domain's three strongest close-out gates plug in as task verifications: |
| 92 | `../spec-to-repo/scripts/validate_project.py` (exit 0), `code-to-prd`'s golden |
| 93 | `expected_outputs/`, and `research-summarizer`'s citation-count check. |
| 94 | |
| 95 | ## Hard rules |
| 96 | |
| 97 | **Evidence before conviction**: no roadmap item cites the OST unless `ost_linter.py` |
| 98 | exits 0; no insight is asserted from a single participant (anecdote, not insight). |
| 99 | **Outcome-first**: every loop hangs from one measurable outcome — the linter's O1 rule |
| 100 | is the intake gate. |
| 101 | **Experiments are gated by math**: sample size from |
| 102 | `../experiment-designer/scripts/sample_size_calculator.py`, never gut feel; report the |
| 103 | MDE with the verdict. |
| 104 | **Prioritization shows its framework**: RICE for steady-state, WSJF/cost-of-delay when |
| 105 | time sensitivity dominates, opportunity scoring for underserved needs — name which and |
| 106 | why (see [references/product_operating_model.md]). |
| 107 | **AI features ship with evals**: a golden set + rubric is the PRD's quality contract |
| 108 | for probabilistic features |
| 109 | ([references/ai_product_evals.md]). |
| 110 | **Never modify a gate you are judged by**; exhausted budgets escalate to a named human, |
| 111 | never report as success. |
| 112 | |
| 113 | ## Forcing-question library (grill-with-docs pattern) |
| 114 | |
| 115 | One per turn, recommended answer, canon citation. Never run a sub-skill or start a loop |
| 116 | until the lane-defining decision is locked: |
| 117 | |
| 118 | **DISCOVERY lane**: "What is the single outcome this discovery serves, stated with a |
| 119 | number? Recommended: write it as the OST root first — opportunities without an outcome |
| 120 | are a feature factory. Canon: Torres, *Continuous Discovery Habits*; opportunity |
| 121 | solution trees (producttalk.org)." |
| 122 | **PRIORITIZE lane**: "Does time sensitivity change this ranking — would delaying any |
| 123 | item a quarter erode its value? Recommended: if yes, run WSJF/cost-of-delay alongside |
| 124 | RICE and compare ranks; flag items whose rank flips on a one-step estimate change. |
| 125 | Canon: Reinertsen, *Principles of Product Development Flow*; SAFe WSJF false-precision |
| 126 | critique." |
| 127 | **EXPERIMENT lane**: "What baseline rate and MDE justify this test's runtime? |
| 128 | Recommended: compute n first; if you can't reach it in 4 weeks, test a bigger lever. |
| 129 | Canon: statistical power analysis (experiment-designer)." |
| 130 | **ANALYTICS lane**: "Is your North Star a leading indicator of value exchange, or |
| 131 | revenue/vanity? Recommended: leading value metric with an input tree. Canon: Amplitude, |
| 132 | *The North Star Playbook*." |
| 133 | **STRATEGY lane**: "Are these OKRs outcomes or shipping lists? Recommended: outcomes — |
| 134 | output OKRs are the #1 operating-model failure. Canon: Cagan, *Transformed* (SVPG, |
| 135 | 2024)." |
| 136 | **BUILD lanes (spec-to-repo / saas-scaffolder)**: "Which validated assumption says this |
| 137 | should be built at all? Recommended: link the OST test that survived; building is the |
| 138 | most expensive way to test an idea. Canon: Torres; Bland, *Testing Business Ideas*." |
| 139 | |
| 140 | ## Assumptions |
| 141 | |
| 142 | The user owns (or advises the owner of) the product decision. |
| 143 | Discovery data lives in the workspace as JSON logs — the loop is file-backed and |
| 144 | resumable; every tool ships `--sample` so the shape is visible first. |
| 145 | The four standalone plugins are installed alongside the bundle (the router still |
| 146 | routes to them by path if not). |
| 147 | |
| 148 | ## Non-goals |
| 149 | |
| 150 | Not the delivery loop — sprint/flow/Jira work routes to `project-management`. |
| 151 | Not the generic loop engine — that is `engineering/agent-harness`; this orchestrator is |
| 152 | the product-domain adapter (router + discovery gates). |
| 153 | Not campaign marketing — `marketing/landing` builds from-scratch marketing pages; |
| 154 | `landing-page-generator` here scaffolds product Next.js/TSX pages. |
| 155 | |
| 156 | ## Output artifacts |
| 157 | |
| 158 | | Mode | Artifact | |
| 159 | |---|---| |
| 160 | | Route | Sub-skill's own artifact + ≤ 200-word digest with one canon-cited challenge | |
| 161 | | Discovery loop | `discovery_log.json` + cadence report + linted `ost.json` | |
| 162 | | Harness run | `.agent-harness/plan.json` + `state.json` + close handoff | |
| 163 | |
| 164 | ## Anti-patterns (do not) |
| 165 | |
| 166 | ❌ Run all 16 lanes "to be thorough" — route to one, digest, chain on confirmation |
| 167 | ❌ Cite an OST that fails the linter, or promote a single-participant anecdote to insight |
| 168 | ❌ Ship an AI feature whose PRD has no eval (golden set + rubric) |
| 169 | ❌ Let the discovery streak die silently — DORMANT escalates by name |
| 170 | ❌ Treat RICE as the only prioritization lens when deadlines dominate |
| 171 | |
| 172 | ## References |
| 173 | |
| 174 | [references/continuous_discovery_canon.md] — |
| 175 | Torres, OST, assumption testing, JTBD switch interviews, story mapping |
| 176 | [references/product_operating_model.md] — Cagan |
| 177 | *Transformed*, North Star framework, PLG benchmarks, WSJF/ODI vs RICE |
| 178 | [references/ai_product_evals.md] — evals-as-PRD, model |
| 179 | cards, evaluator-optimizer loops |
| 180 | Loop engine: `engineering/agent-harness` · Loop vocabulary: `loop-library` |
| 181 |
Discussion
Browse more free Claude skills or everything in Product.