Build a jev review Config with Claude Code
jev review judges whether your tests exercise the behaviors you listed and whether your implementation contradicts the spec section you named. It sends those files to Jev and answers with probabilities. It does not find bugs, review style, check security, or verify that the code is correct, and its readings drift between runs on the same input.
This page covers getting the spec and jev-review.json written by the jev-review Claude Code plugin. Writing them by hand is covered by Review your codebase with jev and How to write a spec jev review can use.
Goal: a spec and a jev-review.json for your repository that pass jev review --dry-run.
Prerequisites
- Claude Code.
jevonPATH, at a release withjev review --dry-run. Install withgo install github.com/therealbill/typesafe-go/cmd/jev@latest(Go 1.25 or newer), or download a binary from the releases page. Check withjev review --help | grep dry-run.- A repository with tests.
TYPESAFE_API_KEYis not needed until the last step.
Steps
1. Add the marketplace and install the plugin
Run these two commands in Claude Code:
/plugin marketplace add therealbill/typesafe-go
/plugin install jev-review@typesafe-goRun /plugin and confirm jev-review is listed among your installed plugins.
2. Run /jev-review:setup in the repository
Run /jev-review:setup in the repository you want to review. It takes two optional arguments: a spec path, then a config path.
/jev-review:setup
/jev-review:setup docs/design.md
/jev-review:setup docs/design.md internal/widgets/jev-review.jsonThe config path defaults to jev-review.json in the current directory.
When you give no spec path, the command searches the repository for candidate spec files. If it finds none, it switches to new-spec mode and writes the spec at docs/spec.md when a docs/ directory exists, or at SPEC.md otherwise.
3. Approve the unit map
The command surveys the repository and shows a table like this one:
Spec: docs/design.md (existing)
| Unit | Heading | Implementation | Tests | Bytes | Evidence |
|---|---|---|---|---|---|
| retry | ## Retry policy (existing) | retry.go, transport.go | retry_test.go, client_test.go | 11520/34110 | client_test.go asserts on retry-after-ms and the budget |Unit is the unit name. Heading is the spec heading it maps to, marked existing or new. Implementation lists the files that implement the unit. Tests lists the files that test it. Bytes is the implementation bundle’s size and the tests bundle’s size, in bytes. Evidence states why those test files were paired with that implementation.
A ! next to a side of the Bytes column marks that side over 50000 bytes. That unit should be split.
You get one question: “Approve this unit map?” Answer “Approve as is” to continue, or “Describe changes” to have the table rerun with your changes applied. This loops until you approve.
4. Read the hand-off
The hand-off lists the files written or edited, the final dry-run table, every sentence written from code with its source file and line, and the next command to run.
The command derived each sentence from reading the code. Confirm that each one states intent.
5. Rerun the dry run yourself
You can rerun jev review --dry-run yourself at any point:
$ jev review --dry-run
review: checked 2 units
# jev review --dry-run
budget: 50000 bytes each for implementation and tests
| Unit | Spec bytes | Implementation bytes | Tests bytes | Truncated | Status |
|---|---|---|---|---|---|
| retry | 186 | 269 | 282 | no | ok |
| validation | 132 | 227 | 176 | no | ok |
exit 0Unit is the unit name. Spec bytes is the size of the extracted spec section. Implementation bytes and Tests bytes are each bundle’s size before truncation. Truncated is yes when a bundle was cut to fit the budget. Status is ok or error.
6. Run jev review for the readings
This step needs TYPESAFE_API_KEY set. Running jev review, without --dry-run, sends the spec section and every listed file to the TypeSafe API.
See Review your codebase with jev for how to triage the flags it returns. The plugin’s skill also triages flags when you paste them back into the Claude Code session.
Verify it works
jev review --dry-run; echo $? prints a table with an ok row per unit and 0.