gh-issue-report
Investigate and file bug reports on GitHub repositories. Searches existing issues to avoid duplicates, checks contributing guides and issue templates, optionally confirms the bug in source code, and files a well-structured issue. Works on both local and remote repos. Triggers: "file a bug", "report issue", "is there a bug for", "check if reported", "investigate and file", "bug report on", "/gh-issue-report"
Best use case
gh-issue-report is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Investigate and file bug reports on GitHub repositories. Searches existing issues to avoid duplicates, checks contributing guides and issue templates, optionally confirms the bug in source code, and files a well-structured issue. Works on both local and remote repos. Triggers: "file a bug", "report issue", "is there a bug for", "check if reported", "investigate and file", "bug report on", "/gh-issue-report"
Teams using gh-issue-report should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/gh-issue-report/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How gh-issue-report Compares
| Feature / Agent | gh-issue-report | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Investigate and file bug reports on GitHub repositories. Searches existing issues to avoid duplicates, checks contributing guides and issue templates, optionally confirms the bug in source code, and files a well-structured issue. Works on both local and remote repos. Triggers: "file a bug", "report issue", "is there a bug for", "check if reported", "investigate and file", "bug report on", "/gh-issue-report"
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Issue Report
Investigate a bug, confirm it hasn't been reported, optionally verify in source code, and file a structured issue — all in one workflow.
## Arguments
- `/gh-issue-report` — interactive: asks for repo and bug description
- `/gh-issue-report <owner/repo> <description>` — uses arguments directly
## Phase 1: Intake
1. **Resolve target repo**:
- If argument includes `owner/repo`, use it.
- If the current directory is a git repo, offer it as default.
- Otherwise, ask.
2. **Bug description**: If provided as argument, use it. Otherwise ask:
> What bug are you seeing? Include steps to reproduce if you have them.
3. **Determine repo locality**:
- Check if the repo is cloned locally (look for matching remote in `git remote -v` or check common paths).
- **Local**: use file system tools (Read, Grep, Glob) for code investigation.
- **Remote-only**: use `gh api` to fetch repo contents for code investigation.
## Phase 2: Search Existing Issues
4. **Search for duplicates** using multiple query strategies in parallel:
```bash
gh issue list -R <repo> --state all --search "<keywords from description>" --limit 20
```
Run 2-3 searches with different keyword combinations extracted from the bug description (e.g., key nouns, component names, error messages). Cast a wide net.
5. **Evaluate matches**:
- If a clear duplicate exists: show it to the user and ask whether to proceed or comment on the existing issue.
- If partial matches exist: show them and note the differences.
- If no matches: continue.
## Phase 3: Check Repo Conventions
6. **Fetch contributing guide and issue templates** in parallel:
```bash
# Contributing guide
gh api 'repos/<repo>/contents/CONTRIBUTING.md' --jq '.content' | base64 -d
# Issue templates
gh api 'repos/<repo>/contents/.github/ISSUE_TEMPLATE' --jq '.[].name'
```
If issue templates exist, fetch the relevant one (usually `bug_report.md` or `bug_report.yml`):
```bash
gh api 'repos/<repo>/contents/.github/ISSUE_TEMPLATE/<template>' --jq '.content' | base64 -d
```
7. **Extract conventions**: note title prefix (e.g., `[bug]`), required labels, required sections, and any special instructions from the contributing guide.
## Phase 4: Code Investigation
Adapt investigation depth based on what's achievable. Start lightweight; go deeper only when the lightweight pass yields promising leads.
8. **Lightweight pass** — identify relevant files:
For **local** repos:
```
Use Grep/Glob to find files matching component names, error messages, or keywords from the bug description.
```
For **remote** repos:
```bash
gh api 'repos/<repo>/git/trees/main?recursive=1' --jq '.tree[].path' | grep -iE '<keywords>'
```
If this yields no useful results (no matching files, or too many to be actionable), skip to Phase 5 and draft the issue without code-level root cause. Note in the issue body that root cause was not confirmed in code.
9. **Deep investigation** — if the lightweight pass found relevant files (< 10 candidates), read them to understand the bug:
For **local** repos: use Read tool directly.
For **remote** repos:
```bash
gh api 'repos/<repo>/contents/<path>' --jq '.content' | base64 -d
```
Use subagents for parallel investigation when reading multiple files. Focus on:
- Where the relevant state is stored (React state, store, DB, etc.)
- What triggers the bug (lifecycle, navigation, race condition, etc.)
- Why the current implementation fails
10. **Assess findings**:
- **Root cause confirmed**: include it in the issue with file paths and line references.
- **Suspected but unconfirmed**: include as hypothesis, clearly labeled.
- **Nothing actionable found**: omit code analysis from the issue, describe only the observed behavior.
## Phase 5: Draft Issue
11. **Compose the issue** following the repo's template and conventions:
Always include:
- **Title**: follow repo convention (e.g., `[bug] ...`), keep under 80 chars
- **Description**: clear, concise explanation of the bug
- **Steps to reproduce**: numbered list
- **Expected vs actual behaviour**
Include when available:
- **Root cause**: with file paths and line references from Phase 4
- **Suggested fix**: if root cause is clear enough to propose a direction
- **Environment**: platform, version, relevant config
12. **Infer labels**: fetch repo labels and match against the issue content:
```bash
gh label list -R <repo> --json name,description --jq '.[] | "\(.name)\t\(.description)"'
```
Only use labels that exist on the repo. If the template specifies a label (e.g., `bug`), use it.
13. **Present draft to user**:
> Here's the issue I'll file. Want me to adjust anything?
Show the full title, labels, and body. Wait for approval.
## Phase 6: File Issue
14. **Create the issue**:
```bash
gh issue create -R <repo> \
--title "<title>" \
--label "<labels>" \
--body "$(cat <<'EOF'
<body>
EOF
)"
```
15. **Report result**:
```
Filed: <issue-url>
```Related Skills
p-daily-report
Use when reviewing what you worked on, creating standups, writing status updates, tracking daily/weekly progress, or asking "what did I do today"
restaurant-search
Search for Japanese restaurants using the `hpp` CLI (HotPepper Gourmet API). Use when the user wants to find a restaurant, plan a dinner, search for izakayas, or book a group meal in Japan. Triggers on requests like "find a restaurant near Shibuya", "search for izakayas in 新宿", "restaurant for 10 people in 浜松町", "dinner spot near Tokyo station".
project-namer
Use when naming a project, repository, tool, or product and wanting a memorable, unique name
p-slack-triage
Scan Slack for messages needing your attention, walk through them one-by-one, and draft/send replies. Covers DMs, mentions, threads, and channel activity. Use when the user wants to triage Slack, check what needs attention, or draft replies. Triggers on "triage slack", "check slack", "what needs my attention on slack", "slack replies", "review slack messages", "/slack-triage".
p-news-briefing
Use when the user asks for news, wants a briefing, says "/news-briefing", or asks to aggregate recent information on any topic. Triggers on requests like "what's happening with AI", "get me news on crypto", "news briefing on climate".
p-md-to-slides
Convert a structured Markdown deck source into a styled Google Slides presentation. Use this skill when the user has a slide.md file (or wants to write one) and wants Google Slides output — talks, LT decks, lecture slides, conference presentations, internal explainers. Trigger phrases include "md からスライド作って", "slide.md を Google Slides にして", "発表資料を Google Slides で", "convert this markdown to slides", "build a Google Slides deck from this markdown", "make slides from md", "/md-to-slides", and similar. Also use when the user references a presentation/<date>/slide.md file structure with `## Slide N — title`, `**話すこと:**`, and `**スライド要素:**` sections.
p-ego-search
Search for mentions of you across Slack, Fireflies, and GitHub. Triggers on "egosearch", "/egosearch", "search for mentions of me", "who's talking about me".
p-daily-standup
Aggregate previous business day activity and post standup update to Slack. Use when the user says "standup", "daily standup", "post status", "status update", or "/daily-standup".
p-daily-reflection
Reflect on past work and iterate to improve. Analyzes Claude sessions, GitHub, Slack, and Fireflies to generate a journal entry with actionable improvements. Updates persistent memory with confirmed learnings. Use when the user says "reflect", "reflection", "what can I improve", "retrospective", "review my work", or "/daily-reflection".
p-blog-writer
Write blog posts in {user_name}'s voice with theoretical depth and persuasive arguments. Iterative workflow: intake → outline → section-by-section expansion → polish. Adapts to tool announcements, opinion pieces, deep-dives, and tutorials. Use when the user says "/blog-writer", "write a blog post", "draft an article about", "help me write about", or wants to create blog content.
p-blog-post-mining
Mine development activities for blog-worthy topics and create outlines. Analyzes Claude session history, GitHub commits/PRs, Slack discussions, and Fireflies meeting recordings to find interesting stories. Use when the user wants blog ideas, content inspiration, or asks "what can I write about", "find blog material", "blog ideas from my work", "/blog-post-mining".
p-activity-digest
Summarize recent communication activity from Slack and meeting recordings. Use when the user wants to know what happened on Slack, review meeting action items, find mentions, or get a communication summary. Triggers on "summarize Slack", "meeting action items", "what was discussed", "activity summary", "search my mentions", "highlight of the day", "/activity-digest".