jira-feature-documentation-generator
Detailed implementation guide for recursively analyzing Jira features and generating comprehensive documentation
When & Why to Use This Skill
The Jira Feature Documentation Generator is a powerful Claude skill that automates the creation of comprehensive technical documentation. By recursively analyzing Jira issues and their associated GitHub pull requests, it synthesizes implementation details, architectural changes, and design decisions into a structured Markdown report, significantly reducing the manual effort required for feature handovers and project archiving.
Use Cases
- Automated Feature Handoffs: Generate detailed technical documentation for completed Jira features to ensure seamless knowledge transfer between engineering and product teams.
- Release Documentation: Compile implementation summaries and API changes from merged PRs to create accurate, developer-focused release notes.
- Architectural Auditing: Reconstruct the evolution of a feature by synthesizing design rationale and code changes extracted directly from Jira discussions and GitHub diffs.
- Onboarding and Training: Provide new team members with deep-dive documentation into specific system components, including code snippets and testing strategies derived from historical data.
| name | Jira Feature Documentation Generator |
|---|---|
| description | Detailed implementation guide for recursively analyzing Jira features and generating comprehensive documentation |
Jira Feature Documentation Generator
This skill provides detailed step-by-step implementation guidance for the /jira:generate-feature-doc command, which generates comprehensive feature documentation by recursively analyzing a Jira feature and all its related issues and GitHub pull requests.
IMPORTANT FOR AI: This is a procedural skill - when invoked, you should directly execute the implementation steps defined in this document. Do NOT look for or execute external scripts. Follow the step-by-step instructions below, starting with Step 1.
When to Use This Skill
This skill is automatically invoked by the /jira:generate-feature-doc command and should not be called directly by users.
Prerequisites
- MCP Jira server configured and running (required - see
plugins/jira/README.mdfor setup) - GitHub CLI (
gh) installed and authenticated (for analyzing PRs) - User has read access to Jira issues (including private issues via MCP authentication)
- User has read access to linked GitHub repositories
- Working directory has
.work/jira/feature-doc/for output (will be created if needed)
Implementation Steps
Step 1: Initialize and Fetch Main Feature Issue
Objective: Set up environment and fetch main feature issue.
Actions:
Save initial directory:
INITIAL_DIR=$(pwd)(save at start, before any cd commands)Check prerequisites: Verify
jqandghCLI are installed and authenticated- If missing, display error with installation instructions
Create output directory:
WORK_DIR=$INITIAL_DIR/.work/jira/feature-doc/<feature-key>(usemkdir -p)Fetch main feature: Use MCP Jira tool to get issue with all fields:
mcp__atlassian__jira_get_issue(issue_key=<feature-key>, fields="*all")- If MCP unavailable, display error pointing to
plugins/jira/README.md
- If MCP unavailable, display error pointing to
Parse response: Extract
key,summary,description,issuetype,status- If fetch fails, display error and exit
Display progress: Show feature summary and type
Step 2: Analyze Each GitHub PR
Important: This step expects PR data as input from the jira:extract-prs skill (invoked by the command file). The input is structured JSON containing all discovered PRs with their metadata.
Input Format:
{
"pull_requests": [
{
"url": "https://github.com/org/repo/pull/123",
"state": "MERGED",
"title": "PR title",
"isDraft": false,
"sources": ["remote_link", "description"],
"found_in_issues": ["ISSUE-123"]
}
]
}
Objective: Fetch and analyze PR details to extract implementation information.
Important: This command is for documenting completed features. Only analyze PRs that have been MERGED. Skip OPEN, DRAFT, WIP, or CLOSED (but not merged) PRs.
Actions:
Filter for MERGED PRs: Only analyze PRs with
state == "MERGED"ANDisDraft == false- Skip OPEN PRs (work in progress)
- Skip PRs with
isDraft == true(not ready for review) - Skip CLOSED PRs (not merged)
For each MERGED PR, fetch detailed data:
- Parse PR URL to extract org/repo/number
- Fetch metadata:
gh pr view {number} --repo {org}/{repo} --json title,body,mergedAt,author,commits,files - Fetch diff:
gh pr diff {number} --repo {org}/{repo} - Fetch comments:
gh pr view {number} --repo {org}/{repo} --json comments
Extract key information:
- From body: Purpose, approach, breaking changes
- From commits: Implementation steps, testing
- From diff: New APIs, architectural changes, config updates
- From comments: Design decisions, rationale, considerations
Handle errors: If PR inaccessible (403, 404), log warning and continue
Save data: Store metadata, diff, and comments to
${WORK_DIR}/pr-{org}-{repo}-{number}.*
Step 3: Synthesize Documentation Structure
Objective: Organize information into structured outline.
Available sections (calling command specifies which to generate):
- Overview: Jira link, status, counts, dates, authors (from main issue + PR metadata)
- Background and Goals: Description from main issue (clean Jira formatting)
- Architecture and Design: High-level changes, components, design decisions (from PRs)
- Implementation Details: Core changes, API changes, configuration (from PR diffs, code snippets)
- Usage Guide: Prerequisites, basic/advanced usage (from README updates, PR descriptions)
- Testing: Test coverage, strategies, key test PRs
- Related Resources: Can include external links, issue tables, PR tables, dependency graphs
Step 4: Generate Documentation Content
Objective: Fill in the outline with actual content based on command requirements.
Section generation guidelines:
- Overview: Extract from main issue + PR metadata (Jira link, status, counts, dates, authors)
- Background: Clean Jira formatting from main issue description
- Architecture: Synthesize from PR descriptions and comments (high-level overview, components, decisions with PR links)
- Implementation: Group by core changes, API changes, configuration (include code snippets, link to PRs, list key files)
- Usage: Extract from README updates and PR descriptions (prerequisites, YAML/CLI examples)
- Testing: Summarize by category (unit, E2E, CI), list key test PRs
- Related Resources: Format depends on command requirements (external links, tables, graphs)
Note: Only generate sections specified by the calling command. Check the command file for exact requirements.
Step 5: Output
Objective: Save documentation and display summary.
Actions:
Write documentation: Save to
${WORK_DIR}/feature-doc.mdwith footer:--- *Generated by `/jira:generate-feature-doc` on <timestamp>* *Source: <feature-key> and <count> related issues*Save metadata: Store analysis log with timestamps, counts, output files, errors/warnings
Display summary:
- Success message with file location
- Statistics: issues analyzed, PRs analyzed, commits, files changed, doc lines
- Warnings if any (inaccessible PRs, missing descriptions)
- Additional files for debugging
Error Handling
Issue Not Found (404, 403, network error):
- Display error with verification steps (issue key format, permissions, MCP config)
- Exit gracefully without creating files
No PRs Found:
- Display warning (feature not implemented, PRs not linked, or small feature)
- Generate documentation from main issue only
GitHub Rate Limit:
- Display error with progress and reset time
- Offer options: wait, generate from partial data, or cancel
Large Feature (>50 PRs):
- Display warning with estimated time and API calls
- Offer options: continue or cancel
Malformed Issue Data:
- Log warning about missing/invalid fields
- Continue with remaining issues (don't fail entire process)
Performance Optimization
Parallel PR Analysis:
- For >10 PRs, use parallel processing (
xargs -P 5) - Limit to ~5 concurrent requests to avoid rate limits
Smart Diff Analysis:
- Use
--statto identify key files - Skip vendor/, generated files, test fixtures
- Fetch full diff only for critical files
Best Practices for AI Implementation
Progress feedback: Show progress after each major step (discovery, PR analysis, etc.)
Error resilience: Don't fail the entire process if one PR is inaccessible
Smart synthesis: Don't just concatenate PR descriptions - synthesize into coherent narrative
Context awareness: Understand the codebase domain (e.g., Kubernetes, OpenShift) to better interpret changes
Structured output: Use consistent markdown formatting with proper headers, code blocks, tables
Link preservation: Always provide clickable links to Jira issues and GitHub PRs
Timestamp tracking: Note when PRs were merged to understand timeline
Author attribution: Credit authors of PRs and issues where relevant
Code examples: Include actual code snippets from PRs to illustrate changes
Visual hierarchy: Use tables, lists, and headers to make documentation scannable
Example Workflow
User runs: /jira:generate-feature-doc OCPSTRAT-1612
1. Initialize
- Fetch main feature issue (OCPSTRAT-1612)
- Create working directory (.work/jira/feature-doc/OCPSTRAT-1612/)
- Verify prerequisites (jq, gh CLI)
2. Extract PRs (via extract-prs skill)
- Discover descendants using childIssuesOf() JQL → 3 issues total
- Extract PRs from remote links (primary) + text (backup) → 7 PRs
- Fetch PR state from GitHub → 5 MERGED, 1 OPEN, 1 CLOSED
3. Analyze MERGED PRs
- Filter for MERGED PRs → 5 PRs to analyze
- For each: fetch metadata + diff + comments
- Extract implementation details, design decisions
4. Generate Documentation
- Synthesize sections: Overview, Architecture, Implementation, Usage, Testing
- Create tables for issues and PRs
- Write to feature-doc.md
5. Display Results
✅ Documentation generated successfully!
📄 File: .work/jira/feature-doc/OCPSTRAT-1612/feature-doc.md
📊 3 issues, 5 MERGED PRs, ~380 lines generated