# Troubleshooting `/i-have-adhd` Not Activating in Claude Code: A Complete Fix Guide

> Fix the `/i-have-adhd` command in Claude Code when it fails to activate. Learn why the SessionStart hook doesn't run and how to resolve the issue for successful plugin use.

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

---

**The `/i-have-adhd` slash command fails to activate when the plugin's SessionStart hook doesn't run, leaving the `~/.claude/.i-have-adhd-always` flag file uncreated.**

The **i-have-adhd** plugin for Claude Code enhances responses with structured, ADHD-friendly formatting through 10 specific rules. When properly configured, these rules auto-inject into every Claude response. This guide explains why activation fails and how to fix each failure point using the actual source code from `ayghri/i-have-adhd`.

---

## How the i-have-adhd Plugin Architecture Works

Understanding the three-component architecture reveals where activation breaks down.

| Component | Purpose | Source File |
|-----------|---------|-------------|
| **Plugin metadata** | Declares the plugin and registers the `/i-have-adhd` slash command | [`.claude-plugin/plugin.json`](https://github.com/ayghri/i-have-adhd/blob/main/.claude-plugin/plugin.json) |
| **SessionStart hook** | Runs [`always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/always-on.sh) on every Claude Code startup to create the always-on flag | [`hooks/hooks.json`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/hooks.json) |
| **Skill definition** | Contains the 10 output-shaping rules applied when active | [`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/SKILL.md) |

The activation flow requires all three:

1. Claude Code reads [`plugin.json`](https://github.com/ayghri/i-have-adhd/blob/main/plugin.json) at startup
2. [`hooks/hooks.json`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/hooks.json) triggers the `SessionStart` hook
3. [`always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/always-on.sh) creates `~/.claude/.i-have-adhd-always`
4. The flag enables auto-loading of [`SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/SKILL.md) rules

Any break in this chain prevents `/i-have-adhd` from working.

---

## Common Causes of `/i-have-adhd` Activation Failure

### Plugin Not Installed or Enabled

Claude Code only recognizes plugins present in its plugin directory with enabled status.

Verify installation:

```bash
claude plugin list

```

If `i-have-adhd` appears but shows **disabled**, enable it:

```bash
claude plugin enable i-have-adhd@i-have-adhd

```

### SessionStart Hook Never Executed

In [`hooks/hooks.json`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/hooks.json), the hook is defined as:

```json
{
  "hooks": [
    {
      "type": "SessionStart",
      "command": "sh \"${CLAUDE_PLUGIN_ROOT}/hooks/always-on.sh\""
    }
  ]
}

```

The hook only runs on **fresh Claude Code starts**. Simply opening a new chat window doesn't trigger it—you must fully restart Claude Code.

### [`always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/always-on.sh) Missing or Non-Executable

The hook expands `${CLAUDE_PLUGIN_ROOT}` to the plugin's install path, then executes:

```bash
sh "${CLAUDE_PLUGIN_ROOT}/hooks/always-on.sh"

```

Verify the script exists and has execute permissions:

```bash
ls -la $(claude plugin path i-have-adhd@i-have-adhd)/hooks/always-on.sh

# Should show: -rwxr-xr-x ... always-on.sh

# If not executable:

chmod +x $(claude plugin path i-have-adhd@i-have-adhd)/hooks/always-on.sh

```

### Always-On Flag File Missing or Stale

After a successful hook execution, [`always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/always-on.sh) creates:

```

~/.claude/.i-have-adhd-always

```

Check for this file:

```bash
ls -la ~/.claude/.i-have-adhd-always

```

If missing, create it manually as a temporary fix:

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

```

To disable auto-loading later:

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

```

### Outdated Plugin Version

Older versions may reference removed scripts or contain hook bugs. Update via:

```bash
claude plugin marketplace update i-have-adhd

```

Then **fully restart Claude Code** to trigger the updated `SessionStart` hook.

---

## Step-by-Step Diagnosis and Fix

Follow this sequence to identify and resolve your specific failure.

**Step 1: Verify plugin installation**

```bash
claude plugin list | grep i-have-adhd

```

Expected output shows `i-have-adhd@i-have-adhd` with status **enabled**. If absent, reinstall:

```bash
claude plugin marketplace add ayghri/i-have-adhd
claude plugin install i-have-adhd@i-have-adhd

```

**Step 2: Locate plugin files**

```bash
PLUGIN_ROOT=$(claude plugin path i-have-adhd@i-have-adhd)
echo "Plugin installed at: $PLUGIN_ROOT"

# Verify core files exist

ls "$PLUGIN_ROOT/.claude-plugin/plugin.json"
ls "$PLUGIN_ROOT/hooks/hooks.json"
ls "$PLUGIN_ROOT/hooks/always-on.sh"
ls "$PLUGIN_ROOT/skills/i-have-adhd/SKILL.md"

```

**Step 3: Check hook configuration**

Inspect [`hooks/hooks.json`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/hooks.json) to confirm the `SessionStart` entry points to the correct script path:

```bash
cat "$PLUGIN_ROOT/hooks/hooks.json"

```

Look for the exact `command` value: `sh "${CLAUDE_PLUGIN_ROOT}/hooks/always-on.sh"`

**Step 4: Full Claude Code restart**

Close all Claude Code windows or use your IDE's restart command. Partial restarts (new chat, reload window) **do not** trigger `SessionStart`.

**Step 5: Verify flag creation**

After restart, check:

```bash
if [ -f "$HOME/.claude/.i-have-adhd-always" ]; then
  echo "✅ Success: Always-on flag present"
else
  echo "❌ Failure: Hook did not create flag"
fi

```

**Step 6: Manual activation fallback**

If auto-loading fails, manually trigger per-session activation:

```bash
/i-have-adhd

```

This loads [`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/SKILL.md) rules immediately without requiring the flag file.

---

## Quick Reference: Key Source Files

| File Path | Function |
|-----------|----------|
| [`.claude-plugin/plugin.json`](https://github.com/ayghri/i-have-adhd/blob/main/.claude-plugin/plugin.json) | Plugin declaration and slash command registration |
| [`hooks/hooks.json`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/hooks.json) | Hook definitions including `SessionStart` |
| [`hooks/always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/always-on.sh) | Creates the always-on flag file |
| [`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/SKILL.md) | The 10 ADHD-friendly output rules |
| [`README.md`](https://github.com/ayghri/i-have-adhd/blob/main/README.md) | Installation and usage documentation |

All paths are relative to `$(claude plugin path i-have-adhd@i-have-adhd)`.

---

## Summary

- **`/i-have-adhd` requires three working components**: plugin metadata, SessionStart hook, and always-on flag creation
- **Most failures stem from incomplete restarts**: The hook only fires on full Claude Code startup, not window reloads
- **Verify the flag file first**: `~/.claude/.i-have-adhd-always` presence confirms successful hook execution
- **Manual activation works as fallback**: Typing `/i-have-adhd` loads rules for the current session regardless of flag status
- **Keep the plugin updated**: `claude plugin marketplace update i-have-adhd` ensures you have the latest hook fixes

---

## Frequently Asked Questions

### Why does `/i-have-adhd` work after I type it manually but not automatically?

The manual command loads [`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/SKILL.md) directly for that session only. Automatic activation requires the `SessionStart` hook to have run and created `~/.claude/.i-have-adhd-always`. If the hook failed—due to missing script, permissions, or incomplete restart—the flag never gets created and auto-loading never triggers.

### How do I force Claude Code to run the SessionStart hook again?

Fully quit and restart Claude Code. Simply closing a chat tab, opening a new window, or reloading the IDE window does **not** trigger `SessionStart` hooks. On macOS: Cmd+Q then reopen. In VS Code: Command Palette → "Developer: Reload Window" does **not** work; fully close and reopen the application.

### Can I use i-have-adhd without the always-on flag?

Yes. The flag only enables automatic rule injection. You can manually type `/i-have-adhd` at any point in a session to load the 10 rules from [`SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/SKILL.md) for that conversation only. This is useful when you want ADHD-structured output occasionally rather than on every response.

### What permissions does [`always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/always-on.sh) need?

The script needs **read and execute** permissions for the user running Claude Code. The hook calls it via `sh "${CLAUDE_PLUGIN_ROOT}/hooks/always-on.sh"`, which requires the file to be readable. Explicit execution via [`./always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/./always-on.sh) would also require the executable bit. Fix with: `chmod 755 always-on.sh`