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

The most common cause of format violations in the i-have-adhd skill is a break in the conditioning pipeline—verify that plugin.json disables model invocation, 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. 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 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 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:

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 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 disable-model-invocation is true and not overridden
Rule Definitions skills/i-have-adhd/SKILL.md All 10 rules present; Pre-send Check logic intact
Prompt Construction scripts/run_evals.py_condition_prompt <response_style> block wraps skill content correctly
Output Validation tests/test_run_evals.py Test cases include --condition-skill argument

Minimal Reproduction Test

Trigger the skill manually to isolate the formatting layer:

/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 for systematic testing. Use these commands to verify skill behavior:


# 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 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 to catch leading fluff:

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 Core rule definitions and Pre-send Check logic
plugin.json Skill metadata; disables default model invocation
scripts/run_evals.py Builds conditioned prompts via _condition_prompt
tests/test_run_evals.py Validates case catalogs and scoring logic
README.md Installation and usage documentation

Summary

  • Format violations stem from pipeline breaks, not model randomness—trace from plugin.json through 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 has disable-model-invocation: true and that no downstream skill overrides this flag. Verify in 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 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 and check for competing response-style plugins.

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:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →