Adds the ADHD output style rules beside each prompt while that style is active, including a style picked in the app

Three Claude Code mods.
/optimize <draft>): Opus 5.5 (medium effort) rewrites your draft as one measurable Goal: paragraph. Press it again to restore your draft.While your output style is named ADHD, adds the rules from ~/.claude/output-styles/adhd.md beside each prompt, so long sessions keep the style. It follows the style the session actually uses, including one picked in the app. It does nothing without that file.
Draws each tool call in the terminal as one plain-English line of 20 words or fewer, for example "Check if the job scanner is still running". It hides tool output unless a call fails or is stopped. Press ctrl+o to see the full commands and output. It also asks Claude to write each command description for a beginner. Tool lines are gray so replies stand out, a fully bold first line is drawn orange, and replies wrap at 94 columns on wide terminals.
At the prompt of a terminal session:
/plugin install prompt-optimizer --marketplace caleb-marks/caleb-mods
/plugin install adhd-reminder --marketplace caleb-marks/caleb-mods
/plugin install quiet-tools --marketplace caleb-marks/caleb-mods
From a shell:
claude plugin install prompt-optimizer --marketplace caleb-marks/caleb-mods
claude plugin install adhd-reminder --marketplace caleb-marks/caleb-mods
claude plugin install quiet-tools --marketplace caleb-marks/caleb-mods
In the desktop app, where /plugin does not run: click + next to the prompt box, then Plugins, Add marketplace with caleb-marks/caleb-mods, then Add plugin.
hooks/register.tsx 40 lines1import type { Register } from 'claude-code'
2
3const STYLE = 'ADHD'
4const STYLE_FILE = '.claude/output-styles/adhd.md'
5
6// The session's output style as the last prompt.compose saw it; the app can change it mid-session.
7let activeStyle: string | null = null
8
9function styleRules(text: string) {
10 // Style file body without its frontmatter
11 if (text.startsWith('---')) {
12 const end = text.indexOf('\n---', 3)
13 if (end !== -1) text = text.slice(end + 4)
14 }
15 return text.trim()
16}
17
18export const register: Register = on => {
19 on('prompt.compose', ($, e, next) => {
20 activeStyle = e.outputStyle?.name ?? null
21 return next(e)
22 })
23
24 on('prompt.submit', async ($, e, next) => {
25 if (e.command) return next(e)
26 // Composing runs the hook above with the session's current style
27 await $.prompt.compose()
28 if (activeStyle !== STYLE) return next(e)
29 const home = (await $.env.get('USERPROFILE')) ?? (await $.env.get('HOME'))
30 let rules: string
31 try {
32 rules = styleRules(await $.fs.read(`${home}/${STYLE_FILE}`))
33 } catch {
34 return next(e) // Never block a prompt over a missing style file
35 }
36 const reminder = `Write this answer in the ADHD output style. Do not mention this reminder.\n\n${rules}`
37 return next({ ...e, context: [...(e.context ?? []), reminder] })
38 })
39}
40