# Opt-in Invocation vs Always-On Mode in i-have-adhd: Complete Setup Guide

> Learn the differences between opt-in invocation and always-on mode in i-have-adhd. This guide provides a complete setup for both activation methods.

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

---

**The i-have-adhd skill supports two activation methods: opt-in invocation requires running `/i-have-adhd` or `$i-have-adhd` per session, while always-on mode automatically applies rules via a flag file at `~/.claude/.i-have-adhd-always` or Gemini extension installation.**

The `i-have-adhd` repository by ayghri provides an AI assistant skill designed to optimize interactions for ADHD workflows. When configuring **opt-in invocation vs always-on mode**, users choose between manual session-based activation or persistent automatic application. Both methods ultimately load the same rule set 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 trigger mechanisms and persistence.

## Understanding the Two Activation Methods

### Opt-in Invocation (Command Mode)

**Opt-in invocation** requires explicit user action to activate the skill for a single session. This mode uses the `disable-model-invocation: true` flag in the skill's front-matter to ensure nothing happens until manually triggered.

To activate in Claude Code:

```bash
/i-have-adhd

```

To activate in Codex:

```bash
$i-have-adhd

```

Once activated, the ruleset remains active only for the current session. To deactivate before the session ends, type:

```bash
stop adhd mode

```

Or alternatively:

```bash
normal mode

```

### Always-On Mode (Extension/Flag File)

**Always-on mode** automatically injects the ADHD ruleset at the start of every session without requiring manual invocation. This persistence is achieved through two possible mechanisms:

1. **Flag file method**: Create `~/.claude/.i-have-adhd-always` (or `$CLAUDE_CONFIG_DIR/.i-have-adhd-always`)
2. **Gemini extension method**: Install the skill as a Gemini extension

When using the flag file approach, a session-start hook checks for the file's existence and automatically loads the rules. To disable, remove the flag file:

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

```

## How the Mechanisms Work Under the Hood

### Opt-in Architecture

In the opt-in approach, the skill resides in `skills/i-have-adhd/` and remains dormant until explicitly called. The front-matter configuration `disable-model-invocation: true` prevents automatic loading, ensuring the rules only apply when the user types the specific trigger command. This design gives users complete control over when ADHD-optimized formatting and response patterns are applied.

### Always-On Architecture

The always-on implementation 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). When Claude Code initializes a session, the hook executes and checks for the presence of `$CLAUDE_CONFIG_DIR/.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 mechanism ensures the ADHD ruleset is injected automatically at the start of every session, affecting all replies until the flag file is removed or the hook is disabled.

## Configuration Examples

### Enable Opt-in Mode (Per-Session Usage)

For Claude Code users who prefer manual activation:

```bash

# Start a new Claude session

# Type the trigger to activate:

/i-have-adhd

# The skill stays active for this session only.

# When finished, type:

stop adhd mode

```

For Codex users:

```bash

# In a Codex session:

$i-have-adhd

# Deactivate with:

stop adhd mode

```

### Enable Always-On Mode via Flag File

Create the persistence flag:

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

```

From this point forward, every Claude session automatically starts with the ADHD ruleset active. To remove always-on behavior:

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

```

### Enable Always-On Mode via Gemini Extension

Install as a system extension:

```bash
gemini extensions install https://github.com/ayghri/i-have-adhd

# Verify installation:

gemini extensions list

```

The extension loads [`GEMINI.md`](https://github.com/ayghri/i-have-adhd/blob/main/GEMINI.md), which imports the full skill rules. To uninstall:

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

```

### Disable the Always-On Hook (Opt-in Only)

If you prefer strict opt-in behavior without the automatic hook checking, edit or delete the hook entry in [`hooks/hooks.json`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/hooks.json):

```bash

# Remove or comment out this entry:

# "command": "sh \"${CLAUDE_PLUGIN_ROOT}/hooks/always-on.sh\""

```

Removing this entry prevents the automatic injection entirely, forcing reliance on manual command invocation.

## Key Files and Implementation Details

| File | Purpose |
|------|---------|
| [`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/SKILL.md) | Contains the full ADHD-style rule set loaded by both modes |
| [`hooks/always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/always-on.sh) | Session-start hook that checks for the flag file and injects rules |
| [`hooks/hooks.json`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/hooks.json) | Registers [`always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/always-on.sh) as a Claude Code automatic hook |
| [`INSTALL.md`](https://github.com/ayghri/i-have-adhd/blob/main/INSTALL.md) | Detailed installation instructions for both activation methods |
| [`README.md`](https://github.com/ayghri/i-have-adhd/blob/main/README.md) | Quick overview and usage examples |

According to the ayghri/i-have-adhd source code, the critical difference between modes lies in **when** the [`SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/SKILL.md) content is loaded: opt-in loads only on explicit command trigger, while always-on loads via the shell hook at session initialization.

## Summary

- **Opt-in invocation** requires manual activation via `/i-have-adhd` (Claude) or `$i-have-adhd` (Codex) and persists only for the current session
- **Always-on mode** uses a flag file at `~/.claude/.i-have-adhd-always` or Gemini extension installation to automatically apply rules every session
- The `disable-model-invocation: true` setting prevents automatic loading in opt-in mode
- [`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) manage the automatic injection mechanism
- Both modes reference the same rule definitions in [`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/SKILL.md)

## Frequently Asked Questions

### What is the difference between opt-in and always-on mode in i-have-adhd?

Opt-in mode requires you to type a specific command (`/i-have-adhd` or `$i-have-adhd`) to activate the skill for that single session, while always-on mode automatically applies the ADHD ruleset at the start of every session through either a flag file or extension installation. Opt-in gives you session-by-session control, whereas always-on provides persistent behavior across all sessions.

### How do I completely disable always-on mode?

Delete the flag file by running `rm ~/.claude/.i-have-adhd-always` in your terminal, or uninstall the Gemini extension using `gemini extensions uninstall i-have-adhd`. If you installed the Claude Code hook, you may also need to remove the entry from [`hooks/hooks.json`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/hooks.json) to prevent future automatic checks.

### Can I use both opt-in and always-on modes simultaneously?

While technically possible, it is redundant because always-on mode already loads the rules automatically, making manual invocation unnecessary. If the flag file exists, the rules are already active, so typing the opt-in command would have no additional effect. Choose the method that best fits your workflow consistency needs.

### Where are the actual ADHD rules defined?

The complete rule set is defined in [`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/SKILL.md). Both activation methods ultimately read and apply this file's contents; the opt-in command loads it on demand, while the always-on hook reads it at session start, strips the YAML front-matter, and injects the rules into the conversation context.