fix(skill): split output rules + fix blank-reply bug for plain-text tools - #111
fix(skill): split output rules + fix blank-reply bug for plain-text tools#111grlee wants to merge 2 commits into
Conversation
|
Friendly heads-up: a user (me, in this case) just hit the blank-reply behavior live with |
The original PR ramarivera#111 patch added a "verbatim + visible" rule, but observed in practice that the LLM still occasionally emits a reply containing only the end-of-turn HTML comment — the exact silent-failure mode the rule warns against. Failure observed on a third repeated /buddy help in one session: model implicitly treats the result as "already shown" and drops to comment-only reply, which renders blank. Strengthen the rule with three additions: - Explicit "every time, every call, even on repeats" language to defeat the "they've seen it" inference - Reframe HTML-comment-only reply as a "hard floor" violation (was framed as "never emit", now framed as "broken reply, do not send") - Add a pre-send self-check ("does the visible reply contain the tool's result text? if no, paste it in") Empirically validated by re-running /buddy help after applying — verify in your environment with a plugin reload, then a /buddy help.
|
Pushed an additional commit ( What I saw: the original "verbatim + visible" wording held on the first one or two What the new commit changes:
After applying and reloading, three consecutive Happy to drop the new commit / squash / rebase / split into its own PR if any of that lands better — let me know. |
The original PR ramarivera#111 patch added a "verbatim + visible" rule, but observed in practice that the LLM still occasionally emits a reply containing only the end-of-turn HTML comment — the exact silent-failure mode the rule warns against. Failure observed on a third repeated /buddy help in one session: model implicitly treats the result as "already shown" and drops to comment-only reply, which renders blank. Strengthen the rule with three additions: - Explicit "every time, every call, even on repeats" language to defeat the "they've seen it" inference - Reframe HTML-comment-only reply as a "hard floor" violation (was framed as "never emit", now framed as "broken reply, do not send") - Add a pre-send self-check ("does the visible reply contain the tool's result text? if no, paste it in") Empirically validated by re-running /buddy help after applying — verify in your environment with a plugin reload, then a /buddy help. Signed-off-by: George Lee <grlee@users.noreply.github.com>
81bb23e to
6b9c3d6
Compare
…ools The CRITICAL OUTPUT RULES section in skills/buddy/SKILL.md previously treated every buddy tool result as ASCII art that must be echoed verbatim with no commentary. That works for tools that actually return ASCII art, but several buddy tools return plain text (buddy_help, buddy_unmute, buddy_mute, buddy_frequency, buddy_style, buddy_statusline, buddy_list, buddy_rename, buddy_save, buddy_dismiss, buddy_set_personality). Combined with the end-of-turn HTML comment pattern (<!-- buddy: ... -->), the verbatim-no-commentary rule produced replies whose only visible content was the HTML comment. Markdown renderers hide HTML comments, so users saw blank replies when calling /buddy help, /buddy mute, /buddy list, etc. This change splits the rules into two buckets that match the actual tool response shapes: - Visual-card outputs (strict verbatim): buddy_show, buddy_stats, buddy_pet, buddy_achievements, buddy_react. Same rules as before — output exactly as returned, no commentary. - Plain-text outputs (verbatim + visible): the eleven tools listed above. Output the result verbatim inside the reply with optional one-sentence confirmation, so the user can actually see what happened. Explicitly warns against emitting a reply whose only visible content is the end-of-turn HTML comment. Also adds blank lines around the fenced code blocks in the MCP-failure diagnostic section so the bash blocks render correctly inside numbered list items (CommonMark renderers vary on whether blank lines are required; adding them is the safe form). Signed-off-by: George Lee <grlee@users.noreply.github.com>
The original PR ramarivera#111 patch added a "verbatim + visible" rule, but observed in practice that the LLM still occasionally emits a reply containing only the end-of-turn HTML comment — the exact silent-failure mode the rule warns against. Failure observed on a third repeated /buddy help in one session: model implicitly treats the result as "already shown" and drops to comment-only reply, which renders blank. Strengthen the rule with three additions: - Explicit "every time, every call, even on repeats" language to defeat the "they've seen it" inference - Reframe HTML-comment-only reply as a "hard floor" violation (was framed as "never emit", now framed as "broken reply, do not send") - Add a pre-send self-check ("does the visible reply contain the tool's result text? if no, paste it in") Empirically validated by re-running /buddy help after applying — verify in your environment with a plugin reload, then a /buddy help. Signed-off-by: George Lee <grlee@users.noreply.github.com>
6b9c3d6 to
ea8c412
Compare
|
Hey @grlee — thanks for the patience here, and for the live-regression follow-up commit. Yes please: a rebase onto current The blank-reply fix and the hardened visibility rule both look worth landing. Once it's rebased and green we'll get it reviewed promptly. 🤖 This content was generated with AI assistance using Claude Fable 5. |
Problem
The
CRITICAL OUTPUT RULESsection inskills/buddy/SKILL.mdtreats every buddy tool result as ASCII art that must be echoed verbatim with no commentary. That's correct for some tools, but several buddy tools return plain text:buddy_help,buddy_unmute,buddy_mute,buddy_frequency,buddy_style,buddy_statusline,buddy_list,buddy_rename,buddy_save,buddy_dismiss,buddy_set_personalityCombined with the end-of-turn
<!-- buddy: ... -->HTML comment pattern, the verbatim-no-commentary rule produced replies whose only visible content was the HTML comment. Markdown renderers hide HTML comments by default, so calling/buddy help,/buddy mute,/buddy list, etc. could result in a blank-looking reply to the user.Fix
Splits the rules into two buckets matching the actual tool response shapes:
buddy_show,buddy_stats,buddy_pet,buddy_achievements,buddy_react. Same rules as before: output exactly as returned, no commentary.The "name reactions" rule moves into its own subsection rather than being a trailing paragraph after the verbatim rules.
Bonus markdown fix
Adds blank lines around the fenced code blocks in the MCP-failure diagnostic section so the bash blocks render correctly inside their numbered list items. CommonMark renderers vary on whether blank lines are required around fences inside list items; adding them is the safe form.
Verification
server/index.tsand checking whichserver.tool(...)registrations return rawcardmarkdown vs string templates.Out of scope