home / skills / nweii / agent-stuff / spec-shaping
This skill helps shape product ideas into actionable specs and sprint plans, clarifying scope and enabling focused delivery.
npx playbooks add skill nweii/agent-stuff --skill spec-shapingReview the files below or copy the command above to add this skill to your agents.
---
name: spec-shaping
description: "Shape product ideas into actionable specs and sprint plans. Use when interviewing about a product plan, breaking specs into sprints, or turning vague ideas into well-scoped work."
metadata:
author: nweii
version: "1.2.0"
---
# Spec Shaping
Transform product ideas into well-scoped specs and actionable sprint plans. This skill supports two complementary modes:
1. **Interview mode**: Probe the problem space until a clear, narrow spec emerges
2. **Sprint breakdown mode**: Decompose a spec into atomic tasks and demoable sprints
## When to Use
- User has a rough product plan or idea that needs scoping
- User needs help thinking through implementation details, UI/UX, or tradeoffs
- User has a spec ready to break into sprints and tasks
- User wants to validate whether a problem is well-framed before building
## Document Management
Treat specs and sprint plans as **living documents**. Use the following standards to ensure consistency and "freshness".
### 1. File Operations (Search, Location, Updates)
- **Search First**: Before creating a new file, search for existing specs for this project.
- **Update vs. New**:
- **Update**: If the "Identity" of the project is the same (same core problem, just refining/pivoting implementation), **update** the existing spec.
- **Action**: Rename file to today's date + update Metadata.
- **New**: If the problem definition has fundamentally changed, or the solution direction is a complete "burn it down" restart, create a **new** spec.
- **Output Location (Adaptive)**:
1. Scan for: `specs/`, `planning/`, `docs/specs/`, `product/`.
2. If found: Use that directory.
3. Default: Create and use `specs/`.
4. **Vaults**: If external, check `agents.md`/`claude.md` for overrides.
### 2. File Standards (Naming, Metadata, Content)
- **Naming**: `[Semantic name] - [YYYY-MM-DD].md`
- **Specs**: `Checkout flow spec - 2024-03-25.md`
- **Sprints**: `Checkout flow sprints - 2024-03-25.md`
- **Frontmatter**:
```yaml
---
status: [Planned | In Progress | Completed]
last: [YYYY-MM-DD]
---
```
- **Context Header** (Required):
```markdown
> [!NOTE] > **Context**: [Why was this updated? e.g. "Pivot to V2"] > _This document reflects the product thinking at the time of the last update._
```
- **Changelog**: Keep a `## Changelog` at the bottom. **Initialize** if missing. Only log **significant** changes (e.g. scope pivots). Ignore trivial edits.
---
## Interview Mode
Read the plan file and interview the user in detail about technical implementation, UI & UX, concerns, tradeoffs, etc. Make sure questions are not obvious.
### Interview Principles
1. **Narrow before expanding**: Push to narrow the problem until it can be described in one clear sentence. Vague scope ("build a calendar") leads to endless shaping. Precise scope ("show empty time slots between existing events") enables real solutions.
2. **Surface complexity early**: Ask "what could make this harder than it sounds?" and "where are the hidden dependencies?" The goal is to reveal time bombs before they're in the middle of a build, not after.
3. **Distinguish understanding from justification**: Watch for the anti-pattern where someone has already decided what to build and is looking for data to justify it. Ask why this problem matters _before_ discussing solutions.
4. **Probe the adjacent user**: If this is user-facing, ask who the _next_ user is — the one just outside the current target. What would need to be different for them?
### Interview Process
Be very in-depth. Continue interviewing until you're confident the problem is well-framed and the key risks are surfaced. Then write the spec to the file.
A good spec should be **shapeable**— someone should be able to read it and describe the solution in ≤9 major components. If they can't, the problem isn't narrow enough yet.
---
## Sprint Breakdown Mode
Read the spec file and break the project down into sprints and tasks.
### Core Principles
1. **Atomic tasks**: Every task should be an atomic, committable piece of work that can be completed, reviewed, and merged independently.
2. **Compositional clarity**: Small atomic tasks should compose up into a clear goal for the sprint. If the relationship between tasks and the sprint goal isn't obvious, add a brief "Sprint Goal" statement.
3. **Demoable sprints**: Every sprint should result in a demoable piece of software that can be run, tested, and built on top of previous sprints.
4. **Clear validation**: Each task must include explicit validation criteria — tests where applicable, or another concrete verification method (e.g., "Validation: API returns 200 with expected payload", "Validation: Component renders correctly in Storybook").
5. **Dependencies first**: Order tasks so dependencies are completed before the work that relies on them.
6. **Fixed time, variable scope**: Sprints are time-boxed _appetites_, not scope commitments. If something doesn't fit, shape it smaller — don't extend the timeline.
7. **Budget for understanding**: Reserve ~10-20% of sprint capacity for de-risking future work — spikes, research, or validation that will speed up the _next_ sprint.
### Output Structure
Structure your output so it remains malleable as the project evolves:
- **Stable identifiers**: Give tasks IDs (T1, T2, etc.) so they can be referenced and reshuffled between sprints without losing context.
- **Traceability**: Link tasks back to spec sections so changes to the spec can be traced to affected tasks.
- **Visible dependencies**: Make it clear which tasks depend on others.
Adapt the specific format to what makes sense for this project — a simple list may suffice for small projects, while complex projects might benefit from a task registry table with sprint groupings. Use your judgment.
### Sprint Breakdown Process
1. Read the spec thoroughly. Identify natural section boundaries for traceability.
2. Create the task registry first — focus on atomicity and dependencies.
3. Group tasks into sprints, ensuring each sprint is demoable.
4. Self-review with these lenses:
- Are any tasks too large to complete in a single focused session?
- Are there missing or circular dependencies?
- Is each validation criteria concrete and verifiable?
- Could a developer pick up any task and know exactly what "done" looks like?
- Does each sprint have a clear demo scenario?
- **Shaping smell test**: Can you describe the entire sprint in ≤9 major scopes? If not, the spec may need more narrowing before breaking it into tasks.
5. Revise based on your review.
6. Write the final sprint plan to a markdown file alongside the spec (e.g., `Checkout sprints - 2024-03-25.md`).
### Optional: Subagent Review
For large or complex specs with many interdependencies, consider using a subagent to review the sprint plan with fresh context. This provides a "second set of eyes" unpolluted by the main conversation. The subagent should:
- Review the sprint plan for gaps, circular dependencies, or tasks that are too large
- Suggest improvements to task scoping or sprint groupings
- Flag any validation criteria that are vague or unverifiable
Use your judgment — this is most valuable for hairy, high-stakes specs where a deeper audit is worth the overhead.
### Explicitly Out of Scope
- **Time estimates**: Do not estimate duration. The human will layer in timeline context.
- **Resource allocation**: Do not assign tasks to people or roles unless explicitly requested and given enough context to do so.
This skill shapes product ideas into clear specs and actionable sprint plans. It supports in-depth interviewing to narrow vague problems and a sprint-breakdown mode that produces atomic tasks, demoable sprints, and verifiable validation criteria. Use it to turn a fuzzy plan into a repeatable engineering roadmap.
In Interview mode, the skill asks targeted, non-obvious questions to narrow the problem, surface hidden dependencies, and confirm the true user need before writing or updating a spec file. In Sprint Breakdown mode, it reads an existing spec, produces a task registry with stable IDs and dependencies, groups tasks into demoable sprints, and annotates each task with concrete validation criteria and traceability back to spec sections.
Should I create a new spec file or update an existing one?
If the core problem identity is the same, update the existing spec and add an update date; create a new file only when the problem definition fundamentally changes.
How detailed should validation criteria be?
Validation must be concrete and verifiable — API status and payload checks, Storybook renders, or user-visible demo steps. If you can’t state a clear pass/fail, refine the task further.
Do you provide time estimates or resource assignments?
No. This skill avoids time estimates and resource allocation unless you explicitly request them with sufficient context.