# How i-have-adhd Handles Multi-Step Tasks with Numbered Lists

> Discover how i-have-adhd tackles multi-step tasks using numbered lists. Learn how skill-based rules ensure clarity and single actions for each step.

- Repository: [Ayoub Ghriss/i-have-adhd](https://github.com/ayghri/i-have-adhd)
- Tags: how-to-guide
- Published: 2026-08-26

---

**The i-have-adhd repository enforces numbered lists for multi-step tasks by injecting a skill-based rule into the model's system prompt, requiring each step to be a single, bounded action without compound operations.**

The i-have-adhd project provides a specialized skillset designed to help AI assistants communicate complex procedures in an ADHD-friendly format. By implementing strict formatting rules for multi-step tasks with numbered lists, the repository ensures that instructions are broken into discrete, actionable chunks that minimize cognitive load. This approach is implemented through a combination of skill definition files and runtime plugin injection.

## The Numbered List Rule Definition

The core formatting logic resides in [`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/SKILL.md), specifically within lines 42–55. This file defines the **"Number multi-step tasks"** rule, which mandates that any work requiring more than one action must be formatted as a concise numbered list.

The rule imposes strict constraints on step construction:

- **Single bounded actions** — Each item must represent one discrete operation, avoiding compound steps such as "and then" or multiple verbs in sequence
- **Minimal step count** — The model must use the fewest steps possible, collapsing trivial actions into the preceding step rather than creating separate line items
- **Immediate actionable format** — Steps must follow the pattern demonstrated in the skill file:

```

1. Open `src/auth.ts`
2. Replace `verifyToken` (lines 42 to 58) with the snippet below
3. Run `npm test -- auth.spec.ts`

```

This structure ensures that readers with ADHD can process information in small working-memory chunks without needing to retain multiple pieces of context simultaneously.

## Skill Activation Methods

The repository provides two distinct activation mechanisms to make the numbered-list rule available to the model.

### On-Demand Activation via Slash Command

Invoking the `/i-have-adhd` command registers the skill directory for the current session. This loads the ruleset on a per-conversation basis, applying the numbered-list constraint only when explicitly requested by the user.

### Always-On Mode via Flag File

When a flag file named `.i-have-adhd-always` exists in the environment, the plugin located at `.opencode/plugins/i-have-adhd.mjs` automatically injects the entire ruleset into the system prompt every turn (see lines 55–78). 

The plugin prepends a header to every system prompt (lines 67–72) indicating that ADHD mode is active:

```

ADHD MODE ACTIVE (always-on). The ruleset below applies to every response. "stop adhd mode" or "normal mode" turns it off for this session; delete /home/user/.config/opencode/.i-have-adhd-always to turn always-on off for good.

```

The plugin references `hooks/always-on.mjs` for analogous injection behavior in other runtimes, ensuring consistent enforcement across different execution contexts.

## Runtime Enforcement and Model Behavior

The plugin does not transform or post-process the model's output. Instead, it operates through **prompt engineering** by supplying the ruleset as part of the system prompt context. The model's inference engine then follows the numbered-list instruction because it is explicitly defined in the prompt's behavioral constraints.

When a user requests a multi-step solution, the model's response begins immediately with the first numbered action, followed by subsequent steps in sequence. This creates a clear progression where each step provides an immediate next action that the reader can execute without recalling prior context, satisfying the repository's design goals for ADHD-accessible communication.

## Practical Implementation Examples

When the skill is active, a request for complex guidance generates strictly formatted output. For example, asking how to add JWT authentication produces:

```text
1. Install the jsonwebtoken package: `npm install jsonwebtoken`.
2. Create a middleware `auth.js` that verifies the token and attaches the user to `req`.
3. Add the middleware to routes that require authentication, e.g., `app.use('/api', auth)`.
4. Test the flow by sending a request with a valid JWT and verify `req.user` is populated.

```

In always-on mode, the system prompt includes the full ruleset from [`SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/SKILL.md) prepended with the ADHD mode header, ensuring that every multi-step response adheres to the numbered format regardless of query complexity.

## Summary

- **Rule location**: The numbered-list constraint is defined in [`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/SKILL.md) (lines 42–55) under the "Number multi-step tasks" directive
- **Activation**: Use `/i-have-adhd` for session-based activation or create `.i-have-adhd-always` for persistent enforcement via `.opencode/plugins/i-have-adhd.mjs`
- **Format requirements**: Single bounded actions only, no compound steps, minimal step count
- **Enforcement mechanism**: Prompt injection rather than output transformation, with the model adhering to constraints provided in the system prompt

## Frequently Asked Questions

### What file contains the numbered list rule for multi-step tasks?

The rule is defined in [`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/SKILL.md) between lines 42 and 55. This file contains the "Number multi-step tasks" instruction that requires the model to format multi-action responses as numbered lists with single, bounded steps.

### How do I enable always-on mode for ADHD-friendly formatting?

Create an empty file named `.i-have-adhd-always` in your configuration directory. When this flag file exists, `.opencode/plugins/i-have-adhd.mjs` automatically injects the skill ruleset into every system prompt (lines 55–78), ensuring all responses follow the numbered-list format without requiring the `/i-have-adhd` command.

### Does the plugin modify the model's output after generation?

No. The plugin does not perform post-processing or transformation on generated text. It only supplies the ruleset as part of the system prompt context (lines 67–72), and the model follows these constraints during inference. The numbered format is generated natively by the model obeying the prompt engineering instructions.

### Why are compound steps like "and then" discouraged in the format?

Compound steps increase cognitive load by requiring the reader to hold multiple actions in working memory simultaneously. The skill explicitly prohibits constructions like "and then" to ensure each numbered item represents a single, immediately executable action that can be completed before moving to the next line.