RichardAtCT/cc-idle/tree/main/plugins/cc-idle

Claude Code 자체의 턴, 도구, 세션 이벤트를 동력으로 트랜스크립트 옆 창에서 방치형 게임을 실행하는 Claude Code 모드입니다.
RichardAtCT/cc-idle/tree/main/plugins/cc-idle

cc-idle은 트랜스크립트 옆 창에서 방치형 게임을 실행하는 Claude Code 모드입니다. Claude Code 자체 이벤트(turn.start, turn.step, tool.call, turn.complete, session.end)만 공급원으로 사용하며 tmux, 데몬, 훅 심이 필요하지 않습니다. 요구 사항은 Claude Code v2.1.287 이상입니다. /plugin marketplace add RichardAtCT/cc-idle을 실행한 다음 /plugin install cc-idle@cc-idle로 설치하거나, 클론한 폴더에서 claude --plugin-dir ./plugins/cc-idle로 시험할 수 있습니다. 터미널이 최소 144열이면 창이 자동으로 열리고, 그렇지 않으면 /idle을 사용합니다. /idle close로 닫고 Esc로 키보드를 프롬프트에 돌려줍니다. 게임에서는 GPU, 랙, 데이터센터를 구매하고, 사건을 확인하고, 연구원을 고용하고, 실험을 실행하고, 세대를 출시하고, 돌파 트리를 진행합니다. Haiku로 구동되는 이사회 구성원이(자신의 Claude Code 세션을 통해) 메커니즘을 설명하고 규칙 질문에 답하며 큰 순간에 반응하지만 호출은 분당 한 번으로 제한됩니다. 모든 세션은 $.store의 하나의 저장 파일을 공유합니다. 모드는 파일 시스템, 네트워크 또는 프로세스를 호출하지 않으며 도구 호출, 프롬프트 또는 턴을 거부하거나 다시 쓰지도 않습니다.
먼저 작성자의 README에서 marketplace와 플러그인 이름을 확인하세요. 저장소 구조에 따라 명령어가 달라질 수 있습니다.
claude plugin marketplace add RichardAtCT/cc-idle claude plugin install cc-idle
CC Idle as a Claude Code mod: the game runs in a pane beside the transcript, fed by Claude Code's own events. No tmux, no daemon, no hook shims.
Requires Claude Code v2.1.287 or later.
/plugin marketplace add RichardAtCT/cc-idle
/plugin install cc-idle@cc-idle
Or try it from a clone for one session: claude --plugin-dir ./plugins/cc-idle.
To pick up new commits from main inside Claude Code, refresh the marketplace, then load the new
version into the running session. No restart is needed.
/plugin marketplace update cc-idle
/reload-plugins
If the new version does not appear, type /plugin, open cc-idle under the installed plugins, choose
update, then run /reload-plugins again. From a shell, the same update is:
claude plugin marketplace update cc-idle && claude plugin update cc-idle@cc-idle
plugin.json sets no version on purpose. Claude Code then uses the commit SHA as the version,
so every merge to main is an update. claude plugin validate warns about the missing version;
ignore that warning.
/idle. It works mid-turn, so you can play while Claude works. Until you
have played once, a toast tells you so.→ line under the header names the next useful move when there is one./idle also gives the pane the keyboard. Esc hands it back to the prompt. /idle close
closes the pane.| Key | Action |
| --- | --- |
| g / r / d | Buy a GPU / rack / datacenter in the focused region |
| a | Acknowledge the region's incident (the post-mortem pays engineering) |
| n | Next region |
| h | Hire a researcher |
| e | Run an experiment |
| s | Ship the generation (asks y / n first) |
| v | Breakthrough tree (1–6 buy, v back) |
| c | Talk to the board (Enter on an empty line goes back) |
| i | How to play (i back) |
The original TUI's tab and P became n and s, because a mod's hotkeys must be a single
lowercase letter or digit, and Tab and the arrow keys stay Claude Code's.
A board member of your lab lives in the pane. It is Haiku, run through your own Claude Code session, so each line it says is one small Haiku call on your account.

c to open the board, type a short line (80 characters at most) and press Enter. It
answers in one line. The text field takes every key, so Enter on an empty line goes back to
the game. Esc hands the keyboard to the prompt, as on every screen.| Claude Code event | Becomes | Economy |
| --- | --- | --- |
| turn.start (main loop) | UserPromptSubmit | the region is hot; the turn's accrual starts |
| turn.step (every model request, subagents too) | TokenUsage | output tokens → Compute, live |
| tool.call succeeded | PostToolUse | Edit/Write/Bash → engineering, Read/Search/Fetch → research data |
| tool.call errored | PostToolUse (failed) | an incident |
| turn.complete (subagent) | SubagentStop | a training run |
| turn.complete (main, answered) | Stop | milestone shipped: completion bonus and reputation |
| session.end | SessionEnd | the session leaves its region |
The mod builds the same v1 envelopes the shell hooks wrote, so the engine in packages/game, its
balance constants and the replay/backtest tooling are unchanged.
One economy for all your sessions. Every Claude Code session running the mod shares one save
in $.store. Each session applies events locally at once, then about a second later re-reads the
save, replays its queued events on top and writes it back. Every 5 seconds it picks up the other
sessions' writes. Only a write that lands between another session's read and its write is lost.
What it touches. claude plugin validate plugins/cc-idle lists every call the mod makes:
$.store, $.state, $.ui, $.clock, $.model.complete, $.command.register, $.session.id
and $.session.cwd. Its only model calls are the board's Haiku calls. It makes no filesystem,
network or process calls. It never denies or rewrites a tool call,
prompt or turn: every hook passes its event on unchanged.
hooks/register.js is generated. Its sources are in packages/mod/src, bundled with the pure
game engine and zod by pnpm --filter @ccidle/mod build. A mod loads no packages and has no Node,
so everything it needs travels in that one file.
pnpm --filter @ccidle/mod build # regenerate hooks/register.js
pnpm --filter @ccidle/mod test # sync, telemetry and view unit tests (vitest)
pnpm --filter @ccidle/mod typecheck # against the mods API types in packages/mod/types
claude plugin validate plugins/cc-idle
claude plugin test plugins/cc-idle # hooks and pane tests in Claude Code's own test engine
packages/mod/types/claude-code.d.ts is the mods API declaration file that Claude Code 2.1.287
writes. When Claude Code updates, copy in the new one; don't edit it by hand.