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"

12 stars

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

$curl -o ~/.claude/skills/gh-issue-report/SKILL.md --create-dirs "https://raw.githubusercontent.com/jackchuka/skills/main/gh-issue-report/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/gh-issue-report/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How gh-issue-report Compares

Feature / Agentgh-issue-reportStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/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

12
from jackchuka/skills

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

12
from jackchuka/skills

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

12
from jackchuka/skills

Use when naming a project, repository, tool, or product and wanting a memorable, unique name

p-slack-triage

12
from jackchuka/skills

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

12
from jackchuka/skills

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

12
from jackchuka/skills

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

12
from jackchuka/skills

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

12
from jackchuka/skills

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

12
from jackchuka/skills

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

12
from jackchuka/skills

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

12
from jackchuka/skills

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

12
from jackchuka/skills

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".