Battle of the Bots:

Which AI Assistant Delivers?

Calvin Hendryx-Parker, CTO

Six Feet Up

AI Coding Assistants

The New Pair-Programming Partners

Rapid Evolution over the last year:

More than 97% of respondents reported having used AI coding tools at work

Github AI in Software Survey

Why This Matters

  • AI coding assistants are transforming how we build software
  • Choosing the right tool can mean the difference between frustration and flow
  • Let’s find out which one delivers for real-world developers!

The Contenders

  • Aider
  • Claude Code
  • Cursor
  • Goose
  • Junie

What is AI Agent?

An AI agent is a system that can:

  • Perceive its environment through tools/APIs
  • Make decisions autonomously
  • Take actions to achieve specific goals
  • Learn from interactions and feedback
  • Chain multiple operations together

Agents Continued

Key characteristics:

  • Tool use capabilities (file system, web search, code execution)
  • Planning and reasoning about complex tasks
  • Persistent memory within a session
  • Self-improvement through feedback loops

What is MCP?

MCP Examples

In practice

  • Connect your AI assistant to AWS MCP servers
  • Ask natural language questions about AWS services
  • Get contextually accurate answers based on latest documentation
  • Generate AWS CLI commands, CloudFormation templates, or IAM policies
  • Troubleshoot AWS-specific issues with current best practices

Tool introduction: Aider

  • Developed by Paul Gauthier
  • Open-source (GitHub: paul-gauthier/aider)
  • Supports multiple LLM models (OpenAI GPT-4, Claude, Llama)
  • Semi-agentic with git integration
  • No MCP support currently
  • Supports /voice interactions
  • Use Multiple Models in the same session

Tool introduction: Claude Code

  • Developed by Anthropic
  • Proprietary model and tooling
  • Uses only Claude models (Claude 3 Opus/Sonnet/Haiku)
  • Fully agentic with reasoning capabilities
  • Supports MCP (Model Context Protocol)

Tool introduction: Cursor

  • Developed by Cursor team (acquired by Anthropic)
  • Proprietary editor with open-source components
  • Supports both OpenAI and Anthropic models
  • Fully agentic with project navigation
  • Supports MCP

Tool introduction: Goose

  • Developed by Block Inc. (formerly Square)
  • Open-source (GitHub: block/goose)
  • Supports multiple LLM models (OpenAI, Claude, Ollama)
  • Fully agentic with integrated tooling
  • Supports MCP
  • Supports OpenRouter! (https://openrouter.ai)

Tool introduction: Junie

  • Developed by JetBrains
  • Proprietary tooling and requires PyCharm Subscription
  • Appears to be using Anthropic’s Claude 3.7 Sonnet
  • Fully agentic with project navigation

Tool Comparison

Tool Open Source MCP Support Agentic Models Supported
Aider Yes No Semi Bring your own
Claude No Yes Full Claude Models
Cursor No Yes Full OpenAI, Claude, Gemini
Goose Yes Yes Full Bring your own
Junie No No Full Claude 3.7 Sonnet

Agentic Coding Models

DEMO: The Prompt

This project was bootstrapped with scaf and has a NextJS frontend in the frontend dir and a Django backend in the backend dir.

The scaf template only supports a GraphQL API. Refactor the app to use a REST API.

DEMO: Aider

  • Specify conventions in CONVENTIONS.md
  • Use different models for architect and edit mode simultaneously
  • Use external editor with /editor
  • Run commands and add to output with /run
  • Show cost with /tokens
  • Clear context with /clear
  • Start with --lint-command and --test-command run your test suite after each time the AI edits your code

DEMO: Claude Code

  • Allow tools: claude config add allowedTools "Bash(git:*),Bash(cat:*),Bash(grep:*)"
  • Specify conventions in CLAUDE.md
  • Doesn’t use git to commit changes. TIP: Ask it to “Review the staged changes with git diff --staged and git commit using conventional commit standard”
  • Show cost with /cost
  • Compact and clear context with /compact and /clear

DEMO: Cursor

  • Specify conventions in Cursor Rules: ./cursor/rules https://docs.cursor.com/context/rules-for-ai
  • Ask Cursor to setup a .cursor-guildeline.json

DEMO: Goose

  • Specify conventions in .goosehints: Global: ~/.config/goose/.goosehints Local: .goosehints
  • Session support: Start a session: goose session -n rest-api Exit a session: type exit Resume session: goose session -r rest-api
  • Permission Modes: Completely Autonomous / Manual Approval / Smart Approval / Chat Only
  • Clear context by exiting /exit

DEMO: Junie

  • Specify conventions in .junie/guidelines.md
  • Use it to help setup those guidelines
  • It will require some serious coaxing in complicated setups (like our demo)

Key Takeaways

  • No single assistant is best for every workflow
  • MCP is enabling richer, more context-aware coding
  • Open source tools are catching up fast
  • Try several and see what fits your style!

Talk To Me

📩
🤝 https://linkedin.com/in/calvinhp
🦋 @calvinhp.com