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.sh script 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: true to remain dormant until triggered, storing the skill in skills/i-have-adhd/.
  • Always-on mode leverages hooks/always-on.sh and hooks/hooks.json to automatically inject rules from skills/i-have-adhd/SKILL.md when ~/.claude/.i-have-adhd-always exists.
  • 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:

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 →