# How i-have-adhd Integrates with Agent Harnesses Like Claude Code and Copilot

> Learn how i-have-adhd seamlessly integrates with Claude Code and GitHub Copilot. Discover its portable Agent Skill architecture for enhanced productivity.

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

---

**i-have-adhd integrates with Claude Code and GitHub Copilot through a portable Agent Skill architecture that uses manifest files, slash commands, and session hooks to inject ADHD-friendly rules on demand or persistently across sessions.**

The `i-have-adhd` repository provides a framework for ADHD-friendly AI interactions that works seamlessly across multiple agent harnesses. According to the source code, the project implements a unified Agent Skill pattern that allows both Claude Code and GitHub Copilot to consume the same rule set through standardized configuration files and runtime-specific activation mechanisms.

## Understanding the Agent Skill Architecture

The integration relies on a **Skill** pattern defined in [`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/SKILL.md). This file contains the canonical skill definition including `disable-model-invocation: true`, which instructs both Claude Code and Copilot not to automatically apply the skill. Instead, the skill remains dormant until explicitly invoked by the user, ensuring that ADHD-friendly formatting rules only activate when needed.

## Claude Code Integration

Claude Code recognizes `i-have-adhd` as a first-class skill through a combination of manifest files and JavaScript hooks.

### The SKILL.md Manifest and disable-model-invocation

In [`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/SKILL.md), the `disable-model-invocation: true` flag prevents Claude Code from loading the skill automatically during every session. This design follows the principle of explicit consent, requiring users to opt-in rather than having behavioral modifications applied by default.

### Slash Command Activation

Users activate the skill manually by typing the slash command **`/i-have-adhd`** in any Claude Code chat session. Once invoked, the system injects the full rule set into the current context, enabling ADHD-friendly formatting such as structured summaries, bullet points, and clear section headers. To deactivate the mode, users can type **`stop adhd mode`** or **`normal mode`**.

### Persistent Session Hooks via always-on.mjs

For users who want the skill active by default, the repository provides a **SessionStart** hook implemented in `hooks/always-on.mjs`. This hook checks for the existence of a flag file at `~/.claude/.i-have-adhd-always`. When present, the `onSessionStart` function automatically prepends the complete skill description to the system prompt at the beginning of every Claude Code session:

```javascript
// hooks/always-on.mjs
export async function onSessionStart(context) {
  // If ~/.claude/.i-have-adhd-always exists,
  // inject the full skill rules into the system prompt
}

```

The hook is registered through [`.claude-plugin/plugin.json`](https://github.com/ayghri/i-have-adhd/blob/main/.claude-plugin/plugin.json) and declared in [`hooks/hooks.json`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/hooks.json), creating a persistent "always-on" mode without requiring manual slash commands.

## GitHub Copilot Integration

GitHub Copilot consumes the same Agent Skill definition, providing consistent behavior across different AI coding assistants.

### Native Agent Skill Support

Copilot natively reads Agent Skills from the [`SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/SKILL.md) file located at [`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/SKILL.md). As documented in [`INSTALL.md`](https://github.com/ayghri/i-have-adhd/blob/main/INSTALL.md), Copilot respects the same `disable-model-invocation` flag, ensuring the skill remains inactive until explicitly requested. This allows the repository to maintain a single source of truth for behavior definitions while supporting multiple runtimes.

### Explicit Invocation Model

Similar to Claude Code, Copilot users activate the skill by including **`/i-have-adhd`** in a Copilot chat message or CLI invocation. The skill applies only to the current chat context, and users can disable it using the same **`stop adhd mode`** command. This explicit model prevents the ADHD formatting rules from interfering with standard coding workflows when not needed.

## Configuration Files and Hook Implementation

The integration relies on specific file paths that agent harnesses scan to discover and configure skills.

### Plugin Manifest (.claude-plugin/plugin.json)

The file [`.claude-plugin/plugin.json`](https://github.com/ayghri/i-have-adhd/blob/main/.claude-plugin/plugin.json) tells Claude Code that this repository contains a skill plugin and specifies which hooks to load:

```json
{
  "name": "i-have-adhd",
  "type": "skill",
  "hooks": ["hooks/always-on.mjs"]
}

```

This manifest bridges the repository structure with Claude Code's plugin system, enabling the runtime to locate and execute the SessionStart hook.

### SessionStart Hook Logic (hooks/always-on.mjs)

The `hooks/always-on.mjs` file implements the persistence logic that makes the skill "always-on" for specific users. By checking for the flag file before injecting rules, the hook provides a toggle mechanism that survives across sessions without modifying the global Claude Code configuration.

To enable always-on mode, create the flag file once:

```bash
echo "i-have-adhd" > ~/.claude/.i-have-adhd-always

```

Subsequent Claude Code sessions will automatically load the ADHD-friendly rules without requiring the `/i-have-adhd` slash command.

## Summary

- **i-have-adhd** uses a portable Agent Skill architecture shared between Claude Code and GitHub Copilot.
- The [`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/SKILL.md) file contains `disable-model-invocation: true`, preventing automatic activation.
- Users explicitly invoke the skill using the **`/i-have-adhd`** slash command in both harnesses.
- Claude Code supports persistent activation through the `hooks/always-on.mjs` SessionStart hook, triggered by the presence of `~/.claude/.i-have-adhd-always`.
- Both platforms use the same rule set but differ in hook implementation, with Copilot relying on native Agent Skill support without custom hooks.

## Frequently Asked Questions

### How do I permanently enable i-have-adhd in Claude Code?

Create a flag file at `~/.claude/.i-have-adhd-always` containing any text. The `hooks/always-on.mjs` SessionStart hook detects this file during initialization and automatically injects the skill rules into every new Claude Code session. Remove the file to return to manual activation mode.

### Why doesn't i-have-adhd activate automatically when I start Claude Code?

The [`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/SKILL.md) file explicitly sets `disable-model-invocation: true` to prevent automatic activation. This design ensures that ADHD-friendly formatting only applies when you explicitly request it via the `/i-have-adhd` slash command or enable the always-on hook, maintaining normal IDE behavior by default.

### Can I use i-have-adhd with GitHub Copilot in VS Code?

Yes. According to [`INSTALL.md`](https://github.com/ayghri/i-have-adhd/blob/main/INSTALL.md), GitHub Copilot natively supports Agent Skills. Simply invoke the skill by typing `/i-have-adhd` in the Copilot chat panel. The skill implements the same `disable-model-invocation` protocol, so it will not interfere with standard Copilot suggestions until explicitly activated.

### What is the difference between the slash command and the always-on hook?

The **`/i-have-adhd`** slash command activates the skill for a single session or chat context, while the **always-on hook** (`hooks/always-on.mjs`) modifies the system prompt at session start when it detects the `~/.claude/.i-have-adhd-always` flag file. The slash command provides temporary access, whereas the hook provides persistent activation across all future Claude Code sessions.