Extract metrics, insights, and trends from Jira data for reporting and decision-making.
/plugin marketplace add marcel-Ngan/ai-dev-team/plugin install marcel-ngan-ai-dev-team@marcel-Ngan/ai-dev-teamThis skill inherits all available tools. When active, it can use any tool Claude has access to.
Extract metrics, insights, and trends from Jira data for reporting and decision-making.
| Tool | Purpose |
|---|---|
Atlassian:searchJiraIssuesUsingJql | Query issues for metrics |
Atlassian:getJiraIssue | Fetch detailed issue data |
All values come from config/project.json:
{
"cloudId": "{{jira.cloudId}}",
"projectKey": "{{jira.development.projectKey}}"
}
Atlassian:searchJiraIssuesUsingJql({
cloudId: "{{jira.cloudId}}",
jql: "project = {{jira.development.projectKey}} AND issuetype = Story AND status = Done AND resolved >= -90d",
fields: ["customfield_10016", "resolutiondate", "customfield_10020"], // points, resolved, sprint
maxResults: 100
})
## Velocity Report
**Period:** Last 6 Sprints
| Sprint | Committed | Completed | % |
|--------|-----------|-----------|---|
| Sprint 6 | 30 | 28 | 93% |
| Sprint 5 | 29 | 26 | 90% |
| Sprint 4 | 28 | 28 | 100% |
| Sprint 3 | 32 | 30 | 94% |
| Sprint 2 | 25 | 25 | 100% |
| Sprint 1 | 20 | 18 | 90% |
**Average Velocity:** 26 points/sprint
**Trend:** Stable with slight increase
**Recommended Next Sprint:** 27-29 points
Atlassian:searchJiraIssuesUsingJql({
cloudId: "{{jira.cloudId}}",
jql: "project = {{jira.development.projectKey}} AND status = Done AND resolved >= -30d",
fields: ["created", "resolutiondate", "issuetype", "customfield_10016"]
})
## Cycle Time Report
**Period:** Last 30 Days
| Issue Type | Avg Cycle Time | Min | Max |
|------------|----------------|-----|-----|
| Story | 4.2 days | 1 | 12 |
| Task | 1.8 days | 0.5 | 5 |
| Bug | 2.1 days | 0.5 | 8 |
**Analysis:**
- Stories averaging 4.2 days (target: 5 days) ✅
- One outlier story took 12 days (blocked)
- Bug resolution improved from 3.5 to 2.1 days
Atlassian:searchJiraIssuesUsingJql({
cloudId: "{{jira.cloudId}}",
jql: "project = {{jira.development.projectKey}} AND created >= -30d",
fields: ["issuetype"],
maxResults: 100
})
## Issue Type Distribution
**Period:** Last 30 Days
| Type | Count | % |
|------|-------|---|
| Story | 24 | 48% |
| Task | 15 | 30% |
| Bug | 8 | 16% |
| Epic | 3 | 6% |
**Bug Ratio:** 16% (target: <20%) ✅
**Trend:** Bug count decreasing week over week
// Open bugs by severity
Atlassian:searchJiraIssuesUsingJql({
cloudId: "{{jira.cloudId}}",
jql: "project = {{jira.bugs.projectKey}} AND issuetype = Bug AND status != Done",
fields: ["priority", "created", "labels"]
})
// Bugs created vs resolved
Atlassian:searchJiraIssuesUsingJql({
cloudId: "{{jira.cloudId}}",
jql: "project = {{jira.bugs.projectKey}} AND issuetype = Bug AND (created >= -7d OR resolved >= -7d)",
fields: ["created", "resolutiondate"]
})
## Bug Analysis Report
**Open Bugs:** 12
| Severity | Count | Oldest |
|----------|-------|--------|
| Critical | 0 | - |
| High | 2 | 3 days |
| Medium | 6 | 12 days |
| Low | 4 | 21 days |
**This Week:**
- Created: 5
- Resolved: 7
- Net: -2 ✅
**Bug Trend:** Decreasing (good)
**Recommendation:** Address 2 high-priority bugs before release
Atlassian:searchJiraIssuesUsingJql({
cloudId: "{{jira.cloudId}}",
jql: "project = {{jira.development.projectKey}} AND sprint IN openSprints() AND status != Done",
fields: ["assignee", "customfield_10016", "status"]
})
## Team Workload Report
**Current Sprint**
| Assignee | In Progress | To Do | Points |
|----------|-------------|-------|--------|
| Dev A | 2 | 1 | 8 |
| Dev B | 1 | 2 | 7 |
| Dev C | 1 | 0 | 3 |
| Unassigned | 0 | 2 | 5 |
**Observations:**
- 2 unassigned stories need pickup
- Dev A nearing capacity
- Dev C has capacity for more
Atlassian:searchJiraIssuesUsingJql({
cloudId: "{{jira.cloudId}}",
jql: "project = {{jira.development.projectKey}} AND sprint IN openSprints()",
fields: ["status", "customfield_10016", "resolutiondate", "updated"]
})
## Sprint Burndown
**Sprint 6** - Day 7 of 14
| Day | Ideal | Actual | Status |
|-----|-------|--------|--------|
| 1 | 28 | 28 | On track |
| 3 | 22 | 24 | Slight lag |
| 5 | 16 | 18 | Catching up |
| 7 | 10 | 12 | Behind |
**Current Status:** 2 points behind ideal
**Projection:** Will complete 26 of 28 points
**Risk:** Medium - need to close gap this week
// Completed items
Atlassian:searchJiraIssuesUsingJql({
cloudId: "{{jira.cloudId}}",
jql: "project = {{jira.development.projectKey}} AND sprint = 'Sprint 5' AND status = Done",
fields: ["summary", "issuetype", "customfield_10016"]
})
// Incomplete items
Atlassian:searchJiraIssuesUsingJql({
cloudId: "{{jira.cloudId}}",
jql: "project = {{jira.development.projectKey}} AND sprint = 'Sprint 5' AND status != Done",
fields: ["summary", "status", "labels"]
})
## Sprint 5 Retrospective Metrics
**Delivery:**
- Committed: 29 points (8 stories)
- Completed: 26 points (7 stories)
- Velocity: 90%
**What Completed:**
- User login flow (8 pts)
- Password reset (5 pts)
- Session management (5 pts)
- 4 additional tasks (8 pts)
**What Didn't Complete:**
- Email verification (3 pts) - blocked by SMTP config
**Blockers Encountered:**
- 1 story blocked for 3 days
- External dependency on DevOps
**Quality:**
- Bugs found: 2
- Bugs fixed same sprint: 2
| Agent | Usage |
|---|---|
| Engineering Manager | Velocity, team health, retro data |
| Project Manager | Status reports, burndown, workload |
| Product Owner | Backlog health, delivery metrics |
| Orchestrator | Planning data, capacity info |
| Error | Cause | Resolution |
|---|---|---|
| No data returned | Date range too narrow | Expand date range |
| Field not found | Custom field ID wrong | Get correct field ID from admin |
| Too many results | Query too broad | Add filters, use pagination |
This skill should be used when the user asks to "create a slash command", "add a command", "write a custom command", "define command arguments", "use command frontmatter", "organize commands", "create command with file references", "interactive command", "use AskUserQuestion in command", or needs guidance on slash command structure, YAML frontmatter fields, dynamic arguments, bash execution in commands, user interaction patterns, or command development best practices for Claude Code.
This skill should be used when the user asks to "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "agent tools", "agent colors", "autonomous agent", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins.
This skill should be used when the user asks to "create a hook", "add a PreToolUse/PostToolUse/Stop hook", "validate tool use", "implement prompt-based hooks", "use ${CLAUDE_PLUGIN_ROOT}", "set up event-driven automation", "block dangerous commands", or mentions hook events (PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification). Provides comprehensive guidance for creating and implementing Claude Code plugin hooks with focus on advanced prompt-based hooks API.