Talk Duration: 15-20 minutes (including demos)
Perspective: Developer Experience Advocate
Event: Microsoft AI Dev Days
"Raise your hand if you've written markdown today."
[Wait for hands]
"Keep it up if you've written YAML."
[Most hands stay up]
"Now—how many of you have written a prompt for an AI?"
[Almost everyone]
"What if I told you those three skills you already have ARE the skills for building AI agents?"
The Shift: We're not learning a new paradigm. We're recognizing that the tools we love—markdown, YAML, CLI—were always the right abstraction for AI.
- We already document in markdown (READMEs, wikis, docs)
- We already configure with YAML (Jekyll, Hugo, GitHub Actions, Kubernetes)
- We already automate with CLI (npm scripts, shell, pipelines)
# review.claude.md
---
model: opus
---
Review this code for bugs and suggest improvements.
@./src/**/*.tsThat's it. That's an AI agent.
- Create
hello.copilot.mdlive - Show it runs with
ma hello.copilot.md - Point out: no SDK, no API keys in code, no boilerplate
---
command: claude
model: opus
dangerously-skip-permissions: true
add-dir:
- ./src
- ./tests
---Becomes:
claude --model opus --dangerously-skip-permissions --add-dir ./src --add-dir ./tests| Pattern | Source | Now Powers |
|---|---|---|
| Frontmatter | Jekyll/Hugo (2008+) | AI config |
| Key-value → flags | Every CLI ever | AI behavior |
| Arrays → repeated flags | Docker Compose | Multi-input |
Show side-by-side:
# blog-post.md (Jekyll) # review.claude.md (Agent)
--- ---
layout: post command: claude
title: "Hello" model: opus
tags: [dev, ai] add-dir: [./src, ./lib]
--- ---Same pattern. Different power.
The Unix philosophy applies perfectly to AI:
- Small, focused agents that do one thing well
- Stdin/stdout for data flow
- Pipes for composition
# Pipe git diff into a review agent
git diff | ma review.claude.md
# Chain agents together
ma plan.claude.md | ma implement.codex.md
# Use in existing scripts
if ma lint-check.copilot.md --exit-code; then
echo "Code looks good!"
fiLive demo of a real workflow:
# 1. Stage changes
git add .
# 2. Get AI-powered commit message
git diff --staged | ma commit.copilot.md
# 3. Review before commit
git diff --staged | ma review.claude.md
# 4. If good, commitShow how markdown agents slot into existing git workflows without changing habits.
Day 1 Developer:
# explain.copilot.md
Explain this code simply.Week 2 Developer:
# explain.copilot.md
---
model: gpt-4.1
$1: prompt
---
Explain this code simply.Month 2 Developer:
# smart-explain.claude.md
---
model: sonnet
inputs:
- name: level
type: select
message: "Explanation depth?"
choices: ["beginner", "intermediate", "expert"]
---
Explain this code for a {{ level }} developer.
Context from codebase:
@./src/**/*.ts
Related documentation:
@./docs/architecture.md@./path— Import files inline@./src/**/*.ts— Glob patterns@./file.ts:10-50— Line ranges@./file.ts#InterfaceName— Symbol extraction!`git log -5`— Command output inline- LiquidJS templates — Full template logic
# Start with fast/cheap agent
result=$(ma quick-check.copilot.md)
# Escalate to smarter agent if needed
if echo "$result" | grep -q "NEEDS_REVIEW"; then
ma deep-review.claude.md
fiShow intelligent scripts that know when to ask for help.
The old way:
- AI prompts in databases
- Config in dashboards
- "Where did that prompt go?"
The markdown-agent way:
- Prompts in
./agents/directory - Git history for every change
- PR reviews for prompt changes
- Branch-specific agents
~/company-agents/
├── review.claude.md # Code review (everyone)
├── commit.copilot.md # Commit messages (shared)
├── security-audit.claude.md # Security (ops team)
└── .env.local # API keys (gitignored)
export PATH="$HOME/company-agents:$PATH"
# Now everyone on the team has the same agentsgit log --oneline agents/review.claude.md
git blame agents/review.claude.mdShow who changed what, when, and why—just like code.
# task.copilot.md
---
model: gpt-4.1
$1: prompt
silent: true
---
Analyze this error and suggest a fix.# Get structured output
ma analyze.copilot.md < error.log | jq '.suggestions[]'
# Use in CI/CD
ma security-check.copilot.md | tee report.md- Copilot is already in your toolchain
- Non-interactive mode enables automation
- Same agent files work with Claude, Codex, Gemini
- Swap models by changing one line
Old Mental Model:
"I need to learn this AI framework's API, SDK, patterns..."
New Mental Model:
"I already know markdown. I already know YAML. I already know CLI. I'm ready."
- Software is now instructions + tools (not just code)
- The barrier to AI automation is zero (if you know markdown)
- Your existing skills transfer directly (no new paradigm)
npm install -g markdown-agent
ma --setup
# Your first agent
echo '---
command: copilot
---
Say hello!' > hello.copilot.md
ma hello.copilot.md"You've been writing AI agent config your whole career. You just called them blog posts and CI pipelines."
"Now go make them intelligent."
"The best developer tools don't ask you to learn something new. They reveal that you already knew it all along. Markdown agents are what happens when we stop fighting developers and start meeting them where they live—in the terminal, in text files, in the tools they love."
- GitHub:
github.com/johnlindquist/agents - Install:
npm install -g markdown-agent - Docs: Project README
- Terminal with large font, dark theme
- Pre-create a few example agents (but type at least one live)
- Have a real codebase ready for
@./src/**/*.tsdemo - Git repo with staged changes for commit message demo
- Copilot CLI authenticated and ready
- Claude CLI as backup/escalation demo
-
.envfile with API keys ready
| Section | Time | Running Total |
|---|---|---|
| Hook | 1 min | 1 min |
| Familiar Made Powerful | 3 min | 4 min |
| YAML Frontmatter | 3 min | 7 min |
| CLI as Native Habitat | 4 min | 11 min |
| Low Floor, High Ceiling | 3 min | 14 min |
| Version Control Friendly | 2 min | 16 min |
| Copilot Focus | 2 min | 18 min |
| Closing | 2 min | 20 min |
Buffer: 2-3 minutes for demos running over or audience questions during.