# The 10 Rules of I-Have-ADHD: Structured I/O Conventions for ADHD-Friendly Development

> Discover the 10 rules of I-Have-ADHD designed to help developers with ADHD. Learn structured I/O conventions to reduce cognitive load and boost productivity.

- Repository: [Ayoub Ghriss/i-have-adhd](https://github.com/ayghri/i-have-adhd)
- Tags: best-practices
- Published: 2026-09-09

---

**The I-Have-ADHD skill enforces 10 strict input-output rules—codified in [`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/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`](https://github.com/ayghri/i-have-adhd/blob/main/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:**

```text
"Let's think about this..."

```

**Good example:**

```text
"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:**

```text
"Open the file, find the function, swap it out, then run the tests."

```

**Good example:**

```text
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:**

```text
"Hope that helps. Let me know if you want to dig deeper."

```

**Good example:**

```text
"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:**

```text
"Here's the fix... By the way, your dependency is also stale, and your README is out of date..."

```

**Good example:**

```text
"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:**

```text
"Done. Ready for the next part?"

```

**Good example:**

```text
"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:**

```text
"This will take some work."

```

**Good example:**

```text
"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:**

```text
"I've made some changes to the auth flow..."

```

**Good example:**

```text
"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:**

```text
"Uh oh, the test is failing..."

```

**Good example:**

```text
"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`](https://github.com/ayghri/i-have-adhd/blob/main/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`](https://github.com/ayghri/i-have-adhd/blob/main/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:

```bash
/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:

```bash
stop adhd mode

```

or

```bash
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:

```text
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.md`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/SKILL.md) and enforced by [`extensions/i-have-adhd.ts`](https://github.com/ayghri/i-have-adhd/blob/main/extensions/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.mjs` until 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`](https://github.com/ayghri/i-have-adhd/blob/main/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`](https://github.com/ayghri/i-have-adhd/blob/main/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`](https://github.com/ayghri/i-have-adhd/blob/main/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`](https://github.com/ayghri/i-have-adhd/blob/main/extensions/i-have-adhd.ts), while the command interface is documented in [`.opencode/command/i-have-adhd.md`](https://github.com/ayghri/i-have-adhd/blob/main/.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.