# How the Fork‑and‑Swap Workflow Enables Customization of i‑have‑adhd Core Rules

> Easily customize i-have-adhd core rules with the fork-and-swap workflow. Fork the repo, edit SKILL.md, and use CLI commands to load your personalized rule set for unique plugin behavior.

- Repository: [Ayoub Ghriss/i-have-adhd](https://github.com/ayghri/i-have-adhd)
- Tags: deep-dive
- Published: 2026-08-29

---

**The fork‑and‑swap workflow lets you modify the i‑have‑adhd plugin's behavior by forking the repository on GitHub, editing [`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/SKILL.md) to change the 10 response‑shaping rules, and using CLI commands to replace the upstream plugin with your fork so the runtime loads your custom rule set.**

The i‑have‑adhd plugin shapes every LLM reply according to a rigid set of behavioral rules defined in a single file. Because the plugin installs from the published repository owned by `ayghri`, you cannot edit core rules directly; instead, the **fork‑and‑swap workflow** provides the sanctioned path to override upstream behavior while maintaining full compatibility with the plugin's hook system.

## The Canonical Rule Source in SKILL.md

The plugin derives its entire behavior from **[`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 10 numbered response‑shaping rules that constrain how the LLM formats output, structures lists, and presents information to ADHD‑friendly standards.

When the runtime initializes, the skill loader declared in [`hooks/hooks.json`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/hooks.json) parses this markdown file and applies its directives to every subsequent invocation. The manifest in [`.claude-plugin/plugin.json`](https://github.com/ayghri/i-have-adhd/blob/main/.claude-plugin/plugin.json) registers the plugin under the name `i-have-adhd`, which the runtime uses as the lookup key for both the marketplace entry and the local skill files.

## Executing the Fork‑and‑Swap Workflow

Modifying core rules requires diverging from the upstream repository and redirecting the runtime to your copy. The process consists of three phases: forking, editing, and swapping.

### Fork and Edit the Rule Set

First, create a personal copy of the repository on GitHub. Once forked, navigate to [`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/SKILL.md) in your forked repository. This file is the single source of truth; modify, add, or remove any of the numbered rules to alter the behavioral contract. Because the plugin only reads rules from this specific path, changes here immediately redefine how the plugin governs LLM responses.

### Swap the Upstream Plugin for Your Fork

After editing [`SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/SKILL.md), you must redirect the runtime to load from your fork instead of `ayghri/i-have-adhd`. The plugin system identifies installations by the name `i-have-adhd`, so you must remove the upstream entry before adding your fork to prevent namespace collisions.

Run the following CLI commands in sequence:

```bash

# 1. Remove the upstream plugin from the runtime and the marketplace

claude plugin uninstall i-have-adhd
claude plugin marketplace remove i-have-adhd

# 2. Register your fork as the new marketplace source

claude plugin marketplace add <your-username>/i-have-adhd

# 3. Install the plugin from your fork

claude plugin install i-have-adhd@i-have-adhd

```

After installation, restart your LLM harness (Claude Code, Qwen Code, or equivalent). The next invocation of `/i-have-adhd` will load the [`SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/SKILL.md) from your fork, applying your custom rules to every response.

## Technical Architecture of the Swap

The fork‑and‑swap workflow functions because the plugin runtime resolves the identifier `i-have-adhd` to a specific GitHub repository. When you execute `claude plugin marketplace remove i-have-adhd`, you delete the mapping to `ayghri/i-have-adhd`. Adding your fork rebinds that same identifier to your repository URL.

Consequently, when the session starts, the hook system loads [`hooks/hooks.json`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/hooks.json), which triggers the skill loader to fetch [`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/SKILL.md) from the repository now mapped to `i-have-adhd`—your fork. The rest of the codebase, including test suites and hook definitions, remains unchanged, ensuring behavioral compatibility while granting full control over the rule definitions.

## Summary

*   The **fork‑and‑swap workflow** is the only supported method for modifying i‑have‑adhd core rules because upstream files are read‑only in installed instances.
*   **[`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/SKILL.md)** is the singular file controlling the 10 response‑shaping rules; editing this in your fork changes the plugin's behavior.
*   The CLI commands `claude plugin uninstall`, `marketplace remove`, `marketplace add`, and `plugin install` sequentially detach the upstream reference and bind your fork to the `i-have-adhd` namespace.
*   After swapping, the runtime loads rules from your fork's [`SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/SKILL.md) while maintaining compatibility with the original [`hooks/hooks.json`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/hooks.json) structure.

## Frequently Asked Questions

### Can I edit the core rules without forking the repository?

No. The plugin installs from the published `ayghri/i-have-adhd` repository, making upstream files immutable in your local environment. The **fork‑and‑swap workflow** is the designed mechanism for rule customization, as documented in [`README.md`](https://github.com/ayghri/i-have-adhd/blob/main/README.md) at line 83 and [`INSTALL.md`](https://github.com/ayghri/i-have-adhd/blob/main/INSTALL.md) at line 57.

### Will modifying SKILL.md affect the plugin's hooks or compatibility?

No. The [`hooks/hooks.json`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/hooks.json) file and [`.claude-plugin/plugin.json`](https://github.com/ayghri/i-have-adhd/blob/main/.claude-plugin/plugin.json) manifest remain identical between forks. Only the rule definitions in [`SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/SKILL.md) change, ensuring that the plugin's integration points with the runtime stay stable while the behavior it enforces becomes custom.

### How do I revert to the upstream rules?

Execute the swap process in reverse. Uninstall your forked version, remove your fork from the marketplace using `claude plugin marketplace remove i-have-adhd`, then re‑add the upstream repository `ayghri/i-have-adhd` to the marketplace and reinstall. This restores the default [`SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/SKILL.md) source.

### Do updates to the upstream repository automatically sync to my fork?

No. GitHub forks do not auto‑sync. To incorporate upstream changes, you must manually pull updates from `ayghri/i-have-adhd` into your forked repository, resolve any conflicts in [`SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/SKILL.md), and reinstall the plugin to load the merged rule set.