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:
- Checks for the existence of
$CLAUDE_CONFIG_DIR/.i-have-adhd-always(defaulting to~/.claude/.i-have-adhd-always) - Reads the full ruleset from
skills/i-have-adhd/SKILL.md - 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-adhdand applies only to the current session, requiring no persistent files. - Always-on mode uses a
SessionStarthook defined inhooks/hooks.jsonto executehooks/always-on.sh, which checks for~/.claude/.i-have-adhd-alwaysand injects rules fromskills/i-have-adhd/SKILL.mdautomatically. - Enable always-on by creating the flag file with
touch ~/.claude/.i-have-adhd-always; disable it by removing the file. - Use
stop adhd modeto 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:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →