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

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
SessionStart hook Runs always-on.sh on every Claude Code startup to create the always-on flag hooks/hooks.json
Skill definition Contains the 10 output-shaping rules applied when active skills/i-have-adhd/SKILL.md

The activation flow requires all three:

  1. Claude Code reads plugin.json at startup
  2. hooks/hooks.json triggers the SessionStart hook
  3. always-on.sh creates ~/.claude/.i-have-adhd-always
  4. The flag enables auto-loading of 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:

claude plugin list

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

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

SessionStart Hook Never Executed

In hooks/hooks.json, the hook is defined as:

{
  "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 Missing or Non-Executable

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

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

Verify the script exists and has execute permissions:

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 creates:


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

Check for this file:

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

If missing, create it manually as a temporary fix:

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

To disable auto-loading later:

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

Outdated Plugin Version

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

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

claude plugin list | grep i-have-adhd

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

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

Step 2: Locate plugin files

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 to confirm the SessionStart entry points to the correct script path:

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:

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:

/i-have-adhd

This loads 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 Plugin declaration and slash command registration
hooks/hooks.json Hook definitions including SessionStart
hooks/always-on.sh Creates the always-on flag file
skills/i-have-adhd/SKILL.md The 10 ADHD-friendly output rules
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 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 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 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 would also require the executable bit. Fix with: chmod 755 always-on.sh

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 →