home / skills / nweii / agent-stuff / spec-shaping

spec-shaping skill

/skills/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-shaping

Review the files below or copy the command above to add this skill to your agents.

Files (2)
SKILL.md
7.4 KB
---
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.

Overview

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.

How this skill works

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.

When to use it

  • You have a rough product idea that needs precise scoping
  • You want to validate that a problem is well-framed before building
  • You need to decompose a ready spec into atomic tasks and sprints
  • You want to surface hidden technical or UX risks early
  • You are preparing a spec file and want consistent document hygiene

Best practices

  • Search existing specs before creating new files; update when the core problem identity remains the same
  • Name files with a semantic title and date, include frontmatter status and last-modified date
  • Keep a Context header and a Changelog section; log only significant scope changes
  • Make tasks atomic and include explicit validation criteria for each task
  • Order tasks so dependencies are done first and reserve 10–20% of sprint capacity for research/spikes

Example use cases

  • Interview a PM who proposes “build a calendar” and narrow it to a single, testable feature spec
  • Take a completed spec and produce T1..Tn task registry with dependencies and sprint groupings
  • Refine a pivoted product direction by updating the existing spec file and adding a changelog entry
  • Run a subagent review on a complex sprint plan to catch circular dependencies or oversized tasks
  • Convert UX mockups and acceptance criteria into demoable first-sprint deliverables

FAQ

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.