# On-Demand vs Always-On Modes for i-have-adhd in Claude Code: Complete Guide

> Understand on-demand vs always-on modes for i-have-adhd in Claude Code. Activate on-demand with a command or enable always-on for automatic session injection and an ADHD-friendly ruleset.

- Repository: [Ayoub Ghriss/i-have-adhd](https://github.com/ayghri/i-have-adhd)
- Tags: deep-dive
- Published: 2026-07-22

---

**On-demand mode activates the i-have-adhd skill only when you type the `/i-have-adhd` command, while always-on mode automatically injects the ADHD-friendly ruleset at every session start via a SessionStart hook when the flag file `~/.claude/.i-have-adhd-always` exists.**

The `ayghri/i-have-adhd` repository provides a Claude Code skill designed to optimize interactions for users with ADHD. Understanding the difference between **on-demand** and **always-on** modes helps you control when and how these behavioral rulesets apply to your coding sessions. These modes determine whether the skill sits idle until called or automatically configures every new Claude Code session.

## How On-Demand Mode Works

### Activation and Scope

In on-demand mode, the skill remains dormant until explicitly invoked. When you type `/i-have-adhd` in the Claude Code interface, the system loads the ruleset from [`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/SKILL.md) for that specific session only. This approach gives you manual control, applying ADHD-friendly formatting and communication patterns only when you need them.

### Configuration Requirements

On-demand mode requires no persistent configuration files or flag settings. Simply install the plugin and invoke the command when desired. To disable the skill entirely, uninstall the plugin or stop using the slash command.

```bash

# Install the plugin (one-time setup)

claude plugin marketplace add ayghri/i-have-adhd
claude plugin install i-have-adhd@i-have-adhd

# Activate per session

/i-have-adhd

```

## How Always-On Mode Works

### The SessionStart Hook Mechanism

Always-on mode leverages Claude Code's hook system to automate rule injection. According to the source code in [`hooks/hooks.json`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/hooks.json), a `SessionStart` hook triggers [`hooks/always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/always-on.sh) at the beginning of every Claude Code session【/cache/repos/github.com/ayghri/i-have-adhd/main/hooks/hooks.json】.

The shell script performs three critical operations:
1. Checks for the existence of `$CLAUDE_CONFIG_DIR/.i-have-adhd-always` (defaulting to `~/.claude/.i-have-adhd-always`)
2. Reads the full ruleset from [`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/SKILL.md)
3. Strips the YAML frontmatter and prints the content as a system prompt【/cache/repos/github.com/ayghri/i-have-adhd/main/hooks/always-on.sh】

### Flag File Configuration

Always-on mode requires explicit opt-in via a flag file. The presence of `~/.claude/.i-have-adhd-always` signals the hook script to activate the skill automatically. Remove this file to revert to on-demand behavior.

```bash

# Enable always-on for all future sessions

touch ~/.claude/.i-have-adhd-always

# Disable always-on (revert to on-demand)

rm ~/.claude/.i-have-adhd-always

```

## Key Differences Between On-Demand and Always-On Modes

| Feature | On-Demand Mode | Always-On Mode |
|---------|----------------|----------------|
| **Activation trigger** | Manual `/i-have-adhd` command | Automatic `SessionStart` hook |
| **Session scope** | Current session only after command | Every session from start |
| **Configuration method** | No files required; command-based | Flag file `~/.claude/.i-have-adhd-always` |
| **Persistence** | Per-session invocation | Global until flag removed |
| **Temporary disable** | Stop using command | Type `stop adhd mode` in session |

**On-demand mode** suits users who want occasional ADHD support without changing default Claude behavior. **Always-on mode** benefits users who need consistent formatting, structured responses, and executive-function accommodations in every interaction.

## Enabling and Disabling Each Mode

### Setting Up On-Demand (Default)

After installation, the plugin operates in on-demand mode by default. No additional files or environment variables are necessary.

```bash

# Verify installation

claude plugin list

# Use when needed

/i-have-adhd

```

### Configuring Always-On

Create the flag file to enable automatic injection. The [`INSTALL.md`](https://github.com/ayghri/i-have-adhd/blob/main/INSTALL.md) documentation specifies this as the standard method for persistent activation【/cache/repos/github.com/ayghri/i-have-adhd/main/INSTALL.md】.

```bash

# Create flag file to enable

touch ~/.claude/.i-have-adhd-always

# Verify in new Claude Code session

# (Ruleset loads automatically without typing command)

```

### Temporary Session Override

When always-on mode is enabled but you need standard Claude behavior for a specific task, type the override command:

```bash
stop adhd mode

```

This disables the ruleset for the current session only without deleting the flag file.

## Summary

- **On-demand mode** requires typing `/i-have-adhd` and applies only to the current session, requiring no persistent files.
- **Always-on mode** uses a `SessionStart` hook defined in [`hooks/hooks.json`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/hooks.json) to execute [`hooks/always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/always-on.sh), which checks for `~/.claude/.i-have-adhd-always` and injects rules from [`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/SKILL.md) automatically.
- Enable always-on by creating the flag file with `touch ~/.claude/.i-have-adhd-always`; disable it by removing the file.
- Use `stop adhd mode` to temporarily suppress always-on behavior for a single session.

## Frequently Asked Questions

### How do I switch from always-on back to on-demand mode?

Delete the flag file by running `rm ~/.claude/.i-have-adhd-always` in your terminal. The next Claude Code session will start without automatically loading the ADHD ruleset, and you can return to using the `/i-have-adhd` command manually when needed.

### Does always-on mode affect every Claude Code session?

Yes. When the flag file exists, the `SessionStart` hook fires at the beginning of every Claude Code session, regardless of project directory or context. The hook script [`hooks/always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/always-on.sh) processes before any user input appears, ensuring the ruleset is active immediately.

### What happens if I type `/i-have-adhd` while always-on mode is active?

Typing `/i-have-adhd` when the rules are already injected via always-on mode typically has no additional effect, as the ruleset is already present in the system prompt. The command is idempotent—it won't double-load the rules, but it confirms the skill is active.

### Where is the ADHD ruleset stored?

The complete ruleset resides in [`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/SKILL.md) within the repository. When always-on mode activates, [`hooks/always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/always-on.sh) reads this file, removes its YAML frontmatter, and outputs the content as a system prompt. On-demand mode similarly references this file when you invoke the slash command.