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
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
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/product-capability/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How product-capability Compares
| Feature / Agent | product-capability | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/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 decompositionRelated Skills
verification-before-completion
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
Use when you need multiple branches checked out at once — create isolated working directories for parallel development without cloning the repository repeatedly
triage
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
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
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
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
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
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
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
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
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
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.