ADR-0028: Selectable IDE adapter materialization (Cursor and Copilot)
- Status: Accepted
- Date: 2026-07-29
- Deciders: Michel Gillet
Context
A2C policy lives in host-neutral rules/, prompts/, and AGENTS.md. IDE hosts
need thin wrappers:
- Cursor loads
.cursor/rules/*.mdc - GitHub Copilot loads
.github/copilot-instructions.mdand.github/instructions/*.instructions.md
Bootstrap already materializes Cursor adapters. Teams that standardize on Copilot (or use both) need the same policy delivered in Copilot’s shape, without forcing Cursor-only paths.
Decision
- Selectable adapters — Operators choose
cursor,copilot, or both via--ide-adaptersona2c bootstrapanda2c setup-dev. - Default remains
cursor— Preserves existing bootstrap behavior. - Persistence — Selected adapters are stored in:
workflows.ide_adaptersin tool-stateconfig.yamlide_adaptersonadoption.yaml
- Resolution order — Explicit CLI → config → adoption → default
[cursor]. - Materialization — Only managed A2C filenames are overwritten; project
overlays (e.g.
.cursor/rules/30-*.mdc,.github/instructions/99-*.instructions.md) are left untouched. - Delivery-aware paths — Submodule/clone mounts rewrite method paths to
tools/ai-rules/for both hosts. - Doctor — Warns when a selected adapter’s managed files are missing or stale for mount delivery.
Consequences
Positive
- Copilot-first shops can adopt A2C without Cursor-specific wrappers.
- Dual-host repos can keep both trees in sync via
setup-dev. - Default stays Cursor-compatible.
Negative
- Two adapter trees can drift if operators edit managed files by hand
(mitigated by re-running
setup-dev). - Additional method assets under
copilot/to maintain alongsidecursor/rules/.
Alternatives considered
- Always materialize both — Rejected; pollutes
.github/for Cursor-only teams. - Symlink strategy — Rejected; Windows and Copilot file shapes differ.
- Single AGENTS.md only — Insufficient; Cursor/Copilot do not load root AGENTS as always-on IDE rules by themselves in all modes.
References
- docs/ide-adapters.md
- ADR-0015 — bootstrap/setup-dev
- ADR-0007 — IDE as thin client
Supersedes
- (none)
Superseded by
- (none)
Amends
- (none)