Back to Brain Lab Skill · PM: Scope-Disciplined Product Manager · pm/
Skill Claude

PM: Scope-Disciplined Product Manager

pm/

2 views 0 downloads

A product manager for your agent team: build-ready PRDs with testable gates, a roadmap, brainstorming, standups and a single launch or no-launch verdict, with a scope guard that cites the spec.

PM: Scope-Disciplined Product Manager: Brain Lab skill for Claude Code

The scope-disciplined product manager: plans the project, gates the launch, and says no.

Why use it

  • Requirements that can't be tested, "the flow should feel smooth" is not a gate.
  • Scope creep accepted one small ad-hoc ask at a time.
  • "Looks ready" as a launch decision, with no scenario actually scored.

What it does

  • prd, turn the spec into a build-ready PRD: objectives, scope, out-of-scope guards, every success scenario mapped to a testable gate, the build plan.
  • roadmap, own the docs/ roadmap: epics, user stories decomposed across the COMPLETE user-flow graph, milestones, and a machine-readable mirror.
  • brainstorm, explore an idea with you before anything is specified: one question at a time, 2-3 approaches, a design you approve.
  • acceptance, the terminal gate: every scenario PASS/FAIL with evidence, 100% end-to-end breadth, ONE binary LAUNCH / NO-LAUNCH verdict.
  • standup, evidence-based Done / Next / Blockers, read-only.
  • scope-guard, runs inside every mode: "is X in scope?" answered Yes/No with the spec section cited.

Benefits

  • Requirements a machine can score. Testable gates, not adjectives.
  • Scope creep stops here. Every "no" cites the spec and names the edit that would reverse it.
  • No half-covered features. Stories map every path a user can take, not one happy path.
  • Launch calls you can defend: one binary verdict, backed by per-scenario evidence.
  • Retarget it in one file. Nothing about your product is baked in.

Install

Download this skill and copy the pm folder to .claude/skills/pm/ in your project, or to ~/.claude/skills/pm/ to use it in every project. Claude Code finds it on its own; you can also call it with /pm.

Part of the Agent Engineering bundle. To get the whole set as a Claude Code plugin: /plugin marketplace add endorphin-ai/hasbrains-agent-kit, then /plugin install agent-engineering@hasbrains-agent-kit.

Source: endorphin-ai/hasbrains-agent-kit. License: MIT.

Files (19)

Files

FORMAT.md /tasklang
TASKLANG
TYPE FORMAT

> Output format spec for the `pm` skill. Five modes, five formats, plus one persistent artifact.
> Whatever consumes this output parses it — match the schema exactly.
> Mode `prd` → PRD format · `roadmap` → roadmap format · `brainstorm` → brainstorm format ·
> `acceptance` → sign-off format · `standup` → standup format.
> Project-specific facts (the success-scenario list, the out-of-scope list, the launch-blockers) come
> from the project's config + spec — never from this file.

---

## MODE: prd — PRD output format

SECTION summary
  FORMAT: prose
  REQUIRED: true
  > 1-3 sentences: the product in scope, the business model the spec declares, and that EVERY success
  > scenario is mapped to a gate.

SECTION objectives
  FORMAT: list
  REQUIRED: true
  > The product objectives, taken from the spec's objectives section — what this product is FOR.

SECTION scope_in
  FORMAT: list
  REQUIRED: true
  > What this version builds. State the business/monetization model explicitly, in the spec's own terms.

SECTION scope_out
  FORMAT: table
  REQUIRED: true
  COLUMNS: Out-of-scope item, Rule
  > The FULL out-of-scope list from the spec. Every row is a "no" the PRD commits to.
  EXAMPLE
    ROW: Native mobile apps | Responsive web only — no native clients at v1.
    ROW: Third-party sign-in | Email + password only at v1.

SECTION acceptance_criteria
  FORMAT: table
  REQUIRED: true
  COLUMNS: #, Scenario, Testable gate, Build phase
  > The CORE of the PRD. Map EACH success scenario to a testable gate and the phase that delivers it.
  > Gates are copied 1:1 from the spec — never softened into something un-checkable. Verify every
  > scenario has a row, and that the gates cover the complete flow graph (dependency chain + full
  > entity lifecycle × every access state), not just each feature's happy path.
  EXAMPLE
    ROW: 1 | Registration & confirmation | Register → confirm email → authenticated account exists with no active subscription | Phase 1
    ROW: 4 | Purchase unlocks access | Checkout → provider event received → entitlement unlocks all paid content within one background-job retry window | Phase 4

SECTION launch_blockers
  FORMAT: table
  REQUIRED: true
  COLUMNS: Item, Requirement, Launch-blocking
  > The project's launch-blocking compliance/priority list, each marked launch-blocking and tied to the
  > phase and scenario that delivers it. Never deferred in the PRD.
  EXAMPLE
    ROW: Tax collection | Enable tax calculation + collection for the applicable regions | yes

SECTION build_plan
  FORMAT: table
  REQUIRED: true
  COLUMNS: Phase, Name, Deliverables, Gates
  > The spec's sequential build phases, one row each, with the gates that must pass before the next
  > phase begins. Attribute the spec's edge cases to the phase that handles them.

SECTION quality_checklist
  FORMAT: checklist
  REQUIRED: true
  EXAMPLE
    [x] Every success scenario mapped to a testable gate and a build phase
    [x] Full out-of-scope list reproduced as commitments
    [x] Every launch-blocking item marked launch-blocking
    [ ] Edge cases attributed to the phase that handles them
    [ ] Business model stated explicitly

SECTION issues
  FORMAT: list
  REQUIRED: false
  > Only if the spec has gaps or contradictions. Tag per VOICE.md.
  EXAMPLE
    - [SCOPE] Request for per-item sales conflicts with the declared business model. Rejected — the spec changes first.
    - [GAP] The spec does not say what an expired link should show. Needs a ruling before the gate can score it.

---

## MODE: roadmap — roadmap output format

> The PM owns the docs/ roadmap and reports what it created or maintained. Files, folders, link
> directions and frontmatter follow `docs-project-management`. The roadmap mirror is regenerated and
> committed as part of this mode (artifact below).

SECTION summary
  FORMAT: prose
  REQUIRED: true
  > 1-2 sentences: the milestone/feature planned and the headline (e.g. "M2 epic + 9 user stories +
  > the PRD created; M2 milestone recorded; roadmap mirror refreshed").

SECTION roadmap_items
  FORMAT: table
  REQUIRED: true
  COLUMNS: File, Type, Title, Status, Parent / Link
  > Every work item created or updated this run, with its path, type, frontmatter status and its
  > parent/link per the link graph.
  EXAMPLE
    ROW: docs/epics/m2-content.md | Epic | M2 Content | todo | —
    ROW: docs/user_stories/012-read-gated-article.md | User Story | Read a gated article | todo | part of ../epics/m2-content.md

SECTION milestones
  FORMAT: list
  REQUIRED: true
  > The milestone(s) created or updated and the work items associated with each. Say "None" when clear.

SECTION handoff
  FORMAT: note
  REQUIRED: false
  > If a PRD was (re)authored, note the hand-off to the technical-design owner (which file, where the
  > note was posted).

SECTION quality_checklist
  FORMAT: checklist
  REQUIRED: true
  EXAMPLE
    [x] Epic(s) created; user stories linked to their epic; the PRD present and linked
    [x] Stories cover the complete flow graph, not one per feature
    [x] Milestones recorded and their work items associated
    [x] Roadmap mirror regenerated and committed

---

## MODE: brainstorm — brainstorm output format

> The dialogue happens turn by turn; THIS is the structured summary returned at the end — a scoped
> idea set the user can act on (e.g. seed the `prd` mode). Read/think-only: creates no work items.

SECTION summary
  FORMAT: prose
  REQUIRED: true
  > 1-3 sentences: the idea/problem explored and the headline outcome (the approved direction, or that
  > it is still open).

SECTION idea
  FORMAT: prose
  REQUIRED: true
  > The idea restated in product terms, with the purpose, constraints and success criteria surfaced
  > during the session.

SECTION options
  FORMAT: table
  REQUIRED: true
  COLUMNS: Option, Approach, Trade-offs, Recommended?
  > The 2-3 approaches explored, each with its trade-offs; mark the recommended one.

SECTION approved_direction
  FORMAT: prose
  REQUIRED: true
  > The direction the user approved, or "PENDING — awaiting user approval". Scaled to complexity.

SECTION open_questions
  FORMAT: list
  REQUIRED: false
  > Anything still unresolved that a PRD would have to settle. Say "None" when clear.

SECTION scope_flags
  FORMAT: list
  REQUIRED: false
  > Any [SCOPE] items surfaced, each citing its spec section. A brainstorm explores freely but does not
  > waive the scope wall.

SECTION next_step
  FORMAT: prose
  REQUIRED: true
  > What to do with the result — typically "feed the approved direction into the `prd` mode". This mode
  > does not author the PRD or create work items.

SECTION quality_checklist
  FORMAT: checklist
  REQUIRED: true
  EXAMPLE
    [x] Explored one question at a time; 2-3 approaches proposed with a recommendation
    [x] Design presented and approved (or marked PENDING)
    [x] Out-of-scope ideas flagged [SCOPE] with a spec citation
    [x] No work item created, no build mutated

---

## MODE: acceptance — sign-off output format

SECTION summary
  FORMAT: prose
  REQUIRED: true
  > 1-3 sentences: how many scenarios passed out of how many, and the overall verdict.

SECTION scenario_results
  FORMAT: table
  REQUIRED: true
  COLUMNS: #, Scenario, Result, Evidence / Gap
  > Score EVERY success scenario. Result is PASS or FAIL only. Evidence cites what was verified; Gap
  > names exactly what is missing.
  EXAMPLE
    ROW: 1 | Registration & confirmation | PASS | confirm flow creates the account with no subscription — verified by the registration integration test
    ROW: 6 | Protected media | FAIL | the direct asset URL streams without a token — signed playback not enforced

SECTION blocking_gaps
  FORMAT: list
  REQUIRED: true
  > Every FAIL, every missing launch-blocker and every uncovered user story restated as a concrete
  > blocker to close before re-review. Empty ONLY when everything passes.
  EXAMPLE
    - [BLOCKER] Scenario 6: enforce the signed playback token on the stream endpoint; reject token-less requests.

SECTION launch_blocker_check
  FORMAT: checklist
  REQUIRED: true
  > Confirm each launch-blocking item is present and working. A missing one is automatically a blocker.

SECTION e2e_coverage
  FORMAT: checklist
  REQUIRED: true
  > Verify the story/scenario → end-to-end traceability matrix: EVERY user story / reachable scenario
  > has a dedicated PASSING end-to-end test. Critical paths are a SUBSET — breadth is 100%. Also read
  > the QA owner's plain-English traceability report as the owner-facing proof the product is
  > verifiable by behavior. Any uncovered story is automatically a NO-LAUNCH blocker, never a soft gap.
  EXAMPLE
    [x] Sign-up → confirm → log in (every supported method) — passing
    [x] Access gate — gated body absent for an unentitled visitor, present for an entitled one
    [ ] Account deletion — NO dedicated end-to-end test → BLOCKER

SECTION verdict
  FORMAT: prose
  REQUIRED: true
  > ONE binary verdict. All scenarios PASS + all launch-blockers present + every story end-to-end
  > covered = LAUNCH. Anything else = NO-LAUNCH.
  EXAMPLE
    >> VERDICT: NO-LAUNCH — 8/9 scenarios pass; scenario 6 (protected media) fails. Close the one blocking gap and re-submit.

SECTION quality_checklist
  FORMAT: checklist
  REQUIRED: true
  EXAMPLE
    [x] Every scenario scored PASS or FAIL (no "partial")
    [x] Every FAIL restated as a blocking gap
    [x] Every launch-blocking item checked
    [x] End-to-end breadth verified at 100%; any uncovered story raised as a blocker
    [x] Exactly one binary verdict
    [x] Stale statuses corrected; follow-up items opened for every deferred piece

---

## MODE: standup — standup output format

> A short, skimmable status read in three sections. Evidence-based: every item traces to a source and
> links its work-item file. READ-ONLY.

SECTION summary
  FORMAT: prose
  REQUIRED: true
  > 1-2 sentences: the current milestone/phase position and the headline. If the work-item files were
  > unavailable, say here that the standup is from fallback evidence, not the live docs/ state.

SECTION done_last
  FORMAT: list
  REQUIRED: true
  > What was completed most recently. Each item links its work-item file. Any test/CI status is
  > recency-reconciled and carries its provenance — timestamp · environment · commit.
  EXAMPLE
    - M1 accepted — registration, confirmation, login and reset all green. [docs/epics/m1-foundation.md]
    - e2e 11/11 green — 2026-06-24T17:40Z · env=preview · sha=def4567 (supersedes the older 8/11 @ sha=abc1234 snapshot).

SECTION next_plan
  FORMAT: list
  REQUIRED: true
  > The upcoming milestone, the in-progress work items, and the next build phase. Each links its file.

SECTION blockers
  FORMAT: list
  REQUIRED: true
  > Anything blocked or awaiting a decision — a failed gate, a deploy blocked on an unset credential, a
  > pending human approval. Each names what is awaited. Say "None" explicitly when clear.
  EXAMPLE
    - [BLOCKER] Deploy gated: the deploy credential is unset, so the release step cannot run.
    - [WAIT] Awaiting the user's approval at the design gate.

SECTION signature
  FORMAT: prose
  REQUIRED: true
  > The signature line the project uses for authored updates.
  EXAMPLE
    >> — <agent-name> v<version> (<passport-id>)

---

## ARTIFACT: the roadmap mirror (`docs/roadmap.json`)

> NOT a stdout format — a persistent JSON the PM maintains: a machine-readable mirror of the docs/
> roadmap so a status read costs one file instead of a full folder scan. Regenerated from the CURRENT
> docs/ state and committed as the CLOSING step of every `acceptance` sign-off and every `roadmap`
> pass. Schema authority: `references/roadmap-json.md` — keep the two in sync.

SECTION roadmap_json
  FORMAT: json
  REQUIRED: true   # whenever the mode refreshes it
  > Top-level keys: generated_at, generated_by, source ("docs" | "fallback-evidence"),
  > project{name,docs_root}, release{name,status,verdict},
  > milestones[]{id,name,status:past|current|next,epic,verdict,accepted_at},
  > items[]{path,type,title,status,milestone,parent,links[],ai_agent},
  > summary{milestones, items_by_status, items_by_type}. Stores values read from the docs/ files only.

---

## Report Channels

> The same result is reported on THREE channels. The docs/ folder is MANDATORY; the exact file
> locations, link directions and frontmatter come from `docs-project-management`.

TABLE channels
  COLUMNS: Channel, What goes there
  ROW: docs/    | The work items themselves (PRD, epic, user stories, milestones) + the bookended start/completion notes with the `status:` transitions + the run's work report + the refreshed roadmap mirror
  ROW: GitHub   | Usually `n/a` — the PM does not open PRs. If it comments on one, the comment references its work-item files by relative markdown link
  ROW: Terminal | One concise line: the PRD authored, or the verdict + blocking-gap count

EXAMPLE "terminal line"
  >> acceptance done — VERDICT NO-LAUNCH (8/9 pass; scenario 6 blocks).

---

Made by **HasBrains** — https://hasbrains.com/