AgentStack
SKILL verified MIT Self-run

Design Product

skill-etr-groundwork-design-product · by etr

Create detailed product requirements document (PRD) for a feature. Usage /groundwork:design-product

No reviews yet
0 installs
7 views
0.0% view→install

Install

$ agentstack add skill-etr-groundwork-design-product

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README — it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-etr-groundwork-design-product)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
1mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming — see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps — measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Design Product? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Product Design Skill

Interactive workflow for iteratively designing and documenting product requirements in EARS format.

Workflow Overview

  1. Understand - Clarify the feature/change request through targeted questions
  2. Design - Draft EARS requirements and check for contradictions
  3. Approve - Present draft for user approval
  4. Commit - Edit the PRD document when requirements are approved
  5. Next Step - Ask user what to do next (architecture, UX, or another feature)

If you are in plan mode, you MUST still complete the full workflow (Steps 0–4). Your plan output MUST describe ONLY the PRD file edits from Step 4.

  • Which file to create or edit
  • Where to insert the new feature block
  • The EARS requirements content

Pre-flight: Model Recommendation

Your current effort level is {{effort_level}}.

Skip this step silently if effort is high, xhigh, or max (the scale is low "You're working from ` (inside **[cwd-project]**), but the selected Groundwork project is **[selected-project]** ([selected-project-path]/). What would you like to do?" > - "Switch to [cwd-project]" > - "Stay with [selected-project]" If the user switches, invoke Skill(skill="groundwork:select-project")`.

  • If CWD doesn't match any project → proceed without warning (shared directory).
  1. Check {{specs_dir}}/: Does a specs directory exist?
  • If yes → Single-project repo, proceed normally.
  • If no → Ask the user: "Is this a single-project repo or a monorepo with multiple projects?"
  • Single project → Proceed normally (specs will be created at {{specs_dir}}/)
  • Monorepo → Invoke Skill(skill="groundwork:setup-repo") to create .groundwork.yml, then continue.

Step 0a: Feature-Project Mismatch Check (monorepo only)

Skip this check if:

  • Not in monorepo mode (no .groundwork.yml)
  • The project was just selected as part of Step 0 above (the user explicitly chose)
  • The CWD mismatch check in Step 0 triggered a project switch

If in monorepo mode with a previously selected project:

  • Evaluate whether the requested feature "sounds like" it belongs to the selected project
  • If a mismatch is detected (e.g., user asks to design "push notifications for mobile" but web-app is selected):

> "This feature sounds like it might belong to [other-project] rather than [current-project]. Continue with [current-project] or switch?"

  • If the user confirms the current project, proceed normally
  • If the user wants to switch, invoke Skill(skill="groundwork:select-project") and then continue

Step 0b: Do we have context?

If the user called the skill without any context, ask them to provide context on what feature they want to add, modify or remove.

Step 0c: Load Project Context

Before clarifying the request, load existing specs so you can detect contradictions and understand constraints:

Check for and read (if they exist):

  • {{specs_dir}}/architecture.md (or {{specs_dir}}/architecture/ directory) — technology choices, component boundaries, decision records. Use to catch architecturally infeasible requirements early.
  • {{specs_dir}}/design_system.md — design principles, brand decisions, UX patterns. Use to ensure new features align with established design language.
  • {{specs_dir}}/product_specs.md (or {{specs_dir}}/product_specs/ directory) — already loaded implicitly by the contradiction check, but read it explicitly here for full cross-feature context.

For each, check single file first, then directory. If a directory, aggregate all .md files.

If none exist, that's fine — proceed without them.

Step 1: Understand the Request

Invoke the groundwork:understanding-feature-requests skill to clarify the feature and check for contradictions.

If architecture and design system were loaded in Step 0.5, provide them as context so the clarification can also check for:

  • Architectural feasibility — requirements that conflict with technology choices or component boundaries
  • Design consistency — features that would require patterns contradicting the established design system

This skill will:

  1. Ask clarifying questions (core, exploratory, conditional)
  2. Check for internal, cross-feature, and technical contradictions
  3. Resolve any conflicts before proceeding

Once understanding is complete and conflicts resolved, continue to Step 2.

Step 2: Design EARS Requirements

Once the feature is understood, draft requirements using EARS syntax.

EARS Syntax Reference

| Pattern | Template | Use When | |---------|----------|----------| | Event-Driven | When ` then the system shall | Behavior triggered by events | | **State-Driven** | While the system shall | Continuous behavior during state | | **Unwanted** | If then the system shall | Handling errors/edge cases | | **Optional** | Where the system shall | Configurable features | | **Complex** | While , when , the system shall ` | Compound conditions |

Requirement Quality Checklist

Each requirement must be:

  • [ ] Atomic - One behavior per requirement
  • [ ] Testable - Clear pass/fail criteria exist
  • [ ] Technology-agnostic - No implementation details
  • [ ] Unambiguous - Single interpretation possible
  • [ ] Traceable - Has unique ID following project convention

ID Convention

Follow the existing PRD convention: PRD--REQ-

Examples from the project:

  • PRD-FINE-REQ-001 (Finetuning feature)
  • PRD-GEN-REQ-001 (Generation feature)
  • PRD-IMP-REQ-001 (Impersonation detection)
  • PRD-MON-REQ-001 (Monetization)
  • PRD-DEL-REQ-001 (Data deletion)

For new features, propose a short code (3-4 chars) and confirm with user.

Check for Contradictions

Before presenting the draft, review for conflicts:

Cross-Feature Conflicts

Compare new requirements against existing PRD:

  • Behavioral conflicts: New behavior contradicts existing behavior
  • Resource competition: Features that compete for same limited resources
  • UX inconsistency: Different patterns for similar interactions
  • Data conflicts: Contradictory data ownership or access rules

Example: New "anonymous posting" requirement conflicts with existing "all user actions must be audited"

Technical Incompatibilities

Requirements that may be technically difficult to satisfy together:

  • Performance constraints that conflict
  • Security requirements that limit functionality
  • Scalability needs that conflict with simplicity

If conflicts found, surface them: > "I noticed a potential conflict: > - [Existing requirement or pattern] requires [X] > - This new requirement requires [Y] > These may be incompatible because [reason]. > > Options: > 1. Modify the new requirement to [alternative] > 2. Update the existing requirement > 3. Accept the conflict as a known trade-off > > How should we resolve this?"

After resolution:

  • If user chooses option 1 (modify new): Update the draft requirement and re-present
  • If user chooses option 2 (update existing): Note the PRD change needed and proceed
  • If user chooses option 3 (accept trade-off): Document the trade-off in the feature block and proceed

Do not proceed to Step 3 until conflicts are resolved or explicitly accepted.

Present Progressively

When presenting complex feature blocks:

  • Break into 200-300 word segments
  • Seek confirmation after each section before continuing
  • Start with problem/outcome, then scope, then requirements
  • This catches misunderstandings early and keeps stakeholders engaged

Step 3: Present Draft for Approval

Before editing the PRD, present the complete feature block:

### [Feature Number] Feature Name

**Problem / outcome**
[1-2 sentences describing the problem and desired outcome]

**In scope**
- [Capability 1]
- [Capability 2]

**Out of scope**
- [Explicit exclusion 1]

**EARS Requirements**
- `PRD-XXX-REQ-001` When [trigger] then the system shall [response].
- `PRD-XXX-REQ-002` When [trigger] then the system shall [response].

**Acceptance criteria**
- [Testable criterion 1]
- [Testable criterion 2]

**Telemetry** (optional)
- [Metric to track]

**Rollout** (optional)
- Phase 1: [description]
- Phase 2: [description]

Ask: "Does this capture your requirements? Any changes before I update the PRD?"

Scope discipline:

  • Apply YAGNI thinking - challenge every "nice to have"
  • Ask: "What's the simplest version that delivers the core value?"
  • If scope feels large, propose a phased approach

Step 4: Commit to PRD

If in plan mode: The plan should describe only the file edits in this step — which file to edit, where to insert, and what content to write. Do not plan architecture, code, or technical implementation of the feature.

PRD Location: The PRD may be stored as:

  • Single file: {{specs_dir}}/product_specs.md
  • Directory: {{specs_dir}}/product_specs/ (with content split across files)

When the user approves:

  1. Check if PRD exists - Look for single file first, then directory
  • If missing, create {{specs_dir}}/product_specs.md using the template in ${CLAUDE_PLUGIN_ROOT}/references/product-design/prd-template.md
  • Ensure {{specs_dir}}/ directory exists first
  1. Route the content - Determine where to write based on spec format:
  • Single file mode: Edit {{specs_dir}}/product_specs.md directly
  • Directory mode: Route to appropriate file:
  • Features with ID (e.g., PRD-AUTH-*) → {{specs_dir}}/product_specs/03-features/.md
  • Open questions → {{specs_dir}}/product_specs/05-open-questions.md
  • NFR changes → {{specs_dir}}/product_specs/02-non-functional.md
  • Product context changes → {{specs_dir}}/product_specs/01-product-context.md
  • Traceability updates → {{specs_dir}}/product_specs/04-traceability.md
  1. Find insertion point - New features go in Section 3 (Feature list) after existing features
  2. Edit the document - Use str_replace to insert the new feature block
  3. Update open questions - If any remain, add to Section 5 (Open questions log)
  4. Update traceability note - Mention new requirement IDs if relevant

After editing, confirm: "I've added [feature] to the PRD with requirements PRD-XXX-REQ-001 through PRD-XXX-REQ-NNN."

Step 4a: Auto-Split Check (single file mode only)

Skip this step if the PRD is already in directory mode.

After committing to the single-file PRD, check whether it should be split:

  1. Count lines: wc -l {{specs_dir}}/product_specs.md
  2. Count features: number of ### \d+\.\d+ headings in the file

If lines >= 500 OR features >= 15:

  • Invoke Skill(skill="groundwork:split-specs") — this runs automatically with no user input needed.
  • After the split completes, note in your confirmation: "The PRD has been split into directory format at {{specs_dir}}/product_specs/ for easier navigation."

If neither threshold is crossed, continue silently.

Step 5: Ask What's Next

After successfully updating the PRD, use the AskUserQuestion tool to present the next step options:

{
  "questions": [{
    "question": "What would you like to do next?",
    "header": "Next step",
    "options": [
      {
        "label": "Design architecture",
        "description": "Translate these requirements into technical architecture decisions"
      },
      {
        "label": "Design UX",
        "description": "Create user experience designs and flows for this feature"
      },
      {
        "label": "Create tasks",
        "description": "Generate implementation tasks for this feature"
      },
      {
        "label": "Add another feature",
        "description": "Continue adding more features to the PRD"
      }
    ],
    "multiSelect": false
  }]
}

Handle the response:

  • Design architecture: Invoke the groundwork:design-architecture skill to design the technical approach
  • Design UX: Run /groundwork:ux-design to create UX designs
  • Create tasks: Run /groundwork:create-tasks to generate implementation tasks for the new feature
  • Add another feature: Clear context by summarizing what was just added, then restart from Step 1 with a fresh feature request. Ask: "What feature would you like to add next?"

Conversation Patterns

Adding a New Feature

User: I want to add a feature for artists to share their portfolios publicly.

Claude: Great idea! Let me understand this better:
1. What should be shareable - just the generated outputs, or training images too?
2. Should other users be able to interact (like/comment) or just view?
3. Are there privacy controls the artist should have?

[User answers...]

Claude: Based on your answers, here's what I'm proposing:

### 3.X Portfolio Sharing

**Problem / outcome**
Artists want to showcase their AI-generated work publicly to attract commissions.

**In scope**
- Public gallery page per artist
- ...

**EARS Requirements**
- `PRD-PORT-REQ-001` When an artist enables public portfolio then the system shall...

Does this capture it? Any changes?

Modifying an Existing Requirement

User: PRD-IMP-REQ-008 should lock the account after 5 attempts, not N.

Claude: I'll update PRD-IMP-REQ-008 to specify 5 attempts:

**Before:** When impersonation attempts exceed N per day...
**After:** When impersonation attempts exceed 5 per day...

Should I also add a configuration option for admins to adjust this threshold, or keep it fixed at 5?

Clarifying Ambiguity

User: Add a requirement for faster generation.

Claude: "Faster" needs to be specific for a testable requirement. Currently PRD specifies p95 < 2s.
- What latency target do you have in mind? (e.g., p95 < 1s, p99 < 2s)
- Does this apply to all generation types or specific ones?
- Are there trade-offs you'd accept (e.g., lower quality for speed)?

Reference Files

For detailed examples of well-written EARS requirements, see:

  • ${CLAUDE_PLUGIN_ROOT}/references/product-design/ears-examples.md - Curated examples from various domains
  • ${CLAUDE_PLUGIN_ROOT}/references/product-design/prd-template.md - Template for creating new PRD files

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.