From ea86fabd3c7e86972ef8bd6722eace0b391f907a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20Ruair=C3=AD=20Bullard?= Date: Sat, 4 Jul 2026 19:02:53 +0200 Subject: [PATCH 1/3] Add claude-bionify plugin --- .claude-plugin/marketplace.json | 15 +- README.md | 3 +- .../claude-bionify/.claude-plugin/plugin.json | 69 +++++++ plugins/claude-bionify/CHANGELOG.md | 30 +++ plugins/claude-bionify/LICENSE | 21 +++ plugins/claude-bionify/README.md | 102 ++++++++++ plugins/claude-bionify/commands/off.md | 8 + plugins/claude-bionify/commands/on.md | 8 + plugins/claude-bionify/commands/reset.md | 8 + plugins/claude-bionify/commands/set.md | 9 + plugins/claude-bionify/commands/status.md | 8 + plugins/claude-bionify/commands/toggle.md | 8 + plugins/claude-bionify/hooks/hooks.json | 17 ++ plugins/claude-bionify/scripts/bionify.py | 174 ++++++++++++++++++ plugins/claude-bionify/scripts/control.py | 69 +++++++ plugins/claude-bionify/scripts/core.py | 153 +++++++++++++++ plugins/claude-bionify/scripts/overrides.py | 52 ++++++ plugins/claude-bionify/scripts/settings.py | 154 ++++++++++++++++ .../skills/claude-bionify/SKILL.md | 66 +++++++ plugins/claude-bionify/themes/dracula.json | 13 ++ plugins/claude-bionify/themes/focus-dark.json | 13 ++ plugins/claude-bionify/themes/gruvbox.json | 13 ++ plugins/claude-bionify/themes/nord.json | 13 ++ plugins/claude-bionify/themes/sepia.json | 13 ++ .../claude-bionify/themes/solarized-dark.json | 13 ++ .../themes/solarized-light.json | 13 ++ 26 files changed, 1063 insertions(+), 2 deletions(-) create mode 100644 plugins/claude-bionify/.claude-plugin/plugin.json create mode 100644 plugins/claude-bionify/CHANGELOG.md create mode 100644 plugins/claude-bionify/LICENSE create mode 100644 plugins/claude-bionify/README.md create mode 100644 plugins/claude-bionify/commands/off.md create mode 100644 plugins/claude-bionify/commands/on.md create mode 100644 plugins/claude-bionify/commands/reset.md create mode 100644 plugins/claude-bionify/commands/set.md create mode 100644 plugins/claude-bionify/commands/status.md create mode 100644 plugins/claude-bionify/commands/toggle.md create mode 100644 plugins/claude-bionify/hooks/hooks.json create mode 100755 plugins/claude-bionify/scripts/bionify.py create mode 100644 plugins/claude-bionify/scripts/control.py create mode 100644 plugins/claude-bionify/scripts/core.py create mode 100644 plugins/claude-bionify/scripts/overrides.py create mode 100644 plugins/claude-bionify/scripts/settings.py create mode 100644 plugins/claude-bionify/skills/claude-bionify/SKILL.md create mode 100644 plugins/claude-bionify/themes/dracula.json create mode 100644 plugins/claude-bionify/themes/focus-dark.json create mode 100644 plugins/claude-bionify/themes/gruvbox.json create mode 100644 plugins/claude-bionify/themes/nord.json create mode 100644 plugins/claude-bionify/themes/sepia.json create mode 100644 plugins/claude-bionify/themes/solarized-dark.json create mode 100644 plugins/claude-bionify/themes/solarized-light.json diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 6f29b6b..6a99973 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -1670,6 +1670,19 @@ "security", "compliance" ] + }, + { + "name": "claude-bionify", + "source": "./plugins/claude-bionify", + "description": "Bionic reading for Claude Code responses that bolds the leading part of each word to improve readability and focus.", + "version": "1.0.0", + "author": { + "name": "Samuel Ruairí Bullard", + "url": "https://github.com/abullard1" + }, + "category": "Design UX", + "homepage": "https://github.com/ccplugins/awesome-claude-code-plugins/tree/main/plugins/claude-bionify", + "keywords": ["accessibility", "readability", "bionic-reading", "focus", "claude-code"] } ] -} \ No newline at end of file +} diff --git a/README.md b/README.md index e4de615..c596a0d 100644 --- a/README.md +++ b/README.md @@ -108,6 +108,7 @@ Install or disable them dynamically with the `/plugin` command — enabling you ### Design UX - [brand-guardian](./plugins/brand-guardian) +- [claude-bionify](./plugins/claude-bionify) - [joker](./plugins/joker) - [mobile-ux-optimizer](./plugins/mobile-ux-optimizer) - [onomastophes](./plugins/onomastophes) @@ -212,4 +213,4 @@ Example: ## Contributing Contributions are welcome! - You can add your favorite plugins, share best practices, or submit your own marketplace. \ No newline at end of file + You can add your favorite plugins, share best practices, or submit your own marketplace. diff --git a/plugins/claude-bionify/.claude-plugin/plugin.json b/plugins/claude-bionify/.claude-plugin/plugin.json new file mode 100644 index 0000000..500b8df --- /dev/null +++ b/plugins/claude-bionify/.claude-plugin/plugin.json @@ -0,0 +1,69 @@ +{ + "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", + "name": "claude-bionify", + "displayName": "claude-bionify", + "version": "1.0.0", + "description": "Bionic reading for Claude's responses that bolds the leading part of each word to guide your eyes and enable you to read faster.", + "author": { + "name": "Samuel Ruairí Bullard", + "email": "samuel.ruairi.bullard@gmail.com", + "url": "https://github.com/abullard1" + }, + "homepage": "https://github.com/abullard1/claude-bionify", + "repository": "https://github.com/abullard1/claude-bionify", + "license": "MIT", + "keywords": [ + "bionic-reading", + "speed-reading", + "accessibility", + "readability", + "adhd", + "dyslexia", + "focus", + "productivity" + ], + "userConfig": { + "fixation": { + "type": "number", + "title": "Fixation strength", + "description": "Fraction of each word to bold (0.1–0.9). Higher means more bold.", + "default": 0.5, + "min": 0.1, + "max": 0.9 + }, + "min_word_length": { + "type": "number", + "title": "Minimum word length", + "description": "Words shorter than this are left unbolded.", + "default": 4, + "min": 1 + }, + "boundary": { + "type": "string", + "title": "Bold boundary", + "description": "How much of each word to bold: \"fraction\" uses Fixation strength; \"syllable\" ends at the first syllable (e.g. stri-ng); \"log\" grows logarithmically so long words are bolded less.", + "default": "fraction" + }, + "skip_acronyms": { + "type": "boolean", + "title": "Skip acronyms", + "description": "Leave ALL-CAPS acronyms like API or JSON unbolded.", + "default": true + }, + "protect_urls": { + "type": "boolean", + "title": "Protect URLs, paths, and files", + "description": "Don't bold inside URLs, emails, file paths, or filenames.", + "default": true + }, + "skip_headings": { + "type": "boolean", + "title": "Skip headings", + "description": "Leave markdown headings (lines starting with #) unbolded. Headings are already visually prominent, so bolding inside them adds clutter.", + "default": true + } + }, + "experimental": { + "themes": "./themes/" + } +} \ No newline at end of file diff --git a/plugins/claude-bionify/CHANGELOG.md b/plugins/claude-bionify/CHANGELOG.md new file mode 100644 index 0000000..03130e8 --- /dev/null +++ b/plugins/claude-bionify/CHANGELOG.md @@ -0,0 +1,30 @@ +# Changelog + +All notable changes to claude-bionify are documented here. This project follows +[semantic versioning](https://semver.org) and [Keep a Changelog](https://keepachangelog.com). + +## [1.0.0] - 2026-06-28 + +Initial release. + +### Added +- `MessageDisplay` hook that bolds the leading part of each word in Claude's + streamed replies as they render. The change is display-only: the saved + transcript and what Claude reads are never altered. +- Unicode-aware bolding that works in any language, while leaving numbers and + identifiers like `value3` or `api_key` alone. +- Three bolding strategies via the `boundary` option: `fraction` (default), + `syllable` (ends at the first syllable), and `log` (long words bolded less). +- Configurable `fixation` strength and `min_word_length`. +- `skip_acronyms` (default on) leaves ALL-CAPS acronyms like `API` whole. +- `protect_urls` (default on) keeps URLs, emails, and file paths unbolded, while + still bolding prose like `and/or` or `e.g.`. +- `skip_headings` (default on) leaves markdown headings unbolded. +- Inline `` `code` ``, fenced code blocks, markdown links, and existing + `**bold**` always render verbatim. +- Live control commands (`/claude-bionify:on`, `:off`, `:toggle`, + `:set