Requirement Analysis
npx machina-cli add skill h315uk3/symbiosis/requirement-analysis --openclawRequirement Analysis Skill
This skill transforms raw interview data into structured, actionable requirement specifications.
When to Use This Skill
Use this skill after completing a requirement elicitation interview (e.g., via /good-question) when you have:
- Collected answers across multiple requirement dimensions
- Raw notes from developer conversations
- Unstructured information that needs formalization
Do not use this skill:
- During active interviews (use it after information gathering is complete)
- For code analysis or implementation tasks
- When requirements are already well-structured
What This Skill Does
1. Structure Requirements
Transform raw interview data into a formal specification organized by:
- Purpose: Problem statement, stakeholders, value proposition
- Data: Input/output specifications, data models, transformations
- Behavior: Functional flows, state transitions, business logic
- Constraints: Technical requirements, limitations, dependencies
- Quality: Success criteria, testing requirements, edge cases
2. Detect Issues
Identify and report:
- Ambiguities: Vague or underspecified requirements
- Contradictions: Conflicting statements or incompatible requirements
- Gaps: Missing information critical for implementation
- Assumptions: Implicit assumptions that need validation
3. Generate Implementation Guidance
Provide:
- Architecture Recommendations: Suggested technical approaches
- Risk Assessment: Potential challenges and mitigation strategies
- Testing Strategy: Test scenarios based on requirements
- Open Questions: Remaining uncertainties to resolve
Input Format
PREFERRED: Dimension Data JSON (from /good-question)
If invoked after a /good-question interview, provide dimension data in JSON format:
{
"purpose": {
"answered": true,
"content": "English summary of purpose answers with examples",
"examples": 2,
"contradictions": false
},
"data": {
"answered": true,
"content": "English summary of data answers with examples",
"examples": 1,
"contradictions": false
},
"behavior": {
"answered": true,
"content": "English summary of behavior answers with examples",
"examples": 3,
"contradictions": false
},
"constraints": {
"answered": true,
"content": "English summary of constraints answers with examples",
"examples": 1,
"contradictions": false
},
"quality": {
"answered": true,
"content": "English summary of quality answers with examples",
"examples": 0,
"contradictions": false
}
}
CRITICAL: Content fields MUST be in English for uncertainty calculation to work correctly.
ALTERNATIVE: Raw Interview Data
For ad-hoc analysis without /good-question, provide raw interview data:
## Interview Transcript
User said: "I want to build a dashboard..."
Question 1: What problem does this solve?
Answer: "Users need to see their metrics..."
Question 2: What data is involved?
Answer: "User activity logs, API call counts..."
[etc.]
Or as structured notes:
## Collected Information
Purpose: Users need visibility into system metrics
Data: Time-series data from monitoring APIs
Behavior: Real-time updates every 30 seconds
Constraints: Must work in mobile browsers
Quality: No specific test requirements mentioned
Output Format
Structured Requirement Specification
# Requirement Specification: [Project Name]
## 1. Purpose & Context
### Problem Statement
[Clear description of the problem being solved]
### Stakeholders
[Who will use this and how they benefit]
### Success Criteria
[What defines a successful implementation]
---
## 2. Functional Requirements
### Data Requirements
#### Inputs
- **Source**: [Where data comes from]
- **Format**: [Data structure and types]
- **Volume**: [Expected scale]
- **Validation**: [Required validations]
#### Outputs
- **Destination**: [Where results go]
- **Format**: [Output structure]
- **Transformations**: [Processing applied]
### Behavioral Requirements
#### Primary Flow
1. [Step-by-step description]
2. [Decision points and conditions]
3. [State changes]
#### Alternative Flows
- **Scenario**: [Alternative path description]
- **Trigger**: [What causes this path]
#### Edge Cases
- [Edge case 1]
- [Edge case 2]
---
## 3. Non-Functional Requirements
### Performance
- [Latency requirements]
- [Throughput requirements]
- [Resource constraints]
### Security
- [Authentication requirements]
- [Authorization rules]
- [Data protection needs]
### Compatibility
- [Platform requirements]
- [Browser/version support]
- [Dependency constraints]
---
## 4. Quality Requirements
### Testing Strategy
- **Unit Tests**: [What to test at unit level]
- **Integration Tests**: [What to test at integration level]
- **User Acceptance**: [How users will validate]
### Acceptance Criteria
- [ ] [Specific measurable criterion 1]
- [ ] [Specific measurable criterion 2]
---
## 5. Implementation Considerations
### Recommended Architecture
[Suggested technical approach with rationale]
### Technology Stack
- **Required**: [Must-use technologies]
- **Recommended**: [Suggested technologies]
- **Avoid**: [Technologies to avoid and why]
### Key Design Decisions
1. **Decision**: [What needs to be decided]
- **Options**: [Available choices]
- **Recommendation**: [Suggested choice with reasoning]
---
## 6. Risks & Challenges
### Technical Risks
- **Risk**: [Description]
- **Impact**: [Severity]
- **Mitigation**: [How to address]
### Requirement Risks
- **Risk**: [Ambiguity or gap]
- **Impact**: [Effect on implementation]
- **Resolution**: [How to clarify]
---
## 7. Open Questions
Questions that require clarification before or during implementation:
1. [Question about unclear aspect]
- **Why it matters**: [Impact on implementation]
- **Suggested resolution**: [How to resolve]
2. [Next question]
---
## 8. Next Steps
Recommended actions:
1. **Immediate**: [What to do right away]
2. **Before Implementation**: [Prerequisites]
3. **During Implementation**: [Ongoing considerations]
Analysis Process
Step 1: Organize Information
Group collected data by the five dimensions:
- Purpose answers → Problem statement, stakeholders
- Data answers → Input/output specifications
- Behavior answers → Functional flows
- Constraint answers → Non-functional requirements
- Quality answers → Testing strategy
Step 2: Identify Issues
Scan for:
- Ambiguous statements: "fast enough", "user-friendly", "secure"
- Contradictions: Performance vs. feature richness conflicts
- Gaps: No mention of error handling, no data validation discussed
- Implicit assumptions: "Users will know how to...", "Data will always be..."
Step 3: Synthesize Recommendations
Based on the requirements:
- Match requirements to appropriate architectural patterns
- Identify suitable technologies and frameworks
- Propose testing approaches aligned with quality needs
- Highlight design decisions that need stakeholder input
Step 4: Assess Risks
Consider:
- Complexity risks: Requirements that suggest high complexity
- Uncertainty risks: Underspecified areas prone to rework
- Dependency risks: External systems or data sources
- Performance risks: Scale or speed requirements that may be challenging
Example Usage
Input:
User wants to build a file upload feature with progress tracking.
- Files up to 1GB
- Must show upload progress
- Support multiple simultaneous uploads
- Works on mobile
- Mentioned "secure" but didn't specify details
Analysis Output:
# Requirement Specification: File Upload Feature
## 1. Purpose & Context
### Problem Statement
Users need to upload large files (up to 1GB) with visibility into upload progress.
### Stakeholders
- End users uploading files from desktop and mobile browsers
- Backend system receiving and processing uploads
### Success Criteria
- Files up to 1GB upload successfully
- Progress is visible throughout upload
- Multiple uploads can occur concurrently
- Works on mobile browsers
---
## 2. Functional Requirements
### Data Requirements
#### Inputs
- **Source**: User file selection (browser file input)
- **Format**: Binary files, any MIME type, max 1GB
- **Validation**: File size must not exceed 1GB
- **Volume**: Multiple concurrent uploads per user
#### Outputs
- **Destination**: Server storage endpoint
- **Format**: Uploaded file plus metadata (filename, size, MIME type)
- **Confirmation**: Upload completion status
### Behavioral Requirements
#### Primary Flow
1. User selects file(s) to upload
2. System validates file size (reject if >1GB)
3. Upload begins with chunking for progress tracking
4. Progress indicator updates as chunks complete
5. Upload completes, user receives confirmation
#### Alternative Flows
- **Network interruption**: Resume or retry mechanism needed
- **Validation failure**: Clear error message shown
#### Edge Cases
- Upload interrupted mid-transfer
- Multiple uploads competing for bandwidth
- Mobile network transitions (WiFi to cellular)
---
## 3. Non-Functional Requirements
### Performance
- Progress updates at least every 2-3 seconds
- Multiple uploads shouldn't block UI
- Mobile browsers may have memory constraints
### Security
⚠️ **AMBIGUITY DETECTED**: "Secure" was mentioned but not specified.
**Needs clarification:**
- Authentication required before upload?
- File type restrictions (prevent malicious files)?
- HTTPS required?
- Virus scanning?
### Compatibility
- Must work in mobile browsers (iOS Safari, Android Chrome)
- Desktop browser support (Chrome, Firefox, Safari, Edge)
---
## 4. Quality Requirements
### Testing Strategy
- **Unit Tests**: Chunking logic, progress calculation
- **Integration Tests**: Upload flow end-to-end
- **Load Tests**: Multiple concurrent uploads
- **Mobile Tests**: Network interruption handling
### Acceptance Criteria
- [ ] 1GB file uploads successfully
- [ ] Progress bar updates smoothly
- [ ] 3 simultaneous uploads work without issues
- [ ] Feature works on iOS Safari and Android Chrome
---
## 5. Implementation Considerations
### Recommended Architecture
- **Chunked uploads**: Split large files into chunks (5-10MB) for progress tracking and resumability
- **Background workers**: Use Web Workers to avoid blocking main thread
- **Upload queue**: Manage concurrent uploads to prevent resource exhaustion
### Technology Stack
- **Recommended**:
- XMLHttpRequest or Fetch API with upload progress events
- File API for client-side chunking
- Server: Multipart upload or chunked transfer encoding
- **Avoid**:
- Simple form POST (no progress tracking)
### Key Design Decisions
1. **Chunking Strategy**
- **Options**: Fixed chunk size vs. adaptive based on network speed
- **Recommendation**: Fixed 5MB chunks for simplicity
2. **Resume Mechanism**
- **Options**: Store upload state server-side vs. client-side
- **Recommendation**: Server-side with upload ID for reliability
---
## 6. Risks & Challenges
### Technical Risks
- **Mobile memory limits**: 1GB file may exceed mobile browser memory
- **Mitigation**: Stream chunks without loading entire file
- **Network instability**: Mobile uploads prone to interruption
- **Mitigation**: Implement resumable uploads
### Requirement Risks
- **Security underspecified**: Unknown threat model
- **Resolution**: Clarify authentication and file validation needs
---
## 7. Open Questions
1. **What security measures are required?**
- Why it matters: Affects authentication, validation, scanning
- Suggested resolution: Ask about user authentication and file type restrictions
2. **What happens after upload completes?**
- Why it matters: May need webhooks, notifications, or processing triggers
- Suggested resolution: Clarify post-upload workflow
3. **What's the expected concurrent upload limit per user?**
- Why it matters: Affects queue design and resource allocation
- Suggested resolution: Define reasonable upper bound (e.g., 5 uploads)
---
## 8. Next Steps
1. **Immediate**: Clarify security requirements (authentication, file validation)
2. **Before Implementation**: Decide on chunking and resume strategy
3. **During Implementation**: Test on actual mobile devices early
Best Practices
Do:
- Organize scattered information into clear structure
- Call out ambiguities explicitly with specific questions
- Provide rationale for recommendations
- Identify risks with concrete mitigation strategies
- Use acceptance criteria as implementation checklist
Don't:
- Make assumptions about unclear requirements (call them out instead)
- Recommend technologies without justification
- Ignore contradictions or conflicts
- Over-engineer solutions beyond stated needs
- Skip risk assessment even for "simple" requirements
Success Criteria
This skill succeeds when:
- Requirements are structured and unambiguous
- All critical gaps and contradictions are identified
- Implementation guidance is actionable
- Risk assessment is realistic and helpful
- The specification enables confident implementation
Source
git clone https://github.com/h315uk3/symbiosis/blob/main/plugins/with-me/skills/requirement-analysis/SKILL.mdView on GitHub Overview
Requirement Analysis transforms raw interview notes into formal specifications divided into Purpose, Data, Behavior, Constraints, and Quality. It also flags ambiguities, contradictions, gaps, and assumptions, then provides implementation guidance with architecture recommendations, risk assessment, testing strategy, and open questions.
How This Skill Works
You supply either /good-question dimension data or raw interview notes. The skill structures the input into a formal spec across five dimensions, identifies issues such as ambiguities, contradictions, gaps, and assumptions, and then outputs architecture recommendations, risk mitigation strategies, a testing plan, and a set of open questions to resolve remaining uncertainties.
When to Use It
- After completing a requirement elicitation interview and you have multiple dimension answers ready (purpose, data, behavior, constraints, quality).
- When you have raw notes from developer conversations that need formalization into a spec.
- When information is unstructured and you need formalization before design or development.
- To validate consistency of collected requirements and surface ambiguities or gaps.
- Before architecture and implementation planning, to create a structured baseline spec.
Quick Start
- Step 1: Gather interview notes or /good-question dimension data.
- Step 2: Run analysis to extract Purpose, Data, Behavior, Constraints, and Quality; mark ambiguities/gaps.
- Step 3: Produce a structured specification plus implementation guidance and open questions.
Best Practices
- Structure the output around the five dimensions: Purpose, Data, Behavior, Constraints, Quality.
- Cross-check for ambiguities, contradictions, and gaps with stakeholders.
- Capture explicit assumptions as open questions and resolve them iteratively.
- Request or supply dimension data in JSON format when using /good-question.
- Document traceability from interview sources to the final spec and implementation guidance.
Example Use Cases
- Translate an onboarding interview into a formal product requirement spec for a dashboard feature.
- Convert developer conversation notes into a data model and transformation spec.
- Identify ambiguities in a compliance workflow and propose testable acceptance criteria.
- Create an architecture-guidance document with risk mitigation for a new API.
- Draft open questions to resolve unclear performance constraints before sprint planning.