How to use this file (not Claude Code):
Cursor / Copilot Chat / ChatGPT / Codex / Gemini CLI / Aider / Cline: paste this into your AI chat:
Install bugkit in this project from https://raw.githubusercontent.com/bglglzd/bugkit/main/INSTALL.mdThe agent fetches this file and follows it.
Any AI agent that doesn't auto-fetch URLs: copy the content below the
---line into the chat directly.Claude Code users should NOT use this file. Run
/plugin marketplace add bglglzd/bugkit,/plugin install bugkit@bglglzd-bugkit, then/bugkit:installinstead.
You are installing bugkit — a portable, AI-friendly bug report system — into the current project. The value: reports carry enough context (URL, element selector, stack trace, viewport, etc.) that an AI assistant can fix the bug from one paste. The data contract is standardized in bugkit Spec v1 so the "Copy Context → Paste → Fix → Close" ritual is identical across any project that installs it.
- Stack — read
package.json/go.mod/Cargo.toml/pyproject.toml/requirements.txt/composer.json/Gemfile/ etc. - Shape — full-stack web app, API-only backend, CLI tool, static site, mobile app, bot, other.
- Existing infra — database, auth, notifications layer, CI/CD. Reuse what exists.
- Conventions — skim
CLAUDE.md,AGENTS.md, a source file or two. Match the project's style.
Report back three bullets on what you found, then continue.
Ask the user:
Where should bug reports be stored or delivered? Pick one:
- Local DB (recommended if the project has one) — full admin UI with status tracking
- GitHub Issues — no DB needed; bugs open as issues with a
bugkitlabel- Telegram — bugs get DM'd to a chat via bot token
- JSONL file — simplest; append to
./.bugreports.jsonl. Local-only.- Email — send via SMTP / SendGrid / Resend
- Slack / Discord — webhook to a channel
- Multiple — e.g. "DB + mirror to Telegram for notifications"
Recommend based on stack if unsure:
- Full-stack web app with a DB → option 1
- Open-source CLI / static site → option 2
- Personal / MVP → option 4, upgrade later
- Solo dev in Telegram → option 3
| Sink | Recipe URL |
|---|---|
| Local DB | https://raw.githubusercontent.com/bglglzd/bugkit/main/recipes/web-app-full.md |
| GitHub Issues | https://raw.githubusercontent.com/bglglzd/bugkit/main/recipes/github-issues.md |
| Telegram | https://raw.githubusercontent.com/bglglzd/bugkit/main/recipes/telegram-bot.md |
| JSONL | https://raw.githubusercontent.com/bglglzd/bugkit/main/recipes/jsonl-file.md |
https://raw.githubusercontent.com/bglglzd/bugkit/main/recipes/email.md |
|
| Slack / Discord | https://raw.githubusercontent.com/bglglzd/bugkit/main/recipes/slack-discord.md |
| CLI | https://raw.githubusercontent.com/bglglzd/bugkit/main/recipes/cli-tool.md |
Fetch the chosen recipe and follow it. Non-negotiables from the spec (https://raw.githubusercontent.com/bglglzd/bugkit/main/SPEC.md):
- Field names — use exactly:
id, type, title, description, status, created_at, reporter, environment, page, client, element, error, logs, attachments, resolution, resolved_at, resolved_by, commit_sha, how_to_verify. Do not rename. - Status lifecycle —
open → in_progress → resolved → closed, plus terminalwontfix. Resolution required when moving to a terminal state. - AI context format — admins MUST be able to produce the exact text block from SPEC.md §3. Do not reorder sections, do not invent new labels.
bugkit_spec: "1"— include in stored reports.
If the chosen recipe produces a browser-facing form (Local DB, GitHub Issues, or similar), after the main install succeeds, ask:
Voice transcription lets reporters speak their bug description instead of typing. Uses the browser's Web Speech API by default — free, no keys, works in Chrome/Edge/Safari. Want to enable it? (Y/n)
If yes, add a 🎤 mic button next to the description textarea. Wire up the Web Speech API per recipes/web-app-full.md §Voice (optional). Optional upgrade: local Whisper (whisper.cpp) via a thin /api/bugkit/transcribe proxy. Never suggest a paid API unless the user explicitly asks.
Before declaring done:
- Submit a test report using the actual UI / CLI / bot command (not curl — the real flow).
- Confirm the report appears in the chosen sink.
- Generate the Copy-Context output and verify it matches SPEC.md §3 — section order, exact labels, no extra decoration.
- If applicable, change status to
resolvedwith a short note and confirm the reporter would see the update.
- Sink chosen.
- Files created or modified.
- How to test it (URL, command, or interaction).
- How the admin copies context and closes the loop once a fix is in.
- Whether voice is enabled and which path it's using.
- Don't pull in a heavy ORM or new DB just for this — use what's there, or JSONL.
- Don't rename spec field names. Add new fields or map. Portability is the point.
- Don't make the element picker fancy. Minimal: outline on hover, click to capture, Esc to cancel.
- Don't gate bug reporting behind complex auth flows.
- Don't skip the reporter notification on status change.
- Don't ask more than the one sink question + optional voice question.
- Read SPEC.md in full.
- Read the chosen recipe in full.
- Compose from multiple recipes if needed — but keep the Copy-Context format unchanged.
- Ask the user for one missing piece at a time.