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

dojo-fx

dojo crew를 위한 선택형 시각 효과: 테마 spinner, 턴 종료 연출, 실시간 crew 밴드, deploy/return toast, dojo 에이전트를 자체 모델에 고정하는 model guard를 제공합니다.

번역 완료

이 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를 dispatch할 수 없습니다.

SessionStart hook은 당번 persona를 strategist에게 알려 줍니다. 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이 표시됩니다.
  • Model guard(항상 켜짐): 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를 spawn할 때 `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 returned or 💀 Levi fell.
  • Model guard (always on): an agent.spawn of any dojo:* type has model stripped, 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

비슷한 프로젝트