review-chat-ux
Reviews a diff that changes what users read in Slack or Google Chat against the chat UX rules, and reports each violation with file:line and the rule it breaks.
- License 许可
- Apache-2.0
- 最近更新
- 2026-11-12
- Stars
- ★ 126
- Forks
- 43
01 前言 Front Matter
- name
- review-chat-ux
- description
- Reviews a diff that changes what users read in Slack or Google Chat against the chat UX rules, and reports each violation with file:line and the rule it breaks.
03 SKILL.md 正文
Task
Review a diff range for chat output that breaks .agents/rules/chat_ux.md.
The rule file owns the rules and their reasons; this skill holds the method. When they disagree, the
rule file wins and this skill needs fixing.
Run it in a context that did not write the change, as review-preflight arranges. Report; edit
nothing.
Scope
The paths: frontmatter of chat_ux.md is the list of chat output files. The diff touches chat
output when it changes a non-test file matching one of those globs, adds or rewords a string a user
reads in chat anywhere else, or changes who may confirm, stop or press a button. Inside scope, skip
hunks that change no user-visible string, layout, posting decision or click gate.
Workflow
1. Collect the user-facing surface
- Run
git diff <range>and list every hunk that adds or changes text a user reads: a string constant, a format string, a fixture's expected post, a Block Kit or Chat card builder, an instruction in aSOUL.mdthat shapes a reply. - Record for each: file:line, the exact text, and the moment it is read (ack, status, answer, question, failure, notice, button).
- Follow a changed constant to its call sites; a reworded constant can break a rule only where it posts.
2. Check each rule
Test every surface item against each rule's paragraph in chat_ux.md, by its heading. The cues
below say where violations hide; the paragraph is the test.
- The answer comes first, as one bold line: Flag an answer whose first line is context, a heading or a restatement; flag a change that moves the verdict below the fold or drops the headline's bold; flag reasoning, a table or long detail above the fold.
- The acknowledgement names its target: Flag an ack that is generic (
on it), capitalised, multi-sentence, not ended by a period, a restatement, named by the change instead of what is checked, or carrying a task id, attribution or plan. - One live status line, updated in place: Flag a new post (Slack
chat.postMessage, Google Chatmessages.create) for a progress step where an edit would do; flag a progress line that survives the answer. - No plumbing in user text: Flag task ids, card ids, session keys, file paths, tool names,
JSON, CLI flags, exit codes and roster ids used as names. Allow a cluster, a workload, a linked
pull request, a specialist's name where
SOUL.mdasks for attribution, a board read's short task id, and the command and output fences of the evidence sectionkanban_completerenders fromverified_claims. - Choices are buttons: Flag a choice offered without buttons, a button that does not send its answer, "reply X", "type X" or "say X" in a message body; flag more than 5 buttons in one row. Allow the text fallback listing the options.
- A failure is one plain line: Flag an apology, a failure that does not lead with one plain line, a gateway notice longer than that line, a failure that does not say what would work instead, a retry or re-route offered as text rather than a button, or a retry promise; for each promise, find the code that retries and flag it when none runs on that path.
- Speak up only when it matters: Flag a new message of its own that is not the acknowledgement, a pull request opened, a question only the user can answer, a failure, or done.
- A destructive action needs the asker's confirm: Flag a destructive action reachable without stating the resolved target back and the asker's explicit confirm, or a confirm another participant can satisfy.
- Renderers never compose: Flag a renderer that writes words of its own, reads text to fill a field or rewords; flag an invalid message rendered clipped or repaired instead of posting its text fallback whole. Allow what the rule's paragraph names as the backend's own.
3. Verify every candidate
- Re-read the code path that posts the text; drop a candidate that never reaches a user (a log line, a metric label, an error returned to an API caller).
- Check the
SOUL.mdsection the rule file names; a wording the section requires is not a violation of this skill, and a conflict between them is a finding against the rule file. - Check both backends: a rule broken only on Google Chat is still broken.
- Drop anything you cannot tie to a line in the diff.
Output
One row per surviving violation, ordered by how often a user meets the text:
| file:line | rule (chat_ux.md heading) |
text as posted | fix |
|---|
Above the table, list which rules were checked and which surface items were reviewed. "No violations" is complete only alongside that list.
04 同仓库更多 Skills
gce-compute-fleet-audit
Audits standalone GCE virtual machines, Managed Instance Groups (MIGs), serial console boot failures, sole-tenant node group headroom, and orphaned disk snapshots.
fleet-audit
Publish the findings of an autonomous fleet audit as one continuously-rewritten issue per audit stream per install on the GitOps repository's forge, and propose fixes as narrow remediation pull requests (merge requests on GitLab).
gke-rightsizing-checks
Five required checks, and the arithmetic, before any proposal to lower a workload's CPU or memory requests or limits, or to change a node pool's machine type or size, and before any claim of capacity freed. Read-only. For "lower the requests of X", "right-size this deployment", "can this pool use a smaller machine type", and any answer that claims nodes, CPU, memory or a percentage freed.
github-issue-resolver
Autonomously poll, triage, investigate, and resolve unaddressed open issues on our target repository (on GitHub or GitLab) strictly within authorized scope.
review-docs-drift
Reviews a pull request for documentation drift — finds which docs the change should have updated, verifies doc claims against source, and checks the docs map and AGENTS.md themselves for staleness.
install-kube-agents
Install, set up, or deploy kube-agents (the Kubernetes Agentic Harness) and its Platform Agent onto a GKE cluster in a GCP project, interactively or non-interactively. Use when asked to install, bootstrap, or onboard kube-agents, or to plan one with a dry run.