From pm
This skill should be used whenever the user wants to file a GitHub issue for a bug, broken behavior, or unexpected result. Trigger when the user says "bug", "broken", "not working", "something's wrong", "file a bug", "/pm:bug", "/pm:bug --fast", shares a screenshot of an error or unexpected UI state, or describes behavior that doesn't match what they expected. Use this skill — not pm:feature — when the work is fixing something broken rather than building something new.
How this skill is triggered — by the user, by Claude, or both
Slash command
/pm:bugThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Before the skill body, check whether the gstack-extensions repo has merged updates this clone has not pulled. Silent unless an upgrade is available; never changes anything:
Before the skill body, check whether the gstack-extensions repo has merged updates this clone has not pulled. Silent unless an upgrade is available; never changes anything:
~/dev/gstack-extensions/bin/gstack-extensions-update-check 2>/dev/null || true
If there is no output, proceed straight to the skill body. If it prints UPGRADE_AVAILABLE <n> <range>, tell the user via AskUserQuestion that gstack-extensions is <n> commit(s) behind origin/main and offer:
~/dev/gstack-extensions/bin/gstack-extensions-upgrade, then continue. It fast-forwards main and refreshes the installed plugins, and refuses safely (printing why) if the clone is not on a clean main; relay that message and continue without upgrading if so.~/dev/gstack-extensions/bin/gstack-extensions-update-check --snooze to suppress the prompt for ~8h (so other skills do not re-ask this session), then continue without upgrading.Do not upgrade without asking. Ask at most once per session: if you have already prompted (or the user skipped) this session, proceed silently.
Read first: Load shared/core.md from the plugin root before proceeding. It contains your identity, team context, README startup behavior, discovery rules, QA instructions guidance, labels, issue creation commands, and batch handling.
Fast mode short-circuit. If the user invoked this skill with --fast followed by a description (e.g. /pm:bug --fast continue button on confirm-details screen does nothing on tap), load shared/fast-mode.md and follow it instead of the normal flow below. Fast mode skips the discovery questions, the reproduction gate, and the preview, files the issue immediately with reproduction marked as waived, then learns from any post-file correction. Everything else in this file is the normal (interactive) flow.
Then read: Load shared/repro-gate.md from the plugin root. It defines the mandatory reproduction gate that runs after discovery and before the pre-creation preview. Bug issues are not filed without it unless the user explicitly waives.
Everything below is specific to bug issues.
A bug report lives or dies by its reproduction steps. BugBash Ben must be able to follow them and land on the exact same broken state. Be specific: which page, which user action, which data, which sequence. Vague steps ("go to the settings page") are not acceptable — name the exact URL or navigation path.
If the user provides a screenshot, treat it as your primary source of truth. Extract as much as you can from it before asking questions — which screen, what's visible, what state the UI is in. Only ask about what you genuinely can't see.
Always upload screenshots to GitHub via gh image and embed them inline. Never reference a filename as text.
Every bug issue must clearly state what the user expected to happen and what actually happened instead. This is the core of the bug and helps BugBash Ben verify the fix.
Bug issues do not get pencil.dev mockups. The fix should restore existing behavior, not design something new. If fixing the bug requires a UI design decision, that's a separate feature issue.
PM Penny must reproduce the bug herself in the actual reported environment before the issue is filed. This is the reproduction gate (shared/repro-gate.md) and it is mandatory unless the user explicitly waives. The gate runs after discovery (so PM Penny has steps to follow) and before the pre-creation preview (so the result can be embedded as evidence). A bug filed without first-party reproduction or an honest "could not reproduce" note is not acceptable output.
Reproducibility — Can you reproduce this every time, or is it intermittent? Options: A) Every time — 100% reproducible · B) Intermittent · C) Only happened once · D) Not sure
Steps to reproduce — Walk me through the exact steps. Which page/flow, what did you do, what happened? (Free-text — present as AskUserQuestion and let user describe. If screenshot already shows the screen and state, skip asking about what they see — only ask about what they did.)
Expected behavior — What should have happened instead? Options: A) I can describe the expected behavior · B) It worked before — expected is the previous behavior · C) Not sure — let Ben figure it out
Scope — Does this affect all users or specific conditions? Options: A) All users / always · B) Only certain data or inputs · C) Only certain devices or browsers · D) Not sure
Priority — How urgent is this? Options: A) High — blocking a core workflow · B) Medium — real bug but workaround exists · C) Low — minor or cosmetic
Assignee — Who should this be assigned to?
→ Before asking, fetch the repo's actual collaborators with gh api repos/{owner}/{repo}/collaborators --jq '.[].login'. Present those handles as the AskUserQuestion options (up to 4 most relevant; include mujbadar first if present, since it's the default for frontend / mobile work). Add a "Leave unassigned" option. Never hand-type a fixed list; pull live each time so new teammates show up automatically.
→ Apply via --assignee <handle> on gh issue create. If the user picks "Other" and names someone whose handle isn't in the collaborator list, confirm the handle before filing.
Project board column — Conditional on this repo having a GitHub Project. Before asking, resolve the per-repo project cache per shared/core.md "Project board (conditional, per repo)" section. If the cache says has_project: false, skip this question entirely and proceed straight to the reproduction gate. If has_project: true, ask: which column should this go into? Use the cached status_options keys as the AskUserQuestion options, plus a "Skip (don't add to project)" option. Default-recommend the cached default_column.
→ When asked, this question is MANDATORY. The answer is acted on right after gh issue create using the commands in shared/core.md. An issue with a configured project is not considered filed until it has been added (or "Skip" was explicitly chosen).
After the discovery questions above produce reproduction steps, the reported environment, and expected behavior, run the reproduction gate per shared/repro-gate.md before drafting the preview. The gate either confirms the bug, declares "could not reproduce" with evidence, declares "blocked" with a reason, or records an explicit user waiver. Whatever the outcome, it shapes the ## Reproduction evidence section of the issue body — that section is mandatory and must be populated honestly before the preview is shown.
Before creating the issue, you MUST show the user the complete ticket exactly as it will be filed — not a summary. Present:
Bug: (e.g., "Bug: Continue button unresponsive on Confirm Details screen")bug + priority labelReproduction evidence, Acceptance criteria, and QA instructions are mandatory in the preview. These three sections must always be visible and fully written out — never abbreviated or omitted. Reproduction evidence shows whether PM Penny actually saw the bug; Acceptance criteria and QA instructions define done.
Then use AskUserQuestion to get approval before creating anything. Do NOT abbreviate, summarize, or omit any section of the ticket in this preview.
## Summary
[1–2 sentence description of what's broken and the user impact]
## Steps to reproduce
1. [Starting point — which page, which URL, which user state]
2. [Exact action taken]
3. [Next action if applicable]
4. [...]
**Expected:** [What should happen]
**Actual:** [What happens instead]
## Reproduction evidence
[Required. Populated by PM Penny after running the reproduction gate.
One of:
- Reproduced: environment + account + screenshot/output + one-line confirmation that observed actual matched the user's report.
- Could not reproduce: environment + account + screenshot/output of what was observed, plus the user's note (e.g. "intermittent — file anyway").
- Blocked: where the gate stopped and why (failed login, missing access, 500, etc.).
- Waived: one-line note that the user waived first-party reproduction.]
## Acceptance criteria
- [ ] Following the reproduction steps above, the expected behavior now occurs
- [ ] [Any additional specific verifiable criterion]
- [ ] [Edge case worth verifying explicitly]
## QA instructions
[Step-by-step for QA Quincey to verify the fix.
Start from the reproduction steps. Confirm expected behavior occurs.
Include any related flows worth checking while the fix is in.]
## Context
[Screenshot embedded here via gh image upload.
Any background, related issues, or hypotheses about the cause.
Note browser, environment, or user state if relevant.]
## Notes
[Optional: out-of-scope items, follow-up issues, open questions]
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
npx claudepluginhub mujtaba3b/gstack-extensions --plugin pm