tuicr is a terminal interface for reviewing code changes, with Vim-style navigation, inline comments, and review tracking. It is used to inspect uncommitted changes, commit ranges, or pull requests from GitHub, GitLab, and Bitbucket, and can export reviews or markdown. Its catalogue entries provide instructions and a skill for working with the tool.
Borrowing it
Nothing to install: this file belongs to agavra/tuicr. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/agavra/tuicr/main/AGENTS.mdgit clone --depth 1 https://github.com/agavra/tuicrWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/instructions/agavra/tuicr/agents-md)<a href="https://agentmods.dev/instructions/agavra/tuicr/agents-md"><img src="https://agentmods.dev/badge/instructions/agavra/tuicr/agents-md/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/instructions/agavra/tuicr/agents-md"><img src="https://agentmods.dev/badge/instructions/agavra/tuicr/agents-md.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.11090 | $0.11090 |
| Opus 5.5 | $0.04436 | $0.04436 |
| Sonnet 5.5 | $0.02218 | $0.02218 |
| Haiku 4.5 | $0.01109 | $0.01109 |
Grade A, and why
tuicr AGENTS.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 478 lines — stays where its author put it; the contents beside it link to each section on GitHub.
AGENTS.md - tuicr
This document serves two purposes:
- Help coding agents understand the tuicr codebase structure
- Explain how to interpret review feedback generated by tuicr
Project Structure
tuicr is a Rust terminal UI application and library for code reviews. Here's the module structure:
src/
├── lib.rs # Public crate surface: ReviewStore, session/comment types, core modules
├── main.rs # Entry point, event loop, action dispatch
├── config/
│ └── mod.rs # User config loading (XDG on Unix, %APPDATA% on Windows)
├── app.rs # Application state (App struct, InputMode, etc.)
│ ├── coloring.rs # Render-time syntax coloring of hunks near the viewport
│ ├── editor_target.rs # Read-only snapshots of a PR revision for `$EDITOR`
│ └── file_filter.rs # File-tree include/exclude regex filters + `/` path search
├── error.rs # Error types (TuicrError enum)
├── editor.rs # External $EDITOR command construction and launch helpers
├── review_store.rs # Library API for session listing/loading and shared comment insertion
├── review_cli.rs # Non-interactive `tuicr review` subcommands over ReviewStore
├── update.rs # Public update facade
├── update/
│ ├── check.rs # Lightweight crates.io version checks for the TUI badge
│ ├── install.rs # `tuicr update` orchestration, release verification, and runtime adapter
│ └── install/ # Install detection, archive extraction, replacement, and focused tests
├── tuicrignore.rs # .tuicrignore loader + diff file filtering (gitignore-style patterns)
├── theme/
│ └── mod.rs # Theme palette definitions + bundled/local theme resolution
│
├── vcs/ # VCS abstraction layer
│ ├── mod.rs # detect_vcs(): auto-detect VCS (jj first, then git, then hg)
│ ├── traits.rs # VcsBackend trait, VcsInfo, VcsType, CommitInfo
│ ├── diff_parser.rs # Strict, count-driven hunk parser over structured FilePatch values
│ ├── git/ # Git backend selector (libgit2 by default, CLI for sparse/opt-in)
│ │ ├── mod.rs # GitBackend wrapper, backend preference, repo mode detection
│ │ ├── cli.rs # Git CLI backend used for sparse checkouts and backend = "cli"
│ │ ├── raw.rs # Exact `git diff --raw -z --patch` metadata/patch adapter
│ │ ├── libgit2.rs # libgit2-backed implementation used for normal Git repos by default
│ │ ├── repository.rs # CommitInfo, get_recent_commits()
│ │ ├── diff.rs # get_working_tree_diff(), get_commit_range_diff()
│ │ └── context.rs # fetch_context_lines() for gap expansion
│ ├── hg/ # Mercurial backend (always compiled)
│ │ └── mod.rs # HgBackend: uses hg CLI, parses with diff_parser::Hg
│ └── jj/ # Jujutsu backend (always compiled)
│ └── mod.rs # JjBackend: uses jj CLI, parses with diff_parser::GitStyle
│
├── forge/ # Remote forge integration (GitHub PR, GitLab MR, Bitbucket PR,
│ # Azure DevOps PR, Gerrit change review)
│ ├── mod.rs # Detect and parse GitHub/GitLab/Bitbucket/Azure/Gerrit remotes
│ # (parse_any_remote_url: Bitbucket, GitLab, Azure, Gerrit, then GitHub)
│ ├── traits.rs # ForgeBackend trait, ForgeRepository, PullRequestTarget,
│ │ # PullRequestDetails, PullRequestInfo, PrSessionKey,
│ │ # CreateReviewRequest, GhCreateReviewResponse, ForgeFileLinesRequest
│ ├── pr_open.rs # Async pr-open flow: build session from details + diff
│ ├── selector.rs # Review target selector state (Local | Pull Requests tabs)
│ ├── context.rs # Remote context expansion via ForgeBackend::fetch_file_lines
│ ├── local_git.rs # Shared `git show <sha>:<path>` blob read for all backends
│ ├── remote_comments.rs # RemoteReviewThread shape + visibility filter
│ ├── submit.rs # Submit pipeline: preflight mapping, resolver actions,
│ │ # InlineComment payload, build_review_body, SubmitEvent
│ ├── gitea/ # Gitea backend via `tea` CLI
│ │ ├── mod.rs # GiteaTeaBackend: ForgeBackend impl
│ │ ├── tea.rs # TeaCommandRunner: spawn `tea api -i`, read HTTP status off stderr
│ │ └── models.rs # JSON parsing for Gitea REST v1 responses
│ ├── github/ # GitHub backend via `gh` CLI
│ │ ├── mod.rs # GitHubGhBackend: ForgeBackend impl
│ │ ├── gh.rs # GhCommandRunner: spawn `gh`, parse output, error mapping
│ │ ├── models.rs # JSON parsing for `gh` REST + GraphQL responses
│ │ ├── pr_info.rs # Extended `gh pr view --json` parsing for PR description panel
│ │ ├── review_threads.rs # GraphQL query for existing review threads
│ │ ├── review_metadata.rs # GraphQL review commit metadata for since-last-review scoping
│ │ └── submit.rs # build_review_payload, create_review wiring
│ ├── gitlab/ # GitLab backend via `glab` CLI
│ │ ├── mod.rs # GitLabGlabBackend export
│ │ ├── glab.rs # ForgeBackend impl and glab command runner
│ │ └── models.rs # GitLab API response models
│ ├── bitbucket/ # Bitbucket Cloud backend via `bkt` CLI (no Data Center)
│ │ ├── mod.rs # BitbucketBktBackend export
│ │ ├── bkt.rs # ForgeBackend impl and bkt command runner
│ │ └── models.rs # Bitbucket Cloud REST 2.0 response models
│ ├── azure/ # Azure DevOps backend via REST (PAT) or `az rest`
│ │ ├── mod.rs # AzureDevOpsBackend export
│ │ ├── az.rs # ForgeBackend impl, AzHttp transports, remote/target parsing
│ │ └── models.rs # Azure DevOps REST 7.1 response models
│ └── gerrit/ # Gerrit backend via the Gerrit REST API (no CLI exists)
│ ├── mod.rs # GerritBackend export
│ ├── api.rs # ForgeBackend impl, GerritHttp transport, remote/target parsing
│ └── models.rs # Gerrit REST response models (ChangeInfo, CommentInfo)
│
├── model/
│ ├── mod.rs
│ ├── comment.rs # Comment, CommentType (Note/Suggestion/Issue/Praise)
│ ├── diff_types.rs # DiffFile, DiffHunk, DiffLine, FileStatus, LineOrigin
│ └── review.rs # ReviewSession, FileReview (the persisted review state)
│
├── input/
│ ├── mod.rs
│ ├── keybindings.rs # Action enum, map_key_to_action() for each InputMode
│ └── mode.rs # InputMode enum definition (unused, defined in app.rs)
│
├── persistence/
│ ├── mod.rs
│ └── storage.rs # save_session, load_session, manifest-backed session lookups
│
├── output/
│ ├── mod.rs
│ └── markdown.rs # export_to_clipboard(): generate markdown, copy to clipboard
│
└── ui/
├── mod.rs
├── app_layout.rs # Main render function, file list, diff view with inline comments
├── pr_info_panel.rs # PR description panel (status, reviewers, checks, body)
├── comment_navigator.rs # Sidebar comment index for jumping local/remote comments
├── status_bar.rs # Header, status bar, command line rendering
├── help_popup.rs # Help overlay (? key)
├── summary_popup.rs # :summary view of pending local-draft comments
├── theme_picker.rs # :theme runtime picker modal (live preview, / filter)
├── comment_panel.rs # Comment input dialog, confirm dialog
└── styles.rs # Color constants and style helper functions
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago Changed · +2 lines · +137 tokens per session aa68b1499722
- 7d ago Changed · +3 lines · +282 tokens per session de29a7cbf153
- 9d ago Changed · +1 lines · +32 tokens per session b60a5f9cda9b
- 12d ago Changed · +56 tokens per session 2a2c8a9975da
- 15d ago Changed · +65 tokens per session 13293fa5b2b2
- 17d ago Changed · +5 tokens per session d63b58efa780
- 19d ago Changed · +61 tokens per session 2f600d872372
- 20d ago Changed · +1 lines · +188 tokens per session ee420208189d
- 21d ago Changed · +3 lines · +338 tokens per session ea247eb4e06e
- 1mo ago First seen · 468 lines · 9,926 tokens per session scan A 80eac3013bb7
tuicr AGENTS.md is an instructions file published in the GitHub repository agavra/tuicr (3,481 stars, last pushed 3d ago), licensed MIT. It adds 11,090 tokens to every session, about $0.0444 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other instructions, from other repositories
vscode buildNext.instructions.md
Working notes and architecture documentation for the new esbuild-based build system in build/next. Use when making changes to the new build pipeline (transpile/bundle commands, NLS plugin, source-map handling, resource copying, or self-hosting watch tasks).
next.js AGENTS.md
AGENTS.md instructions for vercel/next.js, covering next.js development guide, codebase structure, monorepo overview, core package: packages/next and other important packages.
vscode oss-third-party-notices.instructions.md
Instructions for microsoft/vscode, covering vs code oss third-party-notices pipeline, architecture, pipeline flow in ci, cache eligibility and rollout and applying the notice (cutover).
langchain AGENTS.md
AGENTS.md instructions for langchain-ai/langchain, covering global development guidelines for the langchain monorepo, corridor security analysis, project architecture and context, monorepo structure and development tools & commands.
vscode copilot-instructions.md
Copilot instructions for microsoft/vscode, covering vs code copilot instructions, project overview, root folders, core architecture (src/ folder) and built-in extensions (extensions/ folder).
deepseek-harness AGENTS.md
AGENTS.md instructions for deepseek-ai/deepseek-harness, covering agents.md, pre-stable apis and released session data, repository layout, commands and host sandbox failures.