# Claude Code. Model and effort are per-invocation flags.
= [
"claude", "-p",
["--model", "{model}"],
["--effort", "{effort}"],
["--permission-mode", "acceptEdits"],
# Equals form on purpose: --allowedTools is variadic, so the separate
# form swallows the following positional prompt unless another flag
# happens to sit between them.
["--allowedTools=Bash,Read,Write,Edit,Glob,Grep,WebFetch"],
# Native structured output. Claude Code takes the schema as an argument rather
# than a path, hence {schema} and not {schema_file}. The group drops when
# there is no schema, which is every call that wants prose back.
#
# Without this, spar asked for JSON in the prompt and parsed whatever came
# back, and a long review hit the output limit: the response stopped before
# its outer object closed, the last complete thing in it was a nested finding,
# and half the review was lost.
["--json-schema", "{schema}"],
["--append-system-prompt", "{system}"],
"{prompt}",
]
= "placeholder"
= "text"
# Hints for `spar init`. Never validated against, only written as comments, so a
# value missing from this list still works. Reported by `claude --help`.
# The first entry of each list is what `spar init` writes as the suggested
# value, so the sensible default goes first rather than the CLI's own ordering.
= ["fable", "opus", "sonnet"]
= ["high", "low", "medium", "xhigh", "max"]
= "Model takes an alias or a full name like claude-fable-5. Check the current sets with: claude --help"