Skip to content

Clarify that project-specific rules/API-contracts belong in AGENTS.md, not .github/copilot-instructions.md #173

Description

@ptr727

Context

Surfaced while re-syncing a derived repo (ptr727/LanguageTags) against the template (downstream heads-up issue ptr727/LanguageTags#176).

Gap

The verbatim-carry guidance in AGENTS.md ("Files and Sections Derived Repos Must Carry Verbatim") describes .github/copilot-instructions.md as a narrow drop-in ("the whole file is a drop-in ... drop language-specific style pointers that don't apply"), but it does not say where project-specific conventions should live instead.

A derived repo had accumulated its API-design rules and public-API contract notes (factory-only construction, immutability, parse/validate/normalize semantics, normalization casing, grandfathered-tag handling) inside .github/copilot-instructions.md. That file is read by GitHub Copilot / VS Code generators specifically. When a different agent (Claude Code, Codex, Cursor, ...) reviews a PR it reads AGENTS.md and never sees those rules - so provider choice silently changes which project rules an agent honors.

Suggested clarification

State explicitly in the template that:

  • Project-specific conventions and API/behavioral contracts belong in AGENTS.md (the agent-agnostic canonical file every coding agent reads).
  • .github/copilot-instructions.md stays narrow - provider-specific mechanics (the Copilot review runbook) plus the inline commit/PR-title summary - and is not a home for project rules.
  • Rationale: non-Copilot agents only read AGENTS.md, so any rule a reviewer must follow has to live there to be provider-independent.

This keeps the "copilot-instructions.md is narrow" contract meaningful by answering the natural follow-up ("then where do my project rules go?").

Resolution in the derived repo

LanguageTags moved its API rules into AGENTS.md ("Library API Conventions") and slimmed .github/copilot-instructions.md back to the narrow template shape.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions