What is Tasuki?
Tasuki (襷) is a code review assistant designed for the AI-assisted development workflow. It provides a structured interface for humans to review code changes generated by Claude Code.
The Problem
When Claude Code generates code changes, the standard workflow is:
- Claude makes changes across multiple files
- You run
git diffin the terminal - You read through raw diff output
- You copy-paste feedback back to Claude
This works, but it's tedious — especially for large changes spanning many files.
The Solution
Tasuki provides a purpose-built review interface:
┌─────────────────────────────────────────────────────┐
│ Toolbar: Split│Unified Scroll│Wrap Expand│Collapse │
├──────────┬──────────────────────┬───────────────────┤
│ Sidebar │ │ │
│ │ Diff Viewer │ Document Pane │
│ Files │ │ │
│ Docs │ - Inline comments │ - Markdown │
│ │ - Line selection │ - Mermaid │
│ │ - Syntax highlight │ - Code blocks │
├──────────┴──────────────────────┴───────────────────┤
│ Review Panel: Comments • Copy All • Approve/Reject │
└─────────────────────────────────────────────────────┘Key Concepts
The Baton Relay
The name "tasuki" (襷) refers to the sash worn by relay runners in Japanese ekiden races. It represents the handoff between Claude Code and the human reviewer:
- Claude Code writes code → passes the baton
- Human reviews in Tasuki → adds comments → passes back
- Claude Code addresses feedback → passes again
- Repeat until approved
Commit Gate
When you approve a review, Tasuki writes a gate file that a git pre-commit hook checks. This ensures that:
- Unapproved changes cannot be committed
- All review comments must be resolved before approval
- The gate is invalidated when the diff changes
Display Modes
| Mode | Layout | Use Case |
|---|---|---|
| Split | Diff + Document pane | Review with specs side-by-side |
| Diff Only | Full-width diff | Focus on code changes |
| Viewer | Document + Terminal | Read docs and run commands |
Tech Stack
Tasuki is built with:
- Tauri v2 — Native desktop app with Rust backend
- React 19 — UI rendering
- Zustand 5 — State management
- @pierre/diffs — Diff rendering in Shadow DOM
- xterm.js — Embedded terminal