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:
- Claude Code reads
plugin.jsonat startup hooks/hooks.jsontriggers theSessionStarthookalways-on.shcreates~/.claude/.i-have-adhd-always- The flag enables auto-loading of
SKILL.mdrules
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-adhdrequires 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-alwayspresence confirms successful hook execution - Manual activation works as fallback: Typing
/i-have-adhdloads rules for the current session regardless of flag status - Keep the plugin updated:
claude plugin marketplace update i-have-adhdensures 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:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →