Opt-in vs Always-On Mode in i-have-ADHD: Complete Activation Guide
The i-have-ADHD skill supports opt-in activation via session-specific commands and always-on mode through flag files or extensions, differing primarily in persistence, automation, and the underlying trigger mechanisms.
The ayghri/i-have-adhd repository implements a specialized AI interaction style designed for ADHD workflows through two distinct activation methods. Understanding the difference between opt-in and always-on mode in i-have-adhd allows users to choose between temporary, manually-triggered assistance and persistent, automatic rule application across every AI session.
What Are the Two Activation Modes?
The skill operates through fundamentally different pathways:
- Opt-in (command) invocation: Manual activation per session using slash commands that load the skill from
skills/i-have-adhd/ - Always-on (extension) mode: Automatic injection at session start via the
hooks/always-on.shscript when it detects the flag file~/.claude/.i-have-adhd-always
Both methods ultimately source their behavior from skills/i-have-adhd/SKILL.md, but differ significantly in timing, persistence, and setup requirements.
How Opt-In Mode Works
Opt-in mode treats the ADHD ruleset as a temporary skill that users explicitly request when needed.
Activating Opt-In Mode
To trigger the skill manually in Claude Code, type the command:
/i-have-adhd
For Codex users, the trigger uses a dollar prefix:
$i-have-adhd
Once activated, the rules remain active only for the current session.
Technical Implementation
The opt-in mechanism resides in skills/i-have-adhd/ and relies on front-matter configuration to prevent automatic loading. According to the source code, the skill declares disable-model-invocation: true in its front-matter, ensuring nothing executes until the user types the explicit trigger command.
Deactivating Opt-In Mode
To end the skill in an active session, type:
stop adhd mode
Alternatively, normal mode also terminates the ADHD-specific formatting for that session.
How Always-On Mode Works
Always-on mode automatically prepends the ADHD ruleset to every conversation without manual intervention.
Setting Up Always-On Mode
Users can enable automatic activation through two methods. The first involves creating a flag file in your Claude configuration directory:
touch ~/.claude/.i-have-adhd-always
The second method installs the skill as a Gemini extension:
gemini extensions install https://github.com/ayghri/i-have-adhd
The Session-Start Hook Mechanism
Under the hood, always-on mode relies on hooks/always-on.sh, a session-start hook registered in hooks/hooks.json. At the start of every Claude Code session, this script checks for the presence of $CLAUDE_CONFIG_DIR/.i-have-adhd-always (defaulting to ~/.claude/.i-have-adhd-always).
If the flag file exists, the hook reads skills/i-have-adhd/SKILL.md, strips its YAML front-matter, and prints the full ruleset before every assistant reply. This ensures the ADHD formatting guidelines are automatically active without user intervention.
Disabling Always-On Mode
To disable the automatic behavior, remove the flag file:
rm ~/.claude/.i-have-adhd-always
For extension-based installations, uninstall via:
gemini extensions uninstall i-have-adhd
Alternatively, editing hooks/hooks.json to remove the "command": "sh \"${CLAUDE_PLUGIN_ROOT}/hooks/always-on.sh\"" entry prevents automatic injection while preserving the skill files for opt-in use.
Key Differences at a Glance
Activation Method: Opt-in requires typing /i-have-adhd or $i-have-adhd, while always-on checks for ~/.claude/.i-have-adhd-always or uses a Gemini extension.
Session Persistence: Opt-in lasts only for the current conversation, whereas always-on applies to every new session automatically via hooks/always-on.sh.
Deactivation: Type stop adhd mode to end opt-in sessions; remove the flag file or uninstall the extension to disable always-on.
Implementation Detail: Opt-in uses disable-model-invocation: true in the skill front-matter to prevent auto-loading; always-on relies on hooks/hooks.json to execute hooks/always-on.sh at session start.
Summary
- Opt-in mode requires explicit command invocation per session and uses
disable-model-invocation: trueto remain dormant until triggered, storing the skill inskills/i-have-adhd/. - Always-on mode leverages
hooks/always-on.shandhooks/hooks.jsonto automatically inject rules fromskills/i-have-adhd/SKILL.mdwhen~/.claude/.i-have-adhd-alwaysexists. - Both modes access the identical ruleset defined in
skills/i-have-adhd/SKILL.md, differing only in automation level and session persistence. - Users can switch between modes by creating or deleting the flag file, or by toggling the hook registration in the configuration.
Frequently Asked Questions
What happens if I use the opt-in command while always-on mode is enabled?
If you trigger /i-have-adhd while the flag file exists, the ruleset remains active as expected, but you will have redundant rule injection since hooks/always-on.sh already prepends the guidelines automatically. To avoid confusion, choose one activation method based on your workflow needs.
Can I use always-on mode with Codex?
The flag file mechanism (~/.claude/.i-have-adhd-always) specifically targets Claude Code's hook system via hooks/always-on.sh. Codex users should rely on the opt-in command $i-have-adhd for session-specific activation, as the automatic injection relies on Claude-specific hook infrastructure defined in hooks/hooks.json.
Why does the always-on hook strip YAML front-matter?
The hooks/always-on.sh script removes the YAML front-matter from skills/i-have-adhd/SKILL.md before injection because the front-matter contains metadata flags like disable-model-invocation: true that control skill loading behavior. Stripping these headers ensures only the actual formatting rules are injected into the conversation context, not the configuration metadata.
Where can I find detailed installation instructions?
Comprehensive setup guides for both activation modes are documented in INSTALL.md at the repository root, while README.md provides quick-start examples. The core logic resides in skills/i-have-adhd/SKILL.md, with automation handled by hooks/always-on.sh and configured through hooks/hooks.json.
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 →