ipartington/claude-mods/tree/main/review-ledger
review-ledger
세션 전반에 걸쳐 리포지토리별로 검토 결과(H1, M3, L2...)를 유지하고 PR이 병합될 때 이를 확인합니다.
이 mod 소개
Claude 모드
Five Claude Code 루틴을 제거하는 모드 계속 손으로 했어요. 각 one는 마지막 30 Claude Code 감사에서 비롯됩니다. 세션. 모드는 함수 후크의 플러그인입니다. 이는 Claude Code 내에서 실행되며 프롬프트, 창, 토스트 또는 상태 표시줄 위에 밴드를 그릴 수 있고 단계적으로 이동할 수 있습니다. 프롬프트, 도구 호출, 세션 시작 및 종료로 전환됩니다.
| 모드 | 그것이 제거하는 습관 | 당신이 보는 것 | 이용비용 |
| --- | --- | --- | --- |
| [merge-followthrough](병합 후속) | "616 merged"(30 세션에서 61 시간)를 입력한 다음 Claude는 git checkout main && git pull를 켜고 분기를 삭제합니다. 세션 시작 시 직접 ! git pull | CI를 사용한 공개 PR 밴드 ✓ ✗ …; 병합이 당겨졌을 때 토스트합니다. /prs | 없음 |
| handoff-on-clear | /clear 이후 "다시 시작하라는 메시지 표시", "피드백을 잃어버렸습니다. 다시 표시해 주실 수 있나요?" 저장 시 건배; 밴드 ↺ Handoff from last session [Load] [Dismiss]; /handoff | /clear당 One 캐시된 포크(옵션 summarize, 기본적으로 설정됨) |
| bg-task-band | "현재 상황은 어떤가요?", "업데이트가 있나요?", "예상 종료 시간은 언제인가요?" | 밴드: ⏳ Wait for cp-22 recap 12m/25m · TASK [drain]; 마무리 토스트 | 없음 |
| [review-ledger](검토 원장) | "검토에서 남은 작업은 무엇입니까?", H/M/L 목록을 직접 업데이트 | 심각도별 항목 창(/review) 항목의 PR이 병합되면 토스트 | 없음 |
| tts-lite | 요약을 말하기 위해 응답당 전체 claude -p를 시작하는 중지 후크, 이로 인해 200 성적표가 이탈됨 | 오디오 전용 | 짧은 답변 없음; 긴 것 git checkout main && git pullQ 베어 하이쿠 완성 |
각 one의 작동 방식
merge-followthrough: 60마다 gh pr list --author @me를 폴링합니다. PR을 할 때
open이 병합된 것을 확인하고 기본 분기인 pull --ff-only를 확인합니다.
작업 트리가 깨끗한 한 로컬 분기를 삭제하고 정리합니다. 켜기
다음 프롬프트에서는 이미 수행한 작업을 Claude에게 알려주므로 Claude는 해당 작업을 다시 실행하지 않습니다.
616 merged를 입력하면 동일한 단계가 한 번에 실행됩니다. 세션에서 시작
변경 사항이 없는 경우 기본 분기를 빨리 감습니다.
handoff-on-clear: session.end(/clear 또는 종료)에서 마지막을 저장합니다.
답변, 최근 질문, 언급된 PR 번호 및 아티팩트 링크, 지점,
그리고 (summarize를 사용하여) one $.model.fork에서 200 단어 핸드오프를 수행합니다.
대부분 프롬프트 캐시에서 제공됩니다. three일 동안 디렉터리별로 보관됩니다. 그것
Load를 누르거나 /handoff를 실행하거나 다음과 같은 질문을 하면 Claude로 이동합니다.
"다시 표시" 또는 "다시 시작하라는 메시지 표시".
bg-task-band: 백그라운드 Bash, Monitor 및 Agent 호출을 녹음합니다.
시작하고 마지막 줄에 대해 10 마다 각 one의 출력 파일을 읽고 표시합니다.
완료되면 도착하는 작업 알림에서 완료됩니다. TaskStop가 표시합니다.중지되었습니다. 완료된 작업은 90 동안 밴드에 유지됩니다.
review-ledger: Claude가 작성한 mcp__review-ledger__items 도구를 등록합니다.
결과(H1, M3, L2)를 기록하기 위한 호출 및 해당 상태: 진행 중, 진행 중
PR 번호를 사용하여 수행하거나 수행하지 않을 것입니다. 저장소 루트별로 저장되므로
/clear 및 새 세션이 유지됩니다. 5분마다 진행 중인 PR을 확인합니다.
PR이 병합되면 항목을 완료로 표시합니다. "검토" 또는 이름을 나타내는 프롬프트
항목은 원장을 컨텍스트로 가져옵니다.
tts-lite: turn.complete에서는 20 단어 이하의 응답을 다음과 같이 읽습니다.
그들은 하이쿠에게 더 긴 내용에 대해 one 문장을 요청합니다. 그것은 그들을 재생
Piper 및 paplay 또는 espeak를 통해. 동일한 CLAUDE_TTS를 읽습니다.
CLAUDE_TTS_SPEED, CLAUDE_TTS_VOICE 및 CLAUDE_TTS_MODEL 변수
쉘 후크가 대체되고 해당 후크(tts-speak.sh)가 작동하는 동안 침묵을 유지합니다.
여전히 ~/.claude/settings.json에 있으므로 이중 소리가 들리지 않습니다.
설치
요구 사항: Claude Code 2.1.288 이상(기능 후크 모드는 조기 액세스 가능)
API는 릴리스 간 이동), git 및 인증된 merge-followthroughQ
merge-followthrough 및 review-ledger. tts-lite에는 paplay 및 Piper가 필요합니다.
아니면 말하자면.
CLAUDE_CODE_PLUGIN_DIRS에 폴더를 나열하여 모든 세션에 대해 로드합니다.
(콜론으로 구분) ~/.claude/settings.json의 env 블록:
s
o
n
{
"env": {
"CLAUDE_CODE_PLUGIN_DIRS": "~/code/claude-mods/merge-followthrough:~/code/claude-mods/handoff-on-clear:~/code/claude-mods/bg-task-band:~/code/claude-mods/review-ledger:~/code/claude-mods/tts-lite"
}
}
```o
n
e
세션에만 해당:
s h claude --plugin-dir ./merge-followthrough --plugin-dir ./bg-task-band
또는 세션의 핫 리로드 폴더에 복사합니다.
s h scripts/sync.sh ~/.claude/dev-mods/<session-id>
## 레이아웃
<mod>/ .claude-plugin/plugin.json manifest (name, version, options, state contract) hooks/hooks.json { "modules": ["./register.tsx"] } hooks/register.tsx the hooks module types/index.d.ts $.state contract (mods that keep state) tests/*.test.ts claude plugin test scripts/ check-mods.sh validate / test the mods given files touch typecheck.sh tsc against Claude Code's generated API types sync.sh copy mods into a load folder
## 개발
s h pip install pre-commit && pre-commit install claude plugin validate <mod> claude plugin test <mod> scripts/typecheck.sh # all mods
사전 커밋 후크는 표준 위생, gitleaks, shellcheck를 실행하며
커밋이 수정되는 모드: `claude plugin validate`, TypeScript 검사 및
`claude plugin test`. 유형 검사에는 API 선언 Claude Code가 필요합니다.
모드를 로드할 때 `.claude-plugin/types/`에 씁니다. 이는 다음과 같이 생성됩니다.
빌드, git 무시 및 `~/.claude/dev-mods` 복사본에서 자동으로 발견됩니다.
그것들이 없으면 유형 검사는 메모와 함께 건너뜁니다.
에이전트(또는 개인)가 준수해야 하는 규칙은 [AGENTS.md](AGENTS.md)를 참조하세요.
모드를 변경할 때 따르십시오.
## 라이센스
[MIT](라이센스)
설치
먼저 작성자의 README에서 marketplace와 플러그인 이름을 확인하세요. 저장소 구조에 따라 명령어가 달라질 수 있습니다.
claude plugin marketplace add ipartington/claude-mods claude plugin install review-ledger
원문 / README
claude-mods
Five Claude Code mods that remove the routine I kept doing by hand. Each one comes from an audit of my last 30 Claude Code sessions. A mod is a plugin of function hooks: it runs inside Claude Code and can draw a band above the prompt, a pane, a toast or a status line, and can step into prompts, tool calls and the session's start and end.
| Mod | The habit it removes | What you see | Usage cost |
| --- | --- | --- | --- |
| merge-followthrough | Typing "616 merged" (61 times in 30 sessions), then Claude spending a turn on git checkout main && git pull and deleting the branch; ! git pull by hand at session start | Band of your open PRs with CI ✓ ✗ …; toast when a merge has been pulled; /prs | None |
| handoff-on-clear | "give me a prompt to restart", "I've lost your feedback, can you redisplay" after /clear | Toast on save; band ↺ Handoff from last session [Load] [Dismiss]; /handoff | One cached fork per /clear (option summarize, on by default) |
| bg-task-band | "how are we looking", "any updates", "when's the estimated end time?" | Band: ⏳ Wait for cp-22 recap 12m/25m · TASK [drain]; toast on finish | None |
| review-ledger | "what's left to do from the review?", updating the H/M/L list by hand | Pane of items by severity (/review); toast when an item's PR merges | None |
| tts-lite | A Stop hook starting a full claude -p per reply to speak a summary, which left 200 stray transcripts | Audio only | Short replies none; longer ones one bare Haiku completion |
How each one works
merge-followthrough: polls gh pr list --author @me every 60 s. When a PR
it saw open is merged, it checks out the default branch, pull --ff-onlys,
deletes the local branch and prunes, as long as the working tree is clean. On
your next prompt it tells Claude what it already did, so Claude doesn't redo it.
Typing 616 merged runs the same steps at once. At session start it
fast-forwards the default branch if you're on it with no changes.
handoff-on-clear: on session.end (a /clear or an exit) it saves the last
answer, your recent asks, PR numbers and artifact links mentioned, the branch,
and (with summarize) a 200-word handoff from one $.model.fork, which the API
serves mostly from the prompt cache. It's kept per directory for three days. It
goes to Claude when you press Load, run /handoff, or ask something like
"redisplay" or "prompt to restart".
bg-task-band: records background Bash, Monitor and Agent calls as they
start, reads each one's output file every 10 s for the last line, and marks it
done from the task notification that arrives when it ends. A TaskStop marks it
stopped. Finished tasks stay on the band for 90 s.
review-ledger: registers the tool mcp__review-ledger__items, which Claude
calls to record findings (H1, M3, L2) and their state: open, in-progress
with a PR number, done, or won't do. It's stored per repository root, so it
survives /clear and new sessions. Every 5 minutes it checks in-progress PRs
and marks an item done when its PR merges. A prompt that says "review" or names
an item gets the ledger as context.
tts-lite: on turn.complete it reads replies of 20 words or fewer out as
they are, and asks Haiku for one sentence about anything longer. It plays them
through Piper and paplay, or espeak. It reads the same CLAUDE_TTS,
CLAUDE_TTS_SPEED, CLAUDE_TTS_VOICE and CLAUDE_TTS_MODEL variables as the
shell hook it replaces, and stays silent while that hook (tts-speak.sh) is
still in ~/.claude/settings.json, so you never hear double.
Install
Requirements: Claude Code 2.1.288 or later (function-hook mods are early access
and the API moves between releases), plus git and an authenticated gh for
merge-followthrough and review-ledger. tts-lite needs paplay and Piper
or espeak.
Load them for every session by listing the folders in CLAUDE_CODE_PLUGIN_DIRS
(colon-separated) in the env block of ~/.claude/settings.json:
{
"env": {
"CLAUDE_CODE_PLUGIN_DIRS": "~/code/claude-mods/merge-followthrough:~/code/claude-mods/handoff-on-clear:~/code/claude-mods/bg-task-band:~/code/claude-mods/review-ledger:~/code/claude-mods/tts-lite"
}
}
For one session only:
claude --plugin-dir ./merge-followthrough --plugin-dir ./bg-task-band
Or copy them into a session's hot-reload folder:
scripts/sync.sh ~/.claude/dev-mods/<session-id>
Layout
<mod>/
.claude-plugin/plugin.json manifest (name, version, options, state contract)
hooks/hooks.json { "modules": ["./register.tsx"] }
hooks/register.tsx the hooks module
types/index.d.ts $.state contract (mods that keep state)
tests/*.test.ts claude plugin test
scripts/
check-mods.sh validate / test the mods given files touch
typecheck.sh tsc against Claude Code's generated API types
sync.sh copy mods into a load folder
Development
pip install pre-commit && pre-commit install
claude plugin validate <mod>
claude plugin test <mod>
scripts/typecheck.sh # all mods
The pre-commit hooks run standard hygiene, gitleaks, shellcheck, and for the
mods a commit touches: claude plugin validate, a TypeScript check and
claude plugin test. The type-check needs the API declarations Claude Code
writes into .claude-plugin/types/ when it loads a mod. Those are generated per
build, git-ignored, and found automatically in any ~/.claude/dev-mods copy.
Without them the type-check is skipped with a note.
See AGENTS.md for the conventions an agent (or a person) should follow when changing a mod.

