Cross-Tool Loading, Verification Checklist โ
| Field | Value |
|---|---|
| What | Confirm the .agents/ compiler outputs are actually LOADED by each tool (the load-bearing assumption under "baked into every tool") |
| Why | The generated files have correct frontmatter, but only Claude-reads-AGENTS.md is proven. Copilot/Cursor/Gemini loading is assumed, not verified. |
| How | Run each check in the named tool. No repo changes; observe behavior. |
| Tester | Mechelle |
| Date | (fill in) |
Summary โ
| # | Check | Result |
|---|---|---|
| 1 | Copilot loads a committed scoped rule | [ ] pass [ ] fail [ ] blocked |
| 2 | Copilot loads the gitignored my-voice | [ ] pass [ ] fail [ ] blocked |
| 3 | Cursor loads a committed scoped rule | [ ] pass [ ] fail [ ] blocked |
| 4 | Cursor loads the gitignored my-voice | [ ] pass [ ] fail [ ] blocked |
| 5 | Gemini reads GEMINI.md + the @AGENTS.md import | [ ] pass [ ] fail [ ] blocked |
Setup โ
- Run
npm run context:sync-toolsfirst so the gitignored voice files exist (.cursor/rules/my-voice.local.mdc,.github/instructions/my-voice.local.instructions.md). - These are the assumptions the context layer + "baked into every tool" claim rest on. A fail on 2/4/5 means that tool's personal-context / import story is aspirational, not real, and should be documented as such (not silently claimed).
Checks โ
1. Copilot loads a committed scoped rule โ
- Do: In VS Code with Copilot, open an
apps/admin/**file and ask Copilot something that the admin UI rule governs (e.g. "add a dropdown to this admin page"). - Expected: it follows the admin rule (StyledSelect, not native
<select>), i.e..github/instructions/admin-ui-conventions.instructions.md(applyToapps/admin/**) was loaded.
Result: [ ] pass [ ] fail [ ] blocked
Actual:
Evidence:
Follow-up:2. Copilot loads the gitignored my-voice โ
- Do: Ask Copilot a decision-shaped question and see if it uses the voice (recommendation-first, no em dashes).
- Expected: the voice from
.github/instructions/my-voice.local.instructions.md(applyTo**) shapes the reply. If Copilot ignores gitignored instruction files, this fails, that is the key unknown.
Result: [ ] pass [ ] fail [ ] blocked
Actual:
Evidence:
Follow-up:3. Cursor loads a committed scoped rule โ
- Do: In Cursor, work in an
apps/admin/**file and prompt something the admin rule governs. - Expected: it honors the admin rule, i.e.
.cursor/rules/admin-ui-conventions.mdc(globsapps/admin/**) loaded.
Result: [ ] pass [ ] fail [ ] blocked
Actual:
Evidence:
Follow-up:4. Cursor loads the gitignored my-voice โ
- Do: Ask Cursor a decision-shaped question.
- Expected: the voice from
.cursor/rules/my-voice.local.mdc(alwaysApply) shapes the reply.
Result: [ ] pass [ ] fail [ ] blocked
Actual:
Evidence:
Follow-up:5. Gemini reads GEMINI.md + the @AGENTS.md import โ
- Do: In a fresh Gemini CLI session, ask it to quote an AGENTS.md-only rule (e.g. non-negotiable rule 16).
- Expected: it reproduces the rule, proving GEMINI.md loaded and the
@AGENTS.mdimport expanded (the same test that passed for Claude).
Result: [ ] pass [ ] fail [ ] blocked
Actual:
Evidence:
Follow-up:After the run โ
- Any fail here means a tool's loading is aspirational. Update
docs/planning/plans/2026-07-13-context-layer.mdand the.agents/README.mdto say so honestly (e.g. "Copilot does not load gitignored instructions, voice is Claude-only"), rather than leaving the claim implicit.