# Debugging Responses That Don't Follow the Expected ADHD Output Format

> Fix format violations in i-have-adhd responses. Debugging issues related to the conditioning pipeline, plugin.json, SKILL.md, and response_style wrappers to ensure correct output.

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

---

**The most common cause of format violations in the i-have-adhd skill is a break in the conditioning pipeline—verify that [`plugin.json`](https://github.com/ayghri/i-have-adhd/blob/main/plugin.json) disables model invocation, [`SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/SKILL.md) is loaded correctly, and the `<response_style>` wrapper is present in the final prompt.**

The **i-have-adhd** skill is a response-style plugin that reshapes language model outputs into immediately actionable formats optimized for readers with ADHD. When responses deviate from the required structure—missing the leading action, using unnumbered steps, or including forbidden pleasantries—the root cause almost always traces to one of four architectural components in the conditioning pipeline.

## How the ADHD Output Format Works

The skill enforces **ten hard rules** defined in [`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/SKILL.md). These rules mandate:

- **Lead with the next action** (no introductory fluff)
- **Number every step** explicitly
- **Suppress tangents** and explanatory asides
- **Strip closing pleasantries** before sending

A **Pre-send Check** at the end of [`SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/SKILL.md) automatically removes forbidden sentences. The host system wraps these rules in a `<response_style>` block before injecting them into the task prompt.

## Common Format Violations and Root Causes

### Missing "Lead with the next action"

**Symptom:** The response opens with "The answer is..." or "To solve this..." instead of the immediate action.

**Root causes:**

- **Skill file not loaded** — The `<response_style>` block never reached the model
- **Pre-send check failure** — The opening sentence was not stripped during cleanup
- **Override flag** — A downstream skill disabled the i-have-adhd conditioning

Verify in [`scripts/run_evals.py`](https://github.com/ayghri/i-have-adhd/blob/main/scripts/run_evals.py) that `_condition_prompt` properly inserts the skill content between `<response_style>` tags (lines 71-82).

### Unnumbered Multi-Step Lists

**Symptom:** Steps appear as dense paragraphs or bullet points without sequential numbers.

**Root cause:** The LLM never saw **rule 2** because the response-style wrapper was malformed or omitted. Check that the skill installation command executed successfully:

```bash
claude plugin install i-have-adhd@i-have-adhd
claude plugin enable i-have-adhd

```

### Extra Pleasantries at the End

**Symptom:** "Hope this helps!" or "Let me know if you need more assistance" appears in the output.

**Root cause:** The final cleanup step—defined as "delete the last sentence" in the Pre-send Check—was skipped. This occurs when:

- The skill's `disable-model-invocation: true` flag in [`plugin.json`](https://github.com/ayghri/i-have-adhd/blob/main/plugin.json) is overridden by the host
- A custom prompt template bypasses the standard conditioning flow

## Debugging the Conditioning Pipeline

Trace execution through these four checkpoints in order:

| Checkpoint | File | What to Verify |
|------------|------|--------------|
| **Skill Declaration** | [`plugin.json`](https://github.com/ayghri/i-have-adhd/blob/main/plugin.json) | `disable-model-invocation` is `true` and not overridden |
| **Rule Definitions** | [`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/SKILL.md) | All 10 rules present; Pre-send Check logic intact |
| **Prompt Construction** | [`scripts/run_evals.py`](https://github.com/ayghri/i-have-adhd/blob/main/scripts/run_evals.py) → `_condition_prompt` | `<response_style>` block wraps skill content correctly |
| **Output Validation** | [`tests/test_run_evals.py`](https://github.com/ayghri/i-have-adhd/blob/main/tests/test_run_evals.py) | Test cases include `--condition-skill` argument |

### Minimal Reproduction Test

Trigger the skill manually to isolate the formatting layer:

```bash
/i-have-adhd
What is the next step to add a new dependency in a Node project?

```

**Expected formatted response:**

```

Run `npm install <package>`.

1. Open a terminal in the project root.
2. Execute `npm install <package>`.
3. Verify the package appears in package.json.
Next: run `npm list` to confirm installation.

```

If the actual response includes introductions, explanations, or closing remarks, the skill conditioning is not active.

## Validating with the Evaluation Harness

The repository includes [`run_evals.py`](https://github.com/ayghri/i-have-adhd/blob/main/run_evals.py) for systematic testing. Use these commands to verify skill behavior:

```bash

# Validate case catalog format

python -m scripts.run_evals validate --cases evals/cases.jsonl

# Run evaluation with explicit skill conditioning

python -m scripts.run_evals run \
  --runner-config evals/runners.example.json \
  --runner stub \
  --condition candidate \
  --condition-skill skills/i-have-adhd/SKILL.md \
  --output out.jsonl

```

**Critical:** The `--condition-skill` argument must point to the actual [`SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/SKILL.md) file. Omitting this flag runs the evaluation without the formatting rules, producing unconditioned output that appears to "fail" the format requirements.

### Unit Test for Format Compliance

Add this test to [`tests/test_run_evals.py`](https://github.com/ayghri/i-have-adhd/blob/main/tests/test_run_evals.py) to catch leading fluff:

```python
def test_missing_action_line():
    response = run_skill("What is 2+2?")
    assert not response.startswith("The answer is"), "Should start with the action"

```

## Key Files Reference

| File | Purpose |
|------|---------|
| [`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/SKILL.md) | Core rule definitions and Pre-send Check logic |
| [`plugin.json`](https://github.com/ayghri/i-have-adhd/blob/main/plugin.json) | Skill metadata; disables default model invocation |
| [`scripts/run_evals.py`](https://github.com/ayghri/i-have-adhd/blob/main/scripts/run_evals.py) | Builds conditioned prompts via `_condition_prompt` |
| [`tests/test_run_evals.py`](https://github.com/ayghri/i-have-adhd/blob/main/tests/test_run_evals.py) | Validates case catalogs and scoring logic |
| [`README.md`](https://github.com/ayghri/i-have-adhd/blob/main/README.md) | Installation and usage documentation |

## Summary

- **Format violations stem from pipeline breaks**, not model randomness—trace from [`plugin.json`](https://github.com/ayghri/i-have-adhd/blob/main/plugin.json) through [`SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/SKILL.md) to the final prompt wrapper
- **Verify `disable-model-invocation: true`** is respected by the host system
- **Confirm `<response_style>` blocks** appear in conditioned prompts via `_condition_prompt`
- **Use `--condition-skill`** explicitly in evaluation commands to ensure rules are active
- **Test with minimal inputs** like `/i-have-adhd` prefix to isolate the formatting layer

## Frequently Asked Questions

### Why does my response still have introductions even with the skill enabled?

The skill file is not reaching the model. Check that [`plugin.json`](https://github.com/ayghri/i-have-adhd/blob/main/plugin.json) has `disable-model-invocation: true` and that no downstream skill overrides this flag. Verify in [`run_evals.py`](https://github.com/ayghri/i-have-adhd/blob/main/run_evals.py) that `_condition_prompt` includes the `<response_style>` wrapper around the skill content.

### How do I test if the skill is actually conditioning my prompts?

Run the evaluation harness with `--condition-skill skills/i-have-adhd/SKILL.md` explicitly set. Then inspect the prompt in the output JSONL—look for `<response_style>` tags containing the ten rules. If absent, the skill is not active.

### Can I modify the rules without breaking the format?

Yes—edit [`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/SKILL.md) directly. Maintain the Pre-send Check section to ensure forbidden sentences are stripped. Test changes with `python -m scripts.run_evals run` using a stub runner for deterministic validation.

### What causes "Hope this helps!" to appear at the end of responses?

The Pre-send Check's final cleanup step—deleting the last sentence—was skipped. This happens when the host system ignores `disable-model-invocation: true` and falls back to default model behavior. Verify [`plugin.json`](https://github.com/ayghri/i-have-adhd/blob/main/plugin.json) and check for competing response-style plugins.