JetBrains/thinkrail is a desktop and mobile client that embeds the pi coding agent inside an interface for editing code and managing development workspaces. Developers use it to work on Git repositories through separate worktrees, a Monaco editor, terminals, Git views, specifications, and concurrent agent sessions. The catalogue entries are skills and instructions for its agent-based development workflow.
Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/jetbrains/thinkrail/reviewing-changesnpx skills add JetBrains/thinkrail --skill reviewing-changesgit clone --depth 1 https://github.com/JetBrains/thinkrailWrote 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/skills/jetbrains/thinkrail/reviewing-changes)<a href="https://agentmods.dev/skills/jetbrains/thinkrail/reviewing-changes"><img src="https://agentmods.dev/badge/skills/jetbrains/thinkrail/reviewing-changes.svg" alt="Measured on agentmods" 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 | $0.00059 | $0.01284 |
| Opus 5 | $0.00030 | $0.00642 |
| Sonnet 5 | $0.00012 | $0.00257 |
| Haiku 4.5 | $0.00006 | $0.00128 |
Grade A, and why
reviewing-changes 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 5d 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 — 75 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Reviewing a plan step's changes
You review code another agent wrote. Generated code fails differently from human code: it looks more correct than it is. Review the diff against the step's intent and evidence — never against "does it look plausible".
Order of review (where agent code actually fails)
- Intent match first. Re-read the step title/note. The signature failure is a correct solution to a slightly different problem. Does the diff do what the step asked — all of it, and only it?
- Scope drift. List the changed files before reading bodies. Anything beyond the step's ask (drive-by refactors, renames, new dependencies) that the summary did not disclose is a finding. Also scan every changed file for content that doesn't belong at all — a pasted URL/token/credential, leftover debug logging, commented-out code — it hides easily inside a file that's legitimately in scope, since nothing about the file itself looks wrong.
- Verify the verification claim. Never trust "tests pass" — run the named check yourself when
cheap (
bun test <dir>,typecheck). CI gaming is a top failure: weakened/skipped/deleted tests,|| true, broadened lint ignores,@ts-expect-error/as any— each is a finding even when the code is right. - Reality of every API. Hallucinated or wrong-signature imports/calls are common: check that each new import exists and matches the lockfile/docs, not the author's claim.
- Correctness at the edges. Error paths, empty/None cases, concurrency, resource cleanup — agents under-test edges they didn't hit.
- Hunt what is MISSING, not just what is wrong. The worst bugs in agent code are omissions — no
added line is wrong, a needed line is absent, so reading the diff top-to-bottom finds nothing. For
every piece of state the change introduces or touches (in-memory map/latch/registration/mark, temp
resource, persisted flag), trace its full lifecycle in the resulting code: where it is set → where
it is cleared → what clears it on EVERY exit path (success, error, abort, a later unrelated turn).
A set without a clear on some path is a finding. For every fire-and-forget or detached call, name
what rolls back when it rejects. Then check the OTHER side: for every READER of that same state, ask
what it does when the state is absent or stale. A permissive default at the read site (an optional
spread,
?? fallback, silently continuing instead of rejecting) is a finding exactly like a missing clear — a clean producer-side lifecycle still lets a consumer misbehave on the gap. - Invariant audit. Collect the explicit guarantees in the owning module's SPEC.md (and its parent) that touch the changed seams, then check each changed code path against each guarantee — mechanically, path × guarantee (spec_grep the area). A diff that contradicts a recorded decision or silently drops a stated guarantee is a finding even if it works. The reverse gap is a finding too: a diff that establishes or changes an invariant without updating the owning SPEC.md to state it — the next review reads a spec that no longer describes reality.
- Parallel surfaces and external defaults. When two paths produce the same artifact (primary + fallback, manual + automated, UI + wire), diff their inputs — one deriving from state the other ignores is a finding. For every external command/API call, name the defaults the code silently relies on (target branch, cwd, locale, config lookup) and verify each is the intended one. When a config documents a state ("unset ⇒ default"), verify the UI/wire can actually reach it — a documented state with no transition into it is a finding.
- Style is NOT your job unless it hides a bug.
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.
- 5d ago First seen · 75 lines · 59 tokens per session scan A 382ee34f49de
reviewing-changes is a skill published in the GitHub repository JetBrains/thinkrail (412 stars, last pushed yesterday), licensed Apache-2.0. It adds 59 tokens to every session and 1,284 once invoked, about $0.0003 per session on Opus 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 skills, from other repositories
goal-oriented
MUST use for ANY user request. This is a rigid requirement that applies to all tasks and conversations.
planning
MUST use after prompt-enhancer. Create implementation plan with MECE decomposition, dependency analysis, risk assessment, and mandatory plan-review.
mvp-first
Use when user requests complex systems involving multiple modules or subsystems - like 'build a XX system', 'design XX architecture', or 'implement XX with multiple features'. Triggers to prevent over-engineering before validating core assumptions.
ddd-tactical-design
Use when implementing domain logic, designing aggregates, entities, value objects, repositories, domain services, domain model design, ensuring data consistency, or when user mentions 'aggregate design', 'aggregate root', 'entity vs value object', 'domain event', 'repository pattern', 'domain service', 'data…
prompt-enhancer
MUST use before task execution. Clarify vague requirements, explore solutions, and ensure full understanding.
swot-analysis
Use when analyzing strengths/weaknesses/opportunities/threats, strategic planning, decision-making support, problem diagnosis, or when user mentions 'SWOT', '优劣势分析', '战略分析', '机会威胁', '态势分析', '战略规划', '竞品分析', '技术选型', '方案对比', '风险评估', '项目立项', '决策支持'.