跳到正文
cccskills
免费在 GitHub 公开

bugbot-triage

Analyze Cursor Bugbot PR comments through a root-cause lens: is the finding valid, and is the suggested fix the real fix or a bandaid over a deeper problem? Use when the user asks to check, assess, or triage bugbot comments.

中文简介正在准备中。当前显示原文说明。

ayunis-core/ayunis-core星标 34(GitHub 34 + cccskills 0)
集成工具GitHub

实测评分 未实测

查看安装方法

包含的文件(1)

  • SKILL.md4.9 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Bugbot Triage

Bugbot findings are usually locally correct but shallowly scoped: it sees the flagged lines, not why the surrounding construct exists. Your job is not to confirm the finding — it is to decide what the finding is a symptom of. Never jump straight to applying bugbot's suggested fix.

Fetching the Comments

Bugbot posts as cursor[bot]. Findings live in inline review comments; the PR body only carries its summary.

gh pr view --json number --jq .number   # if no PR number given
gh api --paginate repos/{owner}/{repo}/pulls/<number>/comments \
  --jq '.[] | select(.user.login == "cursor[bot]") | {path, line, body}'

Always pass --paginate. The comments endpoint returns 30 per page; without it, bugbot findings past the first page are silently dropped and you will report a PR clean while findings are still open. If you must build the URL yourself, add ?per_page=100 as a backstop, but --paginate is the reliable fix.

On a stacked PR, triage every PR in the stack — not just the top. Bugbot comments on each PR independently, so a stack that looks clean at the tip can still carry open findings on a lower branch. After a restack or a round of fixes, re-fetch comments for all PRs in the stack (gt log/gh pr list to enumerate them) and confirm each is resolved before declaring the stack review-clean.

Strip the HTML boilerplate (Fix-in-Cursor buttons, BUGBOT_BUG_ID); the substance is the severity line, the description, and the LOCATIONS block.

The Triage Lens

Classify every finding into exactly one verdict:

  1. Invalid — bugbot misread the code (wrong assumption about control flow, missed a guard, flagged intentional behavior). Requires evidence: cite the file:line that refutes it.
  2. Valid & simple — the finding is self-contained and the suggested fix is the root-cause fix (a real off-by-one, a missing await, a wrong error type). Fix as suggested.
  3. Valid but symptom — the finding is true, but it points at scaffolding whose reason to exist is gone or wrong. Applying the literal fix would polish code that should be deleted or redesigned. Propose the structural fix instead.

The default temptation is verdict 2. Most low-severity "dead code / needless indirection / unused parameter" findings are actually verdict 3 — dead code is rarely lonely; it usually signals a dead contract.

Root-Cause Tracing (before settling on a verdict)

Work through these steps; stop early only for verdict 1:

  1. Read the whole flagged file, not just the flagged lines. Understand what the construct's job is now, after the PR's changes.
  2. Trace every consumer across all packages (backend, frontend, other services — grep -rn the identifiers, response-body fields, config keys). An unconsumed output means the contract, not just the parameter, is dead.
  3. Trace the stated purpose: comments in the file, sibling files that reference it, module registrations, the PR description. Ask: does the stated reason to exist still hold after this PR? PRs that remove behavior routinely leave the scaffolding (helpers, flags, filters, rethrow branches, comments) standing.
  4. Find all coupling points that would be affected by removing the construct entirely (registrations, filters/guards ordering, comments in other modules referencing it, tests asserting its output).
  5. Apply the structural test: does deleting/redesigning the construct make the whole bug class structurally impossible, versus patching or testing around it? Prefer the fix where the vulnerable/dead code path no longer exists at all.

Reporting

Report the assessment; do not implement a fix unless asked. Structure:

  • Verdict first: valid/invalid, and simple vs. symptom. If symptom: one sentence naming the actual disease ("the finding is the symptom, not the disease").
  • Evidence with file:line references for every claim — especially the consumer trace ("grepped both packages: only the filter and its spec reference these fields").
  • Root-cause fix as a concrete numbered change list (what to delete, what registrations/comments/tests to update, what stays and why).
  • Caveats: behavioral changes (e.g. response body shape), possible external consumers, test coverage that becomes moot.
  • Scope recommendation: does the root-cause fix belong in the PR under review, or in a small stacked follow-up PR (keep security/feature fixes independently revertible; respect large-PR warnings)? If deferring, suggest replying to bugbot that the construct is removed in the follow-up.

If the honest answer is verdict 2, say so plainly and keep it short — not every finding hides a deeper problem, and inventing one is as wrong as missing one.

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Query Ayunis deployed-environment telemetry in AppSignal — incidents, occurrence counts and error traces via the `appsignal-cli` binary; structured log attributes (user.id, org.id, nestjs.context, custom metadata) via the v2 logs API. Use when investigating a production/staging incident or log data — NOT for local dev logs (see backend-debugging).

中文简介正在准备中。当前显示原文说明。

ayunis-core/ayunis-core342026年10月26日 更新

Ayunis Core backend specifics — module boundaries, key files, and project conventions. Complements the nestjs-hexagonal-backend skill.

中文简介正在准备中。当前显示原文说明。

ayunis-core/ayunis-core342026年10月26日 更新

Frontend development in ayunis-core. Use when creating, modifying, or debugging frontend code (React, Feature-Sliced Design, API client).

中文简介正在准备中。当前显示原文说明。

ayunis-core/ayunis-core342026年10月26日 更新

Debug backend runtime errors (500s, crashes, unexpected behavior). Use when something is broken at runtime — not for writing new code.

中文简介正在准备中。当前显示原文说明。

ayunis-core/ayunis-core342026年10月26日 更新

Shared test fixtures for backend specs — port mock factories, domain builders, and shared IDs in a per-module testing/ folder. Use when a module's *.use-case.spec.ts files repeat the same mock-repository literal, inline entity construction, or hardcoded UUIDs across files.

中文简介正在准备中。当前显示原文说明。

ayunis-core/ayunis-core342026年10月26日 更新

Self-review local changes before creating a PR. Use when the user says "review", "review my code", "check my changes", or wants confidence before submitting.

中文简介正在准备中。当前显示原文说明。

ayunis-core/ayunis-core342026年10月26日 更新

查看 ayunis-core 的全部技能

报告此技能的问题