{"slug": "show-hn-task-view-review-a-coding-agents-change-as-a-map-instead-of-a-diff", "title": "Show HN: Task-view – review a coding agent’s change as a map instead of a diff", "summary": "A developer released task-view, an open-source tool that converts a coding agent's description of its change into a single offline HTML page showing a graph of changed functions, components, endpoints and tests, step-by-step flows, and code alongside the agent's stated reasons. Task-view installs per-user with git as its only runtime dependency, works with any programming language and any coding agent that follows written instructions such as Claude Code and Codex, and checks every file, line and commit the agent cites against Git, flagging changed lines the agent did not describe. The tool is meant to let reviewers judge code rather than reconstruct structure from a flat diff.", "body_md": "**Review an agent's change as a map of how it fits together, not as a flat\nlist of diffs.**\n\nWhen a coding agent writes most of the code, reviewing it means opening the changed files in your IDE one by one and rebuilding in your head what calls what, which path a request now takes, and which test covers which piece. The diff shows lines; the structure of the change is left for you to work out.\n\n`task-view` puts that structure on the page for you. When the agent finishes\na task, it describes its change: the functions, components and tests it\ntouched, why, how they relate, and the user-visible flows they form.\n`task-view` turns that into one page you read in the browser: a graph of the\nchange, its flows step by step, and each piece's code next to the agent's\nreason for it. You spend your attention judging the code, not reconstructing\nit.\n\n- **The relations, already drawn.** Changed functions, components, endpoints\nand tests as a graph, across repos, so you see what connects to what\nwithout holding it in your head.\n- **Flows, step by step.** Each path through the change from entry point to\nboundary, with the tests that exercise it attached to the steps they\ncover.\n- **Code in context.** Click any piece to read its diff, or the code as it\nreads after the change, next to why the agent changed it and what it\nrelates to.\n- **A map you can trust.** Every file, line and commit the agent points at is\nchecked against Git, and the diff map flags changed lines the agent didn't\ndescribe, so the map matches the real diff. Whether the code is right is\nstill your call: test results and explanations are shown as the agent's\nword.\n- **One offline HTML file per task** that you can keep or share. Building it\nonly reads files and runs read-only Git; it never runs your tests, builds\nor other tooling.\n- **Works with any programming language.** Nothing is parsed: the map is\nbuilt from files, line ranges and diffs, so it fits Go, TypeScript,\nPython, Rust, SQL, config or infrastructure code alike, and changes that\nspan several languages and repos (a web client and its API, say).\nSyntax highlighting covers about 300 languages; anything else shows as\nplain text.\n- **Works with any coding agent** that can follow written instructions:\nClaude Code, Codex, and others.\n\n`task-view` installs for your user only: no `sudo` or administrator rights.\nThe only runtime dependency is `git`.\n\n**macOS and Linux:**\n\n```\ncurl -fsSL https://raw.githubusercontent.com/gtindo/task-view/main/scripts/install.sh | sh\n```\n\n**Windows (PowerShell):**\n\n```\nirm https://raw.githubusercontent.com/gtindo/task-view/main/scripts/install.ps1 | iex\n```\n\nThe scripts ([install.sh](https://github.com/gtindo/task-view/blob/main/scripts/install.sh), [install.ps1](https://github.com/gtindo/task-view/blob/main/scripts/install.ps1))\npick the binary for your system and CPU from the latest release, check it\nagainst the release checksums, install it in `~/.local/bin` (or\n`%LOCALAPPDATA%\\Programs\\task-view` on Windows), clear the macOS quarantine\nflag and add the folder to your `PATH` if needed. Open a new terminal\nafterwards; run the same command again to update. The\n[user guide](https://github.com/gtindo/task-view/blob/main/docs/USER_GUIDE.md#1-install) shows how to pin a version or\nread the script before running it.\n\n- **Manual download.** Get the file for your machine from the[latest release](https://github.com/gtindo/task-view/releases/latest) (`task-view-darwin-arm64` ,`task-view-darwin-amd64` ,`task-view-linux-amd64` ,`task-view-linux-arm64` or`task-view-windows-amd64.exe` ), rename it`task-view` (`task-view.exe` on\nWindows) and put it in a folder on your`PATH` . The[user guide](https://github.com/gtindo/task-view/blob/main/docs/USER_GUIDE.md#manual-download) has the exact commands.\n- **With Go:**`go install github.com/gtindo/task-view/cmd/task-view@latest` ,\nor`make install` from a checkout.\n\n1. \n**Install `task-view`** (above) and**teach your agent the format** once,\nin one of the three ways below.\n2. \n**Give the agent a task.** When it is done, it writes`.review/change-<task>.json` and checks it with`task-view validate` until\nthe account holds.\n3. \n**Open the review** with the command the agent gives you:\n\n```\ntask-view open .review/change-<task>.json\n```\n\n If something looks wrong, ask the agent to revise the code or the account and run `open` again.\n\n[`skills/task-review/SKILL.md`](https://github.com/gtindo/task-view/blob/main/skills/task-review/SKILL.md) is a ready-made\nskill. It tells the agent to run `task-view instructions` when it finishes a\ntask and follow what it prints, so the instructions always match the installed\nbinary. For Claude Code, copy it into the repo, or into `~/.claude/skills/`\nfor every repo:\n\n```\nmkdir -p .claude/skills/task-review\ncurl -fsSL https://raw.githubusercontent.com/gtindo/task-view/main/skills/task-review/SKILL.md -o .claude/skills/task-review/SKILL.md\n```\n\nAny agent that reads skills (a `SKILL.md` with `name` and `description` front\nmatter) takes the same file. It is also attached to every release.\n\nWrite the instructions into the repo and point your agent's context file at them:\n\n```\ntask-view instructions > TASK_REVIEW.md\n```\n\nThen add one line to that repo's `AGENTS.md` (Codex and most agents) or\n`CLAUDE.md` (Claude Code):\n\n```\nWhen you finish a task, follow TASK_REVIEW.md.\n```\n\nRefresh the file after upgrading `task-view`.\n\nNo setup at all: end your task prompt with\n\nWhen you're done, run `task-view instructions` and write a review file for\nthis task.\n\nThe same works for work that is already committed:\n\nRun `task-view instructions` and write `.review/change-<name>.json` for\ncommit `<sha>`. Don't change any code.\n\nThe page shows the same change four ways (Graph, Flows, Diff map, Claims), with an inspector for any piece you click. Each element also shows whether its pointer into the code holds, so you know which parts of the map are grounded in the real diff and which rest on the agent's word:\n\n| Status | Look | Meaning | \n|---|---|---|\n| Verified | Solid border, green check | The reference resolved and matches the files and the diff | \n| Contradicted | Red border, red ✕ | The reference resolved but the check failed: wrong lines, wrong change state, text not on that line | \n| Unresolved | Amber dashed border, ? | The file, line range or commit could not be found | \n| Agent statement | Dotted gray border, italic | Nothing to check: no reference, or the agent's own explanation | \n\nThe fill shows the change itself: green **added**, blue **modified**, red\n**deleted**, outline only for **unchanged**. The side panel always shows the\nagent's summary, each repo's commits from base to final state, the findings\nand the agent's notes.\n\nThe screenshots below are a real review of one commit of this repository, described by an agent.\n\nThe whole change at a glance (top of this page): source-code nodes grouped by\nrepo, endpoints between repos. Tests, docs and unchanged nodes sit behind the\ntoolbar switches. Search with `/`, click a node to focus on it and its\nneighbours.\n\nClick any node, edge, hunk or finding to open it on the right: where it is,\nwhy it changed in the agent's words, which tests cover it, how it relates to\nother nodes, and its code. The code box switches between **Diff** (changed\nlines with what they replaced) and **After** (the code as it reads after the\nchange).\n\nOne lane per user- or caller-visible path through the change, left to right, with the tests that exercise it hanging under the steps they cover.\n\nEvery changed file with a bar of its hunks, colored by whether a node describes them: green covered, amber partly covered, red not mentioned at all. This is where you check that nothing was left out.\n\nStatements a reviewer might doubt (\"the tab survives a reload\"), each with the evidence it rests on. Expand a piece of evidence to see the exact code or commit it points at.\n\nIf the review file still has errors, the page says so in a red banner, and the findings in the side panel list what does not hold: here an edge that points at text missing from its line, and changed CSS lines that no node mentions.\n\n| Guide | For | What it covers | \n|---|---|---|\n| [docs/USER_GUIDE.md](https://github.com/gtindo/task-view/blob/main/docs/USER_GUIDE.md) | You, the reviewer | Install, daily workflow, reading every part of the page, findings, keyboard, exit codes, troubleshooting | \n| [docs/TASK_REVIEW.md](https://github.com/gtindo/task-view/blob/main/docs/TASK_REVIEW.md) | The agent | The review file format and the step-by-step procedure; the same text `task-view instructions` prints | \n| [skills/task-review/SKILL.md](https://github.com/gtindo/task-view/blob/main/skills/task-review/SKILL.md) | The agent | The procedure packaged as a skill | \n| [specs/init.md](https://github.com/gtindo/task-view/blob/main/specs/init.md) | Contributors | The full specification: schema, checks, findings and views | \n\n| Command | What it does | \n|---|---|\n| `task-view validate <file> [--format text\\|json] [--scan-siblings]` | Schema, commit chain, reference and diff-level checks. Exit 0 ok, 1 contradicted/unresolved refs, 2 invalid file, 3 environment error | \n| `task-view open <file> [--out <path>] [--no-browser] [--scan-siblings]` | Same checks, then writes one offline HTML page (default `generated/<name>.html` next to the review file) and opens it. Exit 1 still renders the page, with a red banner | \n| `task-view schema` | JSON Schema of the review file | \n| `task-view languages` | Valid language names and their usual file patterns | \n| `task-view instructions` | The agent instructions for this binary's schema version | \n| `task-view version` | Binary and supported schema versions | \n\nOnly the repos listed in the review file are read. `--scan-siblings` also\nlooks at the folders next to them and warns (`unlisted_repo`) about Git repos\nwith uncommitted changes that the review doesn't list.\n\n``` php\nflowchart LR\n    A[\"Agent finishes<br/>the task\"] --> W[\"Writes<br/>.review/change-#lt;task#gt;.json\"]\n    W --> V{\"task-view<br/>validate\"}\n    V -- \"findings with hints\" --> F[\"Agent fixes<br/>the account\"]\n    F --> V\n    V -- \"exit 0\" --> O[\"task-view open\"]\n    O --> R[\"You review<br/>the page\"]\n    R -. \"ask for a revision\" .-> A\n```\n\n1. **The agent writes an account.**`.review/change-<task>.json` lists the\nrepos and commits it covers, one node per meaningful piece of the change\n(a function, a component, a config block, a test case), the edges between\nthem, the flows they form, and claims, each pointing at exact lines or\ncommits.\n2. **The agent validates it.**`task-view validate --format json` checks the\nschema, the commit chain, every reference and the diff coverage. Each\nerror or warning carries a hint written for the agent to act on (a wrong\nline range, text not on that line, changed lines no node describes), and\nthe agent repeats until the file validates.\n3. **You open it.**`task-view open` runs the same checks, reads only the\nrepos listed in the file, and writes the page to`.review/generated/change-<task>.html` . Each task keeps its own file, so\nearlier reviews stay in`.review/` .\n\nThese checks exist so the map you read matches the real diff. They say\nnothing about whether **the work is good**: that is what the page helps you\njudge. The tool reads files and runs a short list of read-only Git commands;\na test result on the page is always the agent's word.\n\n```\nmake test    # unit tests and golden tests on generated fixture repos\nmake build   # bin/task-view\nmake check   # vet, lint (golangci-lint, ESLint via npx) and test\n```\n\nCode rules and package boundaries are in [AGENTS.md](https://github.com/gtindo/task-view/blob/main/AGENTS.md).\n\nLayout: `cmd/task-view` (CLI), `internal/review` (model, embedded JSON\nSchema, structural rules), `internal/engine` (Git states, diff, reference and\ncoverage checks), `internal/render` (view data and the embedded page:\n`assets/app.js`, `assets/app.css`, vendored Cytoscape.js + ELK),\n`internal/langs` (Chroma lexers and highlighting), `internal/instructions`\n(`TASK_REVIEW.md`), `internal/fixture` (test repos), `scripts/` (the install\nscripts), `skills/` (the agent skill), `docs` (the user guide, screenshots and a copy of `TASK_REVIEW.md`\nregenerated by `make docs`).\n\nGolden output for the accurate fixture review lives in\n`cmd/task-view/testdata/valid.golden.json`; refresh it with `make golden`.\n\nReleases are built by [`.github/workflows/release.yml`](https://github.com/gtindo/task-view/blob/main/.github/workflows/release.yml)\nonly when a version tag is pushed; pushes to `main` never build one. The\nworkflow runs vet and tests, then `make release` for Linux (amd64, arm64),\nWindows (amd64) and macOS (Intel, Apple silicon), and publishes the binaries,\n`SHA256SUMS`, the guides and the skill as a GitHub release. Tags with a\nsuffix (`v0.2.0-rc.1`) are marked as pre-releases.\n\n```\ngit tag v0.2.0\ngit push origin v0.2.0\n```\n\n`make release VERSION=0.2.0` builds the same `release/` folder locally.\n\n`task-view` is a personal tool and a raw idea, built in a day. I don't accept\nissues or pull requests. If it fits most of your workflow but you want\nsomething different, fork it: the specification ([specs/init.md](https://github.com/gtindo/task-view/blob/main/specs/init.md)),\ncode rules ([AGENTS.md](https://github.com/gtindo/task-view/blob/main/AGENTS.md)) and golden tests are there so your own\nagent can reshape it safely.\n\n`task-view` is released under the [MIT License](https://github.com/gtindo/task-view/blob/main/LICENSE). The page embeds\nCytoscape.js and cytoscape-elk (MIT) and ELK (Eclipse Public License 2.0);\ntheir licenses are in\n[internal/render/assets/vendor/LICENSES.txt](https://github.com/gtindo/task-view/blob/main/internal/render/assets/vendor/LICENSES.txt)\nand ship with every release as `THIRD_PARTY_LICENSES.txt`.", "url": "https://wpnews.pro/news/show-hn-task-view-review-a-coding-agents-change-as-a-map-instead-of-a-diff", "canonical_source": "https://github.com/gtindo/task-view", "published_at": "2026-10-24 00:11:40+00:00", "updated_at": "2026-10-24 00:42:12.177300+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "developer-tools", "artificial-intelligence"], "entities": ["task-view", "Git", "Claude Code", "Codex", "GitHub", "gtindo"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/show-hn-task-view-review-a-coding-agents-change-as-a-map-instead-of-a-diff", "markdown": "https://wpnews.pro/news/show-hn-task-view-review-a-coding-agents-change-as-a-map-instead-of-a-diff.md", "text": "https://wpnews.pro/news/show-hn-task-view-review-a-coding-agents-change-as-a-map-instead-of-a-diff.txt", "jsonld": "https://wpnews.pro/news/show-hn-task-view-review-a-coding-agents-change-as-a-map-instead-of-a-diff.jsonld"}}