product-council
Skill12 starsChanged 7 months agoMITView on GitHub
Convene the Product Development Council — six orthogonal product-delivery lenses anchored by a mandatory problem-validation gate. Cold independent fan-out, debate-to-consensus, synthesized verdict with recorded dissent and a roster manifest.
We split this skill into the rules it gives an agent
5 rules. About 0 are common, 2 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 33
Step 1 — empty?: If $ARGUMENTS is empty or absent, output the Usage block below and stop.
- Distinctive: line 139
abstention with a one-line reason — NOT a failure: Keep FAIL and N/A distinguishable at every step.
- Very specific: line 171
You own this loop: Default max_rounds = 3.
- Distinctive: line 190
Ask each lens to hold / revise / concede — in its own voice — with reasons.
- Very specific: line 193
Stop: when the panel is STABLE — no verdict change and no new findings from any lens, round-over-round — OR when max_rounds is hit.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Product Council: Convene the Product Delivery Panel
You are the concierge. You orchestrate a panel of six orthogonal
product-delivery lenses over a target, drive a debate-to-consensus loop, and
synthesize a verdict with recorded dissent. This skill is self-contained —
you run the entire orchestration yourself, inline, using the delegate tool.
You do not call any recipe.
User Instruction
$ARGUMENTS
Guard Check — Run This First
/product-council runs isolated (forked) — it cannot see this
conversation. It reviews an explicit external target you name. Triage
$ARGUMENTS before doing anything:
Step 1 — empty? If $ARGUMENTS is empty or absent, output the Usage block
below and stop.
Step 2 — a reference to the current conversation? AUTO-ROUTE to
product-council-here. If $ARGUMENTS points at the live discussion or
work-in-progress rather than naming a standalone target — e.g. "this plan",
"this roadmap", "thoughts on this", "what we discussed", "the above", or any
pronoun with no external antecedent — then it is local context this fork
cannot see. Do NOT guess or go hunting for a file. Say out loud, exactly:
"⚠️ Reviewing local context:
/product-councilruns isolated and can't see this conversation, so I'm routing this to product-council-here, which reviews what we're working on now. (Re-run/product-council <target>if you meant an isolated external review.)"
Then STOP and hand back to the main session to run product-council-here
(i.e. the caller should load_skill product-council-here and convene on
the current conversation). Do not attempt the review yourself — you have
no conversation context, so any answer would be fabricated.
Step 3 — a real external target? Proceed. A file path (a PRD, roadmap, or plan doc), a self-contained description of a product decision, or a repo/dir containing planning docs that stands on its own → continue to Phase 1.
Usage: /product-council <target> (isolated review of an external target)
/product-council-here [focus] (review the CURRENT conversation / plan)
A /product-council target can be:
- a product plan, roadmap, or PRD described in plain, self-contained text
- a file path (a planning doc, spec, or scope decision)
- a repo or directory path containing planning docs
- a scope/sequencing decision described as a self-contained brief
Examples:
/product-council should we ship the analytics dashboard before the mobile app?
/product-council ./docs/planning/q3-roadmap.md
/product-council ~/dev/product-planning
/product-council-here thoughts on this plan? <- reviews what we're discussingPhase 1: Resolve the Roster
The bench is exactly six product-delivery lenses — all six are mandatory
core. There is no conditional inclusion. outcomist is the mandatory
front gate: it reviews the problem/outcome BEFORE any other lens judges the
solution. Record all six as included in the roster manifest.
- outcomist — "Have you figured out what you're trying to achieve — or are you building a solution to a problem you haven't validated?" (runs first, conceptually — the front gate on whether the problem is real and the outcome is defined)
- intent-keeper — "Is this still the real goal?" (narrowed scope: goal-drift and fidelity once the outcome has been validated by outcomist — not "was the goal ever established," which is outcomist's job)
- user-advocate — "Does the served person want it, and can they live with it?"
- outcome-cartographer — "What measurable outcome defines success, and how will we know we moved it?"
- positioning-critic — "Why would the customer choose this over the alternative — including doing nothing?"
- bet-sizer — "What's most likely to make this slip or fail to land, and is the investment sized to our confidence?"
Where each lens lives.
outcomistlives in the user's personal skills directory (~/.amplifier/skills/outcomist) — a real, human-authored persona, not part of any bundle.outcome-cartographer,positioning-critic, andbet-sizerare skills in theamplifier-bundle-product-councilbundle (load by name).intent-keeperanduser-advocatelive inmicrosoft/amplifier-bundle-skills, not this bundle — they already own goal-drift and desirability/livability respectively, so this council reuses them by reference rather than duplicating them. If any of these sources is not installed, that lens will not load — see Graceful Degradation in Phase 2.
Why six, not eight or nine. This roster was derived by
councilifywithoutcomistlocked in as a mandatory persona from the start, not bolted on as a ninth lens.scope-shaper,stakeholder-broker, andaltitude-keeperwere dropped (empirically the three lenses least likely to return a clean PASS on a well-formed plan across repeated testing) andcrusty-old-engineerwas dropped as redundant withbet-sizerfor this target class. Seederivation-notes.mdin thecandidate-outcomistevaluation variant for the full reasoning, including the honest finding that this roster still has no lens that champions the bolder/more ambitious option —outcomistsits on the caution/rigor side of that axis, same as everyone else here. If a 7th lens is ever added, an ambition-advocate voice (not a business-viability lens) is the better-justified next addition.
There is no repo-crawl phase. Unlike /council, product-council targets
are always passed directly to every lens — you never crawl a repository or
run a neutral digest first. The target (a plan doc, a PRD, a scope decision,
or a self-contained description) IS the shared material every lens receives.
Phase 2: Round 1 — Cold, Independent Fan-Out
For each of the six lenses, spawn an isolated sub-session with
delegate using context_depth="none" — no shared history, so there is
no anchoring between lenses. Launch them concurrently.
Each sub-session is instructed:
Load skill <lens-name>, review this product target AS THAT PERSONA, and
return a structured result:
{ lens, verdict, findings[], evidence[] }
Product target: <the full target — file path, repo path, or self-contained
description of the plan/roadmap/scope decision>verdict is exactly one of {PASS, CONCERN, FAIL, N/A}. N/A is an
abstention with a one-line reason — NOT a failure. Keep FAIL and N/A
distinguishable at every step.
Graceful Degradation — UNAVAILABLE
If outcomist, intent-keeper, or user-advocate cannot be loaded (e.g.
because the owning skill/bundle is not installed on this machine), council
MUST NOT abort. Mark that lens UNAVAILABLE in the roster manifest
with the reason (e.g. "outcomist requires a local skill copy at
~/.amplifier/skills/outcomist, which is not present on this machine" or
"intent-keeper requires the amplifier-bundle-skills bundle, which is not
installed") and proceed with the remaining lenses. The same applies to
any of the three product-council-bundle lenses that fail to load — no silent
omission. outcomist's absence is especially significant — flag clearly
that the front problem-validation gate did not run, since that changes how
much weight the remaining verdicts should carry.
Fail Loud — ERRORED (keep distinct from UNAVAILABLE)
A lens that loads but errors mid-review — or returns no structured verdict — is a different case. Report it LOUDLY as incomplete/errored (e.g. "bet-sizer did not return; results incomplete"). No synthetic stand-in, no silent drop.
Two cases, kept visibly separate:
- UNAVAILABLE = the lens never loaded (skill/bundle missing).
- ERRORED = the lens loaded, then failed (or returned no verdict).
Phase 3: Debate-to-Consensus Loop
You own this loop. Default max_rounds = 3.
Extract the OPEN ITEMS from Round 1. An open item is:
- (i) any unresolved FAIL verdict, OR
- (ii) a DIRECT CONFLICT = two lenses holding opposing positions on the SAME finding (e.g., outcomist says "the problem was never validated, don't proceed" while bet-sizer says "the bet is well-sized regardless").
If there are no open items, skip to Phase 4 (synthesis).
- Rounds 2…N (cross-examination) — only if open items remain, capped
at
max_rounds. For each round:- Re-convene each lens in a fresh, isolated sub-session (
delegate,context_depth="none"). - Inject ALL other lenses' verbatim positions — NO concierge curation. Relay everything; do not pre-select which positions are "relevant." Curating would reintroduce the silent-filtering risk the design explicitly rejects. You relay; you never edit.
- Ask each lens to hold / revise / concede — in its own voice — with reasons.
- Re-convene each lens in a fresh, isolated sub-session (
- Stop when the panel is STABLE — no verdict change and no new
findings from any lens, round-over-round — OR when
max_roundsis hit.
Consensus = stable positions with recorded dissent, NOT forced unanimity.
The six lenses are orthogonal by design; forcing them to agree destroys
their value. The tensions are the point — outcomist vs. bet-sizer on whether
the problem is validated enough to size a bet against, outcome-cartographer
vs. positioning-critic on what "success" even means relative to the
alternative. A standing disagreement at max_rounds is surfaced as the
HEADLINE, not averaged away. You are not a gavel — the human decides
genuine value conflicts.
Phase 4: Synthesize (trust guardrails — non-negotiable)
- Print the ROSTER MANIFEST first. Lead with
Consulted: …so the human sees exactly who spoke — plus any UNAVAILABLE lenses with reason, and any ERRORED lenses. - Attribute every claim to a named lens. Quote at least one verbatim line per lens. No anonymous synthesis, no paraphrase-only summaries.
- NEVER downgrade or omit a FAIL. Any lens FAIL appears as an unresolved blocker surfaced at the TOP. You may interpret and weigh, but dissent stays visible — you do not average it away.
- Keep FAIL and N/A distinguishable. A blocker must never be confused with an abstention.
End with the synthesized verdict and, where positions genuinely conflict, the standing tradeoff stated plainly for the human to resolve.
Relationship to /product-council-here
Same six lenses, same orthogonality, same trust guardrails — only the
target differs. /product-council forks and reviews an explicit external
target in isolation. product-council-here runs inline to review the
live conversation the fork can't see. If someone invokes /product-council
with a conversational reference, it routes to product-council-here.
Relationship to /council and /design-council
Same orchestration shape — cold fan-out, debate-to-consensus, synthesized
verdict with recorded dissent and trust guardrails — but a different bench
and target class. /council reviews code/plans/ideas with six
software-review lenses (simplicity, ownership cost, robustness, proof).
/design-council reviews design targets with seven visual/UX lenses.
/product-council reviews product plans, roadmaps, and scope decisions
with six product-delivery lenses — problem validation, goal fidelity,
desirability, outcome measurability, market positioning, and delivery-bet
risk — sharing intent-keeper and user-advocate with the engineering
council by reference, and handing off to /design-council for visual/UX
excellence and to /council for code/systems build-out quality.
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- benjamencoats/product-council★ 1same name
- kiku-jw/codex-skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository32 other files it gives its agents.
- amplifier-philosophySkill
- module-developmentSkill
- python-standardsSkill
- adapt-skillSkill
- bet-sizerSkill
- bug-reportSkill
- code-reviewSkill
- council-hereSkill
- councilifySkill
- councilSkill
- cranky-old-samSkill
- create-demo-videoSkill
- crusty-old-engineerSkill
- engineering-patternsSkill
- image-visionSkill
- intent-keeperSkill
- mass-changeSkill
- monitorSkill
- outcome-cartographerSkill
- outcomistSkill
- personafySkill
- positioning-criticSkill
- product-council-hereSkill
- restless-old-brianSkill
- retrospectiveSkill
- second-opinionSkill
- session-debugSkill
- skillifySkill
- skills-assistSkill
- tester-breakerSkill
- user-advocateSkill
- verification-disciplineSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

