Agent skill

Summarize Jiras

by openshift-eng in openshift-eng/ai-helpers

Query and summarize JIRA bugs for a specific project with counts by component

Apache-2.0Auto-check passed

Install Summarize Jiras

skills CLI
$ npx skills add openshift-eng/ai-helpers --skill summarize-jiras -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install openshift-eng/ai-helpers summarize-jiras --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/openshift-eng/ai-helpers.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/teams/skills/summarize-jiras .claude/skills/summarize-jiras && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
summarize-jiras
GitHub stars
120
Token cost
~3.4k tokens
SKILL.md length
1,090 words
Files
2
Skills in repo
118
Repo updated
First seen
Licence
Apache-2.0

At a glance

Query and summarize JIRA bugs for a specific project with counts by component

  • Works in 6 steps: Verify Prerequisites → Verify Environment Variables → Locate the Script → …
  • SKILL.md covers When to Use This Skill, Prerequisites, Implementation Steps and Error Handling, plus 6 more sections
  • Runs Python scripts from its folder; calls python3; reaches redhat.atlassian.net; needs JIRA_API_TOKEN

What it does

Summarize Jiras is an agent skill from openshift-eng/ai-helpers. Query and summarize JIRA bugs for a specific project with counts by component

Its SKILL.md is about 3.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `summarize_jiras.py`).

It works with Jira and Python. The repository describes itself as: Developer productivity tools for Claude Code & other AI assistants. The licence is Apache-2.0.

Example prompts

  • “/summarize-jiras”

Requirements

  • Python 3
  • A credential in JIRA_API_TOKEN

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Verify Prerequisites
  2. Verify Environment Variables
  3. Locate the Script
  4. Run the Script
  5. Process the Output
  6. Present Results

What it can do on your machine

Read from SKILL.md and the folder at commit a627176. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships script files (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python3

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • redhat.atlassian.net

    Also links to:

    • id.atlassian.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • JIRA_API_TOKEN

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Summarize Jiras loads about 3.4k tokens when it runs. Until then it costs about 23 tokens; SKILL.md has 1,090 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~23
When it runs · the whole SKILL.md, loaded when a task matches
~3.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from openshift-eng/ai-helpers at commit a627176, republished under its Apache-2.0 licence (© openshift-eng). 1,090 words, ~3,373 tokens.

Download SKILL.mdSave it as .claude/skills/summarize-jiras/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
summarize-jiras
description
Query and summarize JIRA bugs for a specific project with counts by component

Summarize JIRAs

This skill provides functionality to query JIRA bugs for a specified project and generate summary statistics. It leverages the list-jiras skill to fetch raw JIRA data, then calculates counts by status, priority, and component to provide insights into the bug backlog.

When to Use This Skill

Use this skill when you need to:

  • Get a count of open bugs in a JIRA project
  • Analyze bug distribution by status, priority, or component
  • Generate summary reports for bug backlog
  • Track bug trends and velocity over time (opened vs closed in last 30 days)
  • Compare bug counts across different components or teams
  • Monitor component health or team health based on bug metrics
  • Get team-level bug summaries across all team components

Prerequisites

  1. Python 3 Installation

    • Check if installed: which python3
    • Python 3.6 or later is required
    • Comes pre-installed on most systems
  2. JIRA Authentication

  3. Network Access

    • The script requires network access to reach your JIRA instance
    • Ensure you can make HTTPS requests to the JIRA URL

Implementation Steps

Step 1: Verify Prerequisites

First, ensure Python 3 is available:

bash
python3 --version

If Python 3 is not installed, guide the user through installation for their platform.

Step 2: Verify Environment Variables

Check that required environment variables are set:

bash
# Verify JIRA credentials are configured
echo "JIRA_URL: ${JIRA_URL}"
echo "JIRA_USERNAME: ${JIRA_USERNAME}"
echo "JIRA_API_TOKEN: ${JIRA_API_TOKEN:+***set***}"

If any are missing, guide the user to set them:

bash
export JIRA_URL="https://redhat.atlassian.net"
export JIRA_USERNAME="your-email@redhat.com"
export JIRA_API_TOKEN="your-api-token-here"
Step 3: Locate the Script

The script is located at:

plugins/teams/skills/summarize-jiras/summarize_jiras.py
Step 4: Run the Script

Execute the script with appropriate arguments:

bash
# Basic usage - summarize all open bugs in a project
python3 plugins/teams/skills/summarize-jiras/summarize_jiras.py \
  --project OCPBUGS

# Filter by component
python3 plugins/teams/skills/summarize-jiras/summarize_jiras.py \
  --project OCPBUGS \
  --component "kube-apiserver"

# Filter by multiple components
python3 plugins/teams/skills/summarize-jiras/summarize_jiras.py \
  --project OCPBUGS \
  --component "kube-apiserver" "Management Console"

# Filter by team
python3 plugins/teams/skills/summarize-jiras/summarize_jiras.py \
  --project OCPBUGS \
  --team "API Server"

# Include closed bugs
python3 plugins/teams/skills/summarize-jiras/summarize_jiras.py \
  --project OCPBUGS \
  --include-closed

# Filter by status
python3 plugins/teams/skills/summarize-jiras/summarize_jiras.py \
  --project OCPBUGS \
  --status New "In Progress"

# Set maximum results limit (default 100)
python3 plugins/teams/skills/summarize-jiras/summarize_jiras.py \
  --project OCPBUGS \
  --limit 500
Step 5: Process the Output

The script outputs JSON data with the following structure:

json
{
  "project": "OCPBUGS",
  "total_count": 1500,
  "fetched_count": 100,
  "query": "project = OCPBUGS AND (status != Closed OR (status = Closed AND resolved >= \"2025-10-11\"))",
  "filters": {
    "components": null,
    "statuses": null,
    "include_closed": false,
    "limit": 100
  },
  "summary": {
    "total": 100,
    "opened_last_30_days": 15,
    "closed_last_30_days": 8,
    "by_status": {
      "New": 35,
      "In Progress": 25,
      "Verified": 20,
      "Modified": 15,
      "ON_QA": 5,
      "Closed": 8
    },
    "by_priority": {
      "Normal": 50,
      "Major": 30,
      "Minor": 12,
      "Critical": 5,
      "Undefined": 3
    },
    "by_component": {
      "kube-apiserver": 25,
      "Management Console": 30,
      "Networking": 20,
      "etcd": 15,
      "No Component": 10
    }
  },
  "components": {
    "kube-apiserver": {
      "total": 25,
      "opened_last_30_days": 4,
      "closed_last_30_days": 2,
      "by_status": {
        "New": 10,
        "In Progress": 8,
        "Verified": 5,
        "Modified": 2,
        "Closed": 2
      },
      "by_priority": {
        "Major": 12,
        "Normal": 10,
        "Minor": 2,
        "Critical": 1
      }
    },
    "Management Console": {
      "total": 30,
      "opened_last_30_days": 6,
      "closed_last_30_days": 3,
      "by_status": {
        "New": 12,
        "In Progress": 10,
        "Verified": 6,
        "Modified": 2,
        "Closed": 3
      },
      "by_priority": {
        "Normal": 18,
        "Major": 8,
        "Minor": 3,
        "Critical": 1
      }
    },
    "etcd": {
      "total": 15,
      "opened_last_30_days": 3,
      "closed_last_30_days": 2,
      "by_status": {
        "New": 8,
        "In Progress": 4,
        "Verified": 3,
        "Closed": 2
      },
      "by_priority": {
        "Normal": 10,
        "Major": 4,
        "Critical": 1
      }
    }
  },
  "note": "Showing first 100 of 1500 total results. Increase --limit for more accurate statistics."
}

Field Descriptions:

  • project: The JIRA project queried
  • total_count: Total number of matching issues (from JIRA search results)
  • fetched_count: Number of issues actually fetched (limited by --limit parameter)
  • query: The JQL query executed (includes filter for recently closed bugs)
  • filters: Applied filters (components, statuses, include_closed, limit)
  • summary: Overall statistics across all fetched issues
    • total: Count of fetched issues (same as fetched_count)
    • opened_last_30_days: Number of issues created in the last 30 days
    • closed_last_30_days: Number of issues closed/resolved in the last 30 days
    • by_status: Count of issues per status (includes recently closed issues)
    • by_priority: Count of issues per priority
    • by_component: Count of issues per component (note: issues can have multiple components)
  • components: Per-component breakdown with individual summaries
    • Each component key maps to:
      • total: Number of issues assigned to this component
      • opened_last_30_days: Number of issues created in the last 30 days for this component
      • closed_last_30_days: Number of issues closed in the last 30 days for this component
      • by_status: Status distribution for this component
      • by_priority: Priority distribution for this component
  • note: Informational message if results are truncated

Important Notes:

  • By default, the query includes: Open bugs + bugs closed in the last 30 days
  • This allows tracking of recent closure activity alongside current open bugs
  • The script fetches a maximum number of issues (default 100, configurable with --limit)
  • The total_count represents all matching issues in JIRA
  • Summary statistics are based on the fetched issues only
  • For accurate statistics across large datasets, increase the --limit parameter
  • Issues can have multiple components, so component totals may sum to more than the overall total
  • opened_last_30_days and closed_last_30_days help track recent bug flow and velocity
Step 6: Present Results

Based on the summary data:

  1. Present total bug counts
  2. Highlight distribution by status (e.g., how many in "New" vs "In Progress")
  3. Identify priority breakdown (Critical, Major, Normal, etc.)
  4. Show component distribution
  5. Display per-component breakdowns with status and priority counts
  6. Calculate actionable metrics (e.g., New + Assigned = bugs needing triage/work)
  7. Highlight recent activity (opened/closed in last 30 days) per component

Error Handling

Show full SKILL.md (456 more words)Show less
Common Errors
  1. Authentication Errors

    • Symptom: HTTP 401 Unauthorized
    • Solution: Verify JIRA_URL, JIRA_USERNAME, and JIRA_API_TOKEN are correct
    • Check: Ensure token has not expired
  2. Network Errors

    • Symptom: URLError or connection timeout
    • Solution: Check network connectivity and JIRA_URL is accessible
    • Retry: The script has a 30-second timeout, consider retrying
  3. Invalid Project

    • Symptom: HTTP 400 or empty results
    • Solution: Verify the project key is correct (e.g., "OCPBUGS", not "ocpbugs")
  4. Missing Environment Variables

    • Symptom: Error message about missing credentials
    • Solution: Set required environment variables (JIRA_URL, JIRA_USERNAME, JIRA_API_TOKEN)
  5. Rate Limiting

    • Symptom: HTTP 429 Too Many Requests
    • Solution: Wait before retrying, reduce query frequency
Debugging

Enable verbose output by examining stderr:

bash
python3 plugins/teams/skills/summarize-jiras/summarize_jiras.py \
  --project OCPBUGS 2>&1 | tee debug.log

Script Arguments

Required Arguments
  • --project: JIRA project key to query
    • Format: Project key (e.g., "OCPBUGS", "OCPSTRAT")
    • Must be a valid JIRA project
Optional Arguments
  • --component: Filter by component names

    • Values: Space-separated list of component names
    • Default: None (returns all components)
    • Case-sensitive matching
    • Examples: --component "kube-apiserver" "Management Console"
  • --status: Filter by status values

    • Values: Space-separated list of status names
    • Default: None (returns all statuses except Closed)
    • Examples: --status New "In Progress" Verified
  • --include-closed: Include closed bugs in the results

    • Default: false (only open bugs)
    • When specified, includes bugs in "Closed" status
  • --limit: Maximum number of issues to fetch

    • Default: 100
    • Maximum: 1000 (JIRA API limit per request)
    • Higher values provide more accurate statistics but slower performance

Output Format

The script outputs JSON with summary statistics and per-component breakdowns:

json
{
  "project": "OCPBUGS",
  "total_count": 5430,
  "fetched_count": 100,
  "query": "project = OCPBUGS AND (status != Closed OR (status = Closed AND resolved >= \"2025-10-11\"))",
  "filters": {
    "components": null,
    "statuses": null,
    "include_closed": false,
    "limit": 100
  },
  "summary": {
    "total": 100,
    "opened_last_30_days": 15,
    "closed_last_30_days": 8,
    "by_status": {
      "New": 1250,
      "In Progress": 800,
      "Verified": 650
    },
    "by_priority": {
      "Critical": 50,
      "Major": 450,
      "Normal": 2100
    },
    "by_component": {
      "kube-apiserver": 146,
      "Management Console": 392
    }
  },
  "components": {
    "kube-apiserver": {
      "total": 146,
      "opened_last_30_days": 20,
      "closed_last_30_days": 12,
      "by_status": {...},
      "by_priority": {...}
    }
  },
  "note": "Showing first 100 of 5430 total results. Increase --limit for more accurate statistics."
}

Examples

Example 1: Summarize All Open Bugs
bash
python3 plugins/teams/skills/summarize-jiras/summarize_jiras.py \
  --project OCPBUGS

Expected Output: JSON containing summary statistics of all open bugs in OCPBUGS project

Example 2: Filter by Component
bash
python3 plugins/teams/skills/summarize-jiras/summarize_jiras.py \
  --project OCPBUGS \
  --component "kube-apiserver"

Expected Output: JSON containing summary for the kube-apiserver component only

Example 3: Include Closed Bugs
bash
python3 plugins/teams/skills/summarize-jiras/summarize_jiras.py \
  --project OCPBUGS \
  --include-closed \
  --limit 500

Expected Output: JSON containing summary of both open and closed bugs (up to 500 issues)

Example 4: Filter by Multiple Components
bash
python3 plugins/teams/skills/summarize-jiras/summarize_jiras.py \
  --project OCPBUGS \
  --component "kube-apiserver" "etcd" "Networking"

Expected Output: JSON containing summary for specified components

Integration with Commands

This skill is designed to:

  • Provide summary statistics for JIRA bug analysis
  • Be used by component health analysis workflows
  • Generate reports for bug triage and planning
  • Track component health metrics over time
  • Leverage the list-jiras skill for raw data fetching
  • list-jiras: Fetch raw JIRA issue data
  • list-regressions: Fetch regression data for releases
  • analyze-regressions: Grade component health based on regressions
  • get-release-dates: Fetch OpenShift release dates

Notes

  • The script uses Python's standard library only (no external dependencies)
  • Output is always JSON format for easy parsing
  • Diagnostic messages are written to stderr, data to stdout
  • The script internally calls list_jiras.py to fetch raw data
  • The script has a 30-second timeout for HTTP requests (inherited from list_jiras.py)
  • For large projects, use component filters to reduce query size
  • Summary statistics are based on fetched issues (controlled by --limit), not total matching issues
  • For raw JIRA data without summarization, use /teams:list-jiras instead

© openshift-eng, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file in plugins/teams/skills/summarize-jiras of openshift-eng/ai-helpers.

  • SKILL.md
  • summarize_jiras.py

Open the folder on GitHubat commit a627176

Compare with similar skills

Summarize Jiras next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Summarize Jiras compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Summarize Jiras this skillopenshift-eng/ai-helpers120—~3.4kAutomated safety check: PassApache-2.0
Rota Check Periodic Jobsoracle/graalpython1.7k—~792Automated safety check: PassCustom licence
Kanban TuiZaloog/kanban-tui285—~4.1kAutomated safety check: PassMIT
GitHub PR Mirrororacle/graalpython1.7k—~1.3kAutomated safety check: PassCustom licence
Atlassian Readonly Skillssillsdev/FieldWorks110—~1.3kAutomated safety check: PassCustom licence
Atlassian Skillssillsdev/FieldWorks110—~2.7kAutomated safety check: PassCustom licence

Similar skills

  • Rota Check Periodic Jobs

    oracle/graalpython

    Official

    Analyze current GraalPy periodic job failures for ROTA. An agent skill from oracle/graalpython.

    1.7k GitHub stars~792 tokensUpdated yesterday
    Testing & QAAuto-check passed
  • Kanban Tui

    Zaloog/kanban-tui

    Comprehensive kanban board and task management via ktui CLI.

    285 GitHub stars~4.1k tokensUpdated 1 mo ago
    Productivity & AutomationAuto-check passed
  • GitHub PR Mirror

    oracle/graalpython

    Official

    Mirror an external GitHub pull request into the internal GraalPython Bitbucket review flow, including OCA label checks, Jira creation or reuse, preserving PR commits, pre-commit cleanup, and handoff…

    1.7k GitHub stars~1.3k tokensUpdated yesterday
    Auto-check passed
  • Atlassian Readonly Skills

    sillsdev/FieldWorks

    Read-only Python utilities for Jira (SIL Data Center): fetch an issue, search with JQL, read transitions, links, worklogs, agile boards and projects.

    110 GitHub stars~1.3k tokensUpdated yesterday
    Auto-check passed
  • Atlassian Skills

    sillsdev/FieldWorks

    Python utilities for Jira (SIL Data Center) covering issue management, JQL search, workflows and transitions, links, agile boards, worklogs and projects.

    110 GitHub stars~2.7k tokensUpdated yesterday
    Auto-check passed
  • Scrum Master

    alirezarezvani/claude-skills

    Advanced Scrum Master skill for data-driven agile team analysis and coaching.

    28k GitHub starsUsed in 1 repo~2.4k tokens
    Product & Project ManagementAuto-check passed

More from openshift-eng/ai-helpers

All 118 skills in this repo
  • Investigate CI Reliability

    openshift-eng/ai-helpers

    Find and independently validate actionable reliability defects across OpenShift release jobs and presubmits, then export portable issue handoffs.

    120 GitHub stars~1.9k tokensUpdated 2 days ago
    Auto-check passed
  • Address Review PR

    openshift-eng/ai-helpers

    Fetch and address all PR review comments — categorize by priority, make code changes, post replies, and push.

    120 GitHub stars~2.9k tokensUpdated 2 days ago
    Auto-check passed
  • Categorize Activity Types

    openshift-eng/ai-helpers

    Categorize Jira issues into Red Hat Sankey Activity Type categories using MCP Jira tools.

    120 GitHub stars~2.4k tokensUpdated 2 days ago
    Auto-check passed
  • Has Review Work

    openshift-eng/ai-helpers

    Decide whether a GitHub PR has unanswered authorized review comments or new required CI failures worth a follow-up agent.

    120 GitHub stars~1.9k tokensUpdated 2 days ago
    Auto-check passed
  • Must Gather Analyzer

    openshift-eng/ai-helpers

    Analyze OpenShift must-gather diagnostic data including cluster operators, pods, nodes, and network components.

    120 GitHub stars~2.3k tokensUpdated 2 days ago
    Auto-check passed
  • Payload Autodl JSON

    openshift-eng/ai-helpers

    Schema for the autodl JSON data file produced by payload-analysis for database ingestion — you must use this skill whenever generating the autodl JSON file

    120 GitHub stars~2.6k tokensUpdated 2 days ago
    Auto-check passed

Works with

Questions about Summarize Jiras

What does Summarize Jiras do?

Query and summarize JIRA bugs for a specific project with counts by component. Summarize Jiras is an agent skill from openshift-eng/ai-helpers.

How do I install Summarize Jiras in Claude Code?

Run `npx skills add openshift-eng/ai-helpers --skill summarize-jiras -a claude-code`. Or copy the skill folder (plugins/teams/skills/summarize-jiras in openshift-eng/ai-helpers) into .claude/skills/summarize-jiras in your project. Claude Code loads it when a task matches its description.

How do I install Summarize Jiras in Codex?

Run `npx skills add openshift-eng/ai-helpers --skill summarize-jiras -a codex`. Or copy the skill folder (plugins/teams/skills/summarize-jiras in openshift-eng/ai-helpers) into .agents/skills/summarize-jiras in your project. Codex loads it when a task matches its description.

Can I use Summarize Jiras in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add openshift-eng/ai-helpers --skill summarize-jiras -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/summarize-jiras, .gemini/skills/summarize-jiras, .github/skills/summarize-jiras and .opencode/skills/summarize-jiras in your project.

What does Summarize Jiras need to run?

Going by SKILL.md and its folder, Summarize Jiras needs Python for the scripts in its folder, the command-line tools its instructions call (python3) and credentials named JIRA_API_TOKEN. Our summary lists: Python 3; A credential in JIRA_API_TOKEN.

Does Summarize Jiras access the network?

SKILL.md names 2 domains. In commands or code: redhat.atlassian.net; the agent is likely to contact it when it follows the instructions. As links in the text: id.atlassian.com. This is read from the text; nothing was executed.

Is Summarize Jiras safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Summarize Jiras use?

Summarize Jiras is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Summarize Jiras use?

About 3.4k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Summarize Jiras?

Skills that share tags, products or a category with Summarize Jiras: Rota Check Periodic Jobs (oracle/graalpython, 1.7k stars), Kanban Tui (Zaloog/kanban-tui, 285 stars), GitHub PR Mirror (oracle/graalpython, 1.7k stars) and Atlassian Readonly Skills (sillsdev/FieldWorks, 110 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Summarize Jiras?

openshift-eng (a GitHub organization) maintains it in openshift-eng/ai-helpers, which has 120 GitHub stars. The repository holds 118 skills in this directory. The repository was last updated on October 6, 2026.

Source: openshift-eng/ai-helpers on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.