# How to Create Custom Command Triggers for the i-have-adhd Skill: Beyond /i-have-adhd and $i-have-adhd

> Unlock custom command triggers for i-have-adhd beyond default patterns. Learn to create new agent configurations for flexible skill invocation like /focus-now without code duplication.

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

---

**You can create custom command triggers for the i-have-adhd skill by adding new agent configuration files that reference the same SKILL.md rule set, enabling multiple invocation patterns like `/focus-now` or `$adhd-mode` without duplicating any logic.**

The **i-have-adhd** repository provides a lightweight, file-based skill that reshapes LLM outputs to be action-first and ADHD-friendly. Unlike complex plugins, it requires no code execution—just declarative configuration files that instruct the host assistant how to transform responses. The default triggers are `/i-have-adhd` and `$i-have-adhd`, but the architecture makes extending these trivial. This article shows how to create custom command triggers by leveraging the existing agent configuration system according to the ayghri/i-have-adhd source code.

## How the Skill Architecture Enables Custom Triggers

The i-have-adhd skill separates **behavior** from **invocation mechanism**. The core rules live in a single Markdown file, while agent configurations define how users trigger those rules.

| Component | Purpose | Key File |
|-----------|---------|----------|
| **Skill definition** | 10 rules for ADHD-friendly output (lead with action, numbered steps, no tangents) | [`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/SKILL.md) |
| **Agent configuration** | YAML/TOML files that register commands with specific assistants | [`skills/i-have-adhd/agents/openai.yaml`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/agents/openai.yaml), [`gemini.toml`](https://github.com/ayghri/i-have-adhd/blob/main/gemini.toml) |
| **Plugin manifest** | JSON discovery file for Claude, Codex, and other hosts | [`plugin.json`](https://github.com/ayghri/i-have-adhd/blob/main/plugin.json) |
| **Always-on hook** | Bash script for session-start auto-loading | [`hooks/always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/always-on.sh) |

Because [`SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/SKILL.md) contains all behavior logic, any new agent file automatically inherits the same transformation rules. You only change how users invoke the skill.

## Creating a Custom Trigger: Step-by-Step

Follow these steps to add a custom command trigger like `/focus-now` or `$adhd-mode`:

### 1. Copy and Modify an Existing Agent File

Start with the closest existing agent configuration. For OpenAI-compatible assistants, copy [`skills/i-have-adhd/agents/openai.yaml`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/agents/openai.yaml):

```yaml

# File: skills/i-have-adhd/agents/custom.yaml

interface:
  display_name: "Focus Now"
  short_description: "Alias for i-have-adhd with shorter trigger"
  default_prompt: "Use $i-have-adhd to make this response action-first."
policy:
  allow_implicit_invocation: true

```

Key fields to modify:

- **`display_name`** – Human-readable name shown in command palettes
- **`short_description`** – Help text explaining the trigger's purpose
- **`default_prompt`** – References the original skill via `$i-have-adhd` or `/i-have-adhd`

### 2. Register the New Trigger in plugin.json

If your host assistant requires explicit command enumeration, add the new trigger to [`plugin.json`](https://github.com/ayghri/i-have-adhd/blob/main/plugin.json):

```json
{
  "name": "i-have-adhd",
  "version": "1.0.0",
  "commands": [
    "/i-have-adhd",
    "$i-have-adhd",
    "/focus-now",
    "$adhd-mode"
  ],
  "agents": [
    "skills/i-have-adhd/agents/openai.yaml",
    "skills/i-have-adhd/agents/custom.yaml"
  ]
}

```

### 3. Test and Reload

After placing the new agent file, reload the plugin or restart your assistant:

```bash

# Example: Reload Claude plugins

claude plugin reload i-have-adhd

# Or fully restart the assistant

claude restart

```

Now typing `/focus-now` triggers the same ADHD-friendly transformation as the default `/i-have-adhd`.

## Always-On Mode: Trigger Without Typing Commands

The [`hooks/always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/always-on.sh) script enables session-start auto-loading, making custom triggers behave as if they're always active.

**How it works:**

The script checks for a flag file at `~/.claude/.i-have-adhd-always` (or platform-equivalent paths). If present, it injects the full [`SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/SKILL.md) rules at session start without requiring any slash command.

```bash

# Enable always-on behavior

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

# Disable always-on behavior

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

```

**Custom trigger integration:** Since always-on mode uses the same [`SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/SKILL.md) source, custom triggers you create will automatically respect this flag. No modifications to [`always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/always-on.sh) are needed—the script loads the skill definition universally.

## Platform-Specific Custom Trigger Examples

### Claude/Codex (YAML Configuration)

```yaml

# File: skills/i-have-adhd/agents/quick-focus.yaml

interface:
  display_name: "Quick Focus"
  short_description: "One-word trigger for ADHD mode"
  default_prompt: "Apply i-have-adhd rules: lead with next action, number steps, no preamble."
policy:
  allow_implicit_invocation: true
  invocation_patterns:
    - "/qf"
    - "$focus"

```

### Gemini (TOML Configuration)

```toml

# File: ~/.gemini/commands/adhd-mode.toml

[command]
name = "adhd-mode"
description = "Shorthand for i-have-adhd rules"
trigger = "/adhd"
skill_path = "/path/to/i-have-adhd/skills/i-have-adhd/SKILL.md"
allow_implicit = true

```

### OpenAI GPTs (JSON Configuration)

```json
{
  "name": "Focus Mode",
  "description": "Custom trigger for ADHD-friendly responses",
  "instructions": "Use the rules from /path/to/i-have-adhd/skills/i-have-adhd/SKILL.md for all responses.",
  "conversation_starters": ["/focus", "/now"]
}

```

## Critical Configuration Details

When creating custom command triggers, respect these constraints from the source implementation:

- **`allow_implicit_invocation: true`** – Required for the assistant to recognize the trigger without explicit `/plugin_name` prefixes
- **Unique trigger names** – Avoid collisions with built-in assistant commands; check your host's namespace first
- **Relative skill paths** – Use absolute paths in `default_prompt` or `skill_path` fields to prevent resolution failures
- **No logic duplication** – Always reference the canonical [`SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/SKILL.md) rather than copying rule text

## Programmatic Invocation Example

Trigger custom commands via API or CLI:

```python
import subprocess
import json
import os

def invoke_custom_trigger(prompt, trigger="/focus-now"):
    """
    Programmatically trigger i-have-adhd with custom command.
    Assumes codex CLI and plugin are installed.
    """
    full_prompt = f"{trigger} {prompt}"
    
    result = subprocess.check_output(
        ["codex", "run", "--model", "gpt-4o", "--prompt", full_prompt],
        env={**os.environ, "I_HAVE_ADHD_ALWAYS": "1"},  # Respect always-on flag

        text=True
    )
    
    return json.loads(result)

# Usage

response = invoke_custom_trigger(
    "Explain Python list comprehensions",
    trigger="$adhd-mode"
)
print(response["output"])  # Action-first, numbered steps, no tangents

```

## Complete File Reference for Custom Triggers

| File | Purpose | Custom Trigger Relevance |
|------|---------|------------------------|
| [`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/SKILL.md) | Core 10-rule behavior definition | **Never modify**—all triggers reference this |
| [`skills/i-have-adhd/agents/openai.yaml`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/agents/openai.yaml) | Template for OpenAI-compatible triggers | **Copy and modify** for custom triggers |
| [`skills/i-have-adhd/agents/gemini.toml`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/agents/gemini.toml) | Template for Gemini triggers | **Copy and modify** for custom triggers |
| [`plugin.json`](https://github.com/ayghri/i-have-adhd/blob/main/plugin.json) | Command registry for discovery hosts | **Update** when adding new trigger names |
| [`hooks/always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/always-on.sh) | Session auto-loader | **No changes needed**—works with all triggers |
| [`INSTALL.md`](https://github.com/ayghri/i-have-adhd/blob/main/INSTALL.md) | Platform-specific installation guides | **Reference** for path conventions |

## Summary

- **Custom command triggers** for i-have-adhd require only new agent configuration files, not code changes
- **Copy existing YAML/TOML agents** from `skills/i-have-adhd/agents/` and modify `display_name`, `short_description`, and invocation patterns
- **Reference [`SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/SKILL.md) directly** in `default_prompt` to inherit all 10 ADHD-friendly rules automatically
- **Update [`plugin.json`](https://github.com/ayghri/i-have-adhd/blob/main/plugin.json)** if your host requires explicit command registration
- **Always-on mode** via [`hooks/always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/always-on.sh) works universally—no per-trigger configuration needed
- **Maintain `allow_implicit_invocation: true`** to enable natural trigger recognition

## Frequently Asked Questions

### How many custom triggers can I create for i-have-adhd?

You can create unlimited custom triggers. Each trigger is a lightweight agent configuration file (typically under 20 lines) pointing to the same [`SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/SKILL.md). The repository imposes no limits—only your host assistant's namespace constraints apply.

### Do custom triggers require reinstalling the plugin?

No. Place the new agent file in `skills/i-have-adhd/agents/` and reload the plugin with your host's reload command (e.g., `claude plugin reload`). The skill logic in [`SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/SKILL.md) remains unchanged, so existing functionality persists.

### Can I use emoji or special characters in trigger names?

 depends on your host assistant. The i-have-adhd skill itself accepts any trigger string that the host parses and routes to [`SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/SKILL.md). Test emoji triggers like `/🎯` or `$⚡` with your specific platform, as some sanitize or reject non-alphanumeric command prefixes.

### Will custom triggers work with always-on mode enabled?

Yes. The [`hooks/always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/always-on.sh) script loads [`SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/SKILL.md) unconditionally at session start, making all rules active regardless of which trigger you configured. Custom triggers remain available for explicit invocation when always-on is disabled.