Files
gh-ninthspace-claude-code-m…/commands/story-document.md
2025-11-30 08:44:27 +08:00

640 lines
17 KiB
Markdown

# /sdd:story-document
## Meta
- Version: 2.0
- Category: story-management
- Complexity: medium
- Purpose: Generate comprehensive documentation for implemented story features
## Definition
**Purpose**: Analyze story implementation and generate user, technical, and testing documentation with examples and inline code comments.
**Syntax**: `/sdd:story-document [story_id]`
## Parameters
| Parameter | Type | Required | Default | Description | Validation |
|-----------|------|----------|---------|-------------|------------|
| story_id | string | No | current active | Story ID to document (format: STORY-YYYY-NNN) | Must be valid story ID |
## INSTRUCTION: Generate Story Documentation
### INPUTS
- story_id: Story to document (defaults to current active story)
- Story file from `/docs/stories/development/` or `/docs/stories/review/`
- Implemented code files referenced in story
- Project context from `/docs/project-context/`
### PROCESS
#### Phase 1: Story Location and Validation
1. **DETERMINE** which story to document:
- IF story_id provided: USE specified story
- IF no story_id: FIND current active story in `/docs/stories/development/`
2. **LOCATE** story file:
- CHECK `/docs/stories/development/[story-id].md`
- CHECK `/docs/stories/review/[story-id].md`
- CHECK `/docs/stories/qa/[story-id].md`
3. IF story not found:
- EXIT with error message
- SUGGEST using `/sdd:project-status` to find valid story IDs
#### Phase 2: Story Analysis
1. **READ** story file to extract:
- Feature title and description (from "What & Why" section)
- Implementation details (from "Technical Notes")
- Success criteria (acceptance criteria)
- Test cases defined
- UI/UX considerations
- Integration points
2. **SCAN** codebase to identify implementation:
- LOCATE files referenced in progress log
- IDENTIFY new/modified components, functions, classes
- EXTRACT public APIs and interfaces
- MAP dependencies and imports
- NOTE configuration files affected
3. **LOAD** project context:
- `/docs/project-context/technical-stack.md` - Framework conventions
- `/docs/project-context/coding-standards.md` - Documentation style
- `/docs/project-context/development-process.md` - Doc requirements
#### Phase 3: Documentation Generation
**Generate Multiple Documentation Types:**
1. **USER DOCUMENTATION** (if user-facing feature):
- CREATE `/docs/features/[feature-name].md`
- INCLUDE:
* Feature overview and purpose
* How to use the feature (step-by-step)
* Common use cases with examples
* Troubleshooting guide
* Screenshots or diagrams (note if needed)
2. **TECHNICAL DOCUMENTATION**:
- CREATE `/docs/technical/[feature-name].md`
- INCLUDE:
* Architecture overview
* Component/module descriptions
* API reference (if applicable)
* Configuration options
* Integration guide
* Data flow diagrams (note if needed)
3. **TESTING DOCUMENTATION**:
- CREATE `/docs/testing/[feature-name].md`
- INCLUDE:
* How to test the feature
* Test scenarios covered
* Known edge cases
* Performance benchmarks (if applicable)
* Manual testing checklist
4. **INLINE CODE DOCUMENTATION**:
- ADD framework-appropriate comments:
* PHP: PHPDoc blocks
* JavaScript/TypeScript: JSDoc/TSDoc
* Python: Docstrings
* [DISCOVERED language]: Appropriate style
- DOCUMENT:
* Public functions and methods
* Component props/parameters
* Complex logic explanations
* Configuration constants
* Event handlers and callbacks
5. **CODE EXAMPLES**:
- CREATE `/docs/examples/[feature-name]/`
- INCLUDE:
* Basic usage snippets
* Configuration examples
* Integration examples
* Common patterns
* Copy-paste ready code
#### Phase 4: Update Existing Documentation
1. **UPDATE** project-level docs:
- `/README.md` - Add feature to feature list (if user-facing)
- `/docs/api.md` - Add API endpoints (if applicable)
- `/docs/configuration.md` - Add new config options
- `/CHANGELOG.md` - Document changes
- `/docs/migration.md` - Add migration guide (if breaking changes)
2. **PRESERVE** existing content:
- APPEND new sections rather than replace
- MAINTAIN existing formatting style
- KEEP version history intact
#### Phase 5: Story Documentation Update
1. **UPDATE** story file with documentation summary:
```markdown
## Documentation
### Generated Documentation
- User Guide: /docs/features/[feature-name].md
- Technical: /docs/technical/[feature-name].md
- Testing: /docs/testing/[feature-name].md
- Examples: /docs/examples/[feature-name]/
### Updated Documentation
- README.md: Added feature to feature list
- CHANGELOG.md: Documented changes for v[version]
### Inline Documentation
- Added PHPDoc blocks to [count] functions
- Documented [count] component props
- Added complex logic comments in [file:line]
### Documentation Status
- [x] User documentation complete
- [x] Technical documentation complete
- [x] Testing documentation complete
- [x] Inline code comments added
- [x] Examples created
- [ ] Screenshots needed (optional)
- [ ] Diagrams needed (optional)
```
2. **CHECK** documentation completion criteria:
- [ ] All public APIs documented
- [ ] User-facing features have user guide
- [ ] Complex logic has inline comments
- [ ] Examples demonstrate key use cases
- [ ] Configuration options documented
- [ ] Breaking changes documented in migration guide
#### Phase 6: Completion Summary
1. **DISPLAY** documentation summary:
```
✅ Documentation Generated
═══════════════════════════════════
Story: [STORY-YYYY-NNN] - [Title]
DOCUMENTATION CREATED:
✓ User Guide: /docs/features/[feature-name].md
✓ Technical: /docs/technical/[feature-name].md
✓ Testing: /docs/testing/[feature-name].md
✓ Examples: /docs/examples/[feature-name]/
DOCUMENTATION UPDATED:
✓ README.md (feature list)
✓ CHANGELOG.md (version notes)
[✓ Migration guide (if breaking changes)]
INLINE DOCUMENTATION:
✓ [count] functions documented
✓ [count] components documented
✓ [count] complex logic comments
DOCUMENTATION DEBT:
[- Screenshots recommended for user guide]
[- Sequence diagram would help explain flow]
Story Updated: Documentation section added
```
2. **SUGGEST** next steps:
```
💡 NEXT STEPS:
1. Review generated documentation for accuracy
2. Add screenshots/diagrams if noted
3. /sdd:story-review [story-id] # Move to code review
4. Share docs with team for feedback
```
### OUTPUTS
- `/docs/features/[feature-name].md` - User-facing documentation
- `/docs/technical/[feature-name].md` - Technical documentation
- `/docs/testing/[feature-name].md` - Testing documentation
- `/docs/examples/[feature-name]/` - Code examples
- Updated project documentation (README, CHANGELOG, etc.)
- Inline code comments in implementation files
- Updated story file with documentation summary
### RULES
- MUST analyze story to understand what was built
- MUST generate appropriate doc types based on feature type
- MUST use framework-appropriate inline documentation style
- MUST update story file with documentation summary
- SHOULD create user docs for user-facing features
- SHOULD include code examples for all public APIs
- SHOULD update project README and CHANGELOG
- NEVER remove existing documentation
- ALWAYS preserve existing formatting style
- MUST check all public APIs are documented
## Documentation Templates
### User Documentation Template
```markdown
# [Feature Name]
## Overview
[What the feature does and why it exists]
## Prerequisites
[What user needs before using this feature]
## Getting Started
### Quick Start
[Simplest possible example to get started]
### Step-by-Step Guide
1. [First step with clear instructions]
2. [Second step]
3. [Continue...]
## Usage Examples
### Example 1: [Common Use Case]
[Description of scenario]
```[language]
[Code example]
```
[Expected result]
### Example 2: [Another Use Case]
[Description]
```[language]
[Code example]
```
## Configuration
### Available Options
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| [option] | [type] | [default] | [what it does] |
### Configuration Example
```[format]
[Example configuration]
```
## Troubleshooting
### Common Issues
#### [Issue 1]
**Problem**: [Description]
**Solution**: [How to fix]
#### [Issue 2]
**Problem**: [Description]
**Solution**: [How to fix]
## Related Features
- [Related feature 1]
- [Related feature 2]
## Additional Resources
- [Link to technical docs]
- [Link to API reference]
```
### Technical Documentation Template
```markdown
# [Feature Name] - Technical Documentation
## Architecture Overview
[High-level architecture description]
## Components
### [Component 1]
**Purpose**: [What it does]
**Location**: [File path]
**Dependencies**: [What it depends on]
**Public Interface**:
```[language]
[Key methods/functions]
```
**Usage**:
```[language]
[How to use it]
```
### [Component 2]
[Same structure]
## Data Flow
[Description of how data flows through the system]
```
[Diagram or flowchart in text/Mermaid format]
```
## API Reference
### [Function/Method Name]
```[language]
[Full signature]
```
**Parameters**:
- `param1` ([type]): [Description]
- `param2` ([type]): [Description]
**Returns**: [Return type and description]
**Throws**: [Exceptions that can be thrown]
**Example**:
```[language]
[Usage example]
```
## Configuration
### Environment Variables
| Variable | Required | Default | Description |
|----------|----------|---------|-------------|
| [VAR] | [Yes/No] | [default] | [what it does] |
### Configuration Files
[List of config files and their purpose]
## Integration Guide
### Integrating with [System/Feature]
[Step-by-step integration instructions]
### Event Hooks
[Available hooks/events for extending functionality]
## Performance Considerations
- [Performance tip 1]
- [Performance tip 2]
## Security Considerations
- [Security concern 1]
- [Security concern 2]
## Testing
[Link to testing documentation]
## Troubleshooting
[Link to user documentation troubleshooting section]
```
### Testing Documentation Template
```markdown
# Testing: [Feature Name]
## Test Coverage Summary
- Unit Tests: [count] tests, [X]% coverage
- Integration Tests: [count] tests
- E2E Tests: [count] tests
- Manual Tests: [count] scenarios
## Running Tests
### All Tests
```bash
[Command to run all tests]
```
### Unit Tests Only
```bash
[Command to run unit tests]
```
### Integration Tests
```bash
[Command to run integration tests]
```
## Test Scenarios
### Scenario 1: [Happy Path]
**Given**: [Initial state]
**When**: [Action taken]
**Then**: [Expected result]
**Test**: [Test file and function name]
### Scenario 2: [Error Case]
**Given**: [Initial state]
**When**: [Action taken]
**Then**: [Expected error handling]
**Test**: [Test file and function name]
## Edge Cases Tested
1. [Edge case 1] - [How it's tested]
2. [Edge case 2] - [How it's tested]
## Known Limitations
- [Limitation 1]
- [Limitation 2]
## Manual Testing Checklist
- [ ] [Manual test step 1]
- [ ] [Manual test step 2]
- [ ] [Verify on different browsers/devices]
## Performance Benchmarks
[If applicable, performance test results]
## Test Data
[How to set up test data or where test fixtures are located]
```
## Examples
### Example 1: Document Current Active Story
```bash
INPUT:
/sdd:story-document
OUTPUT:
→ Finding active story...
→ Located: STORY-2025-003 in /docs/stories/development/
→ Analyzing implemented features...
→ Scanning codebase for TaskManager component...
→ Generating documentation...
✅ Documentation Generated
═══════════════════════════════════
Story: STORY-2025-003 - Task Management System
DOCUMENTATION CREATED:
✓ User Guide: /docs/features/task-management.md
✓ Technical: /docs/technical/task-management.md
✓ Testing: /docs/testing/task-management.md
✓ Examples: /docs/examples/task-management/
DOCUMENTATION UPDATED:
✓ README.md (added to feature list)
✓ CHANGELOG.md (documented for v1.2.0)
INLINE DOCUMENTATION:
✓ 12 functions documented with PHPDoc
✓ 3 Livewire components documented
✓ 5 complex logic sections commented
DOCUMENTATION DEBT:
- Screenshots recommended for user guide
- Consider adding sequence diagram for task lifecycle
Story Updated: Documentation section added
💡 NEXT STEPS:
1. Review generated documentation for accuracy
2. Add screenshots to user guide
3. /sdd:story-review STORY-2025-003 # Move to code review
4. Share docs with team for feedback
```
### Example 2: Document Specific Story
```bash
INPUT:
/sdd:story-document STORY-2025-005
OUTPUT:
→ Locating story: STORY-2025-005...
→ Found in /docs/stories/review/
→ Analyzing authentication implementation...
→ Generating documentation...
✅ Documentation Generated
═══════════════════════════════════
Story: STORY-2025-005 - User Authentication
DOCUMENTATION CREATED:
✓ User Guide: /docs/features/authentication.md
✓ Technical: /docs/technical/authentication.md
✓ Testing: /docs/testing/authentication.md
✓ Examples: /docs/examples/authentication/
✓ Migration Guide: /docs/migration-v2.md (breaking changes)
DOCUMENTATION UPDATED:
✓ README.md (security section)
✓ CHANGELOG.md (v2.0.0 breaking changes)
✓ docs/api.md (auth endpoints)
INLINE DOCUMENTATION:
✓ 8 controller methods documented
✓ 4 middleware classes documented
✓ Security notes added to sensitive functions
Story Updated: Documentation section added
💡 NEXT STEPS:
1. Review security documentation carefully
2. /sdd:story-review STORY-2025-005 # Continue review process
```
### Example 3: API Documentation
```bash
INPUT:
/sdd:story-document STORY-2025-007
OUTPUT:
→ Locating story: STORY-2025-007...
→ Found in /docs/stories/development/
→ Analyzing REST API implementation...
→ Extracting API endpoints and schemas...
→ Generating OpenAPI specification...
✅ Documentation Generated
═══════════════════════════════════
Story: STORY-2025-007 - REST API for Tasks
DOCUMENTATION CREATED:
✓ API Reference: /docs/api/tasks.md
✓ Technical: /docs/technical/api-tasks.md
✓ Testing: /docs/testing/api-tasks.md
✓ OpenAPI Spec: /docs/openapi/tasks.yaml
✓ Postman Collection: /docs/examples/tasks.postman.json
DOCUMENTATION UPDATED:
✓ docs/api.md (added tasks endpoints)
✓ README.md (API section)
✓ CHANGELOG.md (new API endpoints)
INLINE DOCUMENTATION:
✓ 6 API endpoints documented
✓ Request/response schemas defined
✓ Error responses documented
Story Updated: Documentation section added
💡 NEXT STEPS:
1. Test with Postman collection
2. Share OpenAPI spec with frontend team
3. /sdd:story-review STORY-2025-007
```
## Edge Cases
### Story Not Found
- DETECT invalid story ID
- SUGGEST using `/sdd:project-status` to list valid stories
- EXIT with helpful error message
### Story Has No Implementation Yet
- DETECT story in backlog with no code
- WARN that documentation requires implemented code
- SUGGEST using `/sdd:story-implement [id]` first
- EXIT gracefully
### No User-Facing Changes
- DETECT backend-only or infrastructure changes
- SKIP user documentation generation
- FOCUS on technical and testing documentation
- NOTE decision in story update
### Documentation Already Exists
- DETECT existing documentation files
- ASK user: Update existing or create new version?
- IF update: Merge new content with existing
- IF new: Create versioned documentation
- PRESERVE all existing content
### Complex API with Many Endpoints
- DETECT large API surface area
- GENERATE comprehensive API reference
- CREATE OpenAPI/Swagger specification
- ORGANIZE by resource/domain
- PROVIDE Postman/Insomnia collections
## Error Handling
- **Story not found**: Show available stories from `/sdd:project-status`
- **No implementation found**: Guide user to implement first
- **Permission errors**: Report specific file/directory issue
- **Documentation write errors**: Log error, continue with other docs
## Performance Considerations
- Documentation generation typically takes 10-30 seconds
- Inline documentation added via file editing (may take longer for many files)
- Show progress indicators for multi-file operations
- Cache story analysis for session
## Related Commands
- `/sdd:story-implement [id]` - Generate implementation first
- `/sdd:story-review [id]` - Move to code review after documentation
- `/sdd:story-test [id]` - Verify tests before documenting
- `/sdd:project-status` - Find stories to document
## Constraints
- ✅ MUST analyze story to understand implementation
- ✅ MUST generate docs appropriate to feature type
- ✅ MUST use framework-appropriate inline doc style
- ✅ MUST update story with documentation summary
- 📋 SHOULD create user docs for user-facing features
- 🔧 SHOULD include code examples for public APIs
- 💾 MUST preserve existing documentation content
- ⚠️ NEVER remove or replace existing docs without confirmation
- 🧪 MUST document all test scenarios covered