GitHub Copilot: From Basics to AI Agents

Imagine a furniture workshop. You're the craftsperson in the blue shirt — the one with the vision, the taste, the final say. The helpers in green shirts? Those are your AI agents. At first there's just one, handing you the right chisel at the right moment. By the end of this journey, you'll have a whole crew in green building furniture to your specifications while you direct, decide, and review.
A year ago, I was tab-completing function signatures. Today, I manage a team of named AI agents that handle PR reviews, documentation sweeps, and infrastructure audits.
That sounds like a sales pitch. It's not. It's a progression that happened one level at a time, each building on the last. And the best part? You can start the same journey in about 15 minutes.
Here's the path I took — four levels, from "ooh that's cool" to "wait, this changes everything."
The TL;DR
| Level | What Changes | Time to Value |
|---|---|---|
| 1. First Day | You get an AI pair programmer (IDE + CLI) | 15 minutes |
| 2. Making It Yours | Copilot learns YOUR codebase (instructions, MCPs, skills) | 1-2 hours |
| 3. Squad | A team of agents working in concert | 1 day |
| 4. Autonomous Ops | Fully defined work executes itself | 2-3 days |
Each level builds on the previous one, and each is independently useful. Once you see what's possible at each stage, you'll want to keep climbing.
Badge legend: 🖥️ VS Code · ⌨️ CLI · 👤 Interactive · 🤖 Autonomous · 💻 Local · ☁️ Cloud · 🌐 GitHub.com
Level 1: Your First Day with Copilot
🖥️ VS Code · ⌨️ CLI · 👤 Interactive · 💻 Local

Your first day in the workshop. You're at the bench with your mallet (blue shirt), fitting a dovetail joint. Your one helper in green steadies the piece, hands you the right tool before you ask, and suggests a better angle — but you swing the mallet.
This is where everyone starts — and honestly, where most of the immediate productivity gains live. Level 1 spans two environments: Copilot in your IDE (VS Code, JetBrains, etc.) and the standalone Copilot CLI in your terminal.
In the IDE: Inline Completions & Inline Chat
🖥️ VS Code · 👤 Interactive · 💻 Local
Inline completions — the thing most people think of as "Copilot." You type, it suggests. But it's more than autocomplete. It reads your open files, your comments, your function signatures, and generates contextually aware suggestions. This happens directly in your editor as you type.
Inline chat — highlight code, press Ctrl+I, ask a question. "Explain this regex." "Refactor this to use async/await." "Add error handling." It edits in place within the current file.
In the IDE: Copilot Chat Panel
🖥️ VS Code · 👤 Interactive · 💻 Local
The Chat panel (Ctrl+Shift+I or the sidebar) opens a conversation with Copilot that has broader awareness:
- Open file context — ask questions about the file you're looking at: "What does this function do?" "Find the bug in this logic."
- @workspace — ask about the entire repository: "Where is authentication handled?" "Show me all API routes." Copilot searches across your project.
- @terminal — get help with shell commands without leaving the IDE: "How do I find large files?" "What's the git command to squash commits?"
- Agent mode — Copilot Chat also has an "agent" mode where it can make multi-step edits, run terminal commands, and iterate. This is powerful for IDE-based workflows, but note: this is different from the Squad "agents" discussed later. Agent mode is a single AI working iteratively; Squad agents are specialized team members working in concert.
The Standalone Copilot CLI
⌨️ CLI · 👤 Interactive · 💻 Local
The copilot command brings the full Copilot agent to your terminal — file editing, shell commands, sub-agents, and more:
# Non-interactive prompt mode:
copilot -p "extract a .tar.gz file preserving permissions"
# Ask about git:
copilot -p "undo my last commit but keep the changes"
# Start an interactive session:
copilot
The standalone CLI (copilot) is a full agent runtime — it can read/write files, run commands, and orchestrate complex tasks from your terminal. It's distinct from the IDE chat panel but equally powerful.
When to Use Each
| Context | Best For |
|---|---|
| Inline completions | Flow-state coding, writing new functions |
Inline chat (Ctrl+I) | Quick edits to selected code |
| Chat panel (open file) | Understanding code you're reading |
| Chat panel (@workspace) | Finding things across a project |
| Chat panel (@terminal) | Shell command help inside IDE |
| Agent mode (IDE) | Multi-step edits within a project |
copilot CLI | Terminal-first workflows, scripting, automation |
Try This Now
- Install GitHub Copilot in VS Code
- Open any project, start a new file, write a comment:
// Parse a CSV string into an array of objects using the first row as headers
Copilot will generate the implementation. Tab to accept.
- Install the standalone Copilot CLI and try:
copilot -p "explain why this Node.js app leaks memory when processing large CSV uploads"
What I Learned at Level 1
The biggest gain wasn't the code generation — it was the velocity shift in unfamiliar territory. Working in a language I don't know well? Copilot bridges the gap between "I know what I want" and "I know the syntax." It turned 30-minute research into 30-second completions.
The limitation: Copilot at this level generates generic best-practice code. It knows nothing about your specific conventions or preferences. That leads to ...
Level 2: Making Copilot Yours
🖥️ VS Code · ⌨️ CLI · 👤 Interactive · 💻 Local

No green shirts in sight — this is setup time. You're alone at the bench, labeling drawers, building custom jigs, and pinning reference cards to the pegboard. You're not building furniture yet; you're building the system that makes your workshop uniquely yours. When the green-shirted helpers return, they'll know exactly where everything goes.
Level 1 Copilot is smart but generic. Level 2 is where it starts feeling like a teammate who's read your wiki. This level works in both the IDE and CLI — the same instruction files and MCP configs are picked up by Copilot Chat in the IDE and Copilot CLI.
Custom Instruction Files
Drop instruction files in your repo and Copilot learns your conventions:
.github/copilot-instructions.md — global instructions for all Copilot interactions:
# Project Conventions
- Use TypeScript strict mode with explicit return types
- Prefer `Result<T, Error>` pattern over throwing exceptions
- All API responses follow our envelope format: `{ data, error, meta }`
- Tests use vitest with the `describe/it` pattern
- Never use `any` — prefer `unknown` with type guards
AGENTS.md — agent instructions that can live anywhere in your repo. Unlike copilot-instructions.md (which must be in .github/), you can place multiple AGENTS.md files at different directory levels — the nearest one in the directory tree takes precedence. This makes it ideal for monorepos where each package needs its own agent behavior:
my-monorepo/
├── AGENTS.md ← shared team-wide instructions
├── packages/
│ ├── frontend/
│ │ └── AGENTS.md ← React-specific agent rules (wins here)
│ └── backend/
│ └── AGENTS.md ← API-specific agent rules (wins here)
Every suggestion Copilot makes now respects these rules. No more "helpful" suggestions that violate your architecture.
MCP Servers: Giving Copilot New Abilities
Model Context Protocol (MCP) servers let you plug external data sources and tools into Copilot's context. Think of them as APIs that Copilot can call mid-conversation — in both the IDE and CLI.
// .copilot/mcp.json
{
"mcpServers": {
"azure": {
"command": "npx",
"args": ["-y", "@azure/mcp@latest", "server", "start"]
}
}
}
Now Copilot can query your Azure resources, check deployment status, or read your database schema — all within the conversation.
Some MCP servers I use daily:
- Copilot for Azure — query Azure resources, check deployments
- GitHub MCP — deep repo operations beyond what's built-in
- Microsoft Learn MCP — let Copilot read/write files outside the workspace
Skills: Repeatable, Deterministic Work
Skills are the underrated powerhouse of Level 2. A skill is a directory with a SKILL.md file that defines a repeatable pattern — including deterministic steps from scripts and code.
.<directory>/skills/
├── pr-review/
│ └── SKILL.md # "Run lint, check test coverage, review diff"
├── doc-sync/
│ └── SKILL.md # "Compare API surface to docs, flag drift"
└── sdk-sample-check/
└── SKILL.md # "Validate all samples compile and match SDK version"
Read the Visual Studio documentation for the best directory location for your skill usage.
Skills differ from instructions in that they define executable workflows — not just preferences. A skill can include shell commands to run, files to check, and decision trees to follow. They're reusable across sessions and agents.
Why skills matter:
- Repeatable — same process every time, no drift
- Composable — skills can reference other skills
- Deterministic where needed — embed scripts and validation steps that always run the same way
- Shareable — check them into your repo, the whole team benefits
Try This Now
- Create
.github/copilot-instructions.mdwith your project's conventions - Add an MCP server for a tool you use daily (Azure, database, etc.)
- Create a
.github/skills/quick-review/SKILL.mdthat describes your code review checklist
Then open Copilot Chat or run copilot and notice the difference — it follows YOUR patterns now.
What I Learned at Level 2
Custom instructions are absurdly high-leverage. A 50-line markdown file eliminates 80% of the "no, not like that" moments. MCP servers bridge "Copilot that knows code" and "Copilot that knows your infrastructure." Skills turn tribal knowledge into executable processes.
The limitation: everything is still per-session. Copilot doesn't automatically carry context between sessions — it won't remember decisions from yesterday's refactor. It doesn't have persistent context about your project's evolving state. It doesn't coordinate with other instances of itself.
Enter Squad.