baselane-sh/mods/tree/main/plugins/changelog
changelog
`/changelog`를 추가합니다. 마지막 태그 이후(또는 최근 30개)의 커밋을 conventional-commit 유형별로 묶어 Markdown으로 표시합니다.
이 mod 소개
Baselane mods
Claude Code를 위한 작은 mod입니다. 필요한 것을 골라 조합하세요.
Baselane mods는 function hooks로 만든 Claude Code 플러그인입니다. 각 mod는 한 가지 일만 합니다. rm -rf 전에 묻는 가드, 세션 비용을 보여 주는 밴드, git 상태를 보여 주는 사이드 패널, 테스트가 통과할 때 나는 소리, Claude의 글을 해적 말투로 바꾸는 음성 등이 있습니다. 가드, 패널, 미터, 사운드, 통계 같은 계열에 100+개의 mod가 있습니다. 하나만 설치하거나 10개를 겹쳐 설치할 수 있습니다. 서로 의존하지 않습니다.
빠른 시작 (30초)
mods가 포함된 Claude Code 2.1.288 이상이 필요합니다.
claude plugin marketplace add baselane-sh/mods-catalog
claude plugin install guard-essentials@baselane-mods
claude plugin install receipt@baselane-mods
Claude Code를 시작하세요. 이제 위험한 명령 전에 확인하고 /receipt는 세션 영수증을 출력합니다.
모든 mod는 https://baselane-sh.github.io/mods-catalog/에서 볼 수 있습니다. 갤러리(baselane-mods)는 각 mod를 검토된 커밋에 고정하므로, 새 mod가 이 저장소에 도착한 뒤 잠시 후 갤러리에도 표시됩니다. 업데이트, 제거, 옵션과 시작 세트는 docs/INSTALL.md를 읽으세요.
이 저장소에는 main을 추적하는 개발 marketplace인 baselane-mods-dev도 있습니다. 아직 출시되지 않은 변경 사항을 시험할 때만 사용하세요.
claude plugin marketplace add baselane-sh/mods
claude plugin install <name>@baselane-mods-dev
각 mod는 git 태그 <name>--v<version>와 함께 출시됩니다.
팩 작동 방식
대부분의 mod에는 규칙이 하나 있습니다. 팩은 같은 계열의 여러 규칙을 하나의 mod로 묶은 것입니다. 예를 들어 guard-essentials에는 여러 가드가 있고 band-pack은 여러 미터를 하나의 밴드에 넣습니다.
- 한 명령으로 전체 세트를 원하면 팩을 설치하세요.
- 일부 규칙만 원하면 개별 mod를 설치하세요.
- 팩 또는 그 안의 개별 mod 중 하나만 설치하세요. 둘 다 설치하면 안 됩니다. 각 mod에는 자체 엔진 복사본이 있으므로 설치한 두 mod에 같은 규칙이 있으면 두 번 실행됩니다. 예를 들어
guard-pack과infra-guard를 설치하면terraform destroy검사가 두 번 실행되고 질문도 두 개 표시됩니다. - 서로 다른 계열의 mod는 충돌 없이 함께 사용할 수 있습니다.
guard-essentials,cost-meter,git-pane은 잘 어울립니다.
아래 카탈로그에서는 각 팩에 “pack”이라고 표시합니다.
안전
- 가드는 묻습니다. 차단하지 않습니다. 가드는 위험한 명령을 멈추고 먼저 묻습니다. 결정은 사용자가 합니다. 가드 검사가 실패해도 묻습니다. 질문 없이 호출을 통과시키지 않습니다.
- 데이터는 컴퓨터에 남습니다.
ntfy-notify또는long-run-notify에 ntfy topic을,slack-notify또는discord-notify에 webhook URL을 설정하는 것처럼 직접 목적지를 지정하지 않는 한 어떤 mod도 데이터를 외부로 보내지 않습니다. 목적지를 지정하면 해당 mod는 짧은 메시지만 보냅니다. 프로젝트 폴더 이름이 들어간 일반적인 “입력 필요” 문구 또는 프로젝트 이름과 초 단위 시간입니다. - 모델을 호출할 수 있는 mod가 하나 있지만 기본적으로 꺼져 있습니다.
sports-narrator는 도구를 사용한 턴이 끝날 때 작은 모델 호출을 한 번 수행합니다. 도구 이름, 파일 이름, 각 셸 명령의 처음 두 단어만 보내고 파일 내용은 보내지 않습니다. token을 사용하므로 직접 켜야 합니다. - 표시 mod는 Claude가 읽는 내용을 바꾸지 않습니다. “Display and render”의 mod는 화면의 행과 답변이 보이는 방식만 바꿉니다. 다른 계열은 Claude에 텍스트를 추가할 수 있습니다. 프롬프트 스타일은 Claude의 작성 방식을 바꾸고,
secret-output-guard는 자격 증명을 반복하지 말라고 Claude에게 알리며,auto-format과auto-lint는 파일을 다시 읽으라고 Claude에게 알립니다. - 통계는 로컬에 남습니다. Streaks, 성과와
/wrapped는 mod가 컴퓨터에 보관한 기록을 읽습니다. - 파일을 쓰는 mod는 이를 명시합니다.
/handoff는.claude/handoff.md에 쓰지만 덮어쓰지 않습니다.session-journal은~/.claude/journal.log에 내용을 추가합니다.auto-format과auto-lint는 프로젝트 자체의 formatter 또는 linter 수정을 실행하므로 파일을 다시 쓸 수 있습니다. 각 mod가 무엇을 쓰는지는 설명에 나와 있습니다.
요구 사항
- mods가 포함된 Claude Code 2.1.288 이상(플러그인 function-hook API는 현재 early access입니다). Claude Code mods 문서를 읽으세요.
- 일부 mod는 로컬 도구를 사용합니다. git은 git 패널, git 밴드와 대부분의 명령에 사용되고
lsof는port-watch(macOS 및 대부분의 Linux)에 사용됩니다. - 소스에서 빌드하려면 Node.js가 필요합니다.
소스에서 빌드하고 검사하기
plugins/와 .claude-plugin/marketplace.json은 생성된 파일입니다. 직접 편집하지 마세요.
node scripts/build.mjs # 카탈로그 항목마다 플러그인 폴더 하나를 빌드
bash scripts/check.sh # 다시 빌드한 뒤 모든 mod를 검증하고 테스트하며 타입 검사
bash scripts/check.sh git-pane # 지정한 mod만 검사
node scripts/gen-docs.mjs # 이 README의 카탈로그를 다시 작성
node --test 'scripts/*.test.mjs' # 문서 생성기 테스트
check.sh가 check: 0 failure(s)를 출력하면 변경이 완료된 것입니다. 구조와 API 정보는 AGENTS.md를 읽으세요.
기여하기
mod를 추가하려면:
- 엔진에 규칙을 추가합니다:
engines/<engine>/hooks/rules/<id>.ts, 테스트는engines/<engine>/tests/<id>.test.ts에 추가합니다. catalog/<name>.json에 카탈로그 항목을 추가합니다:{ "name", "description", "rules": ["<id>"] }. mod에 슬래시 명령이 있다면 설명에 그 명령을 넣으세요(예: “/git으로 열기”). 카탈로그 표는 여기서 설명을 읽습니다.node scripts/build.mjs를 실행한 다음bash scripts/check.sh <mod>, 마지막으로node scripts/gen-docs.mjs를 실행합니다.
새 엔진에는 scripts/gen-docs.mjs에 계열을 추가해야 합니다. 파일을 작게 유지하고 입력을 제자리에서 바꾸지 말며 em-dash 문자를 사용하지 마세요.
라이선스
MIT. Copyright (c) 2026 Baselane, LLC. LICENSE를 읽으세요.
카탈로그
<!-- catalog:start -->10개 계열에 130개의 mod가 있습니다.
“needs setup”은 claude plugin configure <mod>로 설정하는 옵션이 있다는 뜻입니다. 설정하기 전에 작동하는지는 설명에 나와 있습니다. “pack”은 여러 규칙을 가진 하나의 mod라는 뜻입니다.
가드 (25)
위험하거나 위험 부담이 있는 명령이 실행되기 전에 묻습니다.
| Mod | 기능 | 명령 | 참고 |
| --- | --- | --- | --- |
| secret-filename-guard | Bash 명령이 비밀처럼 보이는 파일(.env, 개인 키, 자격 증명)에 접근하기 전에 묻습니다. | | |
| secret-guard | 실제 API key, token 또는 개인 키를 쓰거나 편집하거나 실행하기 전에 묻습니다. | | |
| env-exfil-guard | 명령이 환경을 출력하거나 비밀 변수를 echo하거나 로컬 데이터를 원격 호스트로 보내기 전에 묻습니다. | | |
| infra-guard | terraform destroy, kubectl delete, force-push, DROP TABLE 또는 rm -rf 전에 묻습니다. | | |
| secret-commit-guard | git commit이 자격 증명 또는 비밀처럼 이름 붙은 파일을 기록하기 전에 묻습니다. | | |
| protect-main | main 또는 master에 있을 때 commit, push 또는 merge 전에 묻습니다. | | |
| gitignore-check | 비밀처럼 보이는 파일이 무시되지 않았거나 이미 추적 중일 때 git add 또는 commit 전에 묻습니다. | | |
| secret-output-guard | 명령이나 파일 출력에 나타난 자격 증명을 반복하지 말라고 Claude에 알리고, 교체할 출처를 표시합니다. | | |
| curl-pipe-guard | 다운로드한 내용을 셸이나 인터프리터로 파이프하기 전에 묻습니다(curl | sh, wget -O- | bash, bash <(curl ...)). | | |
| sudo-guard | sudo, doas 또는 su -c가 상승된 권한으로 명령을 실행하기 전에 묻습니다. | | |
| no-verify-guard | git hooks를 건너뛰기 전에 묻습니다(--no-verify, commit -n, HUSKY=0, core.hooksPath=/dev/null). | | |
| lockfile-guard | lockfile을 직접 쓰거나 편집하기 전에 묻습니다. 변경 작업은 패키지 관리자가 해야 합니다. | | |
| package-guard | 새 의존성을 설치하기 전에 묻고(npm, pnpm, yarn, bun, pip, uv, poetry, cargo, go, gem), 패키지 이름을 표시합니다. | | |
| prod-db-guard | 명령에서 파괴적인 SQL을 실행하기 전에 묻습니다: TRUNCATE, DELETE 또는 WHERE 없는 UPDATE. | | |
| path-jail | Write, Edit 또는 NotebookEdit가 실제 경로를 통해 작업 디렉터리 밖의 파일을 변경하기 전에 묻습니다. | | |
| docker-guard | Docker 명령이 데이터를 삭제하기 전에 묻습니다: system, volume 또는 image prune, rm -f, volume rm, compose down -v. | | |
| k8s-guard | --force를 사용한 kubectl apply 또는 replace, kubectl drain, helm uninstall, 전역 플래그 뒤의 kubectl delete 전에 묻습니다(일반 kubectl delete는 infra-guard가 담당). | | |
| migration-guard | Write 또는 Edit가 이미 존재하는 migration을 변경하기 전에 묻습니다. 새 migration 파일은 통과합니다. | | |
| ci-config-guard | Write 또는 Edit가 CI 설정을 변경하기 전에 묻습니다: .github/workflows, .gitlab-ci.yml 또는 .circleci/config.yml. | | |
| chmod-guard | chmod로 파일을 모두가 쓸 수 있게 만들기(777, a+w, o+w) 전, 또는 넓은 경로(/, 시스템 폴더, 홈 폴더)에서 chmod나 chown을 재귀 실행하기 전에 묻습니다. | | |
| git-history-guard | 작업을 버리거나 기록을 다시 쓰는 git 명령 전에 묻습니다: reset --hard, clean, rebase, filter-branch, filter-repo, push --delete, branch -D, stash clear. | | |
| big-file-guard | Write가 1 MB를 넘는 내용을 만들기 전, 또는 git add가 5 MB를 넘는 파일을 지정하기 전에 묻습니다. | | |
| guard-essentials | 위험하거나 재난적인 명령 전에만 묻습니다: 파괴적인 인프라, git과 SQL, 다운로드를 셸로 파이프하기, sudo, 비밀 유출 또는 커밋. 일상 작업에 조용히 쓰기 좋은 선택입니다. | | pack |
| guard-pack | Baselane의 모든 가드를 하나의 mod에 넣습니다. | | pack |
| guard-devops | 위험한 DevOps 명령 전에 묻습니다: 파괴적인 Docker, Kubernetes와 Helm 호출, CI 설정 편집, 광범위한 chmod와 chown, 작업을 잃게 하는 git 명령. 일반 kubectl delete에는 infra-guard를 추가하세요. | | pack |
리마인더 (17)
턴이 끝날 때 주의할 일이 있으면 조용한 toast 하나를 표시합니다.
| Mod | 기능 | 명령 | 참고 |
| --- | --- | --- | --- |
| test-reminder | 소스 파일이 바뀌었지만 그 후 테스트 명령을 실행하지 않았을 때 턴이 끝나면 알려 줍니다. | | |
| ctx-nudge | 컨텍스트 창이 75%를 넘으면 /clear 또는 /compact를 실행하라고 알려 줍니다. | | |
| clippy | 세션의 각 트리거마다 클래식한 클립 모양의 유용한 toast 하나를 표시합니다. migrations 폴더, Dockerfile 또는 GitHub workflow를 편집하거나 rm -rf를 실행할 때 작동합니다. 한 턴에 최대 toast 하나입니다. | | |
| sports-narrator | 턴이 끝날 때 스포츠 중계 한 줄을 표시합니다. 기본값은 OFF입니다. 도구를 사용한 턴마다 haiku를 한 번 호출합니다. 활성화 옵션을 켜야 작동합니다. 도구 이름, 파일 이름과 각 셸 명령의 처음 두 단어를 보냅니다. | | needs setup |
| commit-nudge | 마지막 git commit 이후 파일을 8개 이상 편집했을 때 턴이 끝나면 커밋을 제안합니다. 편집 묶음마다 toast 하나만 표시하고 성공한 git commit은 횟수를 초기화합니다. | | |
| todo-nudge | 턴이 끝날 때 이번 편집으로 추가된 TODO, FIXME, HACK 줄 수를 표시합니다. 추가된 것이 없으면 조용합니다. | | |
| break-nudge | 세션이 90분 실행되면 짧은 휴식을 제안하고, 이후 90분마다 다시 제안합니다. | | |
| docs-nudge | 내보낸 코드(.ts 또는 .js의 export 문이나 공개 함수 시그니처)를 추가로 편집했지만 이번 세션에 README나 docs 파일을 편집하지 않았을 때 턴이 끝나면 toast를 표시합니다. | | |
| debug-print-nudge | 이번 편집으로 추가된 console.log, print(, debugger, dbg! 줄 수를 턴이 끝날 때 표시합니다. 코드 파일만 계산합니다. | | |
| typecheck-nudge | .ts 또는 .tsx 파일을 편집했고 마지막 편집 후 타입 검사(tsc, vue-tsc, typecheck 스크립트 또는 빌드)를 실행하지 않았을 때 턴이 끝나면 toast를 표시합니다. | | |
| lockfile-nudge | package.json, pyproject.toml, Cargo.toml 또는 go.mod의 의존성이 바뀌었고 해당 lockfile을 편집하지도 설치 명령을 실행하지도 않았을 때 턴이 끝나면 toast를 표시합니다. | | |
| big-diff-nudge | 마지막 git commit 이후 500줄을 넘게 추가하거나 삭제했을 때 변경을 나누라고 제안합니다. 성공한 commit은 횟수를 초기화합니다. | | |
| migration-nudge | 스키마 파일(schema.prisma, models.py, schema/ 아래의 SQL, drizzle schema)이 바뀌었지만 이번 세션에 migration 파일을 만들지 않았을 때 턴이 끝나면 toast를 표시합니다. | | |
| env-example-nudge | 환경 변수 참조(process.env, os.environ, os.getenv, Deno.env)를 추가했지만 .env.example에 그 변수가 없을 때 턴이 끝나면 toast를 표시합니다. .env.example의 이름만 읽고 .env는 절대 읽지 않습니다. | | |
| nudge-pack | Baselane의 모든 턴 종료 리마인더를 하나의 mod에 넣습니다. | | pack |
| `f
설치
먼저 작성자의 README에서 marketplace와 플러그인 이름을 확인하세요. 저장소 구조에 따라 명령어가 달라질 수 있습니다.
claude plugin marketplace add baselane-sh/mods claude plugin install changelog
원문 / README
Baselane mods
Small mods for Claude Code. Pick the ones you want and combine them.
Baselane mods are Claude Code plugins made of function hooks. Each mod does one thing: a guard that asks before rm -rf, a band with the session cost, a side pane with your git status, a sound when tests pass, a pirate voice for Claude's prose. There are 100+ mods in families such as guards, panes, meters, sounds and stats. Install one, or stack ten. They do not need each other.
Quick start (30 seconds)
You need Claude Code 2.1.288 or later, with mods.
claude plugin marketplace add baselane-sh/mods-catalog
claude plugin install guard-essentials@baselane-mods
claude plugin install receipt@baselane-mods
Start Claude Code. Now it asks before harsh commands, and /receipt prints a receipt of the session.
Browse every mod at https://baselane-sh.github.io/mods-catalog/. The gallery (baselane-mods) pins each mod to a reviewed commit, so a new mod reaches the gallery a short time after it reaches this repo. For update, uninstall, options and starter sets, read docs/INSTALL.md.
This repo also has a development marketplace, baselane-mods-dev, that tracks main. Use it only to try changes that are not released yet:
claude plugin marketplace add baselane-sh/mods
claude plugin install <name>@baselane-mods-dev
Each mod is released with a git tag <name>--v<version>.
How packs work
Most mods have one rule. A pack is one mod with several rules from the same family. For example, guard-essentials holds several guards and band-pack puts several meters in one band.
- Install a pack when you want the whole set with one command.
- Install single mods when you want only some of the rules.
- Install a pack or its single mods, not both. Each mod has its own copy of its engine, so a rule in two installed mods runs two times. For example, with
guard-packandinfra-guardinstalled, theterraform destroycheck runs two times, and you can see two questions. - Mods from different families combine with no conflict.
guard-essentials,cost-meterandgit-panework well together.
The catalog below marks each pack with "pack".
Safety
- Guards ask. They do not block. A guard stops a harsh command and asks you first. You decide. If a guard check fails, it asks you. It does not let the call through without a question.
- Your data stays on your machine. No mod sends data out unless you set a destination yourself, such as an ntfy topic for
ntfy-notifyorlong-run-notify, or a webhook URL forslack-notifyordiscord-notify. With a destination set, those mods send a short message only: a generic "needs input" text with the project folder name, or the project name and the seconds. - One mod can make a model call, and it is off by default.
sports-narratormakes one small model call at the end of a turn that used tools. It sends tool names, file names and the first two words of each shell command, never file contents. It spends tokens, so you must turn it on. - Display mods do not change what Claude reads. The mods in "Display and render" change only how rows and replies look on your screen. Other families can add text for Claude: prompt styles change how Claude writes,
secret-output-guardtells Claude not to repeat a credential, andauto-formatandauto-linttell Claude to read a file again. - Stats stay local. Streaks, achievements and
/wrappedread records that the mods keep on your machine. - Mods that write files say so.
/handoffwrites.claude/handoff.mdand never overwrites it.session-journalappends to~/.claude/journal.log.auto-formatandauto-lintrun your project's own formatter or linter fix, which can rewrite files. The descriptions say what each mod writes.
Requirements
- Claude Code 2.1.288 or later, with mods (the plugin function-hook API, in early access). Read the Claude Code mods docs.
- Some mods use local tools: git for the git pane, the git band and most commands, and
lsofforport-watch(macOS and most Linux). - To build from source: Node.js.
Build and check from source
plugins/ and .claude-plugin/marketplace.json are generated. Do not edit them by hand.
node scripts/build.mjs # build one plugin folder per catalog entry
bash scripts/check.sh # rebuild, then validate, test and type-check every mod
bash scripts/check.sh git-pane # check only the mods you name
node scripts/gen-docs.mjs # rewrite the catalog in this README
node --test 'scripts/*.test.mjs' # test the docs generator
A change is done when check.sh prints check: 0 failure(s). Read AGENTS.md for the layout and the API facts.
Contributing
To add a mod:
- Add a rule to an engine:
engines/<engine>/hooks/rules/<id>.ts, with a test inengines/<engine>/tests/<id>.test.ts. - Add a catalog entry in
catalog/<name>.json:{ "name", "description", "rules": ["<id>"] }. Give the description the slash command, if the mod has one (for example "Open it with /git"). The catalog table reads it from there. - Run
node scripts/build.mjs, thenbash scripts/check.sh <mod>, thennode scripts/gen-docs.mjs.
A new engine needs a family in scripts/gen-docs.mjs. Keep files small, do not change inputs in place, and do not use the em-dash character.
Licence
MIT. Copyright (c) 2026 Baselane, LLC. Read LICENSE.
Catalog
<!-- catalog:start -->130 mods in 10 families.
"needs setup" means the mod has options that you set with claude plugin configure <mod>. Its description tells you if it works before you set them. "pack" means one mod with several rules.
Guards (25)
Ask you before a harsh or risky command runs.
| Mod | What it does | Command | Notes |
| --- | --- | --- | --- |
| secret-filename-guard | Asks before a Bash command touches a secret-looking file (.env, private keys, credentials). | | |
| secret-guard | Asks before a live API key, token or private key is written, edited or run. | | |
| env-exfil-guard | Asks before a command prints your environment, echoes a secret variable or sends local data to a remote host. | | |
| infra-guard | Asks before terraform destroy, kubectl delete, force-push, DROP TABLE or rm -rf. | | |
| secret-commit-guard | Asks before a git commit that would record a credential or a secret-named file. | | |
| protect-main | Asks before a commit, push or merge while you are on main or master. | | |
| gitignore-check | Asks before git add or commit when secret-looking files are not ignored or are already tracked. | | |
| secret-output-guard | Tells Claude not to repeat a credential that showed up in command or file output, and names the source to rotate. | | |
| curl-pipe-guard | Asks before a download is piped into a shell or interpreter (curl | sh, wget -O- | bash, bash <(curl ...)). | | |
| sudo-guard | Asks before sudo, doas or su -c runs a command with elevated rights. | | |
| no-verify-guard | Asks before git hooks are skipped (--no-verify, commit -n, HUSKY=0, core.hooksPath=/dev/null). | | |
| lockfile-guard | Asks before a lockfile is written or edited by hand; the package manager should change it. | | |
| package-guard | Asks before a new dependency is installed (npm, pnpm, yarn, bun, pip, uv, poetry, cargo, go, gem) and names the packages. | | |
| prod-db-guard | Asks before destructive SQL runs in a command: TRUNCATE, DELETE or UPDATE with no WHERE. | | |
| path-jail | Asks before Write, Edit or NotebookEdit changes a file outside the working directory, by real path. | | |
| docker-guard | Asks before Docker commands that delete data: system, volume or image prune, rm -f, volume rm and compose down -v. | | |
| k8s-guard | Asks before kubectl apply or replace with --force, kubectl drain, helm uninstall, and kubectl delete behind global flags (plain kubectl delete is infra-guard's). | | |
| migration-guard | Asks before Write or Edit changes a migration that already exists; new migration files pass. | | |
| ci-config-guard | Asks before Write or Edit changes CI config: .github/workflows, .gitlab-ci.yml or .circleci/config.yml. | | |
| chmod-guard | Asks before chmod makes files world-writable (777, a+w, o+w) or chmod or chown runs recursively on a broad path (/, a system folder, a home folder). | | |
| git-history-guard | Asks before git commands that throw away work or rewrite history: reset --hard, clean, rebase, filter-branch, filter-repo, push --delete, branch -D and stash clear. | | |
| big-file-guard | Asks before a Write creates content over 1 MB, or git add names a file over 5 MB. | | |
| guard-essentials | Asks only before harsh or disaster commands: destructive infra, git and SQL, piping downloads into a shell, sudo, leaking or committing secrets. The quiet choice for daily work. | | pack |
| guard-pack | Every Baselane guard in one mod. | | pack |
| guard-devops | Asks before harsh DevOps commands: destructive Docker, Kubernetes and Helm calls, CI config edits, broad chmod and chown, and git commands that lose work. Add infra-guard for plain kubectl delete. | | pack |
Reminders (17)
One quiet toast at turn end when something needs your attention.
| Mod | What it does | Command | Notes |
| --- | --- | --- | --- |
| test-reminder | Reminds you at turn end when source files changed but no test command ran since. | | |
| ctx-nudge | Reminds you to /clear or /compact when the context window passes 75 percent. | | |
| clippy | One helpful toast per session per trigger, in the classic paperclip voice: when you edit a migrations folder, a Dockerfile or a GitHub workflow, or run rm -rf. At most one toast per turn. | | |
| sports-narrator | One line of sports play-by-play at turn end. OFF by default: one haiku call per turn with tools. Turn on the enabled option. Sends tool names, file names and the first two words of each command. | | needs setup |
| commit-nudge | Suggests a commit at turn end after 8 or more file edits since the last git commit. One toast per batch of edits; a successful git commit resets the count. | | |
| todo-nudge | At turn end, one toast with the count of TODO, FIXME and HACK lines your edits added this turn. Quiet when none were added. | | |
| break-nudge | Suggests a short break once the session has run 90 minutes, and again every 90 minutes after that. | | |
| docs-nudge | At turn end, one toast when edits added exported code (an export statement in .ts or .js, or a public function signature) and no README or docs file was edited this session. | | |
| debug-print-nudge | At turn end, one toast naming the count of console.log, print(, debugger and dbg! lines your edits added this turn. Only code files count. | | |
| typecheck-nudge | At turn end, one toast when .ts or .tsx files were edited and no type check (tsc, vue-tsc, a typecheck script or a build) ran since the last edit. | | |
| lockfile-nudge | At turn end, one toast when dependencies in package.json, pyproject.toml, Cargo.toml or go.mod changed and neither the matching lockfile was edited nor an install command ran. | | |
| big-diff-nudge | Suggests splitting the change once your edits added or removed more than 500 lines since the last git commit. A successful commit resets the count. | | |
| migration-nudge | At turn end, one toast when a schema file changed (schema.prisma, models.py, SQL under schema/, a drizzle schema) and no migration file was created this session. | | |
| env-example-nudge | At turn end, one toast when edits add a reference to an environment variable (process.env, os.environ, os.getenv, Deno.env) that .env.example does not list. Reads only .env.example names, never .env. | | |
| nudge-pack | Every Baselane turn-end reminder in one mod. | | pack |
| focus-pack | Three quiet nudges in one mod: commit after 8 edits, TODO/FIXME/HACK lines added, and debug prints added. | | pack |
| quality-pack | Three quiet nudges in one mod: type check after TypeScript edits, lockfile after dependency edits, and a split suggestion past 500 changed lines. | | pack |
Commands (18)
Slash commands that print a result and, where it helps, copy it.
| Mod | What it does | Command | Notes |
| --- | --- | --- | --- |
| receipt | Adds /receipt: a shareable receipt of the session (tools, files, commands, blocks, context, cost), printed and copied. | /receipt | |
| standup | Adds /standup: Yesterday, Today and Blockers from your git log and this session's record, printed and copied. | /standup | |
| changelog | Adds /changelog: commits since the last tag (or the last 30), grouped by conventional-commit type, as Markdown. | /changelog | |
| pr-description | Adds /pr-description: title, summary, diff totals and a test plan stub for the current branch against main or master. | /pr-description | |
| handoff | Adds /handoff: writes a session summary to .claude/handoff.md (never overwriting) and answers with the path. | /handoff | |
| todos | Adds /todos: TODO, FIXME and HACK lines in tracked files, grouped by file (50 lines at most). Read-only. | /todos | |
| loc | Adds /loc: lines of tracked text files by language, sorted, with a total. Skips lockfiles and binaries. Read-only. | /loc | |
| hotspots | Adds /hotspots: the 10 files changed most often in the last 90 days, with change counts. Read-only. | /hotspots | |
| commit-msg | Adds /commit-msg: a Conventional Commits message proposed from the staged diff. Heuristic, no model call, writes nothing. | /commit-msg | |
| branches | Adds /branches: local branches merged into the default branch or idle for 30 days, as a cleanup list. Never deletes. | /branches | |
| tree | Adds /tree: tracked files as a tree, 2 levels deep, folders with file counts (80 lines at most). Read-only. | /tree | |
| deps | Adds /deps: direct dependencies with versions from package.json, pyproject.toml, requirements.txt, go.mod and Cargo.toml at the repo root. No network, no audit. Read-only. | /deps | |
| authors | Adds /authors: the top 15 contributors by commit count with their last commit date. Names only, never email addresses. Read-only. | /authors | |
| scripts | Adds /scripts: runnable tasks from package.json scripts, Makefile targets, justfile recipes and pyproject scripts. Read-only. | /scripts | |
| env-check | Adds /env-check: variable names in .env.example against .env, listing missing and extra names. Reads names only, never a value. Read-only. | /env-check | |
| command-pack | Every slash command in one mod: /receipt, /standup, /changelog, /pr-description and /handoff. | /receipt, /standup, /changelog, /pr-description, /handoff | pack |
| repo-pack | Five read-only repo commands in one mod: /todos, /loc, /hotspots, /commit-msg and /branches. | /todos, /loc, /hotspots, /commit-msg, /branches | pack |
| explore-pack | Five read-only repo exploration commands in one mod: /tree, /deps, /authors, /scripts and /env-check. | /tree, /deps, /authors, /scripts, /env-check | pack |
Band meters (13)
A one-line band above the prompt.
| Mod | What it does | Command | Notes |
| --- | --- | --- | --- |
| cost-meter | A band above the prompt with the session cost so far and what the last turn cost. | | |
| latte-meter | A band above the prompt that counts the session cost in lattes. Set the latte price in the plugin options. | | needs setup |
| context-meter | A band above the prompt with a 10 cell bar of the context window used, yellow from 60 percent, red from 80. | | |
| daily-spend | A band above the prompt with today's total cost across all your sessions. | | |
| pomodoro | A band above the prompt with a 25/5 focus timer (focus 18:42, break 03:10). Start and stop it with /pomodoro; a toast marks each switch. | /pomodoro | |
| mood-ring | A band above the prompt with a colored dot and a word for the error and block rate of your last 20 tool calls: calm (green) under 10 percent, tense (yellow) under 30, stormy (red) from 30. | | |
| session-clock | A band above the prompt with the wall clock and how long the session has run (14:05 · 1h 12m). | | |
| branch-band | A band above the prompt with the git branch and the count of changed files, refreshed after each Bash call and file edit. | | |
| tool-counter | A band above the prompt with your tool calls this session, the top three by tool (Bash 41 · Edit 18 · Read 12). | | |
| error-meter | A band above the prompt with how many tool calls failed this session (an error or a deny) and which tool failed last. Red from the first failure. | | |
| model-badge | A band above the prompt with the current model name and the context percent (opus-4-1 · 62%). | | |
| band-pack | Every Baselane band meter in one row above the prompt: session cost, lattes, context bar, today's spend, the focus timer and the mood ring. | /pomodoro | needs setup, pack |
| dev-band | The developer band in one row above the prompt: git branch and changed files, wall clock and session age, tool counts, and failed tool calls. | | pack |
Panes (6)
Live side panes that you open with a slash command.
| Mod | What it does | Command | Notes |
| --- | --- | --- | --- |
| agent-firewall | A live pane of every tool call the agent makes: green when it ran, red when it was blocked, with counters. Open it with /firewall. | /firewall | |
| git-pane | A live side pane with the branch, ahead and behind its upstream, changed files (staged and unstaged) and the last 5 commits. It refreshes after git commands and file edits. Open it with /git. | /git | |
| test-pane | A live side pane with the last test run (vitest, jest, pytest, go test, cargo test, bun test, claude plugin test): runner, pass, fail and skip counts, duration and first failures. Open it with /tests. | /tests | |
| port-watch | A live side pane of the local TCP ports that listen, with the process name and pid, refreshed every 10 seconds while open. Reads lsof (macOS, most Linux). Open it with /ports. | /ports | |
| todo-pane | A live side pane of the TODO, FIXME and HACK lines in tracked files (git grep), grouped by file and capped at 30. It refreshes after file edits while open. Open it with /todo-pane. | /todo-pane | |
| cost-pane | A live side pane with the session cost, the cost of each of the last 10 turns as a bar, and the average per turn. Open it with /cost-pane. | /cost-pane | |
Prompt styles (20)
Change how Claude writes. Code and commands stay exact.
| Mod | What it does | Command | Notes |
| --- | --- | --- | --- |
| terse-mode | Short answers: no preamble, no recap. | | |
| plain-english | Writes in ASD-STE-100 Simplified Technical English: short sentences, active voice, simple words. | | |
| junior-mode | Explains each step and why, and defines jargon once, for a learner. | | |
| reply-language | Answers in the language you set (English by default). Code, identifiers and commands stay as they are. | | needs setup |
| no-sycophancy | No flattery or filler. Disagreement is stated plainly, with the reason. | | |
| no-em-dash | Never writes the em-dash character. Uses a comma, colon, period or parentheses. | | |
| pirate-mode | Talks like a pirate in prose, never inside code, commands or file contents. | | |
| haiku-commits | Commit messages get a normal conventional-commit first line, then a 5-7-5 haiku about the change in the body. | | |
| conventional-commits | Commit messages follow Conventional Commits: type(scope): subject, imperative, under 72 characters. | | |
| tdd-mode | Writes a failing test first, watches it fail, then implements. | | |
| ste-mode | Replies in ASD-STE100 Simplified Technical English: approved words, short sentences, one instruction each, active voice. | | |
| security-mode | Checks each change for injection, secrets, authorization and unsafe input, and states the risks it checked. | | |
| yoda-mode | Speaks like Yoda in prose. Code, commands and commit messages stay normal. | | |
| shakespeare-mode | Prose in Early Modern English flair. Code, commands, commit messages and error text stay exact. | | |
| caveman-mode | Prose in short caveman speech ("Fix bug. Test pass."), still accurate. Code and commands stay exact. | | |
| eli5-mode | Explains like the reader is new: analogies first, no jargon without a one-line definition. | | |
| code-only | Replies with the code or command first and at most two short sentences of prose, unless asked to explain. | | |
| gitmoji-commits | Commit messages start with the matching gitmoji (✨ feat, 🐛 fix). Composes with conventional-commits: emoji goes before the type. | | |
| team-pack | Team habits in one install: Conventional Commits, test-first work and a security check on every change. | | pack |
| fun-pack | Fun habits in one install: caveman prose and gitmoji commit messages. They compose: caveman never touches commit messages. | | pack |
Sounds (5)
Short sounds for passing tests, failing tests, blocked calls and turn ends.
| Mod | What it does | Command | Notes |
| --- | --- | --- | --- |
| sounds-retro | 8-bit sounds: a coin when tests pass, a buzz when they fail, a chime when a turn ends. | | needs setup |
| sounds-office | Quiet office sounds: a soft click when tests pass, a low thud when they fail, paper when a call is blocked. | | needs setup |
| sounds-scifi | Sci-fi console sounds: a beep when tests pass, an alarm when they fail, a warp when a turn ends. | | needs setup |
| sounds-nature | Soft nature sounds: a bird chirp when tests pass, a plunk into water when they fail, a gust of wind when a call is blocked, a water drop when a turn ends. | | needs setup |
| sounds-minimal | Very short, quiet clicks and ticks for a subtle signal: a tick when tests pass, two low ticks when they fail, a click when a call is blocked, a soft tick when a turn ends. | | needs setup |
Stats (6)
Local records of how you use Claude Code.
| Mod | What it does | Command | Notes |
| --- | --- | --- | --- |
| wrapped | Adds /wrapped: a screenshot-ready Claude Code Wrapped for the last 7 days (or /wrapped month for 30), printed and copied. | /wrapped | |
| streaks | Counts consecutive days you used Claude Code: a Day N streak toast at session start, and /streak to ask. | /streak | |
| achievements | Unlocks eight badges once each (first session, first green test run, 100 and 1,000 tool calls, 7-day streak, 10 blocked calls, a 2 hour session, night owl), with a toast and /achievements. | /achievements | |
| night-owl | Records the hour of each prompt across sessions and adds /hours: a 24-hour histogram of when you work, naming your peak hour. | /hours | |
| personal-bests | Tracks your records across sessions (longest session, most tool calls in a session, most files edited in a day, cheapest session over 30 minutes), toasts a new one, and lists them with /bests. | /bests | |
| stats-pack | Every Baselane stats mod in one: /wrapped, streaks and achievements on one shared daily rollup. | /wrapped, /streak, /achievements | pack |
Display and render (9)
Change how rows and replies look on your screen. What Claude reads does not change.
| Mod | What it does | Command | Notes |
| --- | --- | --- | --- |
| diff-stats | Edit and Write rows show a compact +12 -3 bar beside the file name: green for lines added, red for lines removed, up to 20 cells. | | |
| file-links | In Claude's replies, path/to/file.ts:42 references to files in your project become links. Click one to put @path/to/file.ts in the prompt. | | |
| time-badge | Tool rows show how long the call ran, for example 2.4s, when it took over one second. The time is the tool's own run time, without permission prompts. | | |
| exit-badge | A failed Bash row shows a small red badge with its exit code, for example exit 2. | | |
| json-pretty | Bash output that is one long line of JSON is drawn pretty-printed, folded after 30 lines. Display only: Claude reads the output as it was. | | |
| url-links | https links (and http://localhost) in tool output are listed as clickable links under the result, up to five. Display only: Claude reads the output as it was. | | |
| size-badge | Read and Write rows show how much was read or written: the line count, for example 312 lines, or the file size for images and PDFs. | | |
| render-pack | Every rendering mod in one: diff-stats bars on Edit and Write rows, and file-links in Claude's replies. | | pack |
| render-plus | Three row badges in one: time-badge, exit-badge and size-badge. | | pack |
Lifecycle and notify (11)
Act on session events: format files, push a notification, keep a journal.
| Mod | What it does | Command | Notes |
| --- | --- | --- | --- |
| auto-format | Runs your project's own formatter on each file Claude writes or edits, only when the project has a formatter config, and tells Claude to re-read the file. | | |
| long-run-notify | Sends a phone push through ntfy.sh when a Bash command ran longer than a threshold (60 seconds by default). Sends the project name and the seconds only. Does nothing until you set an ntfy topic. | | needs setup |
| ntfy-notify | Sends a phone push through ntfy.sh when Claude Code needs your input. The message is generic. Does nothing until you set an ntfy topic. | | needs setup |
| session-journal | Appends one line per session end (time, directory, reason) to ~/.claude/journal.log. | | |
| desktop-notify | Shows a desktop notification when Claude Code needs your input: osascript on macOS, notify-send elsewhere when it is installed. The text is the project name and a short status only. | | |
| slack-notify | Posts to a Slack incoming webhook when Claude Code needs your input. Sends the project name and a short status only. Does nothing until you set a webhook URL. | | needs setup |
| discord-notify | Posts to a Discord webhook when Claude Code needs your input. Sends the project name and a short status only. Does nothing until you set a webhook URL. | | needs setup |
| say-done | On macOS, says "Claude is done" when a turn ends after more than 30 seconds. Does nothing on other platforms. | | |
| auto-lint | Runs your project's own linter fix (eslint, ruff or golangci-lint) on each file Claude writes or edits, only when the project has that linter's config, and tells Claude what is left. | | |
| lifecycle-pack | Every Baselane lifecycle mod in one: auto-format, long-run and input pushes, and the session journal. | | needs setup, pack |
| notify-pack | Local alerts in one: a desktop notification when Claude Code needs your input, and a spoken line on macOS when a long turn ends. | | pack |

