# Opt-in vs Always-On Mode in i-have-ADHD: Complete Activation Guide

> Understand opt-in vs always-on mode in i-have-ADHD. Learn about activation differences, persistence, and automation to optimize your ADHD workflow. Get the complete guide.

- Repository: [Ayoub Ghriss/i-have-adhd](https://github.com/ayghri/i-have-adhd)
- Tags: how-to-guide
- Published: 2026-08-06

---

**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`](https://github.com/ayghri/i-have-adhd/blob/main/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`](https://github.com/ayghri/i-have-adhd/blob/main/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:

```bash
/i-have-adhd

```

For Codex users, the trigger uses a dollar prefix:

```bash
$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:

```bash
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:

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

```

The second method installs the skill as a Gemini extension:

```bash
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`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/always-on.sh), a session-start hook registered in [`hooks/hooks.json`](https://github.com/ayghri/i-have-adhd/blob/main/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`](https://github.com/ayghri/i-have-adhd/blob/main/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:

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

```

For extension-based installations, uninstall via:

```bash
gemini extensions uninstall i-have-adhd

```

Alternatively, editing [`hooks/hooks.json`](https://github.com/ayghri/i-have-adhd/blob/main/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`](https://github.com/ayghri/i-have-adhd/blob/main/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`](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) 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`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/always-on.sh) and [`hooks/hooks.json`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/hooks.json) to automatically inject rules from [`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/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`](https://github.com/ayghri/i-have-adhd/blob/main/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`](https://github.com/ayghri/i-have-adhd/blob/main/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`](https://github.com/ayghri/i-have-adhd/blob/main/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`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/hooks.json).

### Why does the always-on hook strip YAML front-matter?

The [`hooks/always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/always-on.sh) script removes the YAML front-matter from [`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/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`](https://github.com/ayghri/i-have-adhd/blob/main/INSTALL.md) at the repository root, while [`README.md`](https://github.com/ayghri/i-have-adhd/blob/main/README.md) provides quick-start examples. The core logic resides in [`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/SKILL.md), with automation handled by [`hooks/always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/always-on.sh) and configured through [`hooks/hooks.json`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/hooks.json).