GitHub Issue Analysis
SkillDev toolsAnalyze GitHub issues for a date range, counting totals, bug reports (by label substring), and closed bug reports.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the GitHub Issue Analysis skill
What this skill tells your AI
The instructions your AI receives, as published by cxcscmu/skilllearnbench in skills/b1-one-shot-claude-sonnet-4-6/github-repo-analytics/github-issue-analysis/SKILL.md and read by ahel’s review.
Overview
Fetch issues created in a date range and compute:
- Total issue count (excluding PRs)
- Bug reports: issues with at least one label containing substring
bug - Resolved bugs: bug report issues closed during the same month
Fetching Issues
# Using gh issue list with search
gh issue list -R cli/cli \
--search "created:2024-12-01..2024-12-31" \
--state all \
--limit 500 \
--json number,title,labels,state,createdAt,closedAt
Note:
gh issue listautomatically excludes PRs.
Python: Identify Bug Reports
import json
with open('issues.json') as f:
issues = json.load(f)
def is_bug(issue):
"""Returns True if any label contains 'bug' as substring (case-insensitive)."""
return any('bug' in label['name'].lower() for label in issue.get('labels', []))
total = len(issues)
bugs = [i for i in issues if is_bug(i)]
# Closed bugs: bug issues that were closed during the month
# closedAt is within Dec 2024
def closed_in_month(issue, year=2024, month=12):
if not issue.get('closedAt'):
return False
from datetime import datetime, timezone
dt = datetime.fromisoformat(issue['closedAt'].replace('Z', '+00:00'))
return dt.year == year and dt.month == month
resolved_bugs = [i for i in bugs if closed_in_month(i)]
print(json.dumps({
"total": total,
"bug": len(bugs),
"resolved_bugs": len(resolved_bugs)
}, indent=2))
Label Matching Examples
Labels that match bug substring:
bug✓type: bug✓kind/bug✓bug-report✓debug— containsbugas substring ✓ (be aware)
For stricter matching (word boundary), use regex:
import re
def is_bug(issue):
return any(re.search(r'bug', label['name'], re.IGNORECASE)
for label in issue.get('labels', []))
Important: closedAt vs state
closedAtis set when an issue is closed (regardless of month)- To find bugs closed during December, filter
closedAtto be within Dec 2024 - An issue created in Dec but closed in Jan would NOT count as
resolved_bugs
Signals
- GitHub stars
- 83
- Forks
- 5
- Last commit
- Jul 2026
ahel review
S4info
community integration — published by cxcscmu, not github
Automated review, not a security audit. Ruleset v1.
Advanced
- Catalog kind
- skill
- Gateway key
github-issue-analysis- Source
- github.com/cxcscmu/skilllearnbench