shreym95/dojo/tree/main/fx
dojo-fx
為 dojo crew 提供選用的視覺效果:主題 spinner、回合結束裝飾、即時 crew 狀態帶、部署/返回 toast,以及讓 dojo agent 使用各自模型的模型保護。
關於這個 mod
dojo
以動漫為主題的 Claude Code subagent:一個 orchestrator 和一組 crew,每個都有自己的模型、工具和語氣。
Crew
| Agent | Character | Role | Model |
|---|---|---|---|
| dojo:strategist | Shikamaru 或 Lelouch(每個工作階段不同) | Orchestrator / integrator(主執行緒) | claude-opus-5-5 | | dojo:senku | Senku | Backend builder | claude-sonnet-5-5 |
| dojo:sanji | Sanji | Frontend builder | claude-sonnet-5-5 | | dojo:l | L | Deep web researcher | claude-haiku-4-5 |
| dojo:light | Light | Quick fact-finder | claude-haiku-4-5 | | dojo:levi | Levi | QA inspector(唯讀) | claude-haiku-4-5 |
| `dojo:robin | Robin | Documentation writer | claude-haiku-4-5 |
安裝
/plugin marketplace add shreym95/dojo
/plugin install dojo@dojo
啟動 orchestrator
claude --agent dojo:strategist
crew # bin/crew: random persona
crew lelouch # pin the persona (shikamaru | lelouch)
也可以在 settings.json 中將它設為預設值:"agent": "dojo:strategist"。
strategist 必須以主執行緒 agent 執行,因為 subagent 無法再產生 subagent。以 subagent 執行時,它無法派遣 crew。
SessionStart hook 會告訴 strategist 目前值班的 persona。使用 DOJO_STRATEGIST=shikamaru|lelouch 覆寫;設定 DOJO_DEBUG=1,可將 hook 輸入記錄到 `${TMPDIR:-/tmp}/dojo-hook-debug.log。
自訂
編輯 roster.mjs(角色、模型、工具、描述)、personas/*.md(語氣說明)、roles/*.md(職責)或 shared/house-rules.md,然後:
npm run build # regenerate agents/*.md
npm run check # fail if agents/ has drifted (used in CI)
npm test
`agents/*.md 是產生的檔案;不要手動編輯。
語氣等級
角色說話有多活躍,由 roster.mjs 設定:defaults: { voice: 'medium' },或在單一 agent 上設定 `voice: '...' 來覆寫。
| Level | What you get |
|---|---|
| subtle | 一句角色開場白,可選結尾語,正文保持平實。 | | medium(預設) | 1-2 句開場白、帶有角色色彩的措辭、最多約 3 個簡短插話和 2 個口頭禪,以及結尾語。長度約增加 +20%。 |
| `full | 角色自由發言,逐節展開。長度約增加 +40%。 |
無論等級如何,事實、路徑、數字和命令都保持準確,persona 不會進入程式碼、commit 或檔案。每份 crew 報告都以 Says: 行結尾;strategist 會在 Crew: 下轉述。等級規則位於 shared/voice/;修改等級後執行 npm run build。
dojo-fx(選用的視覺效果)
這是此 marketplace 中的第二個外掛,建置在 Claude Code 的 function hooks(early-access API)上:/plugin install dojo-fx@dojo。主要的 dojo 外掛沒有它也能運作。
- 主題 spinner:主執行緒的 spinner 文字來自值班的 strategist(Shikamaru:「Shadow-possessing」「Reading the board」;Lelouch:「Commanding」「Geass-ing」)。crew 成員自己的 spinner 會使用相應的 emoji 和動詞(🧪 Senku「Science-ing」、🧹 Levi「Scrubbing」、🌸 Robin「Deciphering」……)。動詞每回合輪替。
- 回合結束裝飾:收尾一回合的文字是「Outmaneuvered」(Shikamaru)或「Checkmated」(Lelouch)。
- Crew 狀態帶:任何
dojo:* subagent 執行時,提示列上方會出現一列:emoji、名稱、動畫影格、任務和最新工具呼叫(Bash: npm test)。沒有人執行時就消失。 - Toast:
🧹 Levi deployed — "Chi. Show me the mess.",接著是🧹 Levi returned 或 `💀 Levi fell。 - 模型保護(一律開啟):任何
dojo:* 類型的agent.spawn 都會移除 `model,因此呼叫端的「always pass model: sonnet」不能覆寫 agent 自己 frontmatter 中的模型。
strategist 從 dojo: on duty: <Name> 上下文列讀取;找不到時使用 DOJO_STRATEGIST,否則使用中性的 strategist 主題。在 /config(或設定中的 pluginConfigs)切換功能:spinners、turnFlair、band、toasts、neutralMainTheme 預設全部開啟。emoji、動詞、影格和 toast 文案位於 fx/hooks/characters.ts。不安裝也可以試用:claude --plugin-dir ./fx。測試:claude plugin test fx。
注意
產生 dojo agent 時不要傳 `model:它會覆寫 frontmatter 中設定的模型。
授權條款
MIT
安裝
請先查看作者 README,確認 marketplace 與外掛名稱;指令可能隨儲存庫結構而變動。
claude plugin marketplace add shreym95/dojo claude plugin install dojo-fx
原文 / README
dojo
Anime-themed Claude Code subagents: one orchestrator and a crew, each with its own model, tools and voice.
Crew
| Agent | Character | Role | Model |
|---|---|---|---|
| dojo:strategist | Shikamaru or Lelouch (per session) | Orchestrator / integrator (main thread) | claude-opus-5-5 |
| dojo:senku | Senku | Backend builder | claude-sonnet-5-5 |
| dojo:sanji | Sanji | Frontend builder | claude-sonnet-5-5 |
| dojo:l | L | Deep web researcher | claude-haiku-4-5 |
| dojo:light | Light | Quick fact-finder | claude-haiku-4-5 |
| dojo:levi | Levi | QA inspector (read-only) | claude-haiku-4-5 |
| dojo:robin | Robin | Documentation writer | claude-haiku-4-5 |
Install
/plugin marketplace add shreym95/dojo
/plugin install dojo@dojo
Launch the orchestrator
claude --agent dojo:strategist
crew # bin/crew: random persona
crew lelouch # pin the persona (shikamaru | lelouch)
Or make it the default in settings.json: "agent": "dojo:strategist".
The strategist must run as the main-thread agent because subagents cannot spawn subagents. Run as a subagent it could not dispatch the crew.
A SessionStart hook tells the strategist which persona is on duty. Override with DOJO_STRATEGIST=shikamaru|lelouch; set DOJO_DEBUG=1 to log hook input to ${TMPDIR:-/tmp}/dojo-hook-debug.log.
Customise
Edit roster.mjs (characters, models, tools, descriptions), personas/*.md (voice sheets), roles/*.md (duties) or shared/house-rules.md, then:
npm run build # regenerate agents/*.md
npm run check # fail if agents/ has drifted (used in CI)
npm test
agents/*.md is generated; do not edit by hand.
Voice levels
How loud the characters are is set in roster.mjs: defaults: { voice: 'medium' }, or voice: '...' on one agent to override it.
| Level | What you get |
|---|---|
| subtle | One in-character opening line, optional sign-off, plain body. |
| medium (default) | 1-2 opening lines, character-coloured wording, up to ~3 short asides and 2 catchphrases, a closing line. About +20% length. |
| full | The character speaks freely, section by section. About +40% length. |
At every level facts, paths, numbers and commands stay exact, and persona never reaches code, commits or files. Each crew report ends with a Says: line; the strategist relays them to you under Crew:. Level rules are in shared/voice/; run npm run build after changing a level.
dojo-fx (optional visuals)
A second plugin in this marketplace, built on Claude Code's function hooks (early-access API): /plugin install dojo-fx@dojo. The main dojo plugin works without it.
- Themed spinners: the main thread's spinner word comes from the on-duty strategist (Shikamaru: "Shadow-possessing", "Reading the board"; Lelouch: "Commanding", "Geass-ing"). A crew member's own spinner gets its emoji and verbs (🧪 Senku "Science-ing", 🧹 Levi "Scrubbing", 🌸 Robin "Deciphering"...). Verbs rotate per turn.
- Turn-end flair: the line that closes a turn says "Outmaneuvered" (Shikamaru) or "Checkmated" (Lelouch).
- Crew band: while any
dojo:*subagent runs, one row each above the prompt: emoji, name, an animated frame, its task and its latest tool call (Bash: npm test). Gone when nobody is running. - Toasts:
🧹 Levi deployed — "Chi. Show me the mess.", then🧹 Levi returnedor💀 Levi fell. - Model guard (always on): an
agent.spawnof anydojo:*type hasmodelstripped, so a caller's "always pass model: sonnet" can't override an agent's own frontmatter model.
The strategist is read from the dojo: on duty: <Name> context line; if it can't be found, DOJO_STRATEGIST is used, else a neutral strategist theme. Toggle features in /config (or pluginConfigs in settings): spinners, turnFlair, band, toasts, neutralMainTheme, all on by default. Emoji, verbs, frames and toast lines live in fx/hooks/characters.ts. Try it without installing: claude --plugin-dir ./fx. Tests: claude plugin test fx.
Note
Don't pass model when spawning dojo agents: it overrides the model set in their frontmatter.
License
MIT

