Skip to content
Agentmart
Submit a tool

triage-feedback

Use after an agent or reviewer has produced a batch of proposed changes to text files, such as a deep-quality review, Bugbot or code-review findings, a…

Skill by atrnh

IndexedMIT
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/atrnh-triage-feedback

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Use after an agent or reviewer has produced a batch of proposed changes to text files, such as a deep-quality review, Bugbot or code-review findings, a subagent's critique, or review notes pasted into the chat, and the user wants to decide what to act on. Builds a local dashboard where the user approves or rejects each change, seeing its problem, evidence, the case against it, the affected lines, and the exact replacement. Then applies the approved fixes or drafts a GitHub review. Use when the user asks for a triage dashboard, wants to go through feedback one item at a time, or asks which suggestions to accept. Do NOT use for triaging issues in an issue tracker, or for decisions that aren't tied to specific text in files.

Use cases: data, productivity, agent-building

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found
Runs as
Python package

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/triage-feedback

What's inside

Skill name
triage-feedback
Description
Use after an agent or reviewer has produced a batch of proposed changes to text files, such as a deep-quality review, Bugbot or code-review findings, a subagent's critique, or review notes pasted into the chat, and the user wants to decide what to act on. Builds a local dashboard where the user approves or rejects each change, seeing its problem, evidence, the case against it, the affected lines, and the exact replacement. Then applies the approved fixes or drafts a GitHub review. Use when the user asks for a triage dashboard, wants to go through feedback one item at a time, or asks which suggestions to accept. Do NOT use for triaging issues in an issue tracker, or for decisions that aren't tied to specific text in files.
License
MIT
Instructions
237 lines in SKILL.md · view on GitHub

Before installing

  • Ships executable scripts

Files (7)

  • SKILL.md
  • apply.py · dashboard/
  • build.py · dashboard/
  • decisions.py · dashboard/
  • review.py · dashboard/
  • serve.py · dashboard/
  • template.html · dashboard/

SKILL.md (first lines)

# Triage feedback

The dashboard turns a batch of feedback into a page where the user approves or rejects each
proposed fix. Each card shows the problem, its evidence, the case against changing it, the
affected lines in context, and the exact replacement. The scripts in this skill's `dashboard/`
folder need only Python 3 and Git; posting a review also needs `gh`.

| Script | Does |
|---|---|
| `build.py RUN/findings.json [--check]` | Checks every finding against the files and writes `index.html` and `resolved.json` |
| `serve.py start RUN` / `stop RUN` | Serves the page on localhost and saves decisions to `RUN/decisions.json` |
| `apply.py RUN [--dry-run] [--root PATH]` | Applies approved fixes to the files |
| `review.py RUN --summary TEXT` | Drafts a GitHub review from approved fixes as `RUN/review.json` (doesn't post) |

`apply.py` and `review.py` read approvals from `decisions.json`. When the user pasted their
decisions into the chat instead, pass `--approve F1,F3,...`.

## 1. Gather the feedback

The feedback can be a review you wrote in this session, another agent's output, a file, or
notes pasted into the chat. If a review skill produced it, follow that skill's guidance on IDs,
categories, and priorities.

Cards need a location in a file. Feedback about a design choice, a plan, or anything else
without one doesn't belong on the page. Leave it out, and tell the user which items you left
out so they can decide on them in the chat.

## 2. Make a run folder

Use `/tmp/feedback-triage/<slug>/`, for example `/tmp/feedback-triage/pr-42/` or
`/tmp/feedback-triage/launch-email/`. Everything for this triage lives there.

## 3. Point at the source

Line numbers must come from the exact text the user will judge.

- **Pull request.** Check out the PR's head commit in its own worktree, so local edits on
  the user's branch can't shift lines:

  ```bash
  gh pr view N --json headRefOid,baseRefName
  git fetch origin <baseRefName> pull/N/head
  git worktree add --detach /tmp/feedback-triage/pr-N/checkout <headRefOid>
  ```

  Source: `{"kind": "pr", "root": "checkout", "url": "<PR URL>", "base": "origin/<baseRefName>"}`.
  GitHub links to each snippet are added automatically.
- **The user's own changes.** Use their checkout as `root`. Set `base` to what the work
  branched from (such as `origin/main`), or `HEAD` to cover only uncommitted changes. Kind
  `changes`.
- **Plain files.** `root` is the folder that contains them. Kind `files`, and no `base`.
- **Pasted text** (an email, a draft in the chat). Save it verbatim to
  `RUN/source/<name>.md` (or `.txt`, `.rst`, whatever fits), then treat it as plain files with
  `"root": "source"`.

A relative `root` is resolved from the run folder.

## 4. Check each item before making a card

Treat feedback as claims to check, including feedback you wrote yourself. Reviewers, and
agents especially, cite lines that don't exist, flag problems the text doesn't have, and
report the same problem more than once.

- **Find the text.** If the quoted text or the cited lines aren't there, or the problem isn't
  where the feedback says, drop the item.
- **Confirm the problem.** Check it against the source, the code, or the facts where you can.
  If you can't confirm it, keep the card and begin its `problem` with "Unverified:".
- **Merge duplicates** into one card, and name every item it covers in `problem`.
- **Keep items you disagree with** when the user might still want them, and put your
  disagreement in `counter`.

## 5. Write `findings.json`

Give each card an ID. Keep any IDs the feedback already uses, so the user can refer to items
the same way in the chat and on the page. If it has none, number the items `F1`, `F2`, and so
on, in the order they appear. Use the feedback's own categories when it has them. Otherwise,
pick a few plain ones, such as Bug, Accuracy, Clarity, and Style. Priority 1 breaks the work or
misleads its reader, 2 noticeably hurts it, and 3 is polish.

The cards are only as useful as their fields:

- **`counter`** is the strongest honest case against making the change: scope, audience,
  intent, or cost. It's what lets the user reject with confidence. Don't leave it empty or
  make it a straw man.
- **`replacement`** is the exact text of whole lines, with the file's indentation, that
  replaces the lines from `start` to `end`. Use `""` to delete them. Prefer one tight fix per
  problem. When a finding needs a structural move with no line-level edit, use `fixNote`
  instead.
- **Anchor with `match`** (a phrase quoted from the file) rather than line numbers wherever
  you can. The build finds the lines for you and fails if the quote is missing or matches
  more than once. Use `occurrence` (1-based) only when repetition is unavoidable.

```json
{
  "title": "PR #42 review",
  "source": {
    "kind": "pr",
    "root": "checkout",
    "label": "owner/repo#42",
    "url": "https://github.com/owner/repo/pull/42",
    "base": "origin/main"
  },
  "findings": [
    {
      "id": "F1",
      "category": "Accuracy",
      "priority": 1,
      "title": "Install guide names the wrong minimum Python",
      "problem": "The guide says Python 3.8 or later, but `pyproject.toml` requires 3.10.",
      "evidence": [{"text": "pyproject.toml, requires-python", "url": "https://..."}],
      "counter": "Older versions may still run the parts of the tool this guide covers.",
      "comment": "",
      "context": [
        {"file": "docs/install.md", "match": "Python 3.8 or later"},
        {"file": "pyproject.toml", "match": "requires-python", "around": 0,
         "label": "What the package requires"}
      ],
      "fixes": [
        {"file": "docs/install.md", "match": "Python 3.8 or later",

From atrnh/skills, MIT.

More from atrnh/skills

Signals

Stars
0
Forks
0
Open issues
0
Last commit (this folder)
Oct 23, 2026 (7 days ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from atrnh

Cite this page

triage-feedback skill. Agent Mart. https://agentmart.dev/skills/atrnh-triage-feedback (last updated 2026-10-24)