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

commit-cadence

각 턴이 끝날 때 커밋되지 않은 파일을 알려 주고 완료된 작업을 커밋하도록 모델에 상기시키는 Claude Code 플러그인입니다.

KilimcininKorOglu@KilimcininKorOglu

KilimcininKorOglu/claude-code-mods/tree/main/plugins/commit-cadence

번역 완료

이 mod 소개

commit-cadence는 모든 메인 루프 턴의 끝에서 git status를 실행하고 커밋되지 않은 경로를 사용자와 모델에게 보고하여, 완료된 작업이 쌓이지 않고 생길 때 커밋되도록 합니다. 변경된 경로 묶음마다 빨간 줄 하나를 표시하고 다음 프롬프트에 한 번의 커밋 알림을 보내며 트리가 깨끗해지면 초록 줄로 마칩니다. 상태는 저장소별로 $.store에 보관되고 /commit-cadence는 설정과 현재 트리를 보여 줍니다. 아무것도 중지하거나 커밋하지 않습니다. L2에 도달합니다. 프로세스(git status)는 실행하지만 파일 내용, 프롬프트 또는 답변은 읽지 않습니다.

설치

먼저 작성자의 README에서 marketplace와 플러그인 이름을 확인하세요. 저장소 구조에 따라 명령어가 달라질 수 있습니다.

claude plugin marketplace add KilimcininKorOglu/claude-code-mods
claude plugin install commit-cadence
원문 / README

commit-cadence

A long session easily ends with twenty changed files and one giant commit, where the fix, the refactor and the experiment are all mixed up. This mod looks at the working tree at the end of every turn and tells you, and the model, what is still uncommitted, so finished work gets committed as it lands instead of piling up for the end.

What it does

  1. At the end of each main-loop turn it runs git status --porcelain=v1 -z in the directory the session started in and reads the paths it names, staged or not. Ignored files and untracked files under the generated .claude/ directory are left out.

  2. A dirty tree is reported once per set of paths. A later turn that changed nothing stays quiet, and a new or removed path reports again, so a long stretch of edits does not repeat the same line.

  3. You read the finding as one red line in the sidebar stream, or as a transcript line while the sidebar is closed:

    commit-cadence: 2 uncommitted file(s): src/app.ts, src/new.ts
    
  4. Your next prompt carries a note only the model reads: what is uncommitted, and that every finished and verified piece belongs in its own commit now. The note goes out once per report, so one prompt carries it and the next one does not.

  5. When the tree is clean again, a green line closes the finding: the working tree is clean again. The red entries written since the tree was last clean are cleared first, so they do not come back when the pane restores its stream.

  6. While a finding stands, it is kept in $.store per repository: its paths and the keys of its red entries. A module loaded again (/reload-plugins, an update, a restart) picks it up at session start. It can then still clear the red entries written before it, without reporting the same paths or sending the note again.

  7. /commit-cadence measures on the spot and prints the setting and what the tree holds.

It stops nothing. You decide what is worth a commit, and the model reads the note as a reminder, not as a gate.

Command

/commit-cadence            the setting and what the tree holds right now (also /commit-cadence status)
/commit-cadence on | off   on by default

Install

claude plugin marketplace add KilimcininKorOglu/claude-code-mods
claude plugin install commit-cadence@kilimcininkoroglu-mods

Function hooks are early access. Claude Code 2.1.288 and later load them by default, so there is nothing to switch on.

After installing

  1. Restart Claude Code.
  2. Install the sidebar mod if you want the findings there. Without it the lines go to the transcript.

What it can reach

Validated with claude plugin validate on Claude Code 2.1.283:

❯ ./register.ts hooks: session.start, command.run{command=commit-cadence}, turn.complete, prompt.submit
❯ ./register.ts calls: $.command.register, $.process.run (via readTree), $.session.cwd, $.sidebar.clear (via dropEntries), $.sidebar.set (via toPerson), $.store.delete (via saveOpen), $.store.get (via loadOpen, readSettings), $.store.set (via saveOpen, setEnabled), $.ui.log (via toPerson)

Reach L2: it runs a process.

1. Reads:    the paths git status names in the session's own directory. It reads no file content, no prompt and no answer.
2. Runs:     git status --porcelain=v1 -z, once per turn that ends and once per /commit-cadence
3. Sends:    to the model, the count and the first six paths of the uncommitted files, with one sentence about committing them
4. Persists: in $.store, the on/off setting, and per repository the open finding (the uncommitted paths and the keys of their red entries) until the tree is clean
5. Hostile input: the only text drawn and sent is the paths git itself printed, cut to six names and a count

Limits

  • It measures the tree, not who changed it. A file you edited by hand counts exactly like one the model edited.
  • It measures the session's own directory. Another repository you work in during the same session is not read.
  • Only the main loop's turn end is measured, not a subagent's.
  • Ignored paths are left out, and so are untracked files under .claude/, because that directory is generated.
  • It names files, never hunks. A file holding two unrelated changes shows up as one path.
  • It commits nothing and stops nothing.

Development

make install     # eslint, typescript-eslint, typescript
make lint        # complexity limit 10, the build fails above it
make typecheck   # needs .claude/types/ from /plugin-types
make validate
make test        # claude plugin test

비슷한 프로젝트