ryanvogel-opencode-note-review
v0.3.3
Published
OpenCode TUI review-note plugin and local HTML/PDF report generator.
Maintainers
Readme
OpenCode Content Review
Local OpenCode review-note tooling for model and release evaluations.
What It Does
- Adds a TUI slash command:
/note. - Lets the reviewer choose how many prompt/response pairs to capture.
- Lets the reviewer select or create a tag before saving.
- Saves each note as structured local JSONL under
.opencode/reviews/<tag>/. - Captures exact prompt text, model/version fields when available, reasoning effort, request IDs, tool inputs/outputs, and trace parts.
- Generates a minimal, academic-style HTML or PDF report.
Install From npm
Add the TUI plugin to .opencode/tui.json in the project where you want to review models:
{
"$schema": "https://opencode.ai/tui.json",
"plugin": [
["ryanvogel-opencode-note-review", {
"defaultPairs": 1,
"defaultTag": "General",
"outputDir": ".opencode/reviews",
"maxTextChars": 12000,
"includeToolOutputs": true
}]
]
}Restart OpenCode after editing tui.json.
Install the report CLI globally if you want the opencode-review command available outside OpenCode:
npm install -g ryanvogel-opencode-note-reviewYou can also run the report CLI with npm exec:
npx ryanvogel-opencode-note-review report --helpRun the report command without arguments for an interactive setup flow:
opencode-review reportIt asks for report name, notes input, output format, output path, and optional tag filter while showing defaults. The default notes input is .opencode/reviews, and the default output filename includes the report name and current date.
Install For Local Development
Build the package:
bun install
bun run buildFor local development, point .opencode/tui.json at the built file:
{
"$schema": "https://opencode.ai/tui.json",
"plugin": [
["/Users/ryanvogel/dev/opencode-content-review/dist/tui.js", {
"defaultPairs": 1,
"defaultTag": "General",
"outputDir": ".opencode/reviews",
"maxTextChars": 12000,
"includeToolOutputs": true
}]
]
}Restart OpenCode after editing tui.json.
Usage
In an OpenCode session, run:
/noteThe plugin asks for the number of prompt/response pairs to capture, then asks you to select or create a tag, then opens a note prompt. It writes notes under the selected tag:
.opencode/reviews/<tag>/tag.json
.opencode/reviews/<tag>/notes.jsonl
.opencode/reviews/<tag>/notes/<note-id>.jsonEach note is self-contained. For each captured pair, it stores the exact prompt, assistant output, model/provider IDs, request IDs when OpenCode exposes them, reasoning effort when available, token/cost metadata, tool inputs and outputs, raw message metadata, and trace parts such as reasoning, snapshots, patches, retries, and step markers.
Generate Report HTML
opencode-review report \
--input .opencode/reviews \
--out .opencode/reviews/reports/model-review.html \
--title "GPT-5.5 Model Review"Or after building:
opencode-review report --out .opencode/reviews/reports/model-review.htmlIf --title is omitted in an interactive terminal, the CLI asks for a report name. Default output filenames include the report name and current date, for example .opencode/reviews/reports/frontier-model-review-2026-05-13.pdf.
--input can be a single .jsonl file, a single note .json file, or a folder. Folder inputs are scanned recursively for .jsonl files and note_*.json notes, then deduped by note ID. This lets multiple reviewers send you their .opencode/reviews/<tag>/notes/*.json files or whole review folders.
Example combined folder workflow:
combined-notes/
alice/note_20260511_120000_a1b2c3d4.json
ben/notes.jsonl
casey/reviews/notes/note_20260511_130000_e5f6g7h8.jsonopencode-review report \
--input combined-notes \
--out reports/combined-model-review.pdf \
--title "Combined Model Review"Filter by tag:
opencode-review report \
--input combined-notes \
--tag gpt-5-5 \
--out reports/gpt-5-5-review.pdfGenerate Report PDF
The CLI can render the report directly to PDF with headless Chrome. On macOS it automatically checks /Applications/Google Chrome.app/Contents/MacOS/Google Chrome; on other systems it checks common Chrome/Chromium executable names in PATH.
opencode-review report \
--input .opencode/reviews \
--pdf .opencode/reviews/reports/model-review.pdf \
--title "GPT-5.5 Model Review"You can also use a .pdf output path:
opencode-review report --out .opencode/reviews/reports/model-review.pdfUseful PDF options:
--html <path>writes the intermediate HTML used for PDF rendering.--keep-htmlwrites a sidecar HTML file next to the PDF.--chrome-path <path>uses a specific Chrome or Chromium executable.--title <text>skips the interactive report-name prompt.--tag <name>filters by tag name or tag folder ID.
Notes
- Tool inputs and outputs are captured by default for technical review evidence. Set
includeToolOutputstofalseif notes get too large. maxTextCharslimits each prompt and response body to prevent accidental giant reports.- Use
defaultPairs: "all"only for short review sessions. - Use
defaultTagto change the default tag shown in the tag picker.
