How the 'i-have-adhd' AI Skill Modifies Coding Assistant Output for Focus and Action
The 'i-have-adhd' AI skill is a persistent output-shaping layer that rewrites every model reply into a concise, numbered, immediately actionable format—eliminating preambles, closing pleasantries, and tangential prose so developers with ADHD can execute without cognitive overhead.
The i-have-adhd skill, developed in the repository ayghri/i-have-adhd, transforms how coding assistants communicate by injecting behavioral rules directly into the system prompt. Unlike prompting tricks that must be repeated each turn, this skill creates durable, session-wide changes to the assistant's voice—making every response scannable, bounded, and executable in a single glance.
Source of Truth: SKILL.md Defines All Behavioral Rules
All ten directives that reshape the assistant's output live in a single canonical file: skills/i-have-adhd/SKILL.md.
This markdown file enumerates concrete, enforceable rules including:
- "Lead with the next action" — the very first line must be immediately executable
- "Number multi-step tasks" — sequential numbering for any procedure with more than one step
- "Give specific time estimates" — concrete duration predictions, not vague ranges
- "No preamble or closing pleasantries" — eliminate "Sure, I'd be happy to help..." and "Let me know if you need anything else"
- One bounded action per step — each numbered item must be completable in isolation
- End with exactly one more short actionable item — a final, concrete next move
The file also contains a Persistence section instructing the model to maintain this style until explicitly disabled.
Plugin Architecture: How Rules Inject Into the System Prompt
The OpenCode plugin .opencode/plugins/i-have-adhd.mjs implements the injection mechanism. It reads SKILL.md, strips its YAML front-matter, and appends the rule body to the model's system prompt via the experimental.chat.system.transform hook.
Two Activation Modes
The plugin supports both on-demand and persistent activation:
| Mode | Trigger | Behavior |
|---|---|---|
| On-demand | /i-have-adhd command |
Rules load for current session only |
| Always-on | ~/.config/opencode/.i-have-adhd-always file exists |
Rules injected on every turn automatically |
The Injection Process
When activated, the plugin:
- Concatenates a short header ("ADHD MODE ACTIVE …") with the full rule body from
SKILL.md - Passes this combined string to
experimental.chat.system.transform - The OpenCode runtime appends it to the system prompt sent to the language model
This mirrors the behavior in hooks/always-on.mjs (used by Claude Code), which demonstrates equivalent always-on injection logic that the OpenCode plugin replicates.
Activation and Deactivation Commands
Activate On-Demand
/i-have-adhd
Runs the command to load ADHD mode for the current session only.
Enable Always-On Mode
touch ~/.config/opencode/.i-have-adhd-always
Creates the flag file that triggers automatic rule injection on every assistant turn, persisting across sessions.
Disable Always-On Mode
rm ~/.config/opencode/.i-have-adhd-always
Removes the flag file, returning to standard assistant behavior.
Transformed Output: Before and After Effect
Because the rules become part of the system prompt, the language model automatically restructures every reply. Here's how the 'i-have-adhd' AI skill modifies coding assistant output in practice:
Generic response:
"I'd be happy to help you fix the authentication bug. First, you'll want to make sure you have the right dependencies installed. The jsonwebtoken package is commonly used for this. Once that's set up, you can look at your auth file and make some changes to the verifyToken function. Let me know if you need more assistance!"
ADHD-mode response:
Run `npm install jsonwebtoken`, then edit `src/auth.ts:42`.
1. Open `src/auth.ts`.
2. Replace `verifyToken` (lines 42‑58) with the snippet below.
3. Run `npm test -- auth.spec.ts`.
About 15 minutes if tests already exist.
Login now works with magic links. Try: `npm run dev`, open `/login`.
The transformation enforces four structural requirements:
- Immediate executable lead — no throat-clearing, no context-gathering questions
- Numbered single-action steps — each item bounded and completable
- Concrete time estimate — "About 15 minutes" not "a while"
- Single final action — one more concrete move, then hard stop
Persistence Model: Session vs. Permanent Control
The skill uses two layered persistence mechanisms:
- Model-level persistence: The rules themselves instruct the assistant to maintain ADHD mode until the user says "stop adhd mode" or "normal mode"—allowing the model to exit for the current session
- File-level persistence: The
~/.config/opencode/.i-have-adhd-alwaysflag controls whether the plugin automatically re-injects rules on every new session
This design lets users toggle behavior by utterance (fast, temporary) or by filesystem state (durable, cross-session).
Key Files and Their Roles
| File | Purpose |
|---|---|
skills/i-have-adhd/SKILL.md |
Canonical rule set defining output transformation requirements |
.opencode/plugins/i-have-adhd.mjs |
Plugin implementing command handler and system prompt injection |
opencode.json |
Plugin declaration for OpenCode runtime auto-loading |
hooks/always-on.mjs |
Reference implementation showing Claude Code equivalent behavior |
Summary
skills/i-have-adhd/SKILL.mdcontains ten concrete directives that restructure assistant output into actionable, numbered, time-bounded steps.opencode/plugins/i-have-adhd.mjsimplements the injection mechanism viaexperimental.chat.system.transform, supporting both/i-have-adhdon-demand command and always-on flag-file activation- The
~/.config/opencode/.i-have-adhd-alwaysfile enables persistent, cross-session behavior without repeated commands - Output transformations include: leading with executable commands, numbered single-action steps, specific time estimates, elimination of preambles/closings, and exactly one final actionable item
- The skill demonstrates how system prompt engineering can create durable, persona-level modifications to AI assistant behavior
Frequently Asked Questions
How do I activate the 'i-have-adhd' skill temporarily?
Type /i-have-adhd in your OpenCode session. The plugin loads SKILL.md, strips its YAML front-matter, and injects the rules into the current session's system prompt. This lasts until you exit the session or say "stop adhd mode".
What file controls permanent always-on behavior?
The empty flag file at ~/.config/opencode/.i-have-adhd-always. Create it with touch to enable automatic rule injection on every turn across all sessions; delete it with rm to disable. The plugin checks for this file's existence in its initialization logic.
Can the model exit ADHD mode without deleting the flag file?
Yes. The SKILL.md rules include a Persistence directive instructing the model to honor utterances like "stop adhd mode" or "normal mode". This disables the style for the current session only, while the flag file remains for future sessions.
Where does the actual output transformation happen?
In the language model itself, because the i-have-adhd.mjs plugin appends the full ruleset to the system prompt via experimental.chat.system.transform. The model receives "ADHD MODE ACTIVE …" followed by the ten directives, then generates compliant output without additional post-processing.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →