The install path is a curl | bash one-liner, and one of the things it switches on spends
the user's Anthropic quota by default. Disclosure is not the same as consent.
Evidence
The default is on. hooks/session-review.sh:186:
REVIEW_ON="${SKILL_COMPOUNDER_REVIEW:-1}"
:332 is the first gate: [ "$REVIEW_ON" = "0" ] && refuse 10 "disabled by SKILL_COMPOUNDER_REVIEW=0".
So the off switch exists and the default is on. The forge arm below it is the opposite
shape, REVIEW_FORGE="${SKILL_COMPOUNDER_REVIEW_FORGE:-0}" (:205), which is the pattern
this issue asks for on the review arm too.
The README does disclose it. README.md:70:
Calls the Anthropic API, on by default. After a long session ends, one detached
claude -p reviews that session for a repeatable procedure. Costs and off switch: What
runs against the API. Not a hook entry, insight-capture.sh
starts it, so nothing wires it into your settings
and README.md:121 carries measured cost: two runs on sonnet over a 60 KB digest at $0.19
in 60s. README.md:421 repeats that it costs money and is on by default.
The installer does not. install.sh:3 is the advertised command:
curl -fsSL https://raw.githubusercontent.com/ContextLab/claude-skill-compounder/main/install.sh | bash
A user who runs that has not necessarily read README.md:70, and nothing in the install
output asks. The real spend is on disk: skillinsight reviews --all shows 6 dispatched
reviews at $0.04 to $0.22 each.
This is also the user's own stated constraint. From the audit's quoted prompt history
(notes/2026-09-02-audit-and-replan.md, agent 1): "does claude -p use my max subscription?
... if api credits, don't use it".
What to change
The spend should require a yes, not a no.
- Default
SKILL_COMPOUNDER_REVIEW to 0, matching SKILL_COMPOUNDER_REVIEW_FORGE.
install.sh prints the measured cost and the command that switches the review on, and
turns it on only for a user who passes a flag or answers an interactive prompt. A piped
install has no tty, so the non-interactive default is off.
skillforge doctor reports whether the review arm is on, so a user can see it without
reading a script.
README.md:70 and :421 say the default has changed.
Acceptance
- A test installs into a temp config with no tty and asserts the review arm is off.
- A test installs with the opt-in flag and asserts it is on.
- The gate order in
hooks/session-review.sh is unchanged apart from the default: gate 10
still refuses first, and every gate still fails closed.
The install path is a
curl | bashone-liner, and one of the things it switches on spendsthe user's Anthropic quota by default. Disclosure is not the same as consent.
Evidence
The default is on.
hooks/session-review.sh:186:REVIEW_ON="${SKILL_COMPOUNDER_REVIEW:-1}":332is the first gate:[ "$REVIEW_ON" = "0" ] && refuse 10 "disabled by SKILL_COMPOUNDER_REVIEW=0".So the off switch exists and the default is on. The forge arm below it is the opposite
shape,
REVIEW_FORGE="${SKILL_COMPOUNDER_REVIEW_FORGE:-0}"(:205), which is the patternthis issue asks for on the review arm too.
The README does disclose it.
README.md:70:and
README.md:121carries measured cost: two runs onsonnetover a 60 KB digest at $0.19in 60s.
README.md:421repeats that it costs money and is on by default.The installer does not.
install.sh:3is the advertised command:A user who runs that has not necessarily read
README.md:70, and nothing in the installoutput asks. The real spend is on disk:
skillinsight reviews --allshows 6 dispatchedreviews at $0.04 to $0.22 each.
This is also the user's own stated constraint. From the audit's quoted prompt history
(
notes/2026-09-02-audit-and-replan.md, agent 1): "does claude -p use my max subscription?... if api credits, don't use it".
What to change
The spend should require a yes, not a no.
SKILL_COMPOUNDER_REVIEWto0, matchingSKILL_COMPOUNDER_REVIEW_FORGE.install.shprints the measured cost and the command that switches the review on, andturns it on only for a user who passes a flag or answers an interactive prompt. A piped
install has no tty, so the non-interactive default is off.
skillforge doctorreports whether the review arm is on, so a user can see it withoutreading a script.
README.md:70and:421say the default has changed.Acceptance
hooks/session-review.shis unchanged apart from the default: gate 10still refuses first, and every gate still fails closed.