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

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 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.


# 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, a SessionStart hook triggers 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
  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.


# 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.


# 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 documentation specifies this as the standard method for persistent activation【/cache/repos/github.com/ayghri/i-have-adhd/main/INSTALL.md】.


# 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:

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 to execute hooks/always-on.sh, which checks for ~/.claude/.i-have-adhd-always and injects rules from 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 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 within the repository. When always-on mode activates, 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.

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:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →