
Coding agents have moved beyond simple autocomplete. They can plan work, query APIs, update diagrams, and populate sprint review decks. But they need guidance — and that guidance lives in a growing family of markdown files.
If you have used AGENTS.md, you have seen one piece of the puzzle. There are at least ten more — plus two open protocols (MCP and A2A) that extend the picture beyond files into runtime connectivity and agent-to-agent communication. This post covers every file type and protocol, and explains when to reach for each one. Follow-up posts walk through real-world use cases with working examples for Azure DevOps, GitHub, and Jira.

Every AI convention file falls into one of four categories, complemented by two runtime protocols:
| Category |
Files / Protocols |
When loaded |
| Always-on instructions |
AGENTS.md, CLAUDE.md, GEMINI.md, copilot-instructions.md, .cursor/rules/*.md |
Every session |
| Path-scoped rules |
.instructions.md, .claude/rules/*.md |
When working with matching files |
| On-demand tasks |
.prompt.md, SKILL.md |
When you invoke them |
| Agent personas |
.agent.md, .claude/agents/*.md |
When you switch to that agent |
| Runtime connectivity |
MCP servers (tools, resources, prompts) |
When the agent needs external data |
| Agent-to-agent |
A2A protocol (Agent Cards, tasks) |
When agents collaborate across boundaries |
These files load at the start of every session. They set the baseline for how agents behave in your project.
The open standard. Supported by VS Code, Cursor, GitHub Copilot, and Claude Code (via import). Place it in the repo root. The nearest file in the directory tree takes precedence, so you can override per-folder.
Use it for: workflow steps, quality gates, naming conventions, delivery standards.
# AGENTS.md
## Workflow
1. Plan → scope, success criteria, risks
2. Build → implement with tests
3. Document → update runbooks
4. Release → owner sign-off + monitoring
## Standards
- Naming: <team>-<service>-<env>
- Environments: dev → staging → prod
GitHub Copilot's repo-wide instruction file. Lives at .github/copilot-instructions.md. Can be auto-generated by the Copilot coding agent.
Use it for: language preferences, framework conventions, test patterns. If you already have AGENTS.md, this can reference it or cover Copilot-specific details.
Anthropic's equivalent. Supports @path imports (including @AGENTS.md to share instructions), .claude/rules/ for path-scoped rules, and auto memory that accumulates across sessions.
Cursor project rules with YAML frontmatter (description, globs, alwaysApply). Four types: Project Rules, User Rules, Team Rules, and native AGENTS.md support.
These load only when the agent works with files matching a glob pattern. They keep context lean and relevant.
Stored in .github/instructions/. Each file has applyTo frontmatter:
---
applyTo: "infra/**/*.tf"
---
# Terraform conventions
- Use modules from the internal registry
- Tag all resources with team and environment
- No inline IAM policies
Same concept, different location. Uses paths frontmatter:
---
paths:
- "src/api/**/*.ts"
---
# API rules
- Validate all inputs with Zod
- Use standard error response format
These are invoked explicitly, not loaded automatically. They are ideal for repeatable tasks that do not need to be in context all the time.
Stored in .github/prompts/. Invoked with / in chat. Each prompt can specify which agent and tools to use:
---
description: Generate a migration plan for a database schema change
agent: agent
tools: ['search', 'editFiles']
---
Analyse the current schema and generate a migration plan.
Include rollback steps and estimated downtime.
The open standard from agentskills.io. A skill bundles instructions, scripts, examples, and resources into a reusable capability.
Stored in .github/skills/, .claude/skills/, .agents/skills/, or ~/.copilot/skills/ for personal skills. Skills load on demand — the agent reads the name and description, then loads the full content when it decides the skill is relevant.
---
name: sprint-review-populator
description: Populate a Marp sprint review deck with metrics from GitHub or Jira
argument-hint: Provide the sprint date range
---
# Sprint Review Populator
Query the project tracker for completed work items and update
the deck with real metrics...
Custom agents give the AI a persistent persona with specific tool restrictions, model preferences, and handoffs to other agents.
Stored in .github/agents/. Define specialised roles:
---
description: Read-only security reviewer
tools: ['search', 'web']
handoffs:
- label: Start Implementation
agent: implementation
prompt: Fix the security issues identified above.
---
Review code for OWASP Top 10 vulnerabilities.
Focus on injection, broken access control, and cryptographic failures.
Handoffs create guided workflows — a planning agent hands off to an implementation agent, which hands off to a reviewer.
Claude subagents support tool restrictions, model selection, permission modes, lifecycle hooks, MCP server scoping, and persistent memory that accumulates knowledge across sessions.
Convention files tell agents what to do. MCP (Model Context Protocol) servers give them access to do it. MCP is an open standard — supported by VS Code, Cursor, Claude, ChatGPT, and others — that provides a standardised way for AI agents to connect to external tools, data sources, and workflows.
Think of MCP as USB-C for AI agents. Just as USB-C provides a standardised physical connection, MCP provides a standardised protocol connection. An MCP server exposes three primitives:
| Primitive |
Purpose |
Example |
| Tools |
Executable functions the agent can invoke |
wiql_query, jql_search, graphql_query |
| Resources |
Data sources that provide context |
File contents, database schemas, API docs |
| Prompts |
Reusable interaction templates |
Few-shot examples, system prompts |
MCP uses JSON-RPC 2.0 over stdio (local servers) or Streamable HTTP (remote servers). The key participants:
- MCP Host — the AI application (VS Code, Cursor, Claude Desktop)
- MCP Client — a component in the host that maintains a connection to one server
- MCP Server — a program that provides tools, resources, and prompts
For platform engineering, MCP servers are what connect your AGENTS.md workflows to real systems:
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "${env:GITHUB_TOKEN}"
}
},
"jira": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-server-jira"],
"env": {
"JIRA_URL": "https://your-org.atlassian.net",
"JIRA_API_TOKEN": "${env:JIRA_API_TOKEN}"
}
}
}
}
Without MCP, agents can only work with local files. With MCP, they can query Jira sprints, GitHub Projects, Azure DevOps boards, Kubernetes clusters, databases, and any system with an MCP server.
MCP connects agents to tools. The Agent2Agent Protocol (A2A) connects agents to each other.
A2A is an open protocol (22.9k GitHub stars, v1.0.0 released, Linux Foundation project) that enables agents built by different vendors, on different frameworks, running on different servers, to collaborate — without sharing internal state, memory, or tools.
Where MCP is vertical (agent ↔ tool), A2A is horizontal (agent ↔ agent):
| Protocol |
Direction |
Purpose |
| MCP |
Agent → Tool |
Connect agents to external systems (GitHub, Jira, ADO, databases) |
| A2A |
Agent → Agent |
Enable agents to discover, delegate, and collaborate with each other |
A2A key concepts:
- Agent Cards — JSON documents that advertise an agent's capabilities, authentication requirements, and connection details. Other agents discover what you can do by reading your Agent Card.
- Tasks — The unit of work. A client agent sends a task to a remote agent, which works on it and returns artifacts. Tasks have a lifecycle and support long-running operations.
- Artifacts — The output of completed tasks. Can be text, files, structured JSON, or rich media.
A practical example: a sprint review orchestrator agent could delegate to specialist agents — one queries Jira via MCP, another generates charts, a third formats the presentation — and A2A handles the communication between them.
A2A complements MCP. Use MCP to connect agents to data sources. Use A2A when you need agents to collaborate across organisational or system boundaries.

- Applies to every session? →
AGENTS.md or copilot-instructions.md
- Scoped to specific file paths? →
.instructions.md or .claude/rules/
- A reusable task with scripts? →
SKILL.md
- A lightweight slash command? →
.prompt.md
- A specialised persona with tool restrictions? →
.agent.md
- Need to connect to an external system? → Add an MCP server
- Need agents to collaborate across boundaries? → Use A2A
The taxonomy above covers the types. Seeing them work together on concrete problems is where it gets interesting — automated sprint review decks populated from GitHub or Jira, incident runbooks triggered by alerts, infrastructure bootstrap sequences.
Those use cases each have their own post:
Each post includes working agent definitions, real queries, and MCP server configuration. The working code will live in the ai-capabilities repo.
Here is how the file types compose for platform teams:
.github/instructions/terraform.instructions.md:
---
applyTo: "infra/**/*.tf"
---
- Use modules from the internal registry
- Tag resources: team, environment, cost-centre
- No inline IAM policies
.github/agents/sre-debugger.agent.md:
---
description: Debug production incidents with read-only access
tools: ['search', 'web', 'terminal']
model: claude-sonnet-4-20250514
---
You are an SRE debugger. Analyse logs, metrics, and traces.
Never modify production resources. Suggest fixes but do not apply them.
.github/skills/release-checklist/SKILL.md:
---
name: release-checklist
description: Run the platform release checklist and verify all gates
---
# Release Checklist
1. Verify all tests pass in CI
2. Check dependency vulnerabilities
3. Confirm rollback plan exists
4. Verify monitoring dashboards
5. Get owner sign-off
These files are not just for platform engineers. Product teams benefit from the same structure.
.github/prompts/refine-story.prompt.md:
---
description: Refine a user story with acceptance criteria and estimates
agent: ask
---
Given the story title and description, generate:
1. Clear acceptance criteria (Given/When/Then)
2. Technical tasks breakdown
3. Rough estimate (S/M/L)
4. Dependencies and risks
.github/skills/sprint-review-prep/SKILL.md:
---
name: sprint-review-prep
description: Prepare sprint review talking points from completed work
argument-hint: Provide the sprint name or date range
---
Query completed items, group by epic, and generate
a summary suitable for stakeholder presentation.
Not every file or protocol works everywhere. Here is the current support matrix:
| File / Protocol |
VS Code Copilot |
Cursor |
Claude Code |
ChatGPT |
AGENTS.md |
Yes |
Yes |
Via @AGENTS.md import |
— |
copilot-instructions.md |
Yes |
— |
— |
— |
.instructions.md |
Yes |
— |
— |
— |
.prompt.md |
Yes |
— |
— |
— |
.agent.md |
Yes |
— |
— |
— |
SKILL.md |
Yes |
— |
— |
— |
CLAUDE.md |
Yes |
— |
Yes |
— |
.claude/rules/ |
— |
— |
Yes |
— |
.claude/agents/ |
Yes |
— |
Yes |
— |
.cursor/rules/ |
— |
Yes |
— |
— |
| MCP servers |
Yes |
Yes |
Yes |
Yes |
| A2A protocol |
— |
— |
— |
— |
AGENTS.md has the broadest file-level support. MCP has the broadest runtime support — it works across VS Code, Cursor, Claude, and ChatGPT. A2A is newer (v1.0.0 released 2025) and client support is still emerging.
Start with AGENTS.md for instructions and MCP for connectivity. Add tool-specific files when you need features that AGENTS.md cannot express (path scoping, tool restrictions, handoffs).
The taxonomy above covers coding-agent convention files — files that live in a project repo and guide agents during development work. Other ecosystems use the same patterns for different purposes.
OpenClaw takes the AGENTS.md / SKILL.md model and applies it to personal AI assistants that operate across messaging channels (WhatsApp, Telegram, Discord, iMessage). OpenClaw adds its own convention files — SOUL.md (identity and tone), MEMORY.md (long-term recall), USER.md (owner context), TOOLS.md (environment-specific notes), and HEARTBEAT.md (proactive background tasks) — that solve problems unique to always-on assistants: session continuity, multi-channel behaviour, and proactive monitoring.
If you are building a personal assistant rather than a coding agent, OpenClaw's file taxonomy is worth studying alongside this one.
In practice, you do not choose one file type and ignore the rest. They layer:
AGENTS.md sets the baseline workflow and standards (works everywhere)
.instructions.md adds path-scoped rules for specific directories
SKILL.md packages reusable capabilities (sprint review, release checklist, incident runbook)
.agent.md defines specialised personas with tool restrictions and handoffs
.prompt.md provides quick slash commands for common tasks
- MCP servers provide runtime access to external systems (GitHub, Jira, ADO, databases)
- A2A protocol enables cross-boundary agent collaboration
Layers 1–5 are convention files — they tell agents what to do. Layer 6 (MCP) gives agents the ability to act on external systems. Layer 7 (A2A) lets agents delegate to and collaborate with other agents.
Pick one:
- Already using AGENTS.md? Add a
SKILL.md for your most repetitive task
- Want sprint review automation? Read the practice posts for ADO, GitHub, or Jira
- Need external system access? Add an MCP server for GitHub, Jira, ADO, or your database
- Need path-scoped rules? Create one
.instructions.md for your strictest directory (e.g. infra/)
- Want agent personas? Create a read-only reviewer
.agent.md with limited tools
Start small. Add files as you find real friction, not because the taxonomy says you should.