claude-video-effects
Claude Code용 51가지 영상 효과, 말하는 클립 삽입 후 /effects orbit 입력, 얼굴 추적·머리 뒤 레이어 제공
Claude Code용 간결한 Eridian 토큰 압축·통계·상태줄 도우미
Rocky-speak for Claude Code — terse Eridian token compression, stats, and a statusline buddy.
플러그인JavaScript · PythonGitHub @jpboliv직접 설치운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
why use many token when few token do trick — but make it Eridian.
Talk terse like Rocky from Project Hail Mary. A Claude Code plugin with a
native Codex compatibility adapter that
compresses responses into Rocky's dialect, tracks session output and applicable prose reduction estimates,
and adds a tiny animated Rocky to your statusline.
Heavily inspired by caveman —
see Credits.
For local Codex CLI testing, use an isolated profile when possible:
Rebuild with node scripts/build-codex-package.js --force; it replaces only a
directory that a previous build produced.README 전문 보기 ↗why use many token when few token do trick — but make it Eridian.
— riffing on caveman's tagline
Talk terse like Rocky from Project Hail Mary. A Claude Code plugin with a native Codex compatibility adapter that compresses responses into Rocky's dialect, tracks session output and applicable prose reduction estimates, and adds a tiny animated Rocky to your statusline.
Heavily inspired by caveman — see Credits.
/plugin marketplace add jpboliv/eridian
/plugin install eridian@eridian
For local Codex CLI testing, use an isolated profile when possible:
node scripts/build-codex-package.js
codex plugin marketplace add ./dist/codex-marketplace
codex plugin add eridian@eridian
Rebuild with node scripts/build-codex-package.js --force; it replaces only a
directory that a previous build produced.
Codex uses .codex-plugin/plugin.json, adapters/codex/skills/, and
hooks/codex.json. Hook trust remains a Codex host decision; never use a trust
bypass as installation. In Codex, use the skill picker for Eridian's mode,
help, stats, buddy, commit, review, and compress skills. Do not use Claude's
/eridian:... syntax. See Codex compatibility
for tested packaging evidence, limits, and native acceptance gates.
| Command | What it does |
|---|---|
/eridian:help | levels, commands, defaults and how to turn off |
/eridian:mode | toggle eridian mode (full) on/off |
/eridian:mode lite|full|ultra | set intensity (eridian = ultra) |
/eridian:stats | session output reduction estimates + statusline setup |
/eridian:buddy <seconds> | slow the buddy: min seconds between steps (0 = every refresh) |
/eridian:commit | terse conventional commit from staged diff |
/eridian:review | one-line-per-finding review. not ship. fix first. |
/eridian:compress | compress CLAUDE.md to cut input tokens (backup kept) |
Compression shows a full diff and requires semantic review and confirmation. Structural PASS does not verify meaning; see compression safeguards for path restrictions, supported Markdown, and validation limits.
Or just say "talk like Rocky". Mode preferences persist for new sessions until
/eridian:mode off.
An unconfigured installation is off. In interactive sessions, /eridian:mode
activates full by default. For scripts, scheduled tasks, or any session that should
ignore the saved mode, set the opt-out before launching Claude Code:
ERIDIAN_OFF=1 claude -p "Summarize the build results"
ERIDIAN_OFF=1 claude
Only the exact value 1 enables the override. SessionStart and prompt reminders
emit no persona, and automatic hooks leave Eridian state untouched. All
/eridian:mode arguments (including off and the no-argument toggle) report the
override without changing saved settings. Launch a new session without the
variable to use the saved mode again. Setting it after launch cannot remove
instructions already in the conversation, including a resumed transcript.
This suppresses Eridian's automatic injections; it does not disable other plugins,
project instructions, explicit style requests, or explicitly invoked style skills
and commands. eval/run.sh sets it for every arm, including baseline, while still
adding each dialect arm's explicit prefix. The evaluation harness also uses safe
mode, a fresh working directory, no tools, an empty MCP configuration and no session
persistence. Each invocation creates a unique directory under eval/runs/, retaining
run metadata, exact prefixes, raw responses and usage without overwriting earlier
runs. No manual global mode change is needed. See evaluation guidance
for the comparison protocol and its limits.
Host support checked against the Claude Code hook reference
on 2026-09-11: SessionStart's documented source describes lifecycle events
(startup, resume, clear, compact, fork), not interactive versus unattended
execution. The documented hook inputs provide no general unattended flag.
Eridian therefore requires the explicit opt-out; prompt text such as
<scheduled-task is not a trusted execution-mode signal.
These revised levels are an unvalidated draft. The previous candidate failed the preliminary offline quality screen; fresh evaluation and human review remain pending. See level budgets and evaluation for marker counting, command exceptions, measurements, and the remaining release gates. In the captured 285-response previous-candidate run, full used 8.65% more output than terse and ultra used 7.34% more than baseline; both targets were missed. Runtime factors are unchanged.
Historical clarification excerpts from that failed candidate (same prompt, first repetition):
Full captured replies and provenance show the previous clarity fallback; these examples do not validate the revised rules.
Every active level answers first when the answer is known and removes redundant preambles, restatements, recaps, closing offers and routine tool narration. Useful progress updates, necessary clarification, host-required communication, requested detail/format and the user's language remain intact. Active voice, consistent terms, one idea per sentence and approximately 20 words are preferences; headers, bullets and tables remain useful for navigation and comparison.
Clarity and complete meaning outrank compression. Preserve uncertainty, negation, exceptions, numbers, units and decisive error text; use plain phrasing when dialect adds confusion. Shared protections override level-specific flavor.
Files, comments, commits, PRs, issues, memory and messages to other people use plain,
concise prose in the requested language, respecting the audience and template.
/eridian:compress keeps its specialized density rules without dialect or meaning
loss. These boundaries apply at every level.
The shared payload including that boundary measures 249 tokens with tiktoken
0.12.0 / o200k_base (an approximation for the host tokenizer). The 149-token overage
preserves explicit completeness, evidence and artifact safeguards. Artifact drafts use
ordinary grammar and supplied facts; proposed text is not proof that work was performed. See the
design and human release gate; combined 007+009
behavioral evaluation and human acceptance remain pending.
Rocky lives in your statusline — eyeless and five-legged, as Eridians are.
He shuffles his legs while you work, reacts to what you prompt
(bad bad. I fix.), celebrates estimated output reduction milestones, and sleeps when you
idle. Run /eridian:stats once to set the statusline up:
▘ ◼◼◼ ▘ I fix.
◼◼◼◼◼ ∙ full ∙ ~12.3k output reduction
▘ ▘ ▘▘
The output reduction figure belongs to the identified current session. It appears only when a model-matched, prose-only calibration is applicable. Bundled historical factors do not establish that scope, so the estimate is unavailable by default. Tool, thinking, mixed code/prose, and unidentified output do not count as estimated prose reduction. Milestones require a positive applicable estimate.
/eridian:stats uses the caller's session ID, never the newest cache. Without a
reliable ID it reports current-session data unavailable. Lifetime means all retained
schema-2 accounting caches; it does not scan or infer historical session activations.
Rocky steps one animation frame per statusline refresh: every time Claude Code re-runs the statusline (a handful of seconds apart while the conversation is active), the pose visibly changes. When you idle, the last frame stays put until the next refresh — that cadence is the host's, not Rocky's.
Too jumpy? /eridian:buddy 2 slows him to at most one step every 2
seconds; /eridian:buddy 0 restores per-refresh stepping. He can never
step faster than the host refreshes — physics.
Using your own statusline script instead of the generated one? Forward the JSON that Claude Code pipes on stdin, or the savings segment is omitted:
rocky=$(printf '%s' "$input" | node "<plugin-root>/scripts/statusline.js" 2>/dev/null)
These figures are counterfactual output-token estimates, not measured savings or money saved. Persona blocks, command/skill metadata, activation wrappers and reminders add input overhead. Payload counts are now measured approximately; native-session overhead remains unmeasured. Reused conversation context and tool requests may process that text again; cache behavior also matters. The available July 2 raw CSV does not reproduce the later full/ultra percentages; the July 22 raw snapshot is missing. The historical figures below are published observations with incomplete supporting evidence, not a reproducible current baseline.
Whether shorter output reduces a bill depends on input/output rates, cache rates, workload and the billing model. Under fixed per-request billing, shorter replies do not inherently reduce charges. No universal reply-length break-even follows from these estimates. The measurement report distinguishes newly injected text from reprocessed context and reports the incomplete cadence experiment honestly.
Measured on 10 real coding prompts via claude -p, one run per prompt/mode
(eval/run.sh), 2026-07-02; full/ultra re-measured 2026-07-22 after the
canon vocab expansion. Two honest counterfactuals:
vs default Claude — historical evaluation output reduction:
| level | avg output-token reduction |
|---|---|
lite | ~52% |
full | ~30% |
ultra | ~14% |
vs a plain Answer concisely. instruction — how the dialect compares to
just asking for brevity:
| level | avg reduction vs terse |
|---|---|
lite | ~10% |
full | ~-25% |
ultra | ~-56% |
These are historical single-run observations with incomplete raw evidence. The
new evaluation harness retains replies, usage and quality
reviews across at least three repetitions; it does not overwrite old factors.
Run bash eval/run.sh for all five arms (costs provider tokens), then
node eval/compute-factors.js <run-directory> for distributions and paired output
comparisons. Human quality review remains required before accepting new rules.
Eridian retains a full reminder after 20 active prompts since the latest
startup/resume/compaction or mode change. Each session has its own countdown;
off and ERIDIAN_OFF=1 suppress injection. Full payloads remain available on
activation and lifecycle events. A concurrent disable cannot commit before an
already-selected reminder is emitted.
The three-policy cadence experiment retains 262 complete replies, 18 provider spend-limit failures and 116 skipped turns from 396 planned cells. It stopped before interval20 reached its first periodic refresh, so it cannot establish an optimal cadence. Brief reminders added context without resolving observed quality defects. The current default stays unchanged pending complete evidence and human acceptance; experimental 34/34/30-token reminders are not enabled. Emitted characters and replayed input are not billed session input or monetary savings.
State schema 2 separates saved mode/buddy-speed preferences from session mode,
activation history, buddy animation and reinjection counters. Existing sessions keep
their selected mode when another session changes the preference. Startup, resume and
compaction use the hook's session_id; mode/stats commands pass the host session ID
and also accept --session-id ID or CLAUDE_SESSION_ID when invoked directly.
Missing identity can save a mode preference but cannot establish session attribution.
Migration preserves old mode and buddy speed. Legacy global events remain labeled
unknown attribution; global animation/counters are discarded. Histories and caches
are retained without automatic pruning under ~/.claude/eridian/. Delete this
folder to reset preferences and accounting. Full transcript rescans can cost time
on large sessions. Streaming records with the same message ID use the largest
cumulative output count; records without IDs cannot safely be deduplicated and are
excluded from reduction estimates. Text-only classification is conservative and
cannot prove that unmarked text contains no code.
Calibration snapshots include identity, model, rule provenance and scope and stay
attached to each first-seen record. Zero and negative reductions are displayed as
such; estimates describe output reduction, never measured savings or money saved.
Corrupt/deleted caches lose their snapshots and must be rebuilt. File locks serialize
updates on one host; a forcibly killed process can leave a .lock directory.
After verifying its owner PID is no longer running, remove that lock to recover.
Do not share the state directory across hosts. Details and the runtime fixture are in
the accounting design and
test/fixtures/session-accounting.json.
Commit .eridian.json at your repository root:
{ "defaultMode": "lite" }
New sessions use environment ERIDIAN_DEFAULT_MODE, then repo config, user
~/.config/eridian/config.json (or $XDG_CONFIG_HOME/eridian/config.json), saved
preference, then off. /eridian:mode off overrides defaults for this session;
/eridian:mode reset clears that override and reads current defaults again.
Explicit mode changes also save the future-session preference, while other live
sessions retain their mode. Resume/compaction keep the session snapshot. Starting
from off, /eridian:mode activates full. ERIDIAN_OFF=1 suppresses all style paths
without changing saved state.
Config accepts only { "defaultMode": "lite|full|ultra|off" } (choose one value).
Files are bounded to 4 KiB, must be regular files without symlinked components,
and invalid sources fall through with a short diagnostic. Discovery stops at the
nearest repository root; unversioned directories inspect only the current folder.
See session lifecycle design for reset and migration
semantics. This draft remains dependent on ticket 010's cadence decision.
Use /eridian:stats --diagnostics --language en to inspect English phrase counts
and structural observations for the identified current session. The report uses
that session's accounting transcript path; --transcript PATH supplies it directly
when needed. Without a language, lexical support is unknown (und), not a zero.
The optional report excludes tool/thinking/artifact blocks and marked quotes/code, deduplicates cumulative reply snapshots, and divides total phrase matches by total observed prose words. Its separate versioned cache reads appended transcript data. These are observations, not quality or reading time. Statusline/buddy feedback is deferred; see scope, exclusions and the go/no-go decision.
npm test # unit tests (node:test, zero deps)
bash eval/run.sh # calibrate savings factors (manual, costs tokens)
For deterministic English phrase counts and language-aware structural observations,
see style diagnostics. Run
node scripts/readcost.js reply.md or pipe text on stdin. These diagnostics do not
measure clarity, completeness, or reading time.
Rules of the dialect live in one place: skills/speak/SKILL.md.
An investigator-first preset remains a no-go pending comparative evidence. Experimental contract fixtures are outside plugin discovery; installing Eridian does not spawn agents or install a crew preset. No delegation-savings percentage is claimed.
Good good good.