ClaudeMods
☰
KO
● 0 명 접속 중 · 조회 0 회
후원프로젝트 제출
GitHub 저장소 · 작성자 oaustegard

tripwire

tool.call 훅을 사용해 반복되는 Bash 실수—전체 디스크에 대한 find, 긴 포그라운드 sleep 루프, | tail에 가려진 오류, 잊힌 백그라운드 셸—를 차단하거나 주석으로 표시하는 Claude Code 플러그인입니다.

oaustegard@oaustegard

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

번역 완료

이 mod 소개

tripwire는 로컬 세션 기록 17개(Bash 호출 546회)를 바탕으로 만든 Claude Code 플러그인입니다. tool.call에 연결해 세션마다 반복되는 실수를 차단하거나 주석으로 표시합니다. 대상은 -maxdepth 없는 전체 디스크 find, 120s를 넘는 포그라운드 sleep 루프, | tail에 숨겨진 오류, zsh glob 중단, macOS에서 timeout 누락, 플래그 없는 gh pr 명령, 잊힌 백그라운드 셸입니다. 규칙은 호출이 실행되기 전에 차단하거나, 결과를 받은 뒤 모델이 읽는 메모를 추가하거나, 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.

동명의 다른 작품

비슷한 프로젝트