ALWAYS invoke this skill when breaking down a PRD into capabilities. NEVER decompose PRDs without this skill.
From spx-legacynpx claudepluginhub outcomeeng/claude --plugin spx-legacyThis skill uses the workspace's default tool permissions.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Details PluginEval's skill quality evaluation: 3 layers (static, LLM judge), 10 dimensions, rubrics, formulas, anti-patterns, badges. Use to interpret scores, improve triggering, calibrate thresholds.
You must understand:
<quick_start>
</quick_start>
<workflow>Read the PRD and ask: "What should this product be CAPABLE of doing?"
| Look for | Examples |
|---|---|
| Core functionality areas | "Generate documents", "Manage user identities" |
| Cross-cutting concerns | "Analytics", "Notifications", "Audit logging" |
| Infrastructure needs | "Test harness", "CLI tooling" |
| Integration points | "Third-party API integration", "Export/import" |
A capability is what the product CAN DO.
Examples of good capability names:
NOT capabilities:
A single capability is valid. The tree grows organically.
spx/
├── product.prd.md
└── 21-core.capability/ ← Start with one
└── 21-first-feature.feature/
└── 21-first-story.story/
Later, you might add:
spx/
├── product.prd.md
├── 13-test-infrastructure.capability/ ← Discovered dependency
├── 21-core.capability/
└── 54-advanced.capability/ ← Added as product grows
Lower BSP = dependency. Order by what depends on what.
| Pattern | BSP Strategy |
|---|---|
| Infrastructure (test harness, tooling) | Low BSP (10-20) |
| Core functionality | Mid BSP (21-50) |
| Advanced/optional features | High BSP (54-80) |
| Improvements/polish | Highest BSP (76-99) |
| Scenario | Formula | Example |
|---|---|---|
| First capability | 21 | 21-core.capability/ |
| Insert before 21 | floor((10+21)/2) = 15 | 15-infra.capability/ |
| Insert between 21 and 54 | floor((21+54)/2) = 37 | 37-new.capability/ |
| Append after 54 | floor((54+99)/2) = 76 | 76-advanced.capability/ |
Capabilities with the same BSP can be worked on in parallel:
37-users.capability/ ← Same BSP = parallel
37-billing.capability/ ← Same BSP = parallel
37-reports.capability/ ← Same BSP = parallel
For each capability, create:
spx/NN-{slug}.capability/
├── {slug}.capability.md
└── tests/ # Created when starting implementation
Use the template from /managing-spx:
# Capability: {Name}
## Purpose
{What this product ability delivers and why it matters to users}
## Success Metric
- **Baseline**: {Current state}
- **Target**: {Expected improvement}
- **Measurement**: {How to track}
## Requirements
{Prose from PRD, focused on this capability's scope}
## Test Strategy
{Overview of how this capability will be tested—can span multiple levels}
## Outcomes
{Capability-level outcomes, if any—remember Principle 11}
## Architectural Constraints
{ADRs and PDRs that constrain this capability}
Note on Outcomes: A capability may have its own outcomes (high-level integration/E2E scenarios) OR it may have no direct outcomes—just features underneath. Both are valid.
For each capability:
□ Represents what the product CAN DO
□ Is a coherent cross-cutting area
□ Has clear boundaries with other capabilities
□ BSP reflects actual dependencies
□ Can be decomposed into ≤9 features (if needed now)
</workflow>
<examples>
PRD excerpt:
"Hardware engineers need to configure SPI peripherals, generate Verilog, and verify on real FPGAs."
Analysis:
| Product ability | Capability? |
|---|---|
| "SPI Peripheral Support" | YES - what the library CAN DO |
| "Code Generation" | YES - distinct ability |
| "FPGA Verification" | MAYBE - could be part of code gen or separate |
Possible structures:
Option A: Start small
spx/
├── spi-library.prd.md
└── 21-spi-peripherals.capability/
Option B: Separate concerns
spx/
├── spi-library.prd.md
├── 13-test-infrastructure.capability/
├── 21-spi-peripherals.capability/
└── 54-fpga-verification.capability/
Both are valid. Start with A, grow to B as needed.
PRD excerpt:
"Users need to register, log in, reset passwords, and manage their profiles. Support OAuth and magic links."
Analysis:
This is ONE capability: "Identity and Authentication Management"
spx/
├── auth-system.prd.md
└── 21-identity-auth.capability/
├── 21-registration.feature/
├── 37-login.feature/
├── 54-password-reset.feature/
└── 76-oauth.feature/
NOT separate capabilities for login, registration, etc.—those are features.
PRD excerpt:
"Customers browse products, add to cart, checkout with payment, track orders."
Analysis:
| Product ability | Capability |
|---|---|
| Product catalog | 21-catalog.capability/ |
| Shopping cart | 37-cart.capability/ |
| Payment processing | 37-payment.capability/ |
| Order fulfillment | 54-fulfillment.capability/ |
Note: cart and payment are parallel (same BSP)—neither depends on the other.
</examples><anti_patterns>
| Anti-pattern | Why wrong | Correct level |
|---|---|---|
| "User Login" | Too small | Feature |
| "Parse Config" | Too small | Story |
| "Sprint 1" | Timeline, not functionality | Not a container |
| "Customer Journey X" | Journey, not ability | May span capabilities |
| "API Endpoint /users" | Implementation detail | Story |
| Signal | Problem |
|---|---|
| Capability name is a verb phrase | Might be a feature or story |
| Capability fits in 1-2 features | Might be too small |
| Capability name includes "and" | Might be multiple capabilities |
| Can't identify what product CAN DO | Needs clarification |
</anti_patterns>
<success_criteria>
Decomposition complete when:
</success_criteria>