product-capability

Use when engineering needs testable, implementable technical requirements — not a PRD but a capability spec with acceptance criteria, task breakdown, and traceability from requirement to implementation ticket

8 stars

Best use case

product-capability is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Use when engineering needs testable, implementable technical requirements — not a PRD but a capability spec with acceptance criteria, task breakdown, and traceability from requirement to implementation ticket

Teams using product-capability should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/product-capability/SKILL.md --create-dirs "https://raw.githubusercontent.com/drvoss/everything-copilot-cli/main/skills/product/product-capability/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/product-capability/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How product-capability Compares

Feature / Agentproduct-capabilityStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Use when engineering needs testable, implementable technical requirements — not a PRD but a capability spec with acceptance criteria, task breakdown, and traceability from requirement to implementation ticket

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Product Capability

Transform a product requirement or feature request into a **capability specification**: a structured technical document that bridges product intent and engineering implementation.

> **Distinct from [`create-prd`](../create-prd/SKILL.md):**
>
> - `create-prd` → *what* and *why* (Jobs-to-be-Done, personas, scope). Audience: PMs, stakeholders.
> - `product-capability` → *what + how* (acceptance criteria, task breakdown, traceability). Audience: engineers building it.

## When to Use

- Engineering needs a clear, testable spec to implement from — not a narrative PRD
- Acceptance criteria must be explicit and verifiable before a ticket is created
- Traceability is required: feature request → capability → AC → implementation tasks
- A PRD exists but lacks the implementation detail engineers need to estimate or build

## When NOT to Use

| Instead of product-capability | Use |
|------------------------------|-----|
| Exploring the problem space and options | `opportunity-solution-tree` |
| Writing the product story for stakeholders | `create-prd` |
| Prioritizing what to build next | `feature-prioritization` |
| Planning launch readiness | `launch-strategy` |

## Structure

A capability spec consists of five parts:

### 1. Capability Statement

One sentence: what the system must be able to do.

```text
The system must allow authenticated users to export their activity history
as a CSV file filtered by date range.
```

Write as **system capability**, not user story. Avoid "As a user, I want…" — that belongs in the PRD.

### 2. Context

- Source requirement (link to PRD, issue, or ticket)
- Affected components (which services, modules, APIs)
- Dependencies (what must exist before this can be built)

### 3. Acceptance Criteria

Each criterion must be:

- **Testable**: a QA engineer can write a test case for it without ambiguity
- **Specific**: names exact behavior, not intent
- **Binary**: pass or fail — no "should generally work"

```markdown
**AC-01**: Given a user with `EXPORT_HISTORY` permission, when they request
  an export for date range [start, end], the system returns a valid CSV within
  5 seconds containing all activity records in that range.

**AC-02**: Given an empty result set, the system returns an empty CSV with
  only the header row, not an error.

**AC-03**: Given a date range exceeding 1 year, the system rejects the request
  with HTTP 422 and error code `DATE_RANGE_TOO_LARGE`.

**AC-04**: Exported CSV rows include: timestamp (ISO 8601), action_type,
  resource_id, user_id, ip_address.
```

### 4. Implementation Task Breakdown

Decompose into discrete, estimable engineering tasks. Each task:

- Belongs to one team/component boundary
- Is completable in ≤ 1 day
- Has a clear definition of done

```markdown
| Task ID | Task | Component | Estimate | Depends on |
|---------|------|-----------|----------|------------|
| T-01 | Add `EXPORT_HISTORY` permission to auth schema | Auth | 2h | — |
| T-02 | Implement date-range validation (max 365d, ISO 8601 parse) | API | 2h | — |
| T-03 | Implement CSV generation service (streaming for large sets) | API | 4h | T-01 |
| T-04 | Add `/api/activity/export` endpoint with pagination | API | 3h | T-02, T-03 |
| T-05 | Frontend: date range picker + export trigger + download | UI | 4h | T-04 |
| T-06 | Integration tests (AC-01 through AC-04) | QA | 3h | T-04 |
```

Track tasks in SQL:

```sql
CREATE TABLE IF NOT EXISTS capability_tasks (
    id TEXT PRIMARY KEY,
    capability TEXT,
    task TEXT,
    component TEXT,
    estimate_hours REAL,
    status TEXT DEFAULT 'pending',  -- pending | in_progress | done | blocked
    depends_on TEXT
);
```

### 5. Traceability Matrix

Links requirement → capability → ACs → tasks:

```markdown
| Requirement | Capability | ACs | Tasks |
|-------------|-----------|-----|-------|
| PRD §3.2: Data export | CSV activity export | AC-01, AC-02, AC-03, AC-04 | T-01–T-06 |
```

## Quality Gate

Before handing off to engineering, verify:

- [ ] Capability statement is one sentence and testable
- [ ] Every AC is binary (pass/fail) with no ambiguous "should"
- [ ] Every AC has a corresponding task that implements and verifies it
- [ ] No task exceeds 1 day estimate (split if larger)
- [ ] All dependencies identified (APIs, permissions, schemas)
- [ ] Traceability matrix complete

## Anti-Patterns

| Anti-pattern | Fix |
|-------------|-----|
| AC that says "the UI should be intuitive" | Replace with specific interaction criterion |
| Task that says "implement the feature" | Break into component-level subtasks |
| No dependency map | Add `depends_on` to every task that has a prerequisite |
| Mixing AC (behavior) with implementation detail | AC describes *what*, tasks describe *how* |

## See Also

- [create-prd](../create-prd/SKILL.md) — JTBD-driven product requirements document
- [feature-prioritization](../feature-prioritization/SKILL.md) — MoSCoW/RICE scoring before spec
- [tdd-workflow](../../development/tdd-workflow/SKILL.md) — write tests from ACs
- [agentic-engineering](../../copilot-exclusive/agentic-engineering/SKILL.md) — agent-friendly task decomposition

Related Skills

verification-before-completion

8
from drvoss/everything-copilot-cli

Use before claiming any task is done — run the exact command that proves the fix works, read the output, and only then report success.

using-git-worktrees

8
from drvoss/everything-copilot-cli

Use when you need multiple branches checked out at once — create isolated working directories for parallel development without cloning the repository repeatedly

triage

8
from drvoss/everything-copilot-cli

Use when a single issue needs structured triage — classify it, reproduce if needed, request missing information, and leave a durable brief or close-out note in the tracker.

to-issues

8
from drvoss/everything-copilot-cli

Use when a plan, spec, or PRD must become an actionable backlog — break it into thin dependency-aware issues that each deliver a verifiable vertical slice

sprint-workflow

8
from drvoss/everything-copilot-cli

Use when starting a new feature, refactor, or multi-step dev task — runs the full sprint cycle (Think → Plan → Build → Review → Test → Ship → Monitor) using Copilot CLI's plan/autopilot modes.

sprint-retro

8
from drvoss/everything-copilot-cli

Use at the end of a sprint to run a data-driven retrospective — analyzes session history and git metrics to surface what shipped, what slowed you down, and concrete improvements.

security-audit

8
from drvoss/everything-copilot-cli

Use when a codebase needs a formal security audit beyond a quick scan — applies OWASP Top 10 and STRIDE threat modeling from a CSO perspective to surface systemic vulnerabilities.

release

8
from drvoss/everything-copilot-cli

Use when a sprint or feature is complete and ready to ship — tags the version, generates GitHub Release notes, runs rollout or smoke verification, and publishes to npm/PyPI/Docker registries.

prompt-optimizer

8
from drvoss/everything-copilot-cli

Use when a rough prompt, vague idea, or task description needs to become a finished copy-pasteable prompt for a chat-based LLM - rewrite it into one ready-to-send prompt with no blanks, no placeholders, and a clear output shape.

outside-voice

8
from drvoss/everything-copilot-cli

Use when you need an independent second opinion before, during, or after implementation — run challenge, consult, or review mode in a direct builder-to-builder voice

llm-wiki

8
from drvoss/everything-copilot-cli

Use when research or domain knowledge keeps getting rediscovered across sessions — build a supplementary markdown wiki that compounds synthesized knowledge without replacing GitHub or committed project guidance

interview-me

8
from drvoss/everything-copilot-cli

Use when a request is underspecified and you need to discover what the user actually wants before writing a plan, spec, or code - ask one question at a time, attach your current hypothesis, and stop only after the intent is explicitly confirmed.