14 KiB
Product Specification Generator
You are creating a product specification that defines WHAT to build, WHY it's needed, and FOR WHOM. This is the discovery phase - focusing on requirements, user needs, and product decisions (NOT technical implementation).
⚙️ PHASE 1: INPUT PROCESSING & WORK FOLDER SETUP
Step 1.1: Parse Command Arguments
Input Received: $ARGUMENTS
Parse to extract:
Primary Input (first non-flag argument):
- Jira Issue ID: Pattern
[A-Z]+-\d+(e.g., EC-1234) - Text Description: Free-form product idea or requirement
- Empty: Interactive mode (will prompt for requirements)
Input Files (supporting materials):
--input FILE1 FILE2...: Images, PDFs, documents to analyze- Examples: wireframes, mockups, PRD, requirements.pdf
- Supports multiple files
- File types: .png, .jpg, .pdf, .md, .txt, .doc, .docx
Output Flags:
--output PATH: Save spec to specific file path (default:.WIP/[identifier]/01-spec.md)--no-file: Skip file output, terminal only--quiet: Skip terminal output, file only--post-to-jira: Post spec as Jira comment (requires Jira ID)--work-dir PATH: Use specific work folder (default: auto-generate)
Flag Validation:
--outputand--no-filecannot be used together → Error--post-to-jirawithout Jira ID → Warning, skip posting--work-diroverrides auto-generation → Use as specified
Store parsed values for later phases:
problemInput = [jira-id or description or empty]
inputFiles = [list of file paths]
outputPath = [path or null]
noFile = [boolean]
quiet = [boolean]
postToJira = [boolean]
workDir = [path or null]
jiraId = [extracted jira id or null]
Step 1.2: Resolve or Create Work Folder
Use lib/work-folder.md:
Configuration:
mode: "auto-detect"
identifier: [jiraId from Step 1.1, or null]
description: [problemInput from Step 1.1]
workflow_type: "full"
current_step: "spec"
custom_work_dir: [workDir from Step 1.1, or null]
Output (store for later phases):
work_folder: [path from library, e.g., ".WIP/EC-1234-feature"]
metadata_file: [path from library, e.g., ".WIP/EC-1234-feature/.metadata.json"]
output_file: [path from library, e.g., ".WIP/EC-1234-feature/01-spec.md"]
identifier: [identifier from library]
is_new: [true/false from library]
Store the returned values for later phases.
Note: The work-folder library creates .WIP/[identifier]/ with metadata. Workflow type "full" means: spec → analyze → plan → implement.
Step 1.3: Copy Supporting Materials to Context Folder
If --input files provided:
for file in $inputFiles; do
# Copy to context folder
cp "$file" "[work_folder from Step 1.2]/context/$(basename $file)"
# Read file if it's readable (images, PDFs, text)
# Use Read tool to load content for analysis
done
Update metadata.files.context with list of copied files.
⚙️ PHASE 2: GATHER REQUIREMENTS & CONTEXT
Step 2.1: Fetch External Context (if Jira)
If Jira ID detected in Step 1.1:
Use jira-analyzer subagent:
Task tool:
subagent_type: "schovi:jira-auto-detector:jira-analyzer"
prompt: "Fetch and summarize Jira issue [jira-id]"
description: "Fetching Jira context"
Extract from summary:
- Issue title
- Issue type (Story, Epic, Bug)
- Description (full text)
- Acceptance criteria
- Comments and discussion points
Step 2.2: Analyze Supporting Materials
For each file in context/:
Images (wireframes, mockups, screenshots):
- Use Read tool to view images
- Extract UI elements, user flows, visual design
- Identify screens, components, interactions
Documents (PDFs, text files):
- Use Read tool to extract text
- Parse requirements, user stories, constraints
- Identify stakeholder needs, success metrics
Existing markdown/text:
- Read directly
- Extract structured requirements if present
Step 2.3: Interactive Discovery (if needed)
If requirements are vague or incomplete, ask clarifying questions:
Use AskUserQuestion tool to gather:
-
Core Requirements:
- What problem are we solving?
- Who are the users?
- What's the expected outcome?
-
User Experience:
- What are the key user journeys?
- What actions will users perform?
- What edge cases exist?
-
Scope & Constraints:
- What's IN scope vs OUT of scope?
- Any technical constraints to be aware of?
- Any compliance or security requirements?
-
Success Criteria:
- How will we know this is successful?
- What metrics matter?
- What are the acceptance criteria?
Example Questions:
1. Who is the primary user for this feature? (e.g., end users, admins, developers)
2. What's the main problem this solves? (1-2 sentences)
3. What are the key user actions? (e.g., "User logs in, sees dashboard, filters data")
4. Are there any known constraints? (e.g., must work on mobile, needs to support 10k users)
5. What's explicitly OUT of scope for v1? (helps clarify boundaries)
Generate identifier now if not done in Step 1.2.3:
- Take first sentence of problem description
- Generate slug
- Update work folder name if needed
⚙️ PHASE 3: GENERATE PRODUCT SPECIFICATION
Step 3.1: Structure Specification Outline
Create structured specification with these sections:
# Product Specification: [Title]
## 📋 Overview
[What, Why, For Whom - 3-4 sentences]
## 👥 Target Users
[Primary, secondary users]
## 🎯 Problem Statement
[What problem we're solving, current pain points]
## 💡 Proposed Solution
[High-level solution approach, key features]
## 📖 User Stories
### Story 1: [Title]
**As a** [user type]
**I want to** [action]
**So that** [benefit]
**Acceptance Criteria**:
- [ ] Criterion 1
- [ ] Criterion 2
**Edge Cases**:
- [Edge case 1]
- [Edge case 2]
[Repeat for each major user story]
## 🎨 User Experience
### User Journey 1: [Journey Name]
1. User starts at [point]
2. User performs [action]
3. System responds with [response]
4. User sees [outcome]
[Repeat for key journeys]
## ✅ Product Acceptance Criteria
### Must Have (v1)
- [ ] Criterion 1
- [ ] Criterion 2
### Should Have (v1)
- [ ] Criterion 1
### Nice to Have (Future)
- [ ] Criterion 1
## 🔍 Scope & Decisions
### In Scope ✅
- Feature A
- Feature B
### Out of Scope ❌
- Feature X (reason: future iteration)
- Feature Y (reason: complexity)
### Product Decisions Made
- **Decision 1**: [Why we chose this]
- **Decision 2**: [Why we chose this]
## 🔗 Dependencies & Constraints
### External Dependencies
- [Third-party service, API, etc.]
### User Constraints
- [Browser support, device requirements]
### Business Constraints
- [Timeline, budget, compliance]
### Known Limitations
- [Technical or product limitations to be aware of]
## 📊 Success Metrics
### Key Performance Indicators
- Metric 1: [target]
- Metric 2: [target]
### User Success Metrics
- [How users measure success]
## 🗂️ Related Resources
### Context Files
[List files in context/ folder]
- wireframe.png - [brief description]
- requirements.pdf - [brief description]
### External References
- Jira: [link]
- Design doc: [link]
- Discussion: [link]
---
**Next Steps**: Run `/schovi:analyze` to explore technical implementation options.
Step 3.2: Write Specification Content
Follow the outline above, filling in content based on:
- Jira context (if available)
- Supporting materials (images, docs)
- Interactive answers (if gathered)
Key Principles:
- Non-technical - No file:line references, no code mentions
- User-focused - Describe features from user perspective
- Clear scope - Explicit about what's IN vs OUT
- Actionable criteria - Testable acceptance criteria
- Decision record - Document why we chose this approach
Quality Check:
- Clear problem statement (why we're building this)
- Defined target users
- At least 2-3 user stories with acceptance criteria
- Clear scope boundaries (in/out)
- Success metrics defined
- All supporting materials referenced
⚙️ PHASE 4: OUTPUT HANDLING
Step 4.1: Determine Output Path
Priority:
- If
--outputflag: Use specified path - If
--no-file: Skip file output (terminal only) - Default: Use
output_filefrom Step 1.2 (work-folder library)
if [ -n "$outputPath" ]; then
final_output_file="$outputPath"
elif [ "$noFile" = true ]; then
final_output_file="" # Skip file output
else
final_output_file="[output_file from Step 1.2]" # e.g., .WIP/EC-1234/01-spec.md
fi
Step 4.2: Write Specification File
If file output enabled:
Use Write tool:
- file_path: [final_output_file from Step 4.1]
- content: [Full specification from Phase 3]
Step 4.3: Update Metadata
If work_folder exists and file was written:
Read current metadata:
cat [metadata_file from Step 1.2]
Update fields:
{
...existing fields,
"workflow": {
...existing.workflow,
"completed": ["spec"],
"current": "spec"
},
"files": {
"spec": "01-spec.md",
"context": ["wireframe.png", "requirements.pdf"]
},
"timestamps": {
...existing.timestamps,
"lastModified": "[current timestamp]"
}
}
Get current timestamp:
date -u +"%Y-%m-%dT%H:%M:%SZ"
Write updated metadata:
Write tool:
file_path: [metadata_file from Step 1.2]
content: [updated JSON]
Step 4.4: Post to Jira (if requested)
If --post-to-jira flag AND Jira ID present:
Use mcp__jira__add_comment:
- issue_key: [jira-id]
- comment: [Specification markdown or link to spec file]
Format comment:
Product Specification Generated
Specification saved to: .WIP/[identifier]/01-spec.md
Key highlights:
- [Target user]
- [Core problem]
- [Proposed solution]
Next step: Run /schovi:analyze to explore technical implementation.
Step 4.5: Display Results to User
If not --quiet, show terminal output:
✅ Product specification complete!
📁 Work folder: .WIP/[identifier]/
📄 Specification: 01-spec.md
📂 Supporting materials: [count] files in context/
📋 Specification Summary:
• Target Users: [primary user types]
• Problem: [one-sentence problem]
• Solution: [one-sentence solution]
• User Stories: [count] stories defined
• Acceptance Criteria: [count] criteria
🎯 Scope:
✅ In Scope: [count] features
❌ Out of Scope: [count] items
📊 Success Metrics:
• [Metric 1]
• [Metric 2]
---
📍 What You Have:
✓ Product specification with user stories and acceptance criteria
✓ Clear scope boundaries and product decisions
✓ Success metrics defined
🚀 Next Steps:
1. Review spec: cat .WIP/[identifier]/01-spec.md
2. Explore technical approaches: /schovi:analyze --input .WIP/[identifier]/01-spec.md
3. Or iterate on spec if requirements change
💡 Tip: The spec is non-technical - it focuses on WHAT and WHY.
Run analyze next to explore HOW to implement it.
If --post-to-jira succeeded:
✅ Posted to Jira: [jira-url]
🔍 VALIDATION CHECKLIST
Before completing, ensure:
- Work folder created:
.WIP/[identifier]/ - Metadata initialized with workflow.type = "full"
- Specification written to
01-spec.md - Supporting materials copied to
context/ - Metadata updated with completed = ["spec"]
- Clear problem statement and target users defined
- At least 2-3 user stories with acceptance criteria
- Scope boundaries (in/out) clearly defined
- Success metrics specified
- Next steps communicated to user
💡 USAGE EXAMPLES
Example 1: Spec from Jira Issue
/schovi:spec EC-1234
# Workflow:
# 1. Fetches Jira issue details
# 2. Creates .WIP/EC-1234-[title-slug]/
# 3. Generates spec from Jira description and acceptance criteria
# 4. Saves to 01-spec.md
# 5. Shows summary
Example 2: Spec from Wireframes and Description
/schovi:spec "Build user dashboard" --input wireframe.png design-doc.pdf
# Workflow:
# 1. Creates .WIP/build-user-dashboard/
# 2. Copies wireframe.png and design-doc.pdf to context/
# 3. Analyzes images and documents
# 4. Asks clarifying questions about requirements
# 5. Generates comprehensive spec
# 6. Saves to 01-spec.md with references to context files
Example 3: Interactive Spec Generation
/schovi:spec
# Workflow:
# 1. Prompts for problem description
# 2. Asks about target users
# 3. Asks about key user actions
# 4. Asks about scope and constraints
# 5. Generates spec based on interactive answers
# 6. Creates work folder with generated identifier
# 7. Saves to 01-spec.md
Example 4: Spec with Custom Output
/schovi:spec EC-1234 --output ~/docs/product-specs/auth-spec.md
# Custom output location, not in .WIP/ folder
🚫 ERROR HANDLING
No Requirements Found
❌ Cannot generate specification without requirements
No Jira ID, description, or input files provided.
Please provide ONE of:
- Jira Issue: /schovi:spec EC-1234
- Description: /schovi:spec "Build user authentication"
- Files: /schovi:spec --input requirements.pdf wireframe.png
- Interactive: /schovi:spec (will prompt for details)
Invalid File Type
⚠️ Warning: Unsupported file type: file.xyz
Supported types: .png, .jpg, .pdf, .md, .txt, .doc, .docx
Skipping file.xyz...
Jira Not Found
❌ Jira issue EC-9999 not found
Please check:
- Issue key is correct
- You have access to the issue
- MCP Jira server is configured
Tip: Continue without Jira using description:
/schovi:spec "Description of the feature"
🎯 KEY PRINCIPLES
- Product Focus - This is about WHAT to build, not HOW
- User-Centric - Describe features from user perspective
- Non-Technical - No code, no files, no implementation details
- Clear Boundaries - Explicit scope (in/out)
- Actionable - Criteria should be testable
- Decision Record - Document why we chose this approach
- Workflow Foundation - Sets up analyze → plan → implement chain
Remember: This is the first step in a full workflow. The spec should be detailed enough for the analyze command to explore technical approaches.