Generate project status reports from Jira issues and publish to Confluence. When Claude needs to: (1) Create a status report for a project, (2) Summarize project progress or updates, (3) Generate weekly/daily reports from Jira, (4) Publish status summaries to Confluence, or (5) Analyze project blockers and completion. Queries Jira issues, categorizes by status/priority, and creates formatted reports for delivery managers and executives.
/plugin marketplace add atlassian/atlassian-mcp-server/plugin install learning-output-style@claude-plugins-officialThis skill inherits all available tools. When active, it can use any tool Claude has access to.
references/jql-patterns.mdreferences/report-templates.mdscripts/jql_builder.pystatus report, project status, weekly update, daily standup, Jira report, project summary, blockers, progress update, Confluence report, sprint report, project update, publish to Confluence, write to Confluence, post report
Automatically query Jira for project status, analyze issues, and generate formatted status reports published to Confluence.
CRITICAL: This skill should be interactive. Always clarify scope (time period, audience, Confluence destination) with the user before or after generating the report. Do not silently skip Confluence publishing—always offer it.
Generating a status report follows these steps:
IMPORTANT: If the user's request is missing key information, ASK before proceeding with queries. Do not assume defaults without confirmation for Confluence publishing.
Clarify these details:
Project identification:
Time period:
Target audience:
Report destination:
Use the searchJiraIssuesUsingJql tool to fetch issues. Build JQL queries based on report needs.
For comprehensive queries, use the scripts/jql_builder.py utility to programmatically build JQL strings. For quick queries, reference references/jql-patterns.md for examples.
All open issues in project:
project = "PROJECT_KEY" AND status != Done ORDER BY priority DESC, updated DESC
Issues updated in last week:
project = "PROJECT_KEY" AND updated >= -7d ORDER BY priority DESC
High priority and blocked issues:
project = "PROJECT_KEY" AND (priority IN (Highest, High) OR status = Blocked) AND status != Done ORDER BY priority DESC
Completed in reporting period:
project = "PROJECT_KEY" AND status = Done AND resolved >= -7d ORDER BY resolved DESC
For most reports, execute multiple targeted queries rather than one large query:
Use maxResults: 100 for initial queries. If pagination is needed, use nextPageToken from results.
For each issue, capture:
key (e.g., "PROJ-123")summary (issue title)status (current state)priority (importance level)assignee (who's working on it)created / updated / resolved datesdescription (if needed for context on blockers)Process the retrieved issues to identify:
Metrics:
Key insights:
Categorization: Group issues logically:
Select the appropriate template based on audience. Templates are in references/report-templates.md.
Use Executive Summary Format:
Keep it concise - 1-2 pages maximum. Focus on what matters to decision-makers.
Use Detailed Technical Format:
Include more detail - Team needs issue-level visibility.
Use Daily Standup Format:
Keep it brief - This is a quick sync, not comprehensive analysis.
After generating the report, ALWAYS offer to publish to Confluence (unless user explicitly said not to).
If user hasn't specified Confluence details yet, ask:
Use the createConfluencePage tool to publish the report.
Page creation:
createConfluencePage(
cloudId="[obtained from getConfluenceSpaces or URL]",
spaceId="[numerical space ID]",
title="[Project Name] - Status Report - [Date]",
body="[formatted report in Markdown]",
contentFormat="markdown",
parentId="[optional - parent page ID if nesting under another page]"
)
Title format examples:
Body formatting: Write the report content in Markdown. The tool will convert it to Confluence format. Use:
#, ##, ###) for structure**text**) for emphasis[PROJ-123](https://yourinstance.atlassian.net/browse/PROJ-123)Best practices:
If the user doesn't specify a Confluence space:
getConfluenceSpaces to list available spacesIf updating an existing page instead of creating new:
getConfluencePage(
cloudId="...",
pageId="123456",
contentFormat="markdown"
)
updateConfluencePage(
cloudId="...",
pageId="123456",
body="[updated report content]",
contentFormat="markdown",
versionMessage="Updated with latest status - Dec 8, 2025"
)
User request: "Generate a status report for Project Phoenix and publish it to Confluence"
Step 1 - Identify scope:
Step 2 - Query Jira:
# Find project key first
searchJiraIssuesUsingJql(
cloudId="...",
jql='project = "PHOENIX" OR project = "PHX"',
maxResults=1
)
# Query completed issues
searchJiraIssuesUsingJql(
cloudId="...",
jql='project = "PHX" AND status = Done AND resolved >= -7d',
maxResults=50
)
# Query blocked issues
searchJiraIssuesUsingJql(
cloudId="...",
jql='project = "PHX" AND status = Blocked',
maxResults=50
)
# Query in-progress high priority
searchJiraIssuesUsingJql(
cloudId="...",
jql='project = "PHX" AND status IN ("In Progress", "In Review") AND priority IN (Highest, High)',
maxResults=50
)
Step 3 - Analyze:
Step 4 - Format: Use Executive Summary Format from templates. Create concise report with metrics, highlights, and blockers.
Step 5 - Publish:
# Find appropriate space
getConfluenceSpaces(cloudId="...")
# Create page
createConfluencePage(
cloudId="...",
spaceId="12345",
title="Project Phoenix - Weekly Status - Dec 3, 2025",
body="[formatted markdown report]",
contentFormat="markdown"
)
Be data-driven:
Highlight what matters:
Make it actionable:
Keep it consistent:
Provide context:
Python utility for programmatically building JQL queries. Use this when you need to construct complex or dynamic queries. Import and use the helper functions rather than manually concatenating JQL strings.
Quick reference of common JQL query patterns for status reports. Use this for standard queries or as a starting point for custom queries.
Detailed templates for different report types and audiences. Reference this to select the appropriate format and structure for your report.
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.