Repository navigation
Releases: tsyyan/buddie
Release list
buddie 1.1.1
- The
verbatimskill no longer tells Claude topip installbuddie from git: inside the plugin it uses the plugin's
own MCP tools (snap,source_text,verify_report), and outside it names one pinned PyPI release. Flagged by
the plugin directory's listing check. A test keeps skills, commands and hooks free of unpinned installs and
download-and-run launchers.
buddie 1.1.0
Ready for Anthropic's plugin directory. A fresh install now returns an answer only for what is false, the plugin has
listing fields, commands and a transcript switch, and an eval suite measures what the gate adds.
Measured with claude plugin eval (evals/, 2 runs per arm, Claude Opus 5.5): with the plugin the person got the truth
in every trap run (altered quote, pr: open-but-merged, ci: green-but-failed), without it in none of 6; the honest
control passed in both arms. The gate costs turns: 3.7 to 5 turns per run against 1, about twice the cost.
- A
buddie:line written before any check no longer covers what buddie finds false. For a quote not on its
page, an anchor or a number that does not hold, the line counts only after the hook has returned the text once,
with what it found. Found by the plugin evals: an altered quote went out under "buddie: unverified" in 2 of 2 runs.
An up-front line about what cannot be checked (a count made by hand, a missing anchor) works as before, and so
does everything withBUDDIE_STATE=0. - The skill and the MCP instructions say never to write a receipt line by hand; in the evals a model without the tool
wrote one. - Safe defaults for a fresh install. Without
buddie.tomlthe hook returns an answer only for what is false: a
quote not on its page, an anchor that does not hold. Before, every final answer without an anchor went back
("final answer has no anchor"), and the intro mode only came withbuddie init.final,proseand the new
contextclass (the 200k context rule) are off withoutbuddie.toml; a project withbuddie.tomlkeeps the
full defaults, so existing setups behave as before. - Slash commands:
/buddie:check [file or text]checks a text now (the last answer by default),/buddie:status
shows what is checked in this project and what the journal says,/buddie:initturns on the full checks. New CLI
commandbuddie status. - The final answer at
Stopcomes from the event'slast_assistant_messagefirst: Claude Code's docs say the
transcript is written asynchronously and may not hold the turn's last message yet. - Transcript reading can be turned off: the plugin option "Read the session transcript",
BUDDIE_TRANSCRIPT=0or
[transcript] read = false. Answers are still checked;run:anchors are then reported as unchecked. - Changed: an ambient
GITHUB_TOKENis no longer picked up. buddie uses only a token given to it by name, the
plugin'sgithub_tokensetting orBUDDIE_GITHUB_TOKEN(in CI:BUDDIE_GITHUB_TOKEN: ${{ github.token }}). - Listing fields for Anthropic's plugin directory in
plugin.json(display name, icon, documentation, support and
privacy links), a description by task, and a README that opens with what the plugin does and an example. - A returned text starts with one plain line saying what buddie is and that only the listed items were judged, and
ends with clearer fix instructions.
buddie 1.0.1
- Numbers in Russian sentences get their context: Russian words count, cut to a stem so case endings still match
(«постановления» finds «постановлением»), with Russian stop words. Before, only Latin words counted and every
number of a Russian sentence came outNO_CONTEXT. English context words are unchanged. - Clients without the skill get the quote and anchor format in the MCP instructions and tool descriptions;
EMPTY
is said not to be a pass. - Pages in windows-1251 and other non-UTF-8 encodings are read in their own encoding: the Content-Type charset,
<meta charset>/ http-equiv, the XML declaration or a byte-order mark. Before, garant.ru's text became U+FFFD,
and a page with Cyrillic in its first 4 KB was rejected as "binary body, not text", so no quote could be found.
buddie 1.0.0
First stable release: the receipt, the CLI, the MCP tools and buddie.toml follow semantic versioning from here on.
New places to run:
- Claude Desktop: an MCP Bundle (
manifest.json,.mcpbbuilt and attached to each release),
docs/install-claude-desktop.md. - Codex: plugin manifest
.codex-plugin/plugin.jsonwith the MCP server, the skills and a Stop hook; this repository
is a Codex marketplace too.docs/install-codex.md. - ChatGPT, claude.ai and the Claude API: a remote MCP server over Streamable HTTP (
buddie serve --http) with a
narrower tool set and a fetch guard (public addresses only, every redirect checked), a Docker image,
docs/deploy.md. - PyPI:
pip install buddie,uvx buddie serve; release workflow with trusted publishing, MCP Registry entry
io.github.tsyyan/buddie(server.json).
Changes:
-
Breaking: the quote module is
buddie.verbatimand its commandbuddie-verbatim. The top-levelverbatim
package and command clashed with an unrelatedverbatimon PyPI. -
The final answer at
Stopcomes from the event'slast_assistant_messagewhen the transcript has none (Codex). -
run:against a transcript that is not Claude Code's isUNCHECKABLE, not a falseBROKEN. -
BUDDIE_DEFAULT_REPOS=nonestopsverify_reportfrom defaulting to the repo around the server's cwd. -
The Claude Code plugin asks for an optional GitHub token (
userConfig, stored as a secret) instead of relying on
GITHUB_TOKENin the environment; an unset option is never sent. -
MCP tool annotations (read-only, non-destructive) for clients and directories.
-
Development moved here from the private lab repository: this repository is the source of buddie, no longer an
export.PROVENANCE.jsonmoved toresults/as the record of the last export (lab@ed8d971). -
CI:
apt-get updatebefore installing poppler-utils; tests import their sibling modules directly, so bare
pytestcollects them; jobs for the package, the bundle, the Docker image and the catalog manifests. -
Development moved here from the private lab repository: this repository is the source of buddie, no longer an
export.PROVENANCE.jsonmoved toresults/as the record of the last export (lab@ed8d971). -
CI:
apt-get updatebefore installing poppler-utils; tests import their sibling modules directly, so bare
pytestcollects them.