For the complete documentation index, see llms.txt. This page is also available as Markdown.

luciq-group-bugs

Consolidate your Luciq bug list by marking duplicates according to your own grouping logic — using the Luciq MCP server to fetch bugs, compile your rule into an explainable key, and write the merges only after you approve a plan.

This is the plugin's first write skill. Marking a bug as a duplicate is destructive — the duplicate's occurrences move into the master's group, and its status, priority, and assignee are overwritten by the master's, with no bulk undo on the server. So the skill never writes from a rule alone: it always computes a dry-run plan, shows the exact key that united every group, and calls the write only after you approve.

Use this skill when

  • You ask to consolidate, group, or deduplicate your bugs by your own logic — "group my bugs by X", "mark these bugs as duplicates", "dedupe / consolidate the bug list".

  • You want to merge bugs that share the same screen, failed request, tag, title, category, app version, or user attribute, described in plain language.

  • You're reorganizing many bugs at once, not root-causing a single one (that's luciq-debug) and not pulling a read-only report (that's luciq-readout).

What the agent does

  • Deterministic key compilation. Translates your grouping logic into a list_bugs filter set and a per-bug key built only from concrete fields it can name — title, screen, tag, category, app version, user attribute, failed request, or user steps. If the logic can't reduce to concrete fields, it stops and asks you to restate it rather than guessing at a clustering.

  • Scoped, capped fetching. Pulls a bounded candidate pool with list_bugs, paginating up to a cap, and warns rather than silently truncating if your scope is bigger than the cap.

  • Conditional enrichment. Calls bug_details — and, for failed-request or user-step keys, fetches the signed log archive — only when the key you chose actually needs those fields.

  • Auditable dry-run plan. Groups bugs that share an identical key, drops singleton groups, defaults the master to the oldest bug per group (you can reassign it), and renders every group with the verbatim key that united it.

  • Approval-gated writes. Marks duplicates via update_bug only after you approve the plan — never from the rule alone.

  • Two-mode undo. Detach only, or detach and restore each bug's pre-merge status and priority. Assignee can't be restored either way, and the skill says so up front.

Install

The fastest path is the plugin install. Add the marketplace and install:

Works in Claude Code and Cursor. The plugin install also wires up the Luciq MCP server in one step (this skill needs it).

After install, the skill is available as /luciq-skills:luciq-group-bugs.

For other agents, install via npm:

Or copy SKILL.md from the public repo to ~/.claude/skills/luciq-group-bugs/SKILL.md (user-global) or .claude/skills/luciq-group-bugs/SKILL.md (project-local). The full SKILL.md is reproduced in the expandable below.

📋 Click to expand the full SKILL.md

Prerequisites

  • The Luciq MCP server, configured and authenticated. The luciq-setup skill wires this for first-time projects.

  • The bugs.list.modify permission on the authenticated token, to apply merges. Without it, the skill can still fetch candidates and show the dry-run plan — it just can't write.

  • For grouping by failed network requests or user steps: the bugs.network_logs.view / bugs.user_steps.view permissions (so bug_details returns the log archive URLs) plus a web-fetch capability in your agent host to retrieve those signed URLs. Grouping by title, category, screen, tag, version, or user attribute needs neither.

If the MCP server isn't connected, the skill stops and points you to Setup by IDE before continuing.

How the agent groups bugs

The skill runs a fixed loop: compile your logic into a deterministic key, fetch and key every candidate, render a plan, and write only after you approve it.

Step 1. Resolve app and mode

The agent calls list_applications and confirms the mode with you (defaulting to production). Every candidate and the eventual master must share one app and mode — the skill never merges across apps or modes.

Step 2. Elicit your grouping logic

The agent asks how you want bugs grouped, offering starters: by title, screen, failed request, tag or category, app version, or user attribute. You can combine dimensions — "same screen and same failed request" — or describe your own logic in your own words.

Step 3. Compile the logic

The agent translates your logic into a list_bugs filter set that bounds the candidate pool, and a per-bug key recipe built from the fields you named. If your logic can't reduce to concrete fields — "group by vibe", "same user journey" — the agent stops and asks you to restate it. It won't semantically guess its way into an irreversible merge.

Step 4. Fetch candidates

The agent pulls a scoped, capped set of bugs with list_bugs, paginating as needed. If your scope is larger than the cap (around 300 bugs), it warns you and offers to narrow the filters or raise the cap rather than silently working with a partial set.

Step 5. Enrich only when needed

list_bugs returns a thin row per bug. If your key needs a field beyond that — screen, tags, app version, user attributes, or a signature built from network logs or user steps — the agent calls bug_details for the candidates in scope. Log-based signals (failed requests, user steps) require fetching and parsing a signed archive URL, which needs a web-fetch capability alongside the MCP tools.

Step 6. Compute keys and form groups

The agent normalizes and builds a key for each candidate — lowercasing titles, sorting tag sets, stripping query strings from URLs — then groups bugs that share an identical key. Groups of one are dropped; a bug missing a field its key needs is skipped and listed with a reason, never folded into a catch-all group.

Step 7. Pick the master

For each group, the agent defaults the master to the oldest bug, preserving the original report and its history. You can reassign the master for any group before approving.

Step 8. Render the dry-run plan

The agent shows every proposed group: the master, each member that would merge into it, and the verbatim key that united them, plus a list of skipped bugs and why. Nothing has been written yet.

Step 9. Wait for your approval

This is a hard gate. If your token lacks the bugs.list.modify permission, the agent says the plan can only be shown, not applied, and stops here.

Step 10. Apply

Once you approve, the agent snapshots each member's current status and priority (so undo can restore them later), then marks each member as a duplicate of its group's master, one at a time. It never merges the master into itself, skips bugs already grouped, and if one merge fails it keeps going and reports every failure at the end.

Step 11. Report and offer undo

The agent summarizes what merged and any failures, then offers to undo the merges made this session — either detaching the bugs only, or detaching and restoring each bug's pre-merge status and priority. Assignee can't be restored either way, and the agent says so up front.

Out of scope

This skill only touches bugs. It doesn't group or act on crashes, hangs, APM data, surveys, or reviews, and it doesn't change a bug's status, priority, tags, or assignee except as the unavoidable side effect of marking it a duplicate. It doesn't regroup bugs across apps or modes, and it doesn't move a bug between two existing masters — unmark it and re-mark it under the new master instead.

Last updated