Bug Report logo

Bug Report

CommunityPopular
Donchitos
bug-report

Structured bug report from a description, or analyze code for potential bugs. Reproduction steps, severity.

Overview

PublisherDonchitos
RepositoryClaude-Code-Game-Studios
Skill namebug-report
Stars
25.8K
Forks
3.7K
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by Donchitos on GitHub. Read the source before you install it.

Installation

Install the Bug Report AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/Donchitos/Claude-Code-Game-Studios/tree/main/.claude/skills/bug-report
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/Donchitos/Claude-Code-Game-Studios.git /tmp/Claude-Code-Game-Studios
mkdir -p .claude/skills
cp -r /tmp/Claude-Code-Game-Studios/.claude/skills/bug-report .claude/skills/bug-report
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Bug Report in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Bug Report on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Bug Report is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

!bash "${CLAUDE_SKILL_DIR}/../../hooks/yaml-helper.sh" resolve_config --keys automation

Automation mode: Resolve modes.automation (project.local.yaml → project.yaml → default collaborative). Every AskUserQuestion call and every file write follows .claude/docs/automation-modes.md (collaborative asks always · guided major-only · autonomous logs and proceeds; automation_always_ask categories always prompt).

Phase 1: Parse Arguments

Determine the mode from the argument:

  • No keyword → Description Mode: generate a structured bug report from the provided description
  • analyze [path] → Analyze Mode: read the target file(s) and identify potential bugs
  • verify [BUG-ID] → Verify Mode: confirm a reported fix actually resolved the bug
  • close [BUG-ID] → Close Mode: mark a verified bug as closed with resolution record

If no argument is provided, ask the user for a bug description before proceeding.


Phase 2A: Description Mode

  1. Parse the description for key information: what broke, when, how to reproduce it, and what the expected behavior is.

  2. Search the codebase for related files using Grep/Glob to add context (affected system, likely files).

  3. Draft the bug report:

markdown
# Bug Report

## Summary
**Title**: [Concise, descriptive title]
**ID**: BUG-[NNNN]
**Severity**: [S1-Critical / S2-High / S3-Medium / S4-Low]
**Priority**: [P1-Fix this sprint / P2-Fix soon / P3-Backlog / P4-Won't fix]
**Status**: Open
**Reported**: [Date]
**Reporter**: [the reporter's name as the user gives it, else `—`; never an email address or account ID taken from the session]

## Classification
- **Category**: [Gameplay / UI / Audio / Visual / Performance / Crash / Network]
- **System**: [Which game system is affected — when the bug spans systems, the one whose code must change; the others go under Related systems]
- **Frequency**: [Always / Often (>50%) / Sometimes (10-50%) / Rare (<10%)]
- **Regression**: [Yes/No/Unknown -- was this working before?]

## Environment
- **Build**: [Version or commit hash]
- **Platform**: [OS, hardware if relevant]
- **Scene/Level**: [Where in the game]
- **Game State**: [Relevant state -- inventory, quest progress, etc.]

## Reproduction Steps
**Preconditions**: [Required state before starting]

1. [Exact step 1]
2. [Exact step 2]
3. [Exact step 3]

**Expected Result**: [What should happen]
**Actual Result**: [What actually happens]

## Technical Context
- **Likely affected files**: [List of files based on codebase search]
- **Related systems**: [What other systems might be involved]
- **Possible root cause**: [If identifiable from the description]

## Evidence
- **Logs**: [Relevant log output if available]
- **Visual**: [Description of visual evidence]

## Related Issues
- [Links to related bugs or design documents]

## Notes
[Any additional context or observations]

The Severity and Priority labels use /bug-triage's S and P numbers and names, which it parses out of this file. P4-Won't fix is its P4 — Won't fix / Deferred (an accepted risk), not a wishlist. If you change either ladder, change .claude/skills/bug-triage/SKILL.md too.


Phase 2B: Analyze Mode

  1. Read the target file(s) specified in the argument.

  2. Identify potential bugs: null references, off-by-one errors, race conditions, unhandled edge cases, resource leaks, incorrect state transitions.

  3. For each potential bug, generate a bug report using the template above, with the likely trigger scenario and recommended fix filled in.


Phase 2C: Verify Mode

Find the bug file by its number, here and in close mode: Glob production/qa/bugs/BUG-*.md and take the file whose number matches [BUG-ID], whatever its zero-padding — an older three-digit file with a slug is found by its number too. If none matches, stop: "No bug [BUG-ID] in production/qa/bugs/." Verdict: BLOCKED — no such bug.

Read that file. Extract the reproduction steps and expected result.

  1. Re-run reproduction steps — use Grep/Glob to check whether the root cause code path still exists as described. If the fix removed or changed it, note the change.
  2. Run the related test — if the bug's system has a test file in the engine's test root (tests/ Godot, Assets/Tests/ Unity, Source/<Module>/Private/Tests/ Unreal — .claude/docs/directory-structure.md), run it via Bash with commands.test from project.yaml, narrowed to the affected suite where the runner allows — never a runner line written from memory, which drops the flags the engine needs (gdUnit4 hangs without --remote-debug tcp://127.0.0.1:0) — and report pass/fail. commands.test unset → no test ran: name the unset key and go on to step 3.
  3. Check for regression — grep the codebase for any new occurrence of the pattern that caused the bug.
  4. Manual verification — when no related test ran (none covers the bug — the usual case where qa.level waives tests — commands.test is unset, or the run did not complete), or the bug's Category is Visual or UI, whose look no automated test checks, ask via AskUserQuestion: "Did you play the reproduction steps in [bug file] on a build with the fix? Which build?" — [No longer occurs] / [Still occurs] / [Not played yet]. Record the answer and the build as the user gives them; a changed code path is never taken as their answer.

Produce a verification verdict:

  • VERIFIED FIXED — the bug is gone by every check that applies: any related test ran and passed, and, where step 4 asked, the user answered [No longer occurs] for a named build. With no test run, that play alone is the verification — a manual one, recorded as such: [user], manual, build [X]. A changed code path on its own is never a pass
  • STILL PRESENT — a related test fails on the bug's case, or the user answered [Still occurs]; the fix did not resolve the issue
  • CANNOT VERIFY — step 4 was answered [Not played yet]: name what is missing or could not run (no related test, commands.test unset, a run that did not complete, a Visual or UI bug), and say that playing the reproduction steps settles it — run /bug-report verify [BUG-ID] again once played

Ask: "May I update production/qa/bugs/[bug file] to set Status: Verified Fixed / Still Present / Cannot Verify?" — naming the file found above, whatever its padding or slug. With the Status, write a **Verified by**: line under it: [test file(s)] — ran and passed, or [user], manual, build [X] for a manual verification.

If STILL PRESENT: reopen the bug, set Status back to Open, and suggest re-running /hotfix [BUG-ID].


Phase 2D: Close Mode

Read the bug file, found by its number as in verify mode. Confirm Status is Verified Fixed before closing. If status is anything else, stop: "Bug [ID] must be Verified Fixed before it can be closed. Run /bug-report verify [BUG-ID] first."

Show the closure record below and the Status change, then ask: "May I update production/qa/bugs/[bug file] to mark it Closed?" Nothing is written before a yes; on no, stop — the bug stays Verified Fixed.

On yes, append the closure record to the bug file:

markdown
## Closure Record
**Closed**: [date]
**Resolution**: Fixed — [one-line description of what was changed]
**Fix commit / PR**: [if known]
**Verified by**: [the verify record's `**Verified by**:` line — the test that ran and passed, or "[user], manual, build [X]"]
**Closed by**: [user]
**Regression test**: [test file path, or "Manual verification" when verify recorded a manual play]
**Status**: Closed

Then update the top-level **Status**: field to **Status**: Closed.

After closing, check production/qa/bug-triage-*.md — if the bug appears in an open triage report, note: "Bug [ID] is referenced in the triage report. Run /bug-triage to refresh the open bug count."


Phase 3: Save Report

Present the completed bug report(s) to the user.

Allocate the ID before asking: Glob production/qa/bugs/BUG-*.md, take the highest number and add 1, zero-padded to four digits (BUG-0001 when there are none). Several reports in one run (analyze mode) take consecutive IDs from there, one each — never the same ID twice.

Ask: "May I write this to production/qa/bugs/BUG-[NNNN].md?" For several reports, ask once and name every file: "May I write these to production/qa/bugs/BUG-[NNNN].md, production/qa/bugs/BUG-[NNNN+1].md, …?"

If yes, write the file, creating the directory if needed. Verdict: COMPLETE — bug report filed.

If no, stop here. Verdict: BLOCKED — user declined write.


Phase 4: Next Steps

After saving, suggest based on mode:

After filing (Description/Analyze mode):

  • Run /bug-triage to prioritize alongside existing open bugs
  • If S1 or S2: run /hotfix [BUG-ID] for emergency fix workflow

After fixing the bug (developer confirms fix is in):

  • Run /bug-report verify [BUG-ID] — confirm the fix actually works before closing
  • Never mark a bug closed without verification — a fix that doesn't verify is still Open

After verify returns CANNOT VERIFY:

  • Play the reproduction steps on a build with the fix, then run /bug-report verify [BUG-ID] again and answer its question

After verify returns VERIFIED FIXED:

  • Run /bug-report close [BUG-ID] — write the closure record and update status
  • Run /bug-triage to refresh the open bug count and remove it from the active list

Frequently asked questions

What does the Bug Report AI skill do?

Structured bug report from a description, or analyze code for potential bugs. Reproduction steps, severity.

Why use Bug Report on TypingMind?

Because you install it once and use it with any model. Bug Report is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Bug Report in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/Donchitos/Claude-Code-Game-Studios/tree/main/.claude/skills/bug-report. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Bug Report?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Bug Report?

As many as you like. As long as a model supports skills, you can use Bug Report with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Bug Report AI skill free?

Yes. It is published on GitHub by Donchitos under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇