| title | Coding Agent Showdown | ||
|---|---|---|---|
| sub_title | The Good, the Bad, and the Ugly | ||
| author | Lars Trieloff (@trieloff) | ||
| theme |
|
||
| options |
|
AI
./copresenter --new "Say hi to the Adobe Developers Live audience"Agentic
- Smarter autocomplete
- Chat with your code base, ask questions
- Agents in your IDE
- Standalone agents in your CLI (we are here)
- Standalone agents in the cloud
./copresenter "Got anything to add?"┌──────────────────────────────────────────────────────────┐
│ CLOUD │
│ ┌──────────────────┐ │
│ │ Claude Model │ │
│ │ (Sonnet 4.5) │ │
│ └────────▲─────────┘ │
└───────────────────────────┼──────────────────────────────┘
│ API calls
┌───────────────────────────┼──────────────────────────────┐
│ LOCAL ENVIRONMENT │
│ ┌────────▼─────────┐ │
│ │ Agent Harness │ │
│ │ (orchestration) │ │
│ └────────┬─────────┘ │
│ ┌─────────────────┼─────────────────┐ │
│ │ │ │ │
│ ┌────▼─────┐ ┌─────▼─────┐ ┌────▼─────┐ │
│ │ File I/O │ │ Bash │ │ MCP │ │
│ │ Tools │ │ Tools │ │ Servers │ │
│ └────┬─────┘ └─────┬─────┘ └────┬─────┘ │
│ └─────────────────┼─────────────────┘ │
│ ┌───────▼─────────┐ │
│ │ Your Codebase │ │
│ │ & Environment │ │
│ └─────────────────┘ │
└──────────────────────────────────────────────────────────┘
./copresenter "Remind me what MCP stands for"aem.live
AGENTS.md
┌────────────────────┐ ┌────────────────────┐
│ │ │ │
│ ~/AGENTS.md │ │ ./AGENTS.md │
│~/.claude/CLAUDE.md │ │ ./CLAUDE.md │
│ │ │ │
└────────────────────┘ └────────────────────┘
│ │
│ │
└────injected into (almost) ────┘
every prompt
│
▼
┌─────────┐
│ Coding │
│ Agent │
└─────────┘
- default prompt for every project (~) or the current repository
- or even the current folder
- put all the things the agent should always follow here
https://github.com/adobe/helix-website/blob/main/AGENTS.md
(steal this)
./copresenter "Hey, why does every agent but Claude respect AGENTS.md?"SKILLS.md
┌────────────────────────────────────┐
┌───│ .claude/skills/search/SKILLS.md │
│ └────────────────────────────────────┘
│ ┌────────────────────────────────────┐
├───────│ .claude/skills/test/SKILLS.md │
│ └────────────────────────────────────┘
│ ┌────────────────────────────────────┐
├───────────│ .claude/skills/pr/SKILLS.md │
│ └────────────────────────────────────┘
│
▼
┌─────────┐
│ Coding │ list skills at start of
│ Agent │ session, load on demand
└─────────┘
- make your agent more skilled
- are used on-demand
- don't consume context by default
./copresenter "Kudos to team Anthropic for inventing SKILLS.md. Do other agents respect SKILLS.md?"$ gh ext install trieloff/gh-upskill
$ gh upskill adobe/helix-websiteInstall skills from another repository, for any agent that respects AGENTS.md
YOLO
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
////////////////////////// DANGER ZONE ////////////////////////
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
/\
/!!\
/!!!!\
/!!!!!!\
/!!!!!!!!\
\!!!!!!!!/
\!!!!!!/
\!!!!/
\!!/
\/
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
///////////////////////////////////////////////////////////////
Skips all permission prompts for file operations (and this is where the fun begins)
The agent will ask for permission for any potentially sensitive, or destructive operation.
Assured, and bored.
Or have you ever seen a cowboy wear a seatbelt to the rodeo?
HERZBLUT
♥♥♥♥♥ ♥♥♥♥♥
♥♥ ♥♥ ♥♥ ♥♥
♥♥ ♥♥ ♥♥ ♥♥
♥♥ ♥♥
♥♥ ♥♥
♥♥ ♥♥
♥♥ ♥♥
♥♥ ♥♥
♥♥ ♥♥
♥♥ ♥♥
♥
Herzblut (German): lifeblood, passion, heart and soul
When you code without an AI agent, you're not just writing code—you're infusing it with your vision, your standards, your Herzblut. You feel passionate about every detail of the code.
When coding with an AI agent, drop that attitude, it won't do you no good. The agent is a tool, an so is the code it produces.
PARALLEL
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Terminal 1 │ │ Terminal 2 │ │ Terminal 3 │
│ │ │ │ │ │
│ $ claude │ │ $ codex │ │ $ gemini │
│ Building... │ │ Testing... │ │ Documenting... │
│ │ │ │ │ │
│ [████░░] 60% │ │ ✓ 47 passed │ │ Writing API │
│ │ │ ⚠ 2 warnings │ │ docs... │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
└────────────────────┼────────────────────┘
│
┌─────────▼──────────┐
│ Same Codebase │
│ Different Tasks │
└────────────────────┘
- Different tasks in parallel: Build, test, document simultaneously
- Different branches: Work on features while fixes run in main
- Context isolation: Each instance focuses on one specific task
- Faster iteration: Don't wait for one task to finish before starting another
WORKTREE
main repo (.git)
│
┌─────────────┼─────────────┐
│ │ │
claude-1 codex-2 gemini-3
(main) (feature-a) (feature-b)
│ │ │
┌──▼──┐ ┌──▼──┐ ┌──▼──┐
│ 📁 │ │ 📁 │ │ 📁 │
│ src │ │ src │ │ src │
└─────┘ └─────┘ └─────┘
│ │ │
claude codex gemini
instance 1 instance 2 instance 3
Multiple working directories attached to the same repository
- Each worktree can check out a different branch
- Share the same
.gitdatabase (efficient!) - Work on multiple features/branches simultaneously
- Run multiple agents on different branches
- No context switching or stashing required
- Agents can work in parallel without conflicts
- Test features independently while keeping main clean
$ aem upaem up automatically detects when it's launched in a Git worktree and will pick a non-conflicting port: run as many dev servers as you have worktrees. Since version 16.12.0 (2025-09-16)
./copresenter "What's your favorite aspect about multi-clauding, my little agentic friend?"OBSERVE
.-"-._.-"-._.-"-._.-"-.
/ \
| .-----------------. |
| | .-----------. | |
| | | * * * | | |
| | | / | \ | | |
| | | /___|___\ | | |
| | '-----------' | |
| '----------------' |
\ Agent Vision /
'-._.-"-._.-"-._.-"-'
./copresenter "What's that last slide supposed to mean?"- Source code: naturally
- CLI: very well
- CLI background tasks: emerging support (Claude is great at that)
- TUI: early support (
gemini), but still buggy - Image inputs: mixed: some have it, some don't, but it's always consuming lots of context
- GUI Apps: no. not yet, at least
To help your agent, see what you see, turn the vision challenge into a coding challenge.
$ aem up --forward-browser-logsSince version 16.13.0 (2025-09-16), aem can forward browser logs to the console, so agents can see them.
Use puppeteer or playwright, and instruct your agent to write throw-away scripts to test and capture the page.
./copresenter "In your impartial option, which one is better for web development: puppeteer or playwright?"SAFETY
┌────────────────────────────────────────┐
│ │
│ GitHub │
│ │
└─────────▲─────────────────────▲────────┘
│ │
┌─────────┴───────┐ ┌────────┴────────┐
│ ┏━━━━━━━━┓ │ │ ┏━━━━━━━┓ │
│ ┃ ┃ │ │ ┃ ┃ │
│ ┃ gh ┃ │ │ ┃ git ┃ │
│ ┃ ┃ │ │ ┃ ┃ │
│ ┗━━━━━━━━┛ │ │ ┗━━━━━━━┛ │
│ ai-aligned-gh │ │ ai-aligned-git │
└─────────────────┘ └─────────────────┘
▲ ▲
│ │
│ ┌─────────┐ │
│ │ Coding │ │
└─────│ Agent │──────┘
└─────────┘
When making changes on github.com (commits, comments, pull requests), attribute them to AI.
This helps reviewers not waste their "Herzblut" on your vibe-coded output.
COMPARE
| Agent | Model |
|---|---|
claude |
claude-opus-4.1 |
codex |
gpt-5-high |
gemini |
gemini-2.5-pro |
copilot |
claude-haiku-4.5 |
cursor-agent |
composer 1 |
opencode |
Grok Code Fast 1 |
qwen |
qwen3-coder-plus-2025-09-23 |
droid |
Droid Core (GLM 4.6) |
amp |
sonnet-4.5/gpt-5 |
kimi |
kimi-k2 |
crush |
GLM-4.6 |
goose |
gpt-oss-120b |
STOP
DEMO
TIME
./copresenter "How long do you think, did it take to set up these agents?"
