How to Create Custom Command Triggers for the i-have-adhd Skill: Beyond /i-have-adhd and $i-have-adhd
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 |
| Agent configuration | YAML/TOML files that register commands with specific assistants | skills/i-have-adhd/agents/openai.yaml, gemini.toml |
| Plugin manifest | JSON discovery file for Claude, Codex, and other hosts | plugin.json |
| Always-on hook | Bash script for session-start auto-loading | hooks/always-on.sh |
Because 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:
# 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 palettesshort_description– Help text explaining the trigger's purposedefault_prompt– References the original skill via$i-have-adhdor/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:
{
"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:
# 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 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 rules at session start without requiring any slash command.
# 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 source, custom triggers you create will automatically respect this flag. No modifications to always-on.sh are needed—the script loads the skill definition universally.
Platform-Specific Custom Trigger Examples
Claude/Codex (YAML Configuration)
# 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)
# 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)
{
"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_nameprefixes- Unique trigger names – Avoid collisions with built-in assistant commands; check your host's namespace first
- Relative skill paths – Use absolute paths in
default_promptorskill_pathfields to prevent resolution failures - No logic duplication – Always reference the canonical
SKILL.mdrather than copying rule text
Programmatic Invocation Example
Trigger custom commands via API or CLI:
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 |
Core 10-rule behavior definition | Never modify—all triggers reference this |
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 |
Template for Gemini triggers | Copy and modify for custom triggers |
plugin.json |
Command registry for discovery hosts | Update when adding new trigger names |
hooks/always-on.sh |
Session auto-loader | No changes needed—works with all triggers |
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 modifydisplay_name,short_description, and invocation patterns - Reference
SKILL.mddirectly indefault_promptto inherit all 10 ADHD-friendly rules automatically - Update
plugin.jsonif your host requires explicit command registration - Always-on mode via
hooks/always-on.shworks universally—no per-trigger configuration needed - Maintain
allow_implicit_invocation: trueto 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. 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 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. 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 script loads 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.
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 →