Back to Discover

claude-bionify

plugin

abullard1

Bionic reading for Claude Code: bolds the leading part of each word in Claude's streamed replies so your eyes move faster. Zero dependencies, display-only.

View on GitHub
16 starsMITSynced Aug 2, 2026

Install to Claude Code

/plugin marketplace add abullard1/claude-bionify

README

claude-bionify

claude-bionify

Bionic reading for Claude Code. Bold the front of every word so your eyes move faster.
So Bionify makes Claude's replies easier to read.

License: MIT Claude Code Python Version CI Buy Me a Coffee


The same paragraph shown plain, then bionified

claude-bionify bolds the leading part of each word in Claude's streamed replies, giving your eye a fixation point per word. This is the bionic-reading technique, inspired by the eye-movement research showing that we read by fixating a single convenient position toward the start of each word, where its opening letters carry the most information for recognising it (Rayner, 1979; O'Regan et al., 1984).

It only changes how text looks on screen. What gets saved to the transcript and what Claude reads stays the original, unbolded text, which you can reopen any time with the Ctrl+O transcript view.

Features

  • ⚑ Faster, calmer reading. Fixation points pull your eye word to word through long answers.
  • 🌍 Any language. Unicode-aware, so accents and non-Latin scripts bold correctly, not just English.
  • 🎚️ Three boundary modes. fraction, syllable, or log β€” see Configure.
  • 🧩 Markup-aware. Code, links, URLs, paths, and acronyms stay intact (what it touches).
  • πŸ”’ Private, zero-dependency. Nothing to install, no network, no telemetry β€” it runs entirely on your machine.
  • πŸͺΆ Crash-safe. On any error it falls back to the original text.

Install

/plugin marketplace add abullard1/claude-bionify
/plugin install claude-bionify@claude-bionify

claude-bionify is active right away. Turn it off or back on any time with /claude-bionify:off and /claude-bionify:on, or from /plugin.

Configure

When you enable the plugin, Claude Code prompts for these (all optional):

SettingDefaultMeaning
Bold boundaryfractionfraction bolds by Fixation strength; syllable ends each word at its first syllable (e.g. string); log grows logarithmically so long words are bolded less.
Fixation strength0.5Fraction of each word to bold (0.1–0.9). Higher is bolder. Applies to fraction mode only.
Minimum word length4Words shorter than this are left unbolded.
Skip acronymsonLeave ALL-CAPS acronyms like API or JSON whole.
Protect URLs, paths, filesonDon't bold inside URLs, emails, file paths, or filenames.
Skip headingsonLeave markdown headings (# lines) unbolded; they're already prominent.

Control it live

Change claude-bionify mid-session without a reload or any config editing. The next reply reflects it right away:

CommandDoes
/claude-bionify:toggleFlip claude-bionify on/off
/claude-bionify:on Β· /claude-bionify:offTurn it on or off explicitly
/claude-bionify:set strength 0.7Set fixation strength (0.1–0.9)
/claude-bionify:set boundary syllableSwitch boundary (fraction Β· syllable Β· log)
/claude-bionify:set minlen 5 Β· /claude-bionify:set acronyms off Β· /claude-bionify:set urls off Β· /claude-bionify:set headings offTweak the other settings
/claude-bionify:statusShow the active overrides
/claude-bionify:resetClear overrides, back to your configured defaults

These write a small override file that the hook reads on every message, so changes take effect immediately and persist until you reset.

Themes

claude-bionify also ships seven color palettes for Claude Code's /theme picker (custom:claude-bionify:<name>). They retint Claude Code's interface and are independent of the bolding.

The seven claude-bionify palettes
Exact palette values
ThemeBaseTextAccentSubtleSuccessWarningError
Norddark#D8DEE9#88C0D0#4C566A#A3BE8C#EBCB8B#BF616A
Draculadark#F8F8F2#BD93F9#6272A4#50FA7B#F1FA8C#FF5555
Gruvboxdark#EBDBB2#FABD2F#928374#B8BB26#FE8019#FB4934
Solarized Darkdark#839496#268BD2#586E75#859900#CB4B16#DC322F
Solarized Lightlight#657B83#268BD2#93A1A1#859900#CB4B16#DC322F
Sepialight#5C3C24#B58900#8A7E72#859900#CB4B16#DC322F
Focus Darkdark#ABB2BF#C678DD#4B5263#98C379#D19A66#E06C75

Plugin themes are read-only. Highlight one in /theme and press Ctrl+E to copy it into ~/.claude/themes/ and tweak your own.

How it works

Claude streams a reply β–Έ claude-bionify β–Έ bolded text in your terminal

As each batch of Claude's reply streams in, claude-bionify bolds it just before it reaches your screen β€” so only what you see changes, never the text itself.

What it touches

  • Bolded: ordinary prose words.
  • Left alone: inline `code`, fenced code blocks, markdown link/image targets, URLs, emails, file paths and filenames, ALL-CAPS acronyms, and any text Claude already wrapped in **bold**.
  • Never touched: your own input and tool output.

Requirements

  • Claude Code with plugin support
  • python3 on your PATH
  • A terminal that renders markdown bold (any modern terminal)

Limitations

  • Affects assistant chat text only, not tool results or your prompts.
  • Text in tables and headings is treated as prose and gets bolded, which is intended. Deeply nested or unusual markdown may occasionally mis-bold a word. It is cosmetic only, and it never changes the underlying text.
  • Right-to-left scripts (Arabic, Hebrew) are not a target; there, syllable mode falls back to a length-based bold.
  • Each line is processed on its own, so a markdown construct split across a line break (rare) may not be detected.

Development

# Run against a working copy without installing
claude --plugin-dir ./plugins/claude-bionify

# Validate the manifest and components
claude plugin validate ./plugins/claude-bionify --strict

# Run the tests (project-local virtualenv, nothing system-wide)
python3 -m venv .venv && .venv/bin/pip install pytest
.venv/bin/python -m pytest tests/

Set CLAUDE_BIONIFY_DEBUG=1 to make the hook re-raise on error instead of silently falling back, so failures surface while you iterate.

Repository layout

claude-bionify/
β”œβ”€β”€ .claude-plugin/
β”‚   └── marketplace.json      # marketplace catalog
β”œβ”€β”€ assets/                   # logo, demo, theme gallery (SVG) + generate_themes.py
β”œβ”€β”€ plugins/claude-bionify/          # the plugin
β”‚   β”œβ”€β”€ .claude-plugin/plugin.json
β”‚   β”œβ”€β”€ hooks/hooks.json      # MessageDisplay -> bionify.py
β”‚   β”œβ”€β”€ commands/             # /claude-bionify:on, off, toggle, set, status, reset
β”‚   β”œβ”€β”€ skills/               # model-invoked control/config skill
β”‚   β”œβ”€β”€ scripts/
β”‚   β”‚   β”œβ”€β”€ core.py           # functional core: pure formatting + settings (no I/O)
β”‚   β”‚   β”œβ”€β”€ overrides.py      # runtime-override persistence (shared contract)
β”‚   β”‚   β”œβ”€β”€ bionify.py        # the MessageDisplay hook shell (entrypoint)
β”‚   β”‚   └── control.py        # the /claude-bionify control CLI
β”‚   β”œβ”€β”€ themes/               # 7 color themes for /theme (experimental component)
β”‚   └── README.md
└── tests/test_bionify.py

Contributing

Issues and pull requests are welcome. Run .venv/bin/python -m pytest tests/ and claude plugin validate ./plugins/claude-bionify --strict before opening a PR.

Author

Samuel RuairΓ­ Bullard Samuel RuairΓ­ Bullard
Human-Centred AI @ University of Regensburg Β· Regensburg, Germany
GitHubΒ @abullard1 Β· sams3dlibrary.com Β· XΒ @samudschigo

Built by Samuel Ruairí Bullard. If claude-bionify makes your reading easier, a ⭐ on the repo is hugely appreciated.

License

MIT Β© 2026 Samuel RuairΓ­ Bullard.

Star History

Star History Chart

Rendered live from abullard1/claude-bionify's GitHub README β€” not stored, always reflects the source repo.

1 Plugin

NameDescriptionCategorySource
claude-bionifyBionic reading for Claude's responses that bolds the leading part of each word to guide your eyes and enable you to read faster.productivity./plugins/claude-bionify

0 Comments

Login required
Log in to post a comment or update on this repo.

No comments yet β€” be the first to share an update.