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
  1. Run the line below. It pulls the whole folder into ~/.claude/skills/product-skills, including the files SKILL.md points to.
  2. Describe your job in plain words. Claude Code follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit alirezarezvani/claude-skills/product-team/skills/product-skills#main ~/.claude/skills/product-skills

For 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)
  1. On this page open ⋯ → Download .md.
  2. Save it as SKILL.md in a folder, zip the folder, then Customize → Skills → + → Create skill → Upload a skill.
  3. Pick the file and Save. Claude shows the name and description and runs a security scan.
  4. Check the skill is switched on.
  5. Start a new chat and describe your job in plain words. The AI follows the skill from there.
ChatGPT or another app
  1. ChatGPT: make a Project and paste it into Instructions.
  2. 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.
Step-by-step guide with screenshots · Ask in the forum

Paste into Claude, ChatGPT or Cursor.

Source of Product Team — Domain Orchestrator & Discovery Loop

Show the full text181 lines
namedescriptioncontextversionauthorlicensetagscompatible_tools
product-skillsUse 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).fork2.11.1Alireza RezvaniMIT[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:

  1. Observe — maintain discovery_log.json (interviews, assumption tests; shape in assets/sample_discovery_log.json) and score the cadence:
    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.
  2. Choose — the tracker's 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).
  3. Act — run the interview / assumption test with the routed sub-skill's tools.
  4. Verify — keep the tree structurally sound before it may drive a roadmap:
    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).
  5. 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) 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:

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

  1. Evidence before conviction: no roadmap item cites the OST unless ost_linter.py exits 0; no insight is asserted from a single participant (anecdote, not insight).
  2. Outcome-first: every loop hangs from one measurable outcome — the linter's O1 rule is the intake gate.
  3. Experiments are gated by math: sample size from ../experiment-designer/scripts/sample_size_calculator.py, never gut feel; report the MDE with the verdict.
  4. 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).
  5. AI features ship with evals: a golden set + rubric is the PRD's quality contract for probabilistic features (references/ai_product_evals.md).
  6. 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

  1. The user owns (or advises the owner of) the product decision.
  2. Discovery data lives in the workspace as JSON logs — the loop is file-backed and resumable; every tool ships --sample so the shape is visible first.
  3. 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/landing builds from-scratch marketing pages; landing-page-generator here 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

1---
2name: "product-skills"
3description: "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)."
4context: fork
5version: 2.11.1
6author: Alireza Rezvani
7license: MIT
8tags: [product, product-management, orchestrator, discovery, ux, analytics, agent-harness]
9compatible_tools: [claude-code, codex-cli, cursor, antigravity, opencode, gemini-cli]
10---
11 
12# Product Team — Domain Orchestrator & Discovery Loop
13 
14This orchestrator does two jobs. **Routing:** fork context, classify a product inquiry
15with `scripts/product_goal_router.py` across all 16 product-team lanes (12 bundled + 4
16standalone plugins), run exactly one, return a digest. **Looping:** run product work as
17bounded 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```bash
45python3 scripts/product_goal_router.py --text "<the goal>" --output json
46```
47 
48Exit 0 → `route_to` names the skill (with `skill_path`, including the standalone
49plugins): load its SKILL.md and follow its workflow. Exit 2 → ask ONE clarifying question
50naming the listed candidates, with a recommended answer. Exit 3 → no signal: ask the user
51to restate the goal with the deliverable named. Never guess silently; never silently
52chain — digest first, confirm, then chain.
53 
54## The discovery loop (the domain's recurring agentic loop)
55 
56Modern discovery is a weekly habit, not a project phase (Torres). Run it as a bounded
57loop with two machine gates:
58 
591. **Observe** — maintain `discovery_log.json` (interviews, assumption tests; shape in
60 `assets/sample_discovery_log.json`) and score the cadence:
61 ```bash
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`.
662. **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).
693. **Act** — run the interview / assumption test with the routed sub-skill's tools.
704. **Verify** — keep the tree structurally sound before it may drive a roadmap:
71 ```bash
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).
775. **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 
82For build-scale goals ("turn this validated spec into a repo and verify it"), compile
83through the repo-wide harness instead:
84 
85```bash
86python3 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 
91The 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 
971. **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).
992. **Outcome-first**: every loop hangs from one measurable outcome — the linter's O1 rule
100 is the intake gate.
1013. **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.
1044. **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](references/product_operating_model.md)).
1075. **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](references/ai_product_evals.md)).
1106. **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 
115One per turn, recommended answer, canon citation. Never run a sub-skill or start a loop
116until 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 
1421. The user owns (or advises the owner of) the product decision.
1432. 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.
1453. 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](references/continuous_discovery_canon.md) —
175 Torres, OST, assumption testing, JTBD switch interviews, story mapping
176- [references/product_operating_model.md](references/product_operating_model.md) — Cagan
177 *Transformed*, North Star framework, PLG benchmarks, WSJF/ODI vs RICE
178- [references/ai_product_evals.md](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

Alternatives

Also in Specs & PRDsSee all 277 in Product →