Summary
wr-voice-tone:agent (the before-editing voice/tone reviewer, packages/voice-tone/agents/agent.md) is instructed to write its verdict to a file it has no tool to write. Its frontmatter grants tools: Read, Glob, Grep (no Bash, no Write), but the body instructs it to record its verdict via printf '...' > /tmp/voice-tone-verdict:
- line 34:
Then printf 'PASS' > /tmp/voice-tone-verdict and stop.
- line 74:
Write printf 'FAIL' > /tmp/voice-tone-verdict for guide gaps.
- lines 78-80:
After completing your review, write your verdict to /tmp/voice-tone-verdict: followed by the two printf forms.
Because the agent has no Bash or write capability, the marker file is never created. The agent returns its verdict in prose only, and any caller that keys on the /tmp/voice-tone-verdict marker sees no verdict.
Impact
Observed across a full /wr-newsletter session (downstream adopter, v0.5.10): every wr-voice-tone:agent invocation returned a prose-only verdict and explicitly noted it could not write the marker ("the parent should run printf ..."). Callers that rely on the file marker get no signal; callers that parse the prose verdict work, but the documented file-marker contract is dead.
This is a sibling of the external-comms marker class: the external-comms reviewer marker is written by a PostToolUse:Agent hook, not by the agent itself, which is the pattern that works.
Suggested fixes (any one)
- Remove the file-write instruction from
agents/agent.md and rely on the structured prose verdict (simplest; matches what already works in practice).
- Grant the agent a write-capable tool so the printf can run (widens the agent's tool surface; least preferred).
- Move marker-writing to a PostToolUse:Agent hook that derives the verdict from the agent's structured output, mirroring the external-comms-mark-reviewed.sh pattern (most consistent with the rest of the suite).
Environment
- Plugin:
@windyroad/voice-tone@0.5.10
- File:
packages/voice-tone/agents/agent.md (lines 34, 74, 78-80)
- Surface:
wr-voice-tone:agent invoked as the before-editing voice/tone reviewer.
Summary
wr-voice-tone:agent(the before-editing voice/tone reviewer,packages/voice-tone/agents/agent.md) is instructed to write its verdict to a file it has no tool to write. Its frontmatter grantstools: Read, Glob, Grep(noBash, noWrite), but the body instructs it to record its verdict viaprintf '...' > /tmp/voice-tone-verdict:Then printf 'PASS' > /tmp/voice-tone-verdict and stop.Write printf 'FAIL' > /tmp/voice-tone-verdict for guide gaps.After completing your review, write your verdict to /tmp/voice-tone-verdict:followed by the two printf forms.Because the agent has no Bash or write capability, the marker file is never created. The agent returns its verdict in prose only, and any caller that keys on the
/tmp/voice-tone-verdictmarker sees no verdict.Impact
Observed across a full
/wr-newslettersession (downstream adopter, v0.5.10): everywr-voice-tone:agentinvocation returned a prose-only verdict and explicitly noted it could not write the marker ("the parent should runprintf ..."). Callers that rely on the file marker get no signal; callers that parse the prose verdict work, but the documented file-marker contract is dead.This is a sibling of the external-comms marker class: the external-comms reviewer marker is written by a PostToolUse:Agent hook, not by the agent itself, which is the pattern that works.
Suggested fixes (any one)
agents/agent.mdand rely on the structured prose verdict (simplest; matches what already works in practice).Environment
@windyroad/voice-tone@0.5.10packages/voice-tone/agents/agent.md(lines 34, 74, 78-80)wr-voice-tone:agentinvoked as the before-editing voice/tone reviewer.