ClaudeMods
☰
ZH-TW
● 0 人在線上 · 瀏覽 0 次
贊助提交作品
GitHub 儲存庫 · 發布者 oaustegard

tripwire

一個 Claude Code 外掛,使用 tool.call 掛鉤阻止或標註反覆出現的 Bash 錯誤——整個磁碟的 find、長時間的前景 sleep 迴圈、被 | tail 掩蓋的錯誤,以及被遺忘的背景 shell。

oaustegard@oaustegard

oaustegard/claude-code-mods/tree/main/tripwire

已翻譯

關於這個 mod

tripwire 是一個 Claude Code 外掛,使用 17 份本機工作階段記錄(546 次 Bash 呼叫)建置。它掛接 tool.call,阻止或標註各個工作階段中反覆出現的錯誤:沒有 -maxdepth 的整個磁碟 find、超過 120s 的前景 sleep 迴圈、被 | tail 隱藏的錯誤、zsh 萬用字元中止、macOS 上缺少 timeout、沒有旗標的 gh pr 命令,以及被遺忘的背景 shell。規則可以在呼叫執行前阻止它、加入模型會在結果後讀取的備註,或顯示 toast/狀態列。明確要求時,# tripwire:allow 標記可以讓呼叫通過;/tripwire 會列出目前工作階段與所有工作階段的計數。這個外掛遵循標準 Claude Code Mod 版面(.claude-plugin/plugin.json、hooks/hooks.json、module、選用的 types/index.d.ts),將其資料夾列在 ~/.claude/settings.json 的 CLAUDE_CODE_PLUGIN_DIRS 後啟用。搭配的 usage-dollars Mod 會透過狀態列追蹤每個工作階段相對於每月預算的成本,在 80% 與 100% 時顯示 toast,並提供 /spend。

安裝

請先查看作者 README,確認 marketplace 與外掛名稱;指令可能隨儲存庫結構而變動。

claude plugin marketplace add oaustegard/claude-code-mods
claude plugin install tripwire
原文 / README

claude-code-mods

Plugins for Claude Code that run code around the agent's tool calls: they can block a call before it runs, add a note to its result, or put a message in front of the person. They work in the terminal and in the desktop app's Code tab. Each folder is one plugin.

| Mod | What it does | |---|---| | tripwire | Blocks or annotates shell mistakes that recur in Claude Code sessions: whole-disk find, long foreground sleep loops, errors hidden by \| tail, forgotten background shells | | usage-dollars | Spend in dollars for today and the month so far against a monthly budget: status line, toast at 80% and 100%, /spend |

The hook API these mods use is marked early access in Claude Code's own type declarations and can change between releases. Those declarations were written by Claude Code 2.1.286, the version tripwire was developed against.

Layout

A mod folder holds .claude-plugin/plugin.json, hooks/hooks.json naming one module, the module itself, and types/index.d.ts when the mod keeps state. Claude Code generates .claude-plugin/types/ the first time it loads a mod, so that directory is not in the repo.

Enabling

List each mod folder, :-separated, in the env block of ~/.claude/settings.json. Claude Code reads this variable only from user settings, never from a project's:

"env": { "CLAUDE_CODE_PLUGIN_DIRS": "/path/to/claude-code-mods/tripwire" }

Interactive sessions watch the folder and reload on save. To check a change before committing it:

claude plugin validate tripwire

tripwire

Tripwire was built from 17 local session transcripts: 546 Bash calls. Each rule below answers a mistake that appears in them more than once. A rule can block a call before it runs, add a note the model reads after the result, or show the person a toast or a status line.

| Rule | Kind | Evidence (replayed on the transcripts) | |---|---|---| | find over /, ~, $HOME or /Users/<name> with no -maxdepth | block | 5 calls, each moved to the background automatically and left running past the end of the task | | foreground loop whose sleep totals more than 120s (an unbounded while/until with sleep ≥ 5 counts; timeout N caps the total) | block | 35 calls; the person's reaction to one: "what on earth is taking so long?" | | error text in output whose pipeline ends in tail/head and exits 0 | note | 20 of 233 such calls | | zsh glob abort, macOS has no timeout, gh pr create without --head, gh pr view --json merged | note | one fix line each | | background shells still open | status line, plus a toast at turn end | "what are the 5 shells that are open still doing?" | | foreground call running longer than 5 minutes | status line, then a toast | a 51-minute foreground Agent call |

The replay applies the same patterns the rules use to the Bash calls in those transcripts. The counts describe one person's sessions, so another machine will see different numbers.

# tripwire:allow in a command lets a block through when the person asked for exactly that. /tripwire lists the counts for the current session and for all sessions (kept in the plugin store) and the open background tasks. The counts show whether a rule still fires, and a rule that never trips is a candidate for deletion.

usage-dollars

Books each session's cost ($.session.usage().cost.usd, what /cost totals) into a per-day ledger in the plugin store, shared by every session on the machine. The status line shows $1.20 today · $34.10/$100.00 month (34%), a toast fires once at 80% and once at 100% of the budget, and /spend prints the same figures plus what remains. Per-conversation spend is not shown: the default donut chart button covers it.

Set the budget in the config menu (monthlyBudgetUsd, default 100, 0 hides it). The ledger starts when the mod is first loaded, so earlier spend is not counted, and a resumed session's past cost is not re-booked.

其他同名作品

更多類似作品