Help us shape the future of Go! Take the 2026 Go Developer Survey

claudecli

package
v0.1.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 26, 2026 License: MIT Imports: 8 Imported by: 0

Documentation

Overview

Package claudecli implements the Claude model adapter via `claude --print --output-format=text`. Prompts are piped via stdin per ADR 0007.

Package claudecli implements the Claude model adapter. Lands in M7.

Index

Constants

View Source
const DefaultInputBudgetBytes = 256 * 1024

DefaultInputBudgetBytes caps the prompt size sent to Claude. Calibrated by spike S9 against 26 real public PRs (median 7.9 KB, max non-outlier 47.4 KB, one 2.2 MB mega-PR rejected). 256 KB cleanly bisects: every reviewable PR passes with a ~5x safety margin, unreviewable mega-PRs fail with an actionable message. See docs/model-adapters.md § Diff Size and Context Budget for the rationale; spikes/s9-input-budget/main.go is the measurement tool — re-run when models change or the prompt scaffold grows.

Variables

This section is empty.

Functions

This section is empty.

Types

type Adapter

type Adapter struct {
	// contains filtered or unexported fields
}

Adapter implements the model.Model interface against the Claude CLI.

func New

func New(run provider.Runner) *Adapter

New constructs an Adapter. Passing nil uses provider.DefaultRunner; lookPath defaults to exec.LookPath. Tests override fields directly (the package is internal-only).

func (*Adapter) Name

func (a *Adapter) Name() string

Name returns the model identifier surfaced to users via --model and attached to validated findings.

func (*Adapter) Preflight

func (a *Adapter) Preflight(_ context.Context) error

Preflight verifies the claude binary is on PATH. The model is never invoked when this fails; the user sees an actionable install hint instead of a stack trace from os/exec.

func (*Adapter) Review

Review invokes claude with --print --output-format=text. Stdin piping, JSON shape, and validation are prompt-engineered (see prompt-contract.md): the model is instructed to emit a {"findings":[...]} JSON object as its entire response, so text mode returns exactly that.

We deliberately do NOT use --output-format=json, which returns a JSON array of event records ({"type":"system",...}, {"type":"assistant",...}, {"type":"result","result":"<model text>",...}). That envelope would have to be unwrapped before parsing; text mode skips that step. Verified via spike M7a-followup (diffsmith-e2w).

func (*Adapter) Synthesize

func (a *Adapter) Synthesize(ctx context.Context, input *review.ReviewInput, results []*review.ModelReviewResult) (*review.ModelReviewResult, error)

Synthesize runs claude against the synthesis prompt that combines the diff with N other reviewers' findings.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL