Skip to content

Releases: tsyyan/buddie

buddie 1.1.1

Choose a tag to compare

@github-actions github-actions released this 20 Oct 14:32
3a351b4
  • The verbatim skill no longer tells Claude to pip install buddie 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

Choose a tag to compare

@github-actions github-actions released this 20 Oct 13:24
99ec1cd

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 with BUDDIE_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.toml the 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 with buddie init. final, prose and the new
    context class (the 200k context rule) are off without buddie.toml; a project with buddie.toml keeps 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:init turns on the full checks. New CLI
    command buddie status.
  • The final answer at Stop comes from the event's last_assistant_message first: 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=0 or
    [transcript] read = false. Answers are still checked; run: anchors are then reported as unchecked.
  • Changed: an ambient GITHUB_TOKEN is no longer picked up. buddie uses only a token given to it by name, the
    plugin's github_token setting or BUDDIE_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

Choose a tag to compare

@github-actions github-actions released this 20 Oct 11:27
6e1168b
  • 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 out NO_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

Choose a tag to compare

@github-actions github-actions released this 19 Oct 13:20
24ff3c1

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, .mcpb built and attached to each release),
    docs/install-claude-desktop.md.
  • Codex: plugin manifest .codex-plugin/plugin.json with 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.verbatim and its command buddie-verbatim. The top-level verbatim
    package and command clashed with an unrelated verbatim on PyPI.

  • The final answer at Stop comes from the event's last_assistant_message when the transcript has none (Codex).

  • run: against a transcript that is not Claude Code's is UNCHECKABLE, not a false BROKEN.

  • BUDDIE_DEFAULT_REPOS=none stops verify_report from 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_TOKEN in 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.json moved to results/ as the record of the last export (lab@ed8d971).

  • CI: apt-get update before installing poppler-utils; tests import their sibling modules directly, so bare
    pytest collects 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.json moved to results/ as the record of the last export (lab@ed8d971).

  • CI: apt-get update before installing poppler-utils; tests import their sibling modules directly, so bare
    pytest collects them.