Help us improve
Share bugs, ideas, or general feedback.
From squid
Takes a free-form bug report, localises the suspected code, captures a reproducer, and emits a groomed bug task with a regression-test acceptance criterion. Trigger when a user reports a bug or pastes a stack trace.
npx claudepluginhub iusztinpaul/squid --plugin squidHow this skill is triggered — by the user, by Claude, or both
Slash command
/squid:triage-issue <bug-description | path/to/report.md |<bug-description | path/to/report.md |The summary Claude sees in its skill listing — used to decide when to auto-load this skill
`/day` and `/night` both assume the spec is already shaped right. Bug reports rarely are: they read "X is broken" and need a reproducer, expected-vs-actual, code localisation, and a regression-test acceptance criterion before SWE / Tester can do anything useful with them. This skill produces that groomed bug task, then hands off.
Guides conversational bug discovery and issue drafting. Listens, explores code context, assesses scope, and drafts GitHub issues with user permission.
Runs an automated bug-fix pipeline on a single ticket or batch, with checkpoint resume, step dispatch, and dry-run support.
Fixes bugs using structured diagnostic workflow with user interview for clarification, Bug Council for complex issues, scoped searches, and severity-based handling.
Share bugs, ideas, or general feedback.
/day and /night both assume the spec is already shaped right. Bug reports rarely are: they read "X is broken" and need a reproducer, expected-vs-actual, code localisation, and a regression-test acceptance criterion before SWE / Tester can do anything useful with them. This skill produces that groomed bug task, then hands off.
You are the triage orchestrator — you may delegate exploration to sub-agents (Explore, general-purpose), but you do NOT write production code, do NOT write the regression test, and do NOT start the fix. Your output is the spec.
$ARGUMENTS is one of:
docs/bugs/foo.md).NNN-slug in file mode, #N in gh mode).If empty, ask the user for one before proceeding.
Read docs/PROCESS.md to confirm the active tracker mode (file or gh).
/night PM grooming flow directly./refactor.Identify what to triage from $ARGUMENTS:
cat the report.NNN-slug file mode, #N gh mode) → load the existing record (tracker/NNN-*.todo.md or gh issue view N --json number,title,body,labels).Echo the resolved report back to the user in one paragraph as confirmation. Don't block — proceed.
Spawn ONE Explore agent (or general-purpose if the report is vague enough that exploration needs interview-style breadth) to:
git log --since='4 weeks ago' -- <file>) — recent changes are correlated with regressions.gh search issues "<keyword>" --state closed).Prompt sketch (adapt as needed):
Agent(
subagent_type="Explore",
prompt="""Bug report: {one-paragraph summary}.
Find: (1) the module(s) most likely responsible — rank top-3 with file:line and a one-sentence reason; (2) existing tests covering this behaviour, by file:line; (3) recent commits (last 4 weeks) touching the implicated files; (4) related closed PRs / issues.
Be specific. Report back as four bulleted lists. Do NOT propose fixes."""
)
Read the top-3 candidate file(s) yourself (cheap) before moving on — you want firsthand familiarity, not just the agent's summary.
A reproducer is the load-bearing artefact. Without one, the Tester can't verify a fix and the SWE is guessing.
Try, in this order:
AskUserQuestion. Two questions max:
The reproducer must be deterministic. If it's only intermittent, mark it explicitly as flaky-repro and capture the conditions correlating with reproduction (load, state, time-of-day) — flakies need a different fix posture.
Use this exact template. It mirrors the PM agent's groom output so /day and /night accept it without re-grooming.
# Bug: {one-line title — observable user-visible symptom}
**Severity:** {S1 outage / S2 broken feature / S3 degraded / S4 cosmetic}
**Affected component(s):** {file paths or module names}
**First observed:** {date or commit ref, if knowable}
## Summary
One paragraph. What the user sees. Don't speculate on the cause here.
## Reproducer (deterministic)
1. {exact command / URL / inputs}
2. {next step}
3. ...
Expected: {what should happen}
Actual: {what does happen — include exact error message, status code, or output}
> If the bug is non-deterministic, replace this section with a `Flaky-repro` block listing the correlating conditions.
## Suspected localisation
- `path/to/file.py:42` — {one-sentence reason}
- `path/to/other.py:117` — {one-sentence reason}
> Hypotheses, not conclusions. The SWE will confirm or refute during fix.
## Out of scope
- {Things that look related but aren't part of this bug — explicit so the SWE doesn't expand scope.}
## Acceptance criteria
- [ ] **Regression test** added at `tests/.../test_<slug>.py` that fails on `main` and passes on the fix branch. Test name describes the symptom, not the implementation.
- [ ] Reproducer steps from above produce the expected behaviour after the fix.
- [ ] No unrelated behaviour changes (full unit + integration suite green).
- [ ] If `Severity ≤ S2`, a one-line note added to the project changelog / release notes.
## Notes for the SWE
- {Optional: hints from your localisation — e.g. "the bug appears only when feature flag X is on; check the branching in module Y".}
- {Optional: explicitly forbidden fix shapes — e.g. "do not add a try/except that swallows the underlying exception; surface it properly".}
Severity heuristic (don't over-think — the user can correct):
Where it lands depends on tracker mode (read from docs/PROCESS.md).
Pick the next sequential ID (ls tracker/ | grep -oE '^[0-9]+' | sort -n | tail -1, +1, zero-padded to the project's existing width). Write to:
tracker/NNN-bug-<slug>.groomed.md
.groomed.md (not .todo.md) signals "PM-ready, can enter the inner loop". Both /day and /night accept this directly.
gh issue create \
--title "Bug: {one-line title}" \
--label "bug,triaged" \
--body "$(cat <<'EOF'
{the entire groomed-bug body, minus the # H1}
EOF
)"
Capture the issue number for Step 6.
Surface a single decision block to the user:
## Triage complete — {bug title}
**Filed:** {tracker path or issue URL}
**Severity:** {S1–S4}
**Suspected files:** {top 1–3}
### Recommended next step
{Pick ONE based on severity + scope:}
- **Severity S1 / S2, narrow scope (≤2 files), reproducer is deterministic** → `/day {ref}` — supervise the fix in real time. Fastest path; you watch the diff.
- **Severity S3 / S4, OR scope spans multiple files / tasks, OR a regression test will need its own design conversation** → `/night {ref}` — full pipeline. PM will decompose into tasks; you only gate the plan and the merge.
- **Severity S1 production-down** → fix live yourself; this groomed task becomes the postmortem record, not the entry point.
### Open questions for the human
- {if any — list them. Otherwise omit this section.}
Hand control back. Do NOT auto-invoke /day or /night — the user picks.