Releases: llamadrive/bengo-toolkit
Release list
v3.8.2
バグ修正のみの patch リリース(v3.8.1 → v3.8.2)。
修正
/typo-checkが原本 DOCX を直接書き換えていた不具合を修正 (#38): 原本を編集せず、複製{元ファイル名}_reviewed.docxを作ってから複製に対して校正・コメント付与を行う方式に変更。原本はバイト単位で無変更に保たれる。修正履歴(track changes)付きとはいえ原本ファイル自体が改変されており、track changes が無効化・破損した環境では原本に修正が追跡なしで焼き込まれ復元手段が無くなる懸念があった。複製先が既存の場合は上書き可否を確認する。/quickstartの校正デモが同梱サンプルを破壊していた不具合を解消 (#38): デモ実行時にサンプル原本を in-place で書き換えていた。サンプルを試用フォルダへ複製してから実行する方式に変更。
影響範囲
DOCX を書き込むスキルは /typo-check のみ。/lawsuit-analysis・/verify は DOCX を読取専用で扱うため影響なし。XLSX を扱う /template-fill は元からテンプレート原本を複製して outputs/ に出力する方式で、原本は無変更。
原本ファイルを扱う /typo-check 利用者は更新を推奨する。
v3.8.1
バグ修正のみの patch リリース(v3.8.0 → v3.8.1)。
修正
- 訴訟分析レポートの table が空欄になる不具合を修正 (#32):
/lawsuit-analysisの登場人物・主張と認否・証拠一覧の表で、列見出し・セルが空欄になっていた(.agentの table スキーマが同梱 renderer と乖離。列定義id/name→key/label、認否を{ "state": ... }に修正)。 /verifyの agent-format 接続テストが常に失敗する不具合を修正 (#35): 有効な.agentでも常に検証エラーを返していた。render_agent_inlineの上流不具合を回避しrender_agent_fileに切替。成果物・実描画には元から影響なし(自己診断のみ)。
いずれも既存 v3.8.0 install で発生していた不具合。更新を推奨する。
v3.7.9
[3.7.9] - 2026-05-30
Added
/feedback—/report-issueのエイリアス。feedbackという語から
コマンドを探す利用者が多いため、同一の動作をする別名コマンドを追加した。
挙動は/report-issueと完全に同一で、内部的に同じ
skills/report-issue/SKILL.mdの手順を実行する。
Fixed
scripts/verify_mcp_integrity.py— 日本語 Windows(cp932)で
UnicodeEncodeErrorにより MCP 整合性チェックが一度も走らなかった問題を
修正。main()冒頭で stdout/stderr を UTF-8 に再構成する(既存の
scripts/verify.pyと同じ手法)。(#23, thanks @Just2enough)
v3.7.8
[3.7.8] - 2026-05-14
Added
/report-issue— 不具合の報告・機能の要望・感想を GitHub アカウント
なしで送るためのスラッシュコマンド。利用者から種別と本文を聞き取り、
プラグイン版・OS・実行環境などの自動診断情報を統合した Markdown 形式の
下書きを~/.claude-bengo/reports/feedback_<日時>.mdに書き出す。下書きは
OS 既定のテキストエディタ(macOS: TextEdit / Windows: メモ帳 / Linux:
xdg-open)で自動的に開く。同時に
llama-drive.com/bengo-toolkit/feedback
のフィードバックフォームをブラウザで開く(種別・診断情報は URL の
query param で渡してフォーム側が自動入力する)。利用者はエディタの本文を
コピーしてフォームに貼り付け、内容を確認してから送信する。プラグインが
自動送信することはなく、本文は URL に乗らないため、ブラウザ履歴や
サーバアクセスログには本文が残らない。skills/_lib/report.py— 上記コマンドの実装本体。emitサブコマンドで
下書きの書き出し・エディタ起動・ブラウザ起動を担当する。本文はファイル
経由または stdin で受け取り、URL には乗せない。--no-openで SSH / CI 等
ヘッドレス環境向けにエディタ・ブラウザ起動を抑止できる。
v3.7.7
[3.7.7] - 2026-05-14
Fixed
- v3.7.6 で取りこぼした user-facing 文字列をプレーン日本語に統一 —
skills/_lib/template_lib.py:489のPIIFoundErrorメッセージ(PII/
user スコープ/case スコープが混在)を「クライアントの個人情報」
「この PC の全案件で共通」「この案件のみ」へ書き換え。workspace.pyの
firm-setup --unset戻り値 JSON message・引数欠落時の error message も
「事務所共有」「保存先フォルダのパス」表現に統一。firm-setup実行時に
自動生成されるREADME.mdも同様に書き直した。 /quickstartの同梱サンプル外パス拒否メッセージ — 内部実装の
fixtures/パスをユーザーに露出していたのを「お試しでは同梱サンプルのみ
使える」表現に変更。first_run.py初回案内の HMAC 言及を平易化 — 「HMAC チェーン付き」を
「改ざん検知付き」に置換。仕組み名ではなく目的をユーザーへ示す。/template-listの操作一覧 — 「個人情報のコードレベルチェック」を
「個人情報を自動チェック」に書き直し。tests/menu_surface.shの Cowork 漏れ検査パターン — quickstart の
ブロック対象 4 件のうち 2 件(template-fill / lawsuit-analysis)が
v3.7.6 の文言と合致せず trivially pass していたのを、現行タイトルの
サブストリングに更新して実効性のあるアサートに直した。
v3.7.6
[3.7.6] - 2026-05-14
Changed
- ユーザー向け語彙をプレーンな日本語に統一 — テンプレート関連コマンド
(/template-create/template-fill/template-install/template-list
/template-promote/template-demote/template-firm-setup)の確認質問・
完了案内・エラーメッセージから「スコープ」「PII」「workspace」「lawyer」
「OS 同期フォルダ」等の技術用語・英語混じり表現を排除し、それぞれ
「保存場所」「個人情報」「案件フォルダ」「弁護士」「クラウド同期フォルダ」
に置き換えた。--scope case/firm/userの CLI フラグは互換性のため維持。
あわせて/audit-config/case-info/family-tree/typo-check
/lawsuit-analysis/helpでも同様の整理を行った。 - CLAUDE.md に「ユーザー向け語彙」セクションを追加 — 今後新規 skill /
command を足すときの語彙ルールを SSOT 化。プロンプト・確認質問・エラー
メッセージ・サマリー出力に適用する一覧表を明記し、内部メカニズム説明
(Step 0 ガード・Bash コードブロック・スクリプト名)は例外として除外。
v3.7.5
[3.7.5] - 2026-05-14
Fixed
.agent出力のmemory.observationsが schema 違反になる不具合 (#18) —
skills/family-tree/SKILL.mdとskills/lawsuit-analysis/SKILL.mdの AI
生成ドラフト警告のテンプレートが{id, text}のオブジェクトを観測値として
示していたが、upstream agent-format v0.1 のAgentMemory.observationsは
array<string>を要求する(schemas/agent.schema.json)。オブジェクト形式は
validation で reject され、公式 web viewer
(knorq-ai.github.io/agent-format)で「Schema validation failed」になる。
両 SKILL.md の例文をプレーン文字列配列に差し替えた。
v3.7.4
[3.7.4] - 2026-05-13
Fixed
- Windows での audit.py 並列書込が稀に取りこぼす不具合 (#16) —
真因は audit.py の lock ではなく、v3.7.3 で導入した
runtime._probe_local_fs()のレース。同関数は~/.claude-bengo/.runtime-probe.tmp
への write→unlink で local FS が使えるかを判定するが、全プロセスが
同じパスを使うため Windows で並行 open/unlink がERROR_SHARING_VIOLATION
を投げ、probe が偽 False を返して surface を cowork と誤認した。
cmd_recordは_is_cowork()が True なら silent exit 0 で抜けるため、
fail=0・record だけが消える症状(ok=99, total=99)となっていた。
probe ファイル名にos.getpid()を含めて per-PID 化し、レース自体を
消した。 - audit.py
_FileLockの lock-budget を 30 秒に拡張(defense in depth)—
Windows のmsvcrt.locking(LK_LOCK, 1)は kernel 提供の retry が 10 回 /
1 秒間隔(合計 10 秒)で諦めて IOError を投げる。CI worker の重 contention
下で budget 不足になる潜在的経路を、LK_NBLCK(non-blocking)+ Python
側 30 秒 budget + 10〜50ms exponential backoff で潰した。Linux / macOS
のfcntl.flock(LOCK_EX)経路は影響なし。
v3.6.0
v3.6.0 — Firm-scope templates (Phase 1, OS-synced folder)
Adds the third template scope — firm — between case and user. Enables firm-wide template sharing across multiple lawyers without an OAuth dance: each lawyer points the plugin at a local path that their OS sync client (Drive for desktop, Dropbox, OneDrive, SMB) is already syncing. The plugin treats it as a local directory; the OS handles sharing and permissions.
This is Phase 1 of the firm-scope work, designed in collaboration with two PE reviews (Anthropic + OpenAI Codex) over four iteration rounds. Phase 2/3 hardening is explicitly deferred.
What changed
- New scope:
firm. Resolver order is nowcase → firm → user. firm is silently skipped when unconfigured or unreachable, so existing case/user workflows are unchanged. - New command:
/template-firm-setup <path>. Validates path exists + is dir + not under~/.claude-bengo/. Writesfirm_templates_pathto~/.claude-bengo/global.json. Drops a PII-warning README into the folder on first setup. --scope firmaccepted in/template-installand/template-create./template-promote --to firmand/template-demote --from firmfor firm round-trips.- firm writes go through the same PII gate as user (hard block via
pii_scan.py). Bundled-template installs are manifest-verified and skip PII scan even at firm scope. - New exit code 6 + structured JSON error (
{"code": "firm_unavailable", "state": "unconfigured"|"unreachable", ...}) when firm operations attempted while not reachable.
Setup (one-time per lawyer)
/template-firm-setup ~/Library/CloudStorage/GoogleDrive-xxx@firm.jp/Shared\ drives/事務所/法人テンプレート
Admin creates the Shared Drive folder once and grants editor access. Each lawyer runs the command above on their own machine.
Explicitly deferred
| Phase | What |
|---|---|
| 2 | Canonical xlsx hash + fill-time PII rescan + case-local sidecar cache |
| 2 | TOCTOU temp-copy on firm reads |
| 3 | Shape-diff [c]/[f]/[d] shadow drift prompt at fill time |
| 3 | Parent-mount-vs-leaf reachability remediation |
These flow naturally from the v4 design and are tracked in CHANGELOG breadcrumbs.
Test coverage
- workspace 40/40, template_lib 36/36, audit 18/18, verify 52/52, e2e 37/37 — all green
- 4 dedicated tests pin exit-code-6 + structured-JSON contract for
_cmd_install/_cmd_save_userfirm-unavailable paths (caught by Codex review during PR #8)
Full changelog: https://github.com/llamadrive/claude-bengo/blob/main/CHANGELOG.md
v3.5.0
v3.5.0 — Template scope rename (global → user)
Renames the firm-wide template scope from global to user because the storage
(~/.claude-bengo/templates/) is per-machine, per-lawyer — not actually firm-wide.
The global name is reserved for the upcoming firm scope, a Shared Drive-backed
store that will sit between case and user (case → firm → user) in a follow-up release.
No action required to upgrade. Storage paths, file layout, PII gate, and audit log
behavior are all unchanged. Existing ~/.claude-bengo/templates/ contents continue to
resolve as user scope automatically.
What changed
- New canonical scope name:
user(wasglobal). - Resolver order:
case → user. Will becomecase → firm → useronce firm scope ships. - All command docs, SKILL.md files, and CLAUDE.md updated to use the new vocabulary.
Backward compatibility (one release; removed in 3.6.0)
For automation and scripts that hardcode the old name:
--scope globalandscope="global"still accepted with a stderr deprecation warning.workspace.global_templates_dir(),ensure_global_templates_dir(),global_templates_list()
retained as thin aliases.workspace.py templatesJSON also emitsglobal_templates_dir,"global"bucket,
andshadowed_globalfield on case entries.workspace.py resolve-templateJSON addsscope_legacy("global"when scope is"user").- Env var
CLAUDE_BENGO_ALLOW_PII_ON_GLOBALkeeps its name (CI compatibility).
These all go away in 3.6.0. Update consumers now if you have any.
What's coming next
- Firm scope (Phase 1): admin sets
firm_templates_pathto a local Drive-for-desktop /
Dropbox / SMB folder; templates promoted there propagate to all lawyers via OS sync.
Read-only at fill time, with case-local PII rescan cache and canonical xlsx hashing.
Designed in collaboration with two PE reviews (Anthropic + OpenAI Codex) over four
iteration rounds.
Test coverage
- workspace 28/28, template_lib 20/20, audit 18/18, verify 52/52, e2e 37/37 — all green.
Full changelog: https://github.com/llamadrive/claude-bengo/blob/main/CHANGELOG.md