mdpact

conflict/cross-binding

severity: errorcategory: conflictfixable: no

Binding directives in different spec files contradict each other.

conflict/cross-binding

Severity: error Category: conflict Fixable: no

What it catches

A binding directive in one spec file (e.g. CLAUDE.md) contradicts a binding directive in another spec file (e.g. AGENTS.md or an MCP tool spec). Same verb + object, opposite polarity.

Why it matters

Real projects ship multiple spec files: CLAUDE.md for Claude Code, AGENTS.md for the OpenAI / Cursor workflow, MCP tool specs under .mcp/. Each was probably written by different people at different times, and they silently diverge. When the agent gets pointed at the wrong file — or when different tools read different files — you get inconsistent behavior across your own team.

This rule only fires on binding directives on both sides. Advisory wording gets its own softer rule later.

Example — bad

CLAUDE.md:
  - You must always commit before pushing.

AGENTS.md:
  - Never commit before pushing.

Both files are authoritative for something. Neither mentions the other. The agent picks whichever one was loaded first.

Example — good

Consolidate to a single source, or have one file reference the other:

CLAUDE.md:
  - Commit discipline lives in AGENTS.md §Commits. Follow that.

AGENTS.md:
  - You must always commit before pushing.

Fix

Pick one spec as the source of truth. Delete the conflicting rule from the other file, or replace it with a pointer.