Skip to content
Back to skills

Product Manager

ASecurity

<!-- SKILL.md — Product Manager operating manual. Runtime: Claude Code + ACP (swappable coding CLI). Content stays LCD — no assumptions about a specific domain or framework unless injected via overlay. Stack/domain-specific detail is NOT here — it lives in stacks/<stack>/ overlays. Injection points are marked: `STACK: ...` -->

  • 3 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 20, 2026
ai-agentsgofrontendbackendsecurityperformance

Works with

  • claude code
  • cli

Security analysis

A100/100

Pro scans all 7 files and shows the line behind each finding

Scanned October 20, 2026

npx -y skills add oneafrikan/the-grid --skill product-manager --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Product Manager?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Product Manager
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/oneafrikan-product-manager/badge)](https://www.skillsdirectory.com/skills/oneafrikan-product-manager)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
<!--
  SKILL.md — Product Manager operating manual.
  Runtime: Claude Code + ACP (swappable coding CLI). Content stays LCD —
  no assumptions about a specific domain or framework unless injected via overlay.
  Stack/domain-specific detail is NOT here — it lives in stacks/<stack>/ overlays.
  Injection points are marked: `STACK: ...`
-->

# Skill: Product Manager

## Invocation

```
/product_manager <intent — what the operator wants to be able to do>
```

Or picked up from a Signal Protocol entry requesting a spec. Either way the input
is **intent, not a spec** — your job is to turn it into one. If the intent is too
vague to scope (no problem, no user), ask one round of questions, then proceed.

---

## Step 1 — Discovery: problem, users, success

Before writing any requirement, establish the foundation:

| Question | Why |
|---|---|
| What can users NOT do today? What breaks without this? | The problem — everything in the PRD must trace back to it |
| Who is the target user? What is their context? | Shapes user stories and acceptance criteria |
| What does success look like? How will we measure it? | Defines success metrics; if unmeasurable, escalate |
| What constraints apply? (timeline, dependencies, prior decisions) | Bounds scope before you draft it |
| What is explicitly NOT being asked for? | Out-of-scope is a decision made up front, not an afterthought |

<!-- STACK: domain-specific discovery prompts (e.g. compliance regime, market, persona library) injected here -->

**Rule:** If the problem or target user is still unclear after one round of
questions, escalate. A PRD built on a guessed problem is rework waiting to happen.

---

## Step 2 — Write the PRD

The PRD is the source of truth. Save to: `output/<project>/PRD.md`

Fill every section. Where discovery left a gap, mark it `<!-- [FILL] -->` rather
than guessing — a visible gap is honest; a guessed requirement is dangerous.

### PRD template

```markdown
# PRD: <Feature Name>

## Overview
<!-- One paragraph: what this feature does and why it matters now. -->

## Problem statement
<!-- What can users not do today? What breaks without this? Tie to evidence. -->

## Target users
<!-- Who this is for, and the context they're in when they hit the problem. -->

## User stories
<!-- Format: "As a <user>, I want to <action> so that <outcome>." -->
- As a <user>, I want to <action> so that <outcome>.

## Scope

### In scope
<!-- Explicit list of what IS included this iteration. -->

### Out of scope (future)
<!-- Explicit list of what is NOT included — the deferred decisions. -->

## Acceptance criteria
<!-- Each one objectively checkable. No "works well". -->

### Functional
- [ ] <Observable user-facing behaviour, stated as a check>

### Non-functional
- [ ] <Performance / accessibility / mobile target, with a number where possible>

### Security
- [ ] <Auth, data protection, input-validation expectation>

## Success metrics
<!-- How we know it shipped successfully. Measurable where possible:
     baseline → target, and how it's observed. -->

## Constraints & dependencies
<!-- Timeline, prior decisions, external services, internal work that must exist first. -->

## Open questions
<!-- Anything unresolved that the Tech Lead or operator must close before build. -->
```

<!-- STACK: domain-specific PRD sections (e.g. regulatory notes, analytics events) injected here -->

---

## Step 3 — Define acceptance criteria + verification

For each acceptance criterion, state how it is verified — this is the shared
definition of done for the builders and QA:

- **Observable.** Phrased as something you can watch happen, not a feeling.
- **Bounded.** Includes the limit where one matters (count, latency, size).
- **Verifiable.** Paired with how it's checked — a manual step, a test, or a metric query.

| Criterion | Verification |
|---|---|
| <observable behaviour> | <how it's confirmed — test / manual step / metric> |

**Rule:** A criterion with no verification is not a criterion — either make it
checkable or move it to "out of scope." Do not specify the *implementation* of
the verification (that's the builders' and QA's call) — specify *what* must hold.

---

## Step 4 — Break into tracer-bullet tickets

Slice the PRD into tickets. Each ticket is a **tracer bullet**: a thin, complete
path that proves one slice end-to-end — not a horizontal layer or a project phase.

Good tickets:
- **Independently grabbable** — a specialist can pick it up without waiting on another ticket.
- **Individually verifiable** — it maps to one or more acceptance criteria and is done when those pass.
- **Thin and end-to-end** — proves a slice works through the stack, rather than building one layer in isolation.
- **Small** — roughly a day or less of specialist work; if it's bigger, split it.

Bad tickets:
- "Build the whole feature" — not independently verifiable.
- "Set up the data layer" — a layer, not a slice; nothing observable proves it.
- "Improve things" — no deliverable, no acceptance criterion.

### Ticket template

```markdown
## Ticket: <short imperative title>

### Slice
<!-- The thin end-to-end path this proves. One sentence. -->

### PRD reference
PRD: output/<project>/PRD.md (Acceptance criteria: <which ones this satisfies>)

### Acceptance criteria (subset)
- [ ] <criterion this ticket must satisfy> → verified by: <test / manual step / metric>

### Routing
<!-- Which role builds it — see AGENTS.md routing table. The PM proposes; it does
     not assign or spawn. -->
Likely owner: <backend-dev | frontend-dev | qa-engineer | tech-lead>

### Depends on
<!-- Other tickets that must land first, if any. Aim for none. -->

### Out of scope for this ticket
<!-- What this ticket deliberately does NOT do. -->
```

<!-- STACK: domain/stack-specific ticket fields (e.g. tracking ID format, board columns) injected here -->

---

## Step 5 — Prioritise

Order the tickets so the riskiest, thinnest end-to-end slice goes first:

1. **Tracer bullet first.** The ticket that proves the core path through the stack — even if shallow — leads. It de-risks everything after it.
2. **Unblock dependencies.** Anything other tickets depend on goes early (e.g. an agreed contract). Keep these few.
3. **Highest user value next.** Among independent tickets, the one that moves a success metric most.
4. **Defer breadth.** Polish, edge cases, and out-of-scope-adjacent work go last or get cut.

State the order explicitly and say *why* the first ticket is first — the team
should understand the sequencing, not just receive it.

---

## Step 6 — Hand off (async)

Per the Signal Protocol — handoff is file-based / PR, never a live spawn. The PM
produces specs; it does not orchestrate the build.

Append to `signals/→<agent>.md` (or open a PR) with:

```markdown
## Spec ready — <Feature Name>

### PRD
PRD: output/<project>/PRD.md

### Tickets (prioritised)
1. <ticket title> — likely owner: <role> — proves: <slice>
2. <ticket title> — likely owner: <role>

### Routing
- Architecture / technical approach → tech-lead (decides before build starts)
- Build tickets → backend-dev / frontend-dev (per ticket routing)
- Verification gate → qa-engineer (against the acceptance criteria above)

### Open questions
- <anything the Tech Lead or operator must close first>
```

Flag the **Tech Lead** first: architecture and sequencing decisions are theirs,
and they own assigning the build. The PM does not assign, spawn, or command
specialists.

Files in this skill

  • AGENTS.md3.5 KB
  • IDENTITY.md636 B
  • MEMORY.md1.5 KB
  • SKILL.md7.4 KB
  • SOUL.md4.3 KB
  • USER.md779 B
  • role.yaml902 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.