# How to Make the i-Have-ADHD Skill Always-On for Claude Code

> Activate the i-have-adhd skill for Claude Code automatically by creating the ~/.claude/.i-have-adhd-always flag file. Enhance your coding sessions today.

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

---

**Create the flag file `~/.claude/.i-have-adhd-always` to automatically activate the ADHD response-shaping rules for every Claude Code session.**

The i-have-adhd skill from `ayghri/i-have-adhd` injects persistent formatting guidelines into Claude Code interactions. Making it **always-on** requires understanding how the SessionStart hook system detects and loads the skill on every launch.

## How the Always-On Mechanism Works

The always-on feature relies on a lightweight POSIX shell hook that runs **before** any user input. According to the source code in `ayghri/i-have-adhd`, the activation chain has four stages:

1. **Hook registration** — [`hooks/hooks.json`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/hooks.json) registers a *SessionStart* hook triggered by `startup`, `resume`, `clear`, or `compact` commands
2. **Script execution** — The hook runs [`hooks/always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/always-on.sh)
3. **Flag file detection** — The script checks for `$CLAUDE_CONFIG_DIR/.i-have-adhd-always`
4. **Rule injection** — If present, the script loads [`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/SKILL.md), strips YAML front-matter, and prints the ruleset

The design intentionally avoids blocking: any error exits with status `0`, ensuring Claude Code launches normally even if the skill fails to load.

## Enable Always-On Mode

Run this once to create the flag file:

```bash
mkdir -p "$HOME/.claude"
touch "$HOME/.claude/.i-have-adhd-always"

```

The default `CLAUDE_CONFIG_DIR` is `~/.claude`. The script at [`hooks/always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/always-on.sh) checks this exact path.

### Verify the Hook Is Working

Test the activation manually without restarting Claude Code:

```bash
sh "$HOME/.claude/plugins/i-have-adhd/hooks/always-on.sh"

```

You should see the **i-have-adhd rules banner** with session control instructions.

## Disable Always-On Mode

### Permanent Disable

Remove the flag file to stop automatic activation:

```bash
rm -f "$HOME/.claude/.i-have-adhd-always"

```

Next session will start without the skill loaded.

### Temporary Disable (Current Session Only)

Type **`stop adhd mode`** in any Claude Code conversation. The skill ceases applying rules immediately but will reactivate on the next session start if the flag file remains.

## Key Files in the Repository

Understanding these source files helps debug always-on issues:

- **[`hooks/hooks.json`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/hooks.json)** — Declares the SessionStart hook binding that triggers on `startup|resume|clear|compact` events
- **[`hooks/always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/always-on.sh)** — Contains the core logic: flag detection, front-matter stripping, and ruleset emission
- **[`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/SKILL.md)** — The complete rule corpus injected when always-on is active

The [`always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/always-on.sh) script specifically handles YAML front-matter removal from [`SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/SKILL.md) before outputting rules, ensuring clean injection into the prompt context.

## Troubleshooting Always-On Failures

If the skill does not activate automatically:

- Confirm the flag file path matches your `CLAUDE_CONFIG_DIR` environment variable (defaults to `~/.claude`)
- Verify [`hooks/always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/always-on.sh) has execute permissions or invoke explicitly with `sh`
- Check that [`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/SKILL.md) exists in your plugin installation

## Summary

- **Always-on activation** requires creating `~/.claude/.i-have-adhd-always`
- **Hook-driven loading** runs automatically via [`hooks/always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/always-on.sh) on every SessionStart event
- **Session-level disable** uses the phrase `stop adhd mode`
- **Permanent disable** deletes the flag file
- **Zero blocking design** ensures Claude Code launches regardless of skill errors

## Frequently Asked Questions

### What triggers the always-on check in Claude Code?

The check runs on **SessionStart events**: `startup`, `resume`, `clear`, and `compact` commands. These events are defined in [`hooks/hooks.json`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/hooks.json) and mapped to execute [`hooks/always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/always-on.sh) before user interaction begins.

### Can I use a custom directory for the flag file?

Yes. Set the `CLAUDE_CONFIG_DIR` environment variable before launching Claude Code. The script references this variable directly; if unset, it defaults to `~/.claude`.

### Does always-on mode slow down Claude Code startup?

No. The [`always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/always-on.sh) script is a lightweight POSIX shell script with no Node.js runtime dependency. It exits immediately if the flag file is absent and exits with status `0` on any error, deliberately designed to never block session initialization.