Triage feedback from docs, issues, Slack threads, or pasted notes into verified bugs, UX proposals, unclear questions, and skipped noise. Use when a user asks you to address product feedback or investigate a reported workflow.
65
80%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
Use this skill when the user shares a feedback document, issue, thread, or pasted notes and asks you to address the feedback.
The default posture is judgment plus action: fix clear, verified bugs you agree
with; skip low-signal, subjective, and out-of-scope items. In a Slack bug
sweep, only clear observable failures enter the reaction or reply ledger - do
not react to general UX suggestions, product ideas, or merge/review requests.
Design feedback routes to Sid unless the user separately assigns a concrete
Design fix. If another agent or owner is already handling a report, leave it
with that owner. If a previous run mistakenly reacted to a non-bug, release the
claim with ✅ when reactions are available and do not add a compensating reply.
Before coding, name the smallest invariant that explains the report and the boundary that owns it. Use the evidence to choose the altitude:
Do not turn one data point into a global agent rule. For subjective feedback, state the underlying invariant and wait for repeated evidence before broadening it. Keep a concrete local fix when it solves the reported boundary; the goal is the right abstraction, not the most general one.
AGENTS.md before touching code.address-feedback-with-replies; verify the invoking user's profile and use
that same identity for all reads, reactions, replies, and read-backs.Read the feedback source.
| Source | Reader |
|---|---|
| Notion link | Notion connector or Notion skill |
| Google Docs/Drive link | Google Drive connector or Google Docs skill |
| Linear link | Linear connector if installed; otherwise ask for pasted content |
| GitHub issue or PR | GitHub connector or gh issue view / gh pr view |
| Slack thread | Slack connector with the invoking user's identity |
| Public URL | Web browsing |
| Pasted text | Read directly |
Use web browsing only for public URLs. Auth-gated docs usually need their matching connector. For Slack threads, use the invoking user's connected Slack identity for the parent, replies, reactions, and Slack metadata; fetch linked external artifacts through their owning connector or public URL.
Check whether this defect has already been reported.
A feedback channel holds months of reports and nobody remembers all of them, so the same defect gets filed by different people weeks apart and every filing reads as new. One recorded case: the same Clips recording bug was filed almost word-for-word 29 days apart by the same reporter, and neither message mentions the other. Another defect was reported fifteen times by nine people across three months, was announced as fixed once in the middle, and was reported again two weeks later.
Search before fixing, going back at least three months: the source channel in the reporter's words and in your own, Sentry, and merged PR titles. Search the feature name, the error text, and the surface separately — repeat reports rarely share vocabulary.
Report the repeat explicitly, with dates and reporters. A defect on its third report is not a bug ticket, it is a missing check — and the missing check is the deliverable, not the patch.
Before asking a reporter for clarification, read the complete parent thread, every reply, and every accessible linked artifact. Build a short ledger of the surface, URL, repro, exact error, screenshots or files, run or request IDs, and answers already present. A detail found anywhere in that evidence is available context - never ask the reporter to repeat it.
Look for resolution or ownership signals before classifying an item as missing
evidence. A substantive reply from the invoking Slack identity, a legacy
@agent-native message, or any participant that identifies the cause, supplies
the repro, links a fix, or says the issue is fixed, landed, or being fixed is
evidence, not a clarification gap. Verify the claim when needed and record the
item as already owned, fixed, or in progress; do not ask a duplicate question
while that work is being verified or handed off. Ask only when one concrete
reporter detail still blocks a safe fix to an otherwise clear bug after this
review. Do not ask a subjective product question merely to choose between
plausible UX options.
Every human-facing feedback reply starts with a brief thank-you. When
clarification is genuinely required, say thanks for the feedback - first and
then ask one specific question. Clarification needed is an internal ledger
state, never the opening or the prose of the reporter-facing reply.
Decompose and categorize every actionable item.
Build a compact checklist before changing code. For each item, record the symptom, expected behavior, evidence, and owning surface: UI, action/tool, data model, provider/runtime, or product policy.
For data, permissions, or resource-lifecycle feedback, verify the whole capability boundary before calling it UX.
Check Sentry when the feedback smells like an error.
builder-io unless the user specifies another.Before editing a verified bug, choose the narrowest seam supported by the evidence:
Fix only the clear bugs you agree with.
Treat UX feedback with product judgment.
Do not add visible UI as the default response. Address the underlying user problem first, then choose the smallest change that makes the current state, decision, action, or recovery path clearer.
DropdownMenu, Popover, Sheet,
Collapsible, tabs, or another contextual surface. Keep essential meaning,
labels, focus, hit targets, and recovery in the default path.When the user has corrected the same visual preference more than once, treat it as an acceptance criterion for the surface, not as a one-off copy edit. State the underlying invariant before coding, such as “the default state makes one next decision obvious and defers secondary detail,” then check the rendered result against it. A screenshot showing unrelated forms, repeated explanatory copy, documentation links, or competing controls in the default state fails the review. Subtract that competition instead of explaining the UI with more copy.
When proposing a UX change, write it as: what to change, why it helps, and the tradeoff. Keep each proposal short.
Verify changed behavior.
Keep the outward reply to a status update, not an implementation report. The technical investigation, reproduction details, test results, file names, and internal reasoning stay internal unless the user explicitly asks for them.
For every actionable item, use a plain-language label and one short status:
Add one timing phrase to every status. If the current ship is expected to finish that day and the completed fix is confirmed to be included in that ship, use "Expected live by EOD." Otherwise use "Timing not confirmed yet." For items that are not planned or out of scope, use "No live date." Do not invent a release date.
If a requested change is implemented but not yet verified, use "[plain-language item] - Verification pending. Timing not confirmed yet." instead of Fixed until verification is complete.
When this skill is used by address-feedback-with-replies, that skill's Slack
reply states take precedence: a Slack thread must receive Fixed, In
progress, or Clarification needed for the current run. In progress is
valid only when the invoking Slack identity, a legacy @agent-native message,
or another participant already owns the issue or is actively fixing it; it is
an open handoff that the next run must resolve to Fixed or Clarification
needed. Do not post Not fixed yet, Needs
clarification, or a bare Verification pending status in Slack. Ask one
concrete, plain-language clarification question only when reporter or product
input is still missing after the complete-thread and resolution-signal checks.
If the invoking Slack identity, a legacy @agent-native message, or another
participant already found, fixed, or is fixing the issue, do not ask the
reporter to restate it - verify the claim or continue the existing ownership
instead. Start any In progress or clarification reply
with a thank-you. For clarification, ask the question second;
Clarification needed remains an internal ledger state and must not appear as
the reporter-facing opening. Clarification needed is the one timing
exception: do not give a live estimate until the question is answered and the
fix is complete. If only internal test, deployment, or tooling verification is
unavailable, keep that blocker internal, do not post an external Slack status
solely for that reason, and resume the thread after verification is available.
Do not turn it into a reporter question. Keep the no-technical-details rule in
all cases.
Use this format:
## Feedback Status
- [plain-language item] - Fixed. Expected live by EOD.
- [plain-language item] - Not fixed yet. Timing not confirmed yet.
- [plain-language item] - Needs clarification. Timing not confirmed yet.
- [plain-language item] - Not planned. No live date.Do not include implementation details, technical explanations, file paths, line numbers, test counts, PR numbers, worktree names, stack traces, or internal labels in the user-facing reply. Do not add separate sections for bugs, UX suggestions, skipped items, or technical evidence. Keep each item to one short sentence.
github:gh-address-comments for GitHub PR review threads.github:gh-fix-ci for failing GitHub checks.sentry:sentry for production error investigation.frontend-design for approved UI implementation work.qa for broader browser verification.b0df876
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.