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

mr-banner

創建、合併、批准或審核的每個 MR/PR 下方帶有連結的彩色卡片

schreibse@schreibse

schreibse/claude-code-mods/tree/main/mr-banner

已翻譯

關於這個 mod

Claude Code模組

個人Claude Code mods:函數鉤子的外掛,可以重新設計腳本的樣式,在周圍添加行 提示並對工具呼叫做出反應。在 Claude Code 2.1.287+、Linux 上建置和使用。

模組

|模組 |它有什麼作用 |指令 |需求| |---|---|---|---| | [安靜的bash](安靜的bash/)| One 行工具行(✓ <description>,失敗時為紅色 ✗ exit N,編輯時為 +N −M,呼叫持續時間 ≥10 s)。隱藏每個工具的結果區塊(Bash 輸出、編輯差異、WebFetch、MCP 和代理結果;互動式工具、SendUserFile 和影像讀取保留結果)、完成的唯讀行(Read/Grep/Glob,並呼叫引擎以唯讀方式執行,如 QZKQZXD、XZKQZX失敗)和超時GitLab 管道等待通知。讀取、發送或寫入 PNG 的行下的內聯 PNG 縮圖,包括相對路徑 | /quiet 將這一切帶回來; /thumb [big] <path> 顯示PNG | ImageMagick (magick) 用於縮圖;帶有 kitty 圖形的終端機(請參閱 [herd-here) | 安靜旋轉器 |普通的旋轉詞(thinking、writing、running)和 Took 1m 4s 而不是異想天開的詞 | – | – | | [使用百分比](使用百分比/)|提示下行:ctx 34% \| 5h 41% \| wk 86%,黃色來自80%,紅色來自95%。在 Nx 儲存庫中,中間還有記憶體(claude.slice 使用 + app.slice 壓力),右邊是會話本身的 nx serve 專案 (▶ admin api) 和分支的管道(ci ⏳ test、等待作業時的 ⏸ZQZQZ/QZ QZ/TQZ QZ/XZ QZ(QZQSQZQZ QZ/AQZ QZ/AQZ QZ(QZQZQZ)。已登入管道; systemd claude.slice 用於記憶體 | | 提醒日誌 |統計 Claude Code 在每個會話中為模型注入的提醒;刪除權杖計數器和重複提交歸因區塊 | /reminders 列印最近 30 天的計數 | – | | 橫幅先生 |創建、合併、批准或審核的每個 MR✗ exit NQ 下帶有連結的彩色卡片 | – | GitLab MCP 伺服器名稱為 gitlab 或 glab / gh | | coderabbit-band |在提示上方帶有打開的 CodeRabbit 線程(按嚴重性)和當前分支的 GitLab MR 的挑剔,並帶有連結。僅當某些內容開啟時顯示 | /coderabbit 隱藏它直到計數改變 | glab 已登入;亞搏體育app遠端| | 編輯 |提示和工具輸出中的秘密以 ‹secret:…› 權杖的形式到達模型;只有 Write/Edit 將它們恢復為實際值。請參閱redact | – | PATH 上的 betterleaks || 記憶體防護 |執行 Node 工具的 Bash 指令進入記憶體上限的 claude-cmd.slice 範圍。拒絕,訊息中已修復:nx affected``--parallel=1,沒有 --parallel=1,pnpm 腳本有 :lite 雙胞胎,沒有工作帽的玩笑,帶有無括號模式的 pkill -f/QXZKQZXALQXZKQZXBTQXZKQZ或在壓力下。請參閱 mem-guard | – | systemd 使用者 claude-cmd.slice,請參閱 mem-guard | | 移交 |技能加mod:handover技能將冷會話的one語句切換寫入~/.claude/handover.md;提示上方的條帶會顯示它,並且在 ✓ <description>Q(或同一資料夾中的新會話,在 14ZKQZXAQQ(或同一資料夾中的新會話,在 14Z) /handover-copy 複製它並隱藏樂隊 | – | | herdr-通知 |當 Claude 等待權限、答案或新提示時,GNOME 彈出視窗(Notification 掛鉤,而不是外掛)。當該窗格是 herdr 中聚焦的 one 時跳過。按一下它會升起 Ghostty 並聚焦該會話的 herdr 窗格。掛鉤:"Notification": [{"matcher": "permission_prompt\|idle_prompt\|elicitation_dialog", "hooks": [{"type": "command", "command": "bash \"$HOME/.claude/skills/herdr-notify/notify.sh\""}]}] | – | herdr、幽靈、notify-send、jq |

模型準確地看到了沒有它們的情況:模組改變了繪製的內容,除了 提醒日誌,它會刪除 two 類型的注入提醒,編輯,隱藏秘密,以及記憶體保護, 它在 systemd 範圍內執行 Node 命令,並拒絕一些命令並出現 mem-guard: … 錯誤。

Three 模組自行喊出:

  • mr-banner,當 GitLab MCP 註釋或批准答案沒有 MR 連結時,調用 gitlab MCP 伺服器上的 get_merge_request 用於連結和標題。 gh/QXZKQZXBAQ 指令 無需額外費用。
  • coderabbit-band 為 GitLab origin 遙控器輪詢 glab:60 計時器檢查分支, 並且每分鐘執行一次獲取(glab mr view 加上 MR 討論的所有頁面) 15 分鐘後的 git push,每 5 分鐘,而樂隊顯示一些東西,每 15 分鐘,否則, 一旦線程被解析後 5 s。
  • 使用百分比,在 Nx 儲存庫中,輪詢每個 10:ps 和 pwdx 的 nx serve 進程,以及 docker inspect 每個伺服器執行的容器一次,以讀取其撰寫專案目錄。 當 HEAD 移動時,會取得管道 (gh run list / glab ci get),15 在 git push 之後, 執行時每分鐘,否則每 5 分鐘。

安裝

Claude Code 在會話開始時載入 ~/.claude/skills/ 下的每個外掛資料夾。

  • 空 ~/.claude/skills: 直接克隆到其中:
h
  git clone https://github.com/schreibse/claude-code-mods ~/.claude/skills
  
```-
 **那裡現有的技能:** 克隆到其他地方並連結你想要的模組:
```s
h
  git clone https://github.com/schreibse/claude-code-mods ~/src/claude-code-mods
  ln -s ~/src/claude-code-mods/quiet-bash ~/.claude/skills/quiet-bash   # per mod
  

新的會議將他們吸收起來;正在執行的 one 需要 /exit 和 claude --continue。

**保留模組:**刪除或取消連結其資料夾。 嘗試使用 one 進行單一會話: claude --plugin-dir ~/src/claude-code-mods/<mod>。

此儲存庫是技能資料夾本身,因此 .gitignore 會忽略所有內容並重新包含每個內容 mod:新的 mod 需要 !/<name>/ 行,否則 git 將看不到它。生成.claude-plugin/types/ 由引擎控制並且保持不被追蹤。

編輯:秘密作為權杖

betterleaks 在到達模型之前掃描每個提示和工具結果。它標記的每個值 變成 ‹secret:xxxxxxxx› 並在以後出現的任何地方保持隱藏,即使是掃描器所在的位置 就不會再認出來了。

|模特兒的來電|會發生什麼事 | |---|---| |使用權杖編寫、編輯、NotebookEdit |真實值被寫入檔案 | |寫入將刪除檔案儲存的秘密 |拒絕:使用編輯| |有權杖的代理、SendMessage、TodoWrite |作為權杖傳遞| |任何其他帶有權杖的工具(Bash、WebFetch、MCP …)|拒絕,所以價值永遠不會離開 | | mod 不再知道的權杖(重啟後)|拒絕,從未錯誤恢復|

**截短輸出。 ** 在 Read、Grep 或 Bash 執行之前,每個檔案的呼叫名稱(Bash:每個單字 這是一個現有文件,最多掃描 10 (1 MB),因此 cut -c1-60 .env, cut -d= -f2 或從 PEM 金鑰讀取幾行仍然會作為代幣傳回。多線 秘密被逐行隱藏。 Bash 單字根據每個段落執行的目錄進行解析 (cd sub && cut -c1-40 .env), ~/、$HOME/ 和 ${HOME}/ 擴展到主目錄。

**規則。 ** betterleaks 的預設值加上 redact/betterleaks.toml:Sentry DSN 金鑰和客戶端 對於通用規則來說秘密太短。包含 dev、local、test 的客戶端金鑰, example、changeme 或 placeholder 保持可見,因此本機開發使用者端可以繼續在命令中工作。

不包括:

  • 影像;輸出後面沒有文件,剪短(git show HEAD:.env | cut …, printenv | cut …);轉錄檔案的結構化工具記錄,保留真實值 (模型不會讀取它們)。
  • 縮短的預掃描會錯過全域 (cut -c1-40 *.env) 和帶有空格的參考路徑。
  • 短於 8 字元的值永遠不會隱藏。
  • 透過 Write/Edit 恢復到檔案中的值可以被讀回轉換(base64、rev、 xxd)或發送(curl -T file)。 redact 無意中將秘密保留在模型上下文之外; 它不是針對試圖獲取它們的模型的沙箱。
  • 引用 ‹secret:…› 權杖的代理程式報告會像其他工具呼叫一樣被拒絕 攜帶one。

保管庫位於會話記憶體中:/exit 忘記了它。

狀態列顯示 redacted N: N 對保管庫專案進行計數,因此 PEM 金鑰每行計數一次。 Toast 為其隱藏的每個新值命名規則。如果沒有 betterleaks,狀態列會顯示off (no betterleaks) 並沒有隱藏任何內容。失敗的 betterleaks 執行會留下該調用 未編輯(已在保管庫中的值保持隱藏):每個失敗條紋 one toast,狀態 說 off (betterleaks),然後再次掃描下一個呼叫。

mem-guard:Bash 的記憶體規則

每個命名 Node 工具的 Bash 指令(node、npx、pnpm、npm、yarn、nx、jest、 vitest、playwright、tsc、/exitQ)運作為 systemd-run --user --scope --slice=claude-cmd.slice -p MemoryMax=30% -p MemorySwapMax=4% -- bash -c '…', 因此,溢位會隨著退出 137 而終止,而不是關閉桌面。領先cd … &&停留 在包裝器外部,因此 shell 的目錄仍然會移動。

這些規則讀取命令的每個部分執行的內容(在 &&、|、;、&、$( ) 之後,內部) bash -c '…',跟隨 cd),從來沒有說過它只提到過,所以提交消息說 pkill -f 通過。未研究:xargs、make、eval、腳本。

假設此設定;訊息將其命名為:

  • claude-cmd.slice 使用者單元。如果沒有它,systemd 會使切片不受其自身的限制: 每個命令的上限仍然為 RAM 的 30 %,但餘量檢查沒有任何可測量的內容並且保持關閉:
i
  # ~/.config/systemd/user/claude-cmd.slice
  [Slice]
  MemoryMax=30%
  MemorySwapMax=4%
  
```systemd
 將百分比轉換為電腦 RAM 的位元組(在 27 GiB 上:8.2G 和 1.1G),因此
  同一裝置適用於任何機器。檢查機器得到了什麼:
  `systemd-run --user --scope -q -p MemoryMax=30% -- sh -c 'cat /sys/fs/cgroup$(cut -d: -f3 /proc/self/cgroup)/memory.max'`
- 其重型腳本具有 `:lite` 雙胞胎的儲存庫(`lint:affected:lite`、`typecheck:lite`、
  `test:affected:lite`)和慢速 `ci:local` 腳本。

## 使用百分比:未涵蓋

- 在 GitHub 上,僅顯示分支的最新工作流程運作。
- 使用 SSH 主機別名 (`git@work:org/repo`) 的遠端讀取為 `ci no login (work)`
  你已登入。
- 當伺服器在會話的根目錄中或在其容器中執行時,該伺服器算作會話的伺服器
  compose 計畫就在那裡。 one 結帳上的 Two 會話都可以看到其伺服器。

## herdr:圖片和連結

在 herdr 下(在 Ghostty 中),quiet-bash 的縮圖只繪製它們的
替代文字以及 mr-banner、coderabbit-band 和 Claude 自己的輸出中的連結不可點擊。

**原因:** Claude Code 僅針對 `XTVERSION` 答案為的終端機開啟 kitty 圖形
`kitty` (≥ 0.28) 或以 `ghostty` 開頭,且超連結僅適用於其識別的終端。牧人
轉發兩者,但用自己的名字應答,因此 Claude Code 將兩者都關閉。

**修復:**在 Claude Code 啟動之前僅在 herdr 內部強制啟用兩者(它在啟動時讀取它們):
```s
h
# ~/.bashrc.d/herdr-terminal.sh
if [ -n "$HERDR_ENV" ]; then
    export CLAUDE_CODE_FORCE_TERMINAL_IMAGES=1
    export FORCE_HYPERLINK=1
fi

也要在~/.config/herdr/config.toml中開啟herdr的kitty圖形直通(預設為關閉):

l
[experimental]
kitty_graphics = true

然後herdr server reload-config,開啟一個新 herdr 窗格(舊窗格保留舊環境) 並在那裡啟動Claude Code。檢查一下:/thumb /path/to/some.png 應該要畫出圖。

herdr-link-toast(herdr 外掛,不是 Claude Code mod)

herdr 在後台打開一個 ctrl+clicked 連結,沒有反饋,並忽略 file:// 連結 總共。 herdr-link-toast 開啟 http(s) 與 xdg-open 的連結並顯示 吐司。它還會打開 Quiet-bash 縮圖標題中的路徑,該標題連結到 `http://localhost/open-file/<

安裝

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

claude plugin marketplace add schreibse/claude-code-mods
claude plugin install mr-banner
原文 / README

claude-code-mods

Personal Claude Code mods: plugins of function hooks that restyle the transcript, add rows around the prompt and react to tool calls. Built and used on Claude Code 2.1.287+, Linux.

Mods

| Mod | What it does | Commands | Needs | |---|---|---|---| | quiet-bash | One-line tool rows (✓ <description>, red ✗ exit N on failure, +N −M on edits, duration for calls ≥10 s). Hides every tool's result block (Bash output, Edit diffs, WebFetch, MCP and Agent results; interactive tools, SendUserFile and image Reads keep theirs), finished read-only rows (Read/Grep/Glob, and calls the engine ran read-only like ls or git status), collapsed tool groups unless one failed, and timed-out GitLab pipeline-wait notices. Inline PNG thumbnails under rows that read, sent or wrote a PNG, relative paths included | /quiet brings it all back; /thumb [big] <path> shows a PNG | ImageMagick (magick) for thumbnails; a terminal with kitty graphics (see herdr) | | quiet-spinner | Plain spinner words (thinking, writing, running) and Took 1m 4s instead of the whimsical ones | – | – | | usage-percent | Row under the prompt: ctx 34% \| 5h 41% \| wk 86%, yellow from 80 %, red from 95 %. In Nx repos also memory in the middle (claude.slice usage + app.slice pressure) and on the right the session's own nx serve projects (▶ admin api) and the branch's pipeline (ci ⏳ test, ⏸ when it waits on a manual job) | – | gh / glab logged in for the pipeline; systemd claude.slice for memory | | reminder-log | Tallies the reminders Claude Code injects for the model, per session; drops the token counter and repeated commit attribution blocks | /reminders prints the tally of the last 30 days | – | | mr-banner | Colored card with a link under each MR/PR created, merged, approved or reviewed | – | GitLab MCP server named gitlab, or glab / gh | | coderabbit-band | Band above the prompt with the open CodeRabbit threads (by severity) and nitpicks of the current branch's GitLab MR, with a link. Shows only when something is open | /coderabbit hides it until the counts change | glab logged in; GitLab remote | | redact | Secrets in prompts and tool output reach the model as ‹secret:…› tokens; only Write/Edit turn them back into the real value. See redact | – | betterleaks on PATH | | mem-guard | Bash commands that run Node tools go into a memory-capped claude-cmd.slice scope. Refused, with the fix in the message: nx affected/run-many without --parallel=1, a pnpm script that has a :lite twin, jest without a worker cap, pkill -f/pgrep -f with an unbracketed pattern, ci:local, and heavy runs while the slice is above 75 % or under pressure. See mem-guard | – | a systemd user claude-cmd.slice, see mem-guard | | handover | Skill plus mod: the handover skill writes a one-sentence handover for a cold session to ~/.claude/handover.md; a band above the prompt shows it, and after /clear (or a new session in the same folder, within 14 days) it waits once in the prompt as a suggestion, taken with Tab | /handover-copy copies it and hides the band | – | | herdr-notify | GNOME popup when Claude waits for a permission, an answer or a new prompt (a Notification hook, not a plugin). Skipped while that pane is the focused one in herdr. Clicking it raises Ghostty and focuses that session's herdr pane. Hook: "Notification": [{"matcher": "permission_prompt\|idle_prompt\|elicitation_dialog", "hooks": [{"type": "command", "command": "bash \"$HOME/.claude/skills/herdr-notify/notify.sh\""}]}] | – | herdr, Ghostty, notify-send, jq |

The model sees exactly what it would without them: the mods change what is drawn, except reminder-log, which drops two kinds of injected reminders, redact, which hides secrets, and mem-guard, which runs Node commands inside a systemd scope and refuses some with a mem-guard: … error.

Three mods call out on their own:

  • mr-banner, when a GitLab MCP note or approval answers without the MR's link, calls get_merge_request on the gitlab MCP server for the link and title. gh/glab commands cost nothing extra.
  • coderabbit-band polls glab for GitLab origin remotes: a 60 s timer checks the branch, and a fetch (glab mr view plus all pages of the MR's discussions) runs every minute for 15 min after a git push, every 5 min while the band shows something, every 15 min otherwise, and once 5 s after a thread is resolved.
  • usage-percent, in Nx repos, polls every 10 s: ps and pwdx for nx serve processes, and docker inspect once per container a server runs in, to read its compose project directory. The pipeline (gh run list / glab ci get) is fetched when HEAD moves, 15 s after a git push, every minute while it runs and every 5 min otherwise.

Install

Claude Code loads every plugin folder under ~/.claude/skills/ at session start.

  • Empty ~/.claude/skills: clone straight into it:
    git clone https://github.com/schreibse/claude-code-mods ~/.claude/skills
    
  • Existing skills there: clone elsewhere and link the mods you want:
    git clone https://github.com/schreibse/claude-code-mods ~/src/claude-code-mods
    ln -s ~/src/claude-code-mods/quiet-bash ~/.claude/skills/quiet-bash   # per mod
    

New sessions pick them up; a running one needs /exit and claude --continue.

Leave a mod out: delete or unlink its folder. Try one for a single session: claude --plugin-dir ~/src/claude-code-mods/<mod>.

This repo is the skills folder itself, so .gitignore ignores everything and re-includes each mod: a new mod needs a !/<name>/ line or git won't see it. .claude-plugin/types/ is generated by the engine and stays untracked.

redact: secrets as tokens

betterleaks scans every prompt and tool result before it reaches the model. Each value it flags becomes ‹secret:xxxxxxxx› and stays hidden wherever it appears later, even where the scanner would not recognise it again.

| The model's call | What happens | |---|---| | Write, Edit, NotebookEdit with a token | the real value is written to the file | | Write that would drop a secret the file holds | refused: use Edit | | Agent, SendMessage, TodoWrite with a token | passed on as the token | | Any other tool with a token (Bash, WebFetch, MCP …) | refused, so the value never leaves | | A token the mod no longer knows (after a restart) | refused, never restored wrongly |

Cut-short output. Before Read, Grep or Bash runs, every file the call names (Bash: each word that is an existing file, up to 10 of 1 MB) is scanned whole, so cut -c1-60 .env, cut -d= -f2 or a Read of a few lines from a PEM key still come back as tokens. Multi-line secrets are hidden line by line. Bash words resolve against the directory each segment runs in (cd sub && cut -c1-40 .env), and ~/, $HOME/ and ${HOME}/ expand to the home directory.

Rules. betterleaks' defaults plus redact/betterleaks.toml: Sentry DSN keys, and client secrets too short for the generic rules. A client secret containing dev, local, test, example, changeme or placeholder stays visible, so local dev clients keep working in commands.

Not covered:

  • images; output with no file behind it, cut short (git show HEAD:.env | cut …, printenv | cut …); the transcript file's structured tool records, which keep real values (the model does not read them).
  • the cut-short pre-scan misses globs (cut -c1-40 *.env) and quoted paths with spaces.
  • values shorter than 8 characters are never hidden.
  • a value restored into a file by Write/Edit can be read back transformed (base64, rev, xxd) or sent (curl -T file). redact keeps secrets out of the model's context by accident; it is not a sandbox against a model trying to get them.
  • a subagent's report that quotes a ‹secret:…› token is refused like any other tool call carrying one.

The vault lives in session memory: /exit forgets it.

The status line shows redacted N: N counts vault entries, so a PEM key counts once per line. A toast names the rule for each new value it hides. Without betterleaks the status line says off (no betterleaks) and nothing is hidden. A betterleaks run that fails leaves that call unredacted (values already in the vault stay hidden): one toast per failure streak, the status says off (betterleaks), and the next call scans again.

mem-guard: memory rules for Bash

Every Bash command that names a Node tool (node, npx, pnpm, npm, yarn, nx, jest, vitest, playwright, tsc, ngc) runs as systemd-run --user --scope --slice=claude-cmd.slice -p MemoryMax=30% -p MemorySwapMax=4% -- bash -c '…', so an overrun dies with exit 137 instead of taking the desktop down. Leading cd … && stay outside the wrapper, so the shell's directory still moves.

The rules read what each part of a command runs (after &&, |, ;, &, $( ), inside bash -c '…', following cd), never words it only mentions, so a commit message saying pkill -f passes. Not looked into: xargs, make, eval, scripts.

Assumes this setup; the messages name it:

  • a claude-cmd.slice user unit. Without it systemd makes the slice with no limit of its own: each command is still capped at 30 % of RAM, but the headroom check has nothing to measure and stays off:
    # ~/.config/systemd/user/claude-cmd.slice
    [Slice]
    MemoryMax=30%
    MemorySwapMax=4%
    
    systemd turns a percentage into bytes of the machine's RAM (on 27 GiB: 8.2G and 1.1G), so the same unit fits any machine. Check what a machine gets: systemd-run --user --scope -q -p MemoryMax=30% -- sh -c 'cat /sys/fs/cgroup$(cut -d: -f3 /proc/self/cgroup)/memory.max'
  • repos whose heavy scripts have a :lite twin (lint:affected:lite, typecheck:lite, test:affected:lite) and a slow ci:local script.

usage-percent: not covered

  • On GitHub only the newest workflow run of the branch is shown.
  • A remote using an SSH host alias (git@work:org/repo) reads as ci no login (work) though you are logged in.
  • A server counts as the session's when it runs inside the session's root, or in a container whose compose project lives there. Two sessions on one checkout both see its servers.

herdr: images and links

Under herdr (here inside Ghostty), quiet-bash's thumbnails draw only their alt text, and links in mr-banner, coderabbit-band and Claude's own output aren't clickable.

Cause: Claude Code turns on kitty graphics only for terminals whose XTVERSION answer is kitty (≥ 0.28) or starts with ghostty, and hyperlinks only for terminals it recognises. herdr forwards both, but answers with its own name, so Claude Code turns both off.

Fix: force both on, inside herdr only, before Claude Code starts (it reads them at startup):

# ~/.bashrc.d/herdr-terminal.sh
if [ -n "$HERDR_ENV" ]; then
    export CLAUDE_CODE_FORCE_TERMINAL_IMAGES=1
    export FORCE_HYPERLINK=1
fi

Also turn on herdr's kitty graphics passthrough (off by default) in ~/.config/herdr/config.toml:

[experimental]
kitty_graphics = true

Then herdr server reload-config, open a new herdr pane (old panes keep the old environment) and start Claude Code there. Check it: /thumb /path/to/some.png should draw the picture.

herdr-link-toast (a herdr plugin, not a Claude Code mod)

herdr opens a ctrl+clicked link in the background with no feedback, and ignores file:// links altogether. herdr-link-toast opens http(s) links with xdg-open and shows a toast. It also opens the path in quiet-bash's thumbnail captions, which link to http://localhost/open-file/<path> because file:// isn't clickable in herdr. Such a link opens only when the path ends in .png; any other gets a "Could not open link" toast. Needs python3. Install:

herdr plugin link ~/.claude/skills/herdr-link-toast

Without herdr, in plain kitty or Ghostty, none of this is needed. Terminals without the kitty graphics protocol show the thumbnail's alt text (its path).

Developing

Each mod is .claude-plugin/plugin.json, hooks/hooks.json and hooks/register.ts(x), plus types/index.d.ts when it keeps session state. Per mod:

claude plugin validate <mod>   # what it hooks and calls, and what the engine would refuse
claude plugin test <mod>       # its *.test.ts(x)
tsc -p <mod>                   # once the engine has laid .claude-plugin/types/

Edits in ~/.claude/skills hot-reload into running sessions that loaded the mod.

更多類似作品