{"slug": "make-your-coding-agent-answers-easier-to-scan-with-i-have-adhd", "title": "Make Your Coding Agent Answers Easier to Scan with i-have-adhd", "summary": "A small A/B test of the i-have-adhd v0.2.0 plugin for Claude Code found it makes coding-agent answers easier to scan and act on, according to the CodeCut blog. The test ran each prompt five times with the plugin off and on using Claude Code 2.1.251, Claude Opus 5, macOS 25.6, and an Apple M5 Pro with 64 GB, holding the model, prompt, and default output style constant. The plugin works by putting the next action first, using numbered steps for multi-step answers, limiting long lists to five items, skipping unnecessary context, and ending with one concrete follow-up.", "body_md": "Table of Contents\n\nIntroduction\n\nHave you ever received an answer from your coding agent that was correct but hard to scan?\n\nThis happens to me often in Claude Code. The answer may be useful, but the important parts are buried in long paragraphs, so I spend extra time figuring out what Claude Code is doing, why it chose that path, and what I should do next.\n\nThis matters because if I cannot quickly see the agent’s reasoning and next action, I am more likely to miss a suggestion or change that does not fit what I asked for.\n\nThe [i-have-adhd](https://github.com/ayghri/i-have-adhd) plugin claims to solve this by making coding-agent answers more scannable and action-first.\n\nThe claim is appealing, but I wanted evidence. So I ran a small A/B test to compare Claude Code with the plugin off and on.\n\nThis article walks through the experiment and the results so you can decide whether the plugin is worth installing.\n\n💻 Get the Code: Get the runner, prompts, raw outputs, and metrics from the [GitHub companion folder](https://github.com/khuyentran1401/codecut-blog/tree/main/i-have-adhd-plugin-output-ab).\n\n  Stay Current with CodeCut\n\n  Easy-to-digest articles on Python, AI, and open-source tools. Delivered twice a week.\n\n    .codecut-subscribe-wrap {\n\n        display: flex;\n\n        justify-content: center;\n\n    }\n\n    .codecut-subscribe-btn {\n\n        background: #72BEFA !important;\n\n        color: #2F2D2E !important;\n\n        border: none;\n\n        border-radius: 8px;\n\n        padding: 12px 28px;\n\n        font-family: inherit;\n\n        font-size: 16px;\n\n        font-weight: 700;\n\n        cursor: pointer;\n\n        text-decoration: none !important;\n\n        display: inline-flex;\n\n        align-items: center;\n\n        justify-content: center;\n\n        transition: background 0.3s ease;\n\n    }\n\n    .codecut-subscribe-btn:hover,\n\n    .codecut-subscribe-btn:focus {\n\n        background: #5aa8e8 !important;\n\n        color: #2F2D2E !important;\n\n        text-decoration: none !important;\n\n    }\n\n    /* Mobile responsive */\n\n    @media (max-width: 480px) {\n\n        .codecut-subscribe-btn {\n\n            width: 100%;\n\n            text-align: center;\n\n        }\n\n    }\n\nWhat Is the i-have-adhd Plugin?\n\ni-have-adhd is a coding-agent plugin that makes responses easier to scan and act on. It does this by nudging the agent to:\n\nRule\n\nWhy it matters\n\nPut the next action first\n\nThe reader can see the recommended action before reading the explanation.\n\nUse numbered steps for multi-step answers\n\nThe order of work is clear.\n\nLimit long lists to the five most useful items\n\nThe reader has fewer options to sort through.\n\nSkip unnecessary context\n\nThe answer stays focused on the decision or action.\n\nEnd with one concrete follow-up\n\nThe reader knows what to do next without asking another question.\n\nIf you need machine-readable structure instead of human-scannable answers, my [structured LLM output tools comparison](https://codecut.ai/structured-llm-outputs-tools-comparison/) covers schema-based approaches.\n\nSuccess conditions for using the plugin\n\nI did not want to measure length alone. For the plugin to be worth using, it had to pass these checks:\n\nIs the answer easier to scan?\n\nIs the important information easier to find?\n\nIs useful detail still included?\n\nDoes a detailed prompt still get a detailed answer?\n\nSetup\n\nHere is the test environment:\n\nItem\n\nValue\n\nClaude Code\n\n2.1.251\n\nModel\n\nClaude Opus 5\n\nOperating system\n\nmacOS 25.6\n\nMachine\n\nApple M5 Pro, 64 GB\n\nPlugin\n\ni-have-adhd v0.2.0\n\nFor installation instructions for the plugin, refer to the [setup section in the GitHub README](https://github.com/ayghri/i-have-adhd#install).\n\nHow I Tested It\n\nControlled Settings\n\nI compared Claude Code with the plugin off and on. To keep the comparison fair, every run used:\n\nSame model\n\nSame prompt\n\nSame default output style\n\nEach prompt was run five times in each condition.\n\nRun Command\n\nEach run used the same command to remove avoidable sources of variation:\n\nclaude -p \"$prompt\" runs a fresh, single-turn Claude Code response.\n\n--permission-mode acceptEdits prevents permission handling from changing between runs.\n\noutputStyle: \"default\" keeps the baseline response style fixed.\n\nlearning-output-style@claude-plugins-official: false disables a second output-style plugin that could change the answer format.\n\nclaude -p \"$prompt\" \\\n\n  --permission-mode acceptEdits \\\n\n  --settings '{\"outputStyle\":\"default\",\n\n               \"enabledPlugins\":{\"learning-output-style@claude-plugins-official\":false}}' \\\n\n  < /dev/null\n\nWith those settings fixed, the only thing I changed was whether the plugin was on or off.\n\nPlugin Switch\n\nFor this Claude Code experiment, I controlled the plugin with one marker file: ~/.claude/.i-have-adhd-always.\n\nCreating the file turned the plugin on.\n\nRemoving the file turned the plugin off.\n\n# Plugin on: a SessionStart hook reads this sentinel and injects the ruleset\n\ntouch ~/.claude/.i-have-adhd-always\n\n# Plugin off: same model, same prompt, no ruleset\n\nrm ~/.claude/.i-have-adhd-always\n\nThe metrics\n\nTo make the comparison repeatable, I measured each answer with simple text-based metrics instead of relying only on manual reading.\n\nHere are the metrics I will use:\n\nMetric\n\nWhat it tells me\n\nProse word count\n\nHow much explanation the reader has to read, excluding code blocks.\n\nNon-blank lines\n\nHow much vertical space the answer takes on screen.\n\nTotal list items\n\nHow many choices the reader has to scan before deciding what matters.\n\nEnds with a next action\n\nWhether the answer gives the reader a concrete thing to do next.\n\nFor prose word count, I stripped fenced code blocks first then counted the words.\n\nprose = strip_code_blocks(answer)\n\nprose_word_count = len(prose.split())\n\nFor non-blank lines, I split each answer by line breaks, removed empty lines, and counted the remaining lines.\n\nnonblank_lines = sum(bool(line.strip()) for line in answer.splitlines())\n\nFor total list items, I counted Markdown bullet lines and numbered-step lines separately, then added them.\n\nbullet_lines = count_lines(answer, r\"^\\s*[-*]\\s\")\n\nnumbered_lines = count_lines(answer, r\"^\\s*\\d+\\.\")\n\ntotal_list_items = bullet_lines + numbered_lines\n\nFor the final-action check, I looked at the last two non-blank lines and marked the answer as actionable if one of them started with Next or **Next:**:\n\nends_with_next_action = starts_with_next(last_two_nonblank_lines(answer))\n\nTogether, these metrics tell me whether the answer is shorter and easier to scan.\n\nThe full experiment source is in [run_ab.sh](https://github.com/khuyentran1401/codecut-blog/blob/main/i-have-adhd-plugin-output-ab/run_ab.sh).\n\nThe three prompts\n\nI tested the plugin on three prompts: two where the agent had to choose among several possible causes, and one where I explicitly asked for a detailed explanation.\n\nPrompts 1 and 2 are diagnostic. They check whether the plugin makes an answer easier to scan when the question has several plausible causes:\n\nPrompt 1: My model accuracy dropped after I retrained it on the new data. What should I look at?\n\nPrompt 2: Our nightly ETL job started taking 3 hours instead of 40 minutes. Where should I start looking?\n\nPrompt 3 asks for depth. It checks whether the plugin still gives enough detail when the reader explicitly asks for an in-depth explanation:\n\nPrompt 3: Explain the difference between .apply() and vectorized operations in pandas, and when .apply() is actually the right choice. I want enough detail to decide.\n\nTest Results\n\nPrompt 1: Model accuracy dropped after retraining\n\nThe first prompt was:\n\nMy model accuracy dropped after I retrained it on the new data. What should I look at?\n\nHere are the median results across five runs:\n\nMetric\n\nDefault\n\nWith the plugin\n\nProse words\n\n323\n\n170\n\nNon-blank lines\n\n19\n\n8\n\nList items\n\n13\n\n5\n\nRuns ending with a next action\n\n0 of 5\n\n5 of 5\n\nDefault answer\n\nThe default answer looked like this. I shortened the answer with .... See the [full default answer](https://github.com/khuyentran1401/codecut-blog/blob/main/i-have-adhd-plugin-output-ab/OUTPUTS.md#default-run-3-323-prose-words) for the complete response:\n\nHere are the key things to investigate, roughly in order of likelihood:\n\n## Data Issues (check first)\n\n- **Data drift** — Compare distributions of features and target between old and new data. Shifted distributions are the most common cause.\n\n- **Label quality** — Check for labeling errors, inconsistent annotation guidelines, or changed label definitions in the new data.\n\n...\n\n## Preprocessing / Pipeline Issues\n\n- **Feature engineering changes** — Were any transformations, scalers, or encoders refit on the new data? A scaler fit on different distributions can hurt.\n\n...\n\n## Training Issues\n\n- **Train/test split** — Are you evaluating on the same test set, or a new one? A harder test set looks like a worse model.\n\n...\n\n## Quick Diagnostic Steps\n\n1. **Evaluate the old model on the new test data** — if it also drops, the data shifted, not the training.\n\n...\n\nThe single most informative step is #1: test your old model on the new data. That tells you immediately whether the problem is the data or the training.\n\nWant me to help you write code to diagnose any of these?\n\nPlugin answer\n\nThe plugin answer:\n\nCheck these in order:\n\n1. **Data drift** — Compare distributions of key features between old and new data. Plot histograms or run a KS test. If the new data looks different, that's your likely cause.\n\n2. **Label quality** — Spot-check labels in the new data for errors, inconsistencies, or a shifted class distribution. Even a small % of mislabeled examples can tank accuracy.\n\n3. **Train/test leakage lost** — If the old model accidentally had leakage that inflated metrics, retraining on clean data will look like a drop. Verify your old eval was legit.\n\n4. **Class imbalance shift** — Compare class ratios old vs new. A shift from 50/50 to 90/10 changes what \"accuracy\" means. Check per-class precision/recall, not just overall accuracy.\n\n5. **Hyperparameters/preprocessing mismatch** — Confirm the same feature engineering, scaling, and hyperparameters were used. A missing normalization step or changed default can silently break things.\n\n**Next:** Run `old_data.describe()` vs `new_data.describe()` side by side and check for columns with large mean/std shifts. That's the fastest way to spot data drift.\n\nNothing essential disappeared. Data drift, label quality, leakage, class imbalance, and preprocessing still appear.\n\nBut the plugin answer is much easier to scan for the following reasons:\n\nCondensed list: the answer reduced many bullets across multiple sections into five focused checks, making it easier to act on.\n\nClear order: the five checks were ranked, so the user knew which one to try first.\n\nConcrete next step: the answer closed with one action the reader could take immediately.\n\nPrompt 2: ETL job slowed from 40 minutes to 3 hours\n\nThe second prompt was:\n\nOur nightly ETL job started taking 3 hours instead of 40 minutes.\n\nWhere should I start looking?\n\nHere are the median results:\n\nProse words\n\n257\n\n222\n\nNon-blank lines\n\n26\n\n17\n\nDefault answer\n\nThe [full default answer](https://github.com/khuyentran1401/codecut-blog/blob/main/i-have-adhd-plugin-output-ab/OUTPUTS.md#default-run-3-257-prose-words) listed five broad headings, each with several bullets:\n\nHere's a systematic approach, ordered by most common culprits:\n\n## 1. Data Volume Changes\n\n...\n\n## 2. Database / Query Performance\n\n...\n\n## 3. Resource Contention\n\n...\n\n## 4. Code / Config Changes\n\n...\n\n## 5. Infrastructure Changes\n\n...\n\n## Where to start concretely\n\n...\n\nNear the end, it gave the highest-value action:\n\nThe single highest-value action: **find which step in the pipeline got slower**. Going from 40min to 3hr is a ~4.5x slowdown — that's usually one or two steps, not everything uniformly slower. Once you isolate the step, the root cause is usually obvious.\n\nThat is useful advice, but it comes after a long list of possible causes, making it easier to miss and slower to act on.\n\nPlugin answer\n\nThe [full plugin answer](https://github.com/khuyentran1401/codecut-blog/blob/main/i-have-adhd-plugin-output-ab/OUTPUTS.md#with-the-plugin-run-4-222-prose-words) started with an action:\n\n**Run this first** to find what changed recently:\n\n``` bash\n\n# Check git log for ETL-related changes around when slowdown started\n\ngit log --since=\"1 week ago\" --oneline -- '**/etl*' '**/pipeline*' '**/transform*'\n\n```\n\nThen it listed exactly five ranked causes:\n\n## 5 most likely causes, ranked\n\n1. **Data volume spike** — Check row counts for source tables...\n\n2. **Missing or dropped index** — A schema migration may have dropped an index...\n\n3. **New upstream schema / join explosion** — A changed join key or added NULL values can silently turn an inner join...\n\n4. **Resource contention** — Another job now overlaps the ETL window...\n\n5. **Code change in transform logic** — A recent commit added ...\n\nAnd then the quick diagnostic steps:\n\n## Quickest diagnostic\n\nAdd timing around each ETL phase (extract, transform, load) if you don't already have it. The phase that grew from minutes to hours tells you exactly where to dig.\n\n``` python\n\n# Minimal example\n\nimport time\n\nfor phase in [extract, transform, load]:\n\n    start = time.time()\n\n    phase()\n\n    print(f\"{phase.__name__}: {time.time() - start:.1f}s\")\n\n```\n\nFinally, it gave the highest-value action:\n\n**Next step:** Check whether this is a data problem or a code problem — compare today's source row counts against last week's. If counts are similar, focus on indexes and recent code changes.\n\nEven though the length is similar, the output is more readable because of the following:\n\nFewer items: thirteen list items became five, reducing the amount of information the user had to compare.\n\nRanked checks: the plugin ordered the causes, so the user could start with the most likely checks first.\n\nAction first: a runnable command appeared before the explanation, making the answer useful even when skimmed.\n\nPrompt 3: pandas .apply() vs vectorized operations\n\nThe third prompt was:\n\nExplain the difference between .apply() and vectorized operations in pandas,\n\nand when .apply() is actually the right choice. I want enough detail to decide.\n\nThis prompt tested whether the plugin still gives enough explanation when the user explicitly asks for depth.\n\nProse words\n\n426\n\n359\n\nNon-blank lines\n\n61\n\n50\n\nList items\n\n5\n\n8\n\nBullet lines\n\n0\n\n3\n\nNumbered lines\n\n0\n\n5\n\nThe plugin answer is 16% shorter, but the table alone cannot tell us whether useful explanation was lost. To check that, we need to look at how both answers were organized.\n\nDefault answer\n\nThe [full default answer](https://github.com/khuyentran1401/codecut-blog/blob/main/i-have-adhd-plugin-output-ab/OUTPUTS.md#default-run-2-426-prose-words) opened with the concept, then moved through performance, use cases, decision rules, and traps:\n\n## `.apply()` vs Vectorized Operations in Pandas\n\n### Vectorized operations\n\nVectorized operations run in compiled C/NumPy under the hood...\n\n### What `.apply()` actually does\n\n`.apply()` is a loop in disguise...\n\n### Performance hierarchy (fastest to slowest)\n\n| Approach | Relative speed | Notes |\n\n|---|---|---|\n\n| NumPy / pandas vectorized ops | **1x** (baseline) | `.str`, `.dt`, arithmetic, `np.where`, `pd.cut` |\n\n...\n\n### When `.apply()` is the right choice\n\n**1. Complex logic that genuinely can't be vectorized**\n\n...\n\n### Decision rule\n\nAsk yourself: ...\n\n### Common traps\n\n...\n\nPlugin answer\n\nThe [full plugin answer](https://github.com/khuyentran1401/codecut-blog/blob/main/i-have-adhd-plugin-output-ab/OUTPUTS.md#with-the-plugin-run-3-359-prose-words) covered the same core ideas, but reorganized the sections, trimmed some extra material, and kept the final action explicit:\n\n## Vectorized ops vs `.apply()` in pandas\n\nVectorized operations run in compiled C/NumPy...\n\n### Speed difference\n\nVectorized arithmetic: 1x baseline\n\nRow-wise `.apply()`: 50-200x slower\n\n### Why vectorized is faster\n\n1. No per-element Python overhead\n\n2. Cache-friendly memory access\n\n3. SIMD / CPU optimizations\n\n### When to use vectorized (most of the time)\n\nArithmetic, conditionals, string ops, datetime ops, aggregations...\n\n### When `.apply()` is actually the right choice\n\n1. Complex row logic that can't be expressed as array ops\n\n2. GroupBy with custom aggregation\n\n3. Small DataFrames where speed doesn't matter\n\n4. Operating on non-numeric/irregular data\n\n5. Prototype/exploration\n\nNext: pick one `.apply()` call in your code and check if it fits the vectorized alternatives above.\n\nWhat changed in the plugin answer:\n\nThe comparison appears upfront, so the reader sees the core difference before reading examples.\n\nIt removes extra background and keeps the answer tied to the main question: which approach should I use, and when?\n\nExtra material is trimmed. The default answer includes common traps, while the plugin answer leaves that out to keep the answer focused.\n\nIt ends with a specific next step, so the user knows how to apply the advice to their own code.\n\nThe answer became shorter, but not shallow. It still kept the core explanation needed to understand the concept.\n\nShould You Install It?\n\nAfter this test, I decided to keep the plugin installed because it makes Claude Code answers easier for me to scan and act on.\n\nThere are two things to keep in mind.\n\nFirst, the rules may become less visible after a long coding session with many files, tool outputs, and previous turns. When that happens, a short reminder or a fresh session may help.\n\nSecond, there is a small token cost because the plugin adds its rules to the session context. But the rules are short, so the cost should be small.\n\nRun the Test Yourself\n\nThe experiment files are available in the [GitHub companion folder](https://github.com/khuyentran1401/codecut-blog/tree/main/i-have-adhd-plugin-output-ab).\n\nRun the batch:\n\ngit clone https://github.com/khuyentran1401/codecut-blog.git\n\ncd codecut-blog/i-have-adhd-plugin-output-ab\n\nbash run_ab.sh\n\nThe script runs the full A/B test:\n\nRuns all prompts with the plugin on.\n\nRuns the same prompts with the plugin off.\n\nSaves the raw answers in transcripts/.\n\nReferences\n\n[i-have-adhd evals/rubric.md](https://github.com/ayghri/i-have-adhd/blob/main/evals/rubric.md) (ayghri, 2026): the evaluation rubric weights correctness, autonomy, actionability, safety, and concision.\n\n[i-have-adhd evals/cases.jsonl](https://github.com/ayghri/i-have-adhd/blob/main/evals/cases.jsonl) (ayghri, 2026): the maintainers’ case taxonomy that separates action-oriented cases from cases where brevity can remove needed detail.\n\nRelated Tutorials\n\n[Hermes Agent Can Write Its Own Skills. I Tested How Well It Works](https://codecut.ai/hermes-autonomous-skills-curator/)\n\n[Before You Upgrade the Model, Try Thinking Mode](https://codecut.ai/before-you-upgrade-the-model-try-thinking-mode/)\n\nThe post [Make Your Coding Agent Answers Easier to Scan with i-have-adhd](https://codecut.ai/i-have-adhd-coding-agent-answers/) appeared first on [CodeCut](https://codecut.ai).", "url": "https://wpnews.pro/news/make-your-coding-agent-answers-easier-to-scan-with-i-have-adhd", "canonical_source": "https://codecut.ai/i-have-adhd-coding-agent-answers/", "published_at": "2026-09-06 08:20:02+00:00", "updated_at": "2026-09-22 10:22:24.652213+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "developer-tools", "ai-products"], "entities": ["i-have-adhd", "Claude Code", "Claude Opus 5", "CodeCut", "ayghri", "khuyentran1401", "GitHub", "macOS"], "alternates": {"html": "https://wpnews.pro/news/make-your-coding-agent-answers-easier-to-scan-with-i-have-adhd", "markdown": "https://wpnews.pro/news/make-your-coding-agent-answers-easier-to-scan-with-i-have-adhd.md", "text": "https://wpnews.pro/news/make-your-coding-agent-answers-easier-to-scan-with-i-have-adhd.txt", "jsonld": "https://wpnews.pro/news/make-your-coding-agent-answers-easier-to-scan-with-i-have-adhd.jsonld"}}