The 10 Rules of I-Have-ADHD: Structured I/O Conventions for ADHD-Friendly Development
The I-Have-ADHD skill enforces 10 strict input-output rules—codified in skills/i-have-adhd/SKILL.md—that require leading with executable actions, numbering multi-step tasks, suppressing tangents, and eliminating preambles to reduce cognitive load for users with ADHD.
The open-source repository ayghri/i-have-adhd implements a specialized interaction skill that transforms standard AI responses into dopamine-driven, goal-oriented sessions. These 10 rules of I-Have-ADHD define specific formatting constraints and behavioral protocols designed to maximize visible progress and minimize ambiguity for developers with limited working memory.
The 10 I/O Rules Codified in SKILL.md
According to the source code in skills/i-have-adhd/SKILL.md, the skill mandates the following input-output conventions for every response generated during an active session.
1. Lead with the Next Action
The first line of every response must be a concrete, executable step rather than an introductory remark.
Bad example:
"Let's think about this..."
Good example:
"Run `npm install jsonwebtoken` then edit `src/auth.ts:42`."
2. Number Multi-Step Tasks
When a task spans multiple steps, present a numbered list where each step is a single, bounded action.
Bad example:
"Open the file, find the function, swap it out, then run the tests."
Good example:
1. Open `src/auth.ts`
2. Replace `verifyToken` (lines 42-58)
3. Run `npm test -- auth.spec.ts`
3. End with One Concrete Next Action
After any explanation, always finish with a single, doable action that can be completed in under two minutes.
Bad example:
"Hope that helps. Let me know if you want to dig deeper."
Good example:
"Next: run `npm test` and paste the first failing line."
4. Suppress Tangents
If another issue appears during a task, finish the current one first, then propose the next as a separate question.
Bad example:
"Here's the fix... By the way, your dependency is also stale, and your README is out of date..."
Good example:
"Here's the fix. Separately: there is also a stale dependency. Want me to handle that next?"
5. Restate State Every Turn
Re-state progress explicitly (e.g., "Step 3 of 5 done") because the reader cannot retain prior context.
Bad example:
"Done. Ready for the next part?"
Good example:
"Step 3 of 5 done: schema updated. Next: backfill the new column. Run the script?"
6. Give Specific Time Estimates
Provide concrete time estimates in clear units rather than vague descriptors.
Bad example:
"This will take some work."
Good example:
"About 15 minutes if tests already cover this; an afternoon if not."
7. Make Completed Work Visible
Explicitly show what now works, using concrete commands or outcomes.
Bad example:
"I've made some changes to the auth flow..."
Good example:
"Login now works with magic links. Try: `npm run dev`, open `/login`."
8. Matter-of-Fact Tone for Errors
State error causes and fixes directly, without emotive language.
Bad example:
"Uh oh, the test is failing..."
Good example:
"Test fails at `auth.spec.ts:42`: expected 200, got 401. Cause: missing auth header. Fix: add `Authorization: Bearer ${token}` to the request."
9. Cap Lists at 5 Items
If a list exceeds five items, split it into logical groups (e.g., "do now" versus "later").
10. No Preamble or Closing Pleasantries
Remove generic openers ("Great question") and closers ("Hope this helps") entirely.
Technical Architecture and Enforcement
The runtime implementation that enforces these rules resides in extensions/i-have-adhd.ts, which handles the parsing and validation of all outgoing responses. Session persistence logic—ensuring the rules remain active across interactions—is defined in lines 15-20 of skills/i-have-adhd/SKILL.md and implemented via hooks/always-on.mjs. This hook maintains the skill state unless explicitly overridden by user commands.
Activating and Deactivating ADHD Mode
To invoke the skill and enable the 10 rules for your session, use the following command:
/i-have-adhd
Once activated, the I/O rules persist for the entire session. To disable the mode and revert to default response formatting, issue one of the following commands:
stop adhd mode
or
normal mode
The system will confirm the deactivation in a single line before removing the constraints.
Practical Example of Compliant Output
Below is a sample response generated under the I-Have-ADHD rules, demonstrating the lead action, numbered steps, concrete next action, and time estimate:
Run `npm install jsonwebtoken`, then edit `src/auth.ts:42`.
1. Open `src/auth.ts`
2. Insert `import jwt from "jsonwebtoken"` at the top
3. Replace the placeholder token logic with:
const token = jwt.sign({ userId: req.user.id }, process.env.JWT_SECRET);
4. Run `npm test -- auth.spec.ts`
Next: run `npm test` and paste the first failing line. About 12 minutes total.
This output follows all 10 rules: it leads with an executable step, uses numbered actions, ends with a specific next task, provides a time estimate, and contains zero preamble.
Summary
- The 10 rules of I-Have-ADHD are defined in
skills/i-have-adhd/SKILL.mdand enforced byextensions/i-have-adhd.ts. - Every response must lead with an executable action, use numbered lists for multi-step tasks, and end with a single next step.
- The rules suppress tangents, restate progress every turn, and eliminate preambles to reduce cognitive load.
- Time estimates must be specific, completed work must be visible, and errors must use matter-of-fact language.
- The skill persists across sessions via
hooks/always-on.mjsuntil the user explicitly says "stop adhd mode" or "normal mode".
Frequently Asked Questions
What happens if a response violates the 10 rules of I-Have-ADHD?
The runtime implementation in extensions/i-have-adhd.ts intercepts and reformats responses that deviate from the conventions, ensuring that every output adheres to the structured I/O requirements before reaching the user.
How do I disable ADHD mode once activated?
You can disable the mode by issuing the command "stop adhd mode" or "normal mode". According to the logic in skills/i-have-adhd/SKILL.md, the system will confirm the deactivation in one line and immediately revert to standard response formatting.
Where are the I-Have-ADHD rules defined in the source code?
The canonical definitions reside in skills/i-have-adhd/SKILL.md, with persistence logic documented in lines 15-20. The runtime enforcement mechanism is implemented in extensions/i-have-adhd.ts, while the command interface is documented in .opencode/command/i-have-adhd.md.
Do the I-Have-ADHD rules persist across multiple chat sessions?
Yes. The hooks/always-on.mjs file ensures that once activated via /i-have-adhd, the skill remains active for the entire session and continues to enforce the 10 I/O rules across all subsequent interactions until explicitly disabled.
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 →