Imagine writing code 3-4x faster while maintaining quality. That's what AI-assisted development can offer. In simple terms, you can be more productive with AI tools like GitHub Copilot as your coding partner. They suggest code, help you debug, and speed up repetitive tasks.

Why This Matters

When coding traditionally, you’re typing every line yourself, searching documentation, and figuring out syntax. With AI, you can:

  • Focus on solving problems instead of remembering syntax

  • Learn faster by seeing good code examples in real-time

  • Build projects quickly without sacrificing quality

Research shows that experienced developers can complete tasks faster with AI assistance. But here's the key: you need to know how to use these tools effectively. And you need a bit of background in programming to do that.

Interested? Let’s dive into the world of AI-based coding tools that have taken the world by storm.

Table of Contents

Essential AI Terminology

Before we get started, let’s make sure you understand these key terms:

  • Tokens: Think of tokens as "word pieces" – how AI reads your code and text. Each character, word, or symbol uses tokens. Free tiers limit how many tokens you can use.

  • Context Window: How much code/conversation the AI can "remember" at once. Like short-term memory, larger windows mean better understanding of your project.

  • Hallucinations: When AI confidently suggests wrong information – like making up functions that don't exist. Always verify AI suggestions!

  • Prompt: Your instructions to the AI – comments, questions, or requests that guide what code it generates.

When to Use AI vs When to Code Yourself

Use AI for:

  • Writing boilerplate code (getters, setters, basic CRUD)

  • Learning new frameworks or syntax

  • Writing tests and documentation

  • Refactoring repetitive patterns

  • Getting unstuck on syntax errors

Code yourself when you’re:

  • Designing system architecture

  • Making security-critical decisions

  • Writing complex business logic

  • Learning new concepts (first time)

  • Working on performance-critical optimizations

The Golden Rule: Use AI to speed up implementation, but keep architectural decisions to yourself. AI is excellent at "how", but you decide "what" and "why."

Prerequisites

Before starting this tutorial, you should have:

  • Basic programming experience – You can write simple programs in any language

  • A code editor installed – VS Code is recommended (free from code.visualstudio.com)

  • Basic Git knowledge – You know how to commit and push code

  • Free to start – Many tools now have generous free tiers, and paid plans start around $10-20/month

Your Complete Learning Journey

This comprehensive tutorial is structured as a step-by-step program to transform you into an AI-assisted development expert:

Note: To keep the tutorial approachable, we’ll just focus on a core handful of tools. But you should research and explore more tools that might fit your specific needs beyond the ones we use here.

Your Learning Path:

You'll progress through 4 stages: mastering GitHub Copilot basics, unlocking advanced features like chat modes and agents, exploring CLI tools (Claude Code & Gemini), and finally combining multiple tools strategically for complete project workflows.

First, let's quickly see how you can generate your first AI code snippet.

How to Generate Your First AI-Assisted Code (Quick Start)

Let's start with the absolute basics. Don't worry about choosing the "perfect" tool – you can always switch later. Here's how to get started:

You can install GitHub Copilot by following these steps:

  1. Open VS Code

  2. Click the Extensions icon (or press Ctrl+Shift+X)

  3. Search for "GitHub Copilot"

  4. Click "Install"

  5. Sign in with your GitHub account

GitHub Copilot has a free tier (2000 code completions + 50 chat requests per month), which should be enough for this experiment.

TIP: Students, teachers, and OSS maintainers can get the Pro plan for free, which provides unlimited usage instead of the free tier limits.

Your First AI Suggestion

Once installed, create a new file called test.js and type:

// function to calculate the area of a circle

Press Enter and wait. You'll see gray text appear – that's your AI suggestion! Press Tab to accept it.

That’s it! You’ve just gotten your first AI suggestion! Isn’t that cool?

Stage 1: Foundation – Getting Started with AI Coding

Step 1: Understanding Your Options

Think of AI coding assistants like different types of helpful friends and colleagues. Let’s cover a few:

IDE-based: Some tools are designed to work with familiar code editors or are a standalone fork of editors like VS Code. For example:

  • GitHub Copilot (VS Code Extension) – An AI coding assistant from GitHub, works directly in VS Code with tab completion and chat features

  • Cursor (Standalone) – VS Code fork with enhanced agent modes, faster autonomous coding, and better handling of large codebase refactoring

  • Windsurf (Standalone or VS Code Extension) – Focuses on collaborative AI development with real-time suggestions and team features

  • Zed – High-performance editor with built-in AI assistance and fast rendering

CLI-based: Some tools are CLI-based, which you can launch within your terminal app:

  • Claude Code – Anthropic's terminal AI for autonomous development sessions and complex reasoning

  • Gemini – Google's CLI tool with large context windows and multimodal capabilities (images, documents)

  • OpenCode – Open-source alternative with customizable models and local processing options

  • Cursor CLI – Terminal version of Cursor for command-line AI assistance

UI-based and Background Agents: Besides these, there are also background agents and tools that can operate entirely in the background, such as performing pull-request reviews and more.

For example, both ChatGPT and Claude's desktop app can edit files on your local file system if you set them up. Similarly, some cloud-based agents can "run in the background" to complete your instructions. We will exclude these from the scope of this guide.

Step 2: Making Your Choice & Learning Automatic Suggestions (Tab Completion)

For your first stage, I recommend starting with either GitHub Copilot. You can always switch to the tool that fits your needs after you learn the basics.

Step 3: Step-by-Step Setup

How to Set Up GitHub Copilot (You can skip this if you already followed the Quick Start earlier)

  1. Open VS Code. If you don't have it, download from code.visualstudio.com.

  2. Install the Extension

    • Press Ctrl+Shift+X (Windows/Linux) or Cmd+Shift+X (Mac)

    • Type "GitHub Copilot" in the search box

    • Click the blue "Install" button

    • You'll see a pop-up asking you to sign in

  3. Sign In

    • Click "Sign in to GitHub"

    • Your browser will open

    • Log in with your GitHub account (create one free at github.com if needed)

    • Click "Authorize GitHub Copilot"

  4. Start using Copilot

    • Back in VS Code, you'll see "GitHub Copilot is ready"

Step 4: Mastering Tab Completion

Let's make sure it's working. Create a new file: hello.py. Type this comment and press Enter:

# function to greet a user by name

Wait 1-2 seconds. You should see gray text appear. Just press Tab to accept the suggestion.

What you should see:

# function to greet a user by name
def greet_user(name):
    return f"Hello, {name}!"

If you see this, congratulations! You're now using AI to help you write code.

If you’re having setup issues you can check the Troubleshooting Quick Reference for solutions.

Step 5: Essential Keyboard Shortcuts & First Practice

Here are the only shortcuts you need for your first week:

The Basics:

  • Tab – Accept the AI suggestion (use this the most!)

  • Esc – Dismiss the suggestion (when you don't want it)

When you're ready for more, try these:

Windows/Linux:

  • Alt+] – See the next suggestion

  • Alt+[ – See the previous suggestion

  • Ctrl+Enter – See all suggestions in a panel

macOS:

  • Option+] (or Alt+]) – See the next suggestion

  • Option+[ (or Alt+[) – See the previous suggestion

  • Ctrl+Enter – See all suggestions in a panel

Stage 1 Practice Exercise

Exercise: Build a Simple Todo App

  1. Create a new file called todo.js

  2. Start with this comment: // TODO app with add, remove, and list functions

  3. Add this comment and wait for AI suggestions: // function to add a new todo item

  4. Accept the suggestion with Tab if they look good to you

  5. Continue adding comments for remove and list functions

  6. Test your functions to make sure they work

Goal: Learn to "converse" with AI through clear comments and build confidence accepting/rejecting suggestions.

Need help? See the Troubleshooting Quick Reference for common issues and solutions.

Ready for the next stage? Before moving on, make sure you can:

- [ ] Get AI suggestions by typing comments
- [ ] Accept suggestions with Tab and dismiss with Esc
- [ ] Use Alt+] and Alt+[ to see different suggestions
- [ ] Write basic functions with AI help

If you're comfortable with these basics, you're ready to learn more powerful Copilot features.

Stage 2: Advanced GitHub Copilot Features

Step 6: Getting Better AI Suggestions

Now that you know the basics, let's learn how to get much better suggestions from your AI. The secret is understanding what your AI can see.

What Your AI Assistant Sees

Think of your AI assistant like a helpful friend looking over your shoulder. It can see:

  1. What you're typing right now – Your current file

  2. Other open tabs – Files you have open (this is important!)

  3. Your project structure – Folder and file names

  4. Your comments – This is how you "talk" to the AI

The "Neighboring Tabs" Trick

Here's a pro tip that will save you hours: Keep related files open in tabs.

Example: If you're writing a React component:

  • Have your component file open (Button.jsx)

  • Also, open your CSS file (Button.css)

  • Keep your test file visible too (Button.test.js)

You can then share these additional files as context with the AI in several ways:

  • @mention files: Type @filename.js in chat to reference specific files

  • Use @workspace: This chat participant can see all files in your project

  • Drag and drop: Simply drag files from the explorer into the chat window

  • Select code: Highlight code and right-click "Ask Copilot" to include it in context

The AI uses these open files to understand your project structure and suggest more relevant code that matches your existing patterns.

Step 7: Quality Control & Best Practices

Understanding AI Limitations

AI is powerful but it’s not perfect. Here are the key things to watch for:

Common AI Mistakes:

  1. Made-up functions: for example, const result = array.superSort(); doesn't exist!

  2. Wrong parameters: for example, greetUser("John", "Doe"); when function expects greetUser(name)

  3. Overcomplicated solutions: for example, const isEven = (num) => num.toString(2).slice(-1) === "0"; – just use num % 2 === 0

Quick quality checklist:

- [ ] Test the code - does it actually work?
- [ ] Read it - does it make logical sense?
- [ ] Check basics - are all functions/variables defined?
- [ ] Trust instincts - if it feels wrong, investigate

Security Essentials

Before accepting AI suggestions, make sure you check for these security issues:

- [ ] No hardcoded passwords or API keys
- [ ] User input is validated
- [ ] No eval() with user data
- [ ] Error messages don't expose sensitive info

Better Prompt Writing

Here’s a formula for writing solid prompts: What + How + Return type.

// ❌ Vague: "make function"
// ✅ Clear: "function to validate email format using regex, returns boolean"

Repository-Level Customization with Copilot Instructions

GitHub Copilot now supports repository-level customization through .github/copilot-instructions.md files. This feature helps Copilot understand your project's specific patterns and conventions.

Here’s how to set up Copilot instructions:

# Create GitHub directory if it doesn't exist
mkdir -p .github
touch .github/copilot-instructions.md

Example copilot-instructions.md file:

# Copilot Instructions

## Code Style

- Use React functional components with hooks
- Prefer TypeScript over JavaScript for new files
- Use Tailwind CSS for styling
- Follow the existing file structure in `/src/components`

## Testing

- Write tests with React Testing Library
- Place test files in `__tests__` directories
- Use descriptive test names that explain the behavior

## API Patterns

- Use custom hooks for API calls
- Handle loading and error states consistently
- Use React Query for data fetching

## Naming Conventions

- Components: PascalCase (e.g., `UserProfile.tsx`)
- Hooks: camelCase starting with 'use' (e.g., `useUserData.ts`)
- Utilities: camelCase (e.g., `formatDate.ts`)

What this enables:

  • Copilot suggests code that matches your project patterns

  • Automatically follows your naming conventions

  • Suggests appropriate testing approaches

  • Understands your preferred libraries and frameworks

Best practices:

  • Keep instructions clear and specific

  • Update them as your project standards evolve

  • Include examples of preferred patterns

  • Mention libraries and frameworks you use

Step 8: Unlocking Advanced Copilot Features

Understanding Your Options

GitHub Copilot offers multiple ways to get AI help:

  1. Tab Completion (what you've been using) – Suggestions while typing

  2. Chat Mode – Have conversations with AI about your code

  3. Edit Mode – Ask AI to modify existing code

  4. Agent Mode – Let AI work autonomously on big tasks

We’ll discuss these modes in more detail below so you know how they work and when you should use them.

Model Selection

Copilot now offers different AI models for different needs:

Free with subscription:

  • GPT-4.1 – Default model with solid all-around performance

  • GPT-4 – Reliable for most coding tasks

Premium models (limited monthly usage):

  • Claude 3.5 Sonnet – Great for complex logic

  • GPT-5 – Latest and most capable

  • Gemini 2.0 Flash – Very fast responses

How to switch models: Click the model dropdown in Chat view

Tip: Start with free models (GPT-4.1) for learning, and save premium models for complex problems.

GitHub Copilot Limitations

Here are some important things to consider when you’re using AI to help you out with your coding:

  • Internet dependency – Requires stable connection for suggestions

  • Context limitations – Only sees open files, not your entire project structure

  • Free tier limits – 2,000 completions and 50 chat requests per month

  • Code quality varies – Always review suggestions, especially for security-sensitive code

  • Learning curve – Takes time to write effective prompts for complex tasks

  • Privacy considerations – Your code is sent to GitHub's servers (check your organization's policies)

Basic Chat vs Suggestions

So you might be wondering - when should you use tab completion vs when should you use chat? It’s best to use tab completion for writing new functions, quick syntax help, and completing patterns. You can use chat for explaining existing code, getting help with errors, and planning your approach to problems.

Try it: Open Chat (Ctrl+Shift+I) and ask: "What does this function do?" while selecting code.

Step 9: Mastering Chat and Agent Modes

The Three Chat Modes

  1. Ask Mode (Default) – for questions and explanations:
"What does this function do?"
"How can I optimize this code?"
"Explain this error message"
  1. Edit Mode – For making changes to existing code:
"Refactor this to use async/await"
"Add error handling to all API calls"
"Convert this to TypeScript"
  • Shows inline diffs before applying changes

  • Works across multiple files

  • Great for systematic refactoring

  1. Agent Mode – For autonomous development:
"Create a REST API with authentication"
"Build a todo app with React and testing"
"Migrate this codebase from Vue 2 to Vue 3"
  • Press Shift+Cmd+I (Mac) or Ctrl+Shift+I (Windows/Linux)

  • Works independently for hours

  • Installs packages, creates files, runs tests automatically

When to Use Each Mode

Each mode has its particular use cases. Use ask mode when you’re learning new concepts, you want to understand existing code, for getting explanations, and for planning approaches.

Use edit mode when you’re refactoring existing code, applying consistent changes, adding features to existing functions, or for style/pattern updates.

Agent mode is useful for building complete features (30+ minutes of work), setting up new projects, large-scale refactoring, and for when you want to work on other things while AI codes.

Agent Mode Examples

Small agent task (15 minutes):

"Add user authentication to my Express app"

What the agent generated:

// middleware/auth.js
const jwt = require('jsonwebtoken');

const authenticateToken = (req, res, next) => {
  const authHeader = req.headers['authorization'];
  const token = authHeader && authHeader.split(' ')[1];

  if (!token) return res.sendStatus(401);

  jwt.verify(token, process.env.ACCESS_TOKEN_SECRET, (err, user) => {
    if (err) return res.sendStatus(403);
    req.user = user;
    next();
  });
};

// routes/auth.js
router.post('/login', async (req, res) => {
  // Authentication logic with bcrypt
  const accessToken = jwt.sign({username: user.username}, process.env.ACCESS_TOKEN_SECRET);
  res.json({accessToken: accessToken});
});

Key issues I found: The agent initially forgot to hash passwords and didn't include refresh tokens. This required one iteration to fix security gaps and add proper error handling.

Large agent task (4+ hours):

"Modernize this React class-based app to hooks with TypeScript"

What the agent generated:

// Before (Class component)
class UserProfile extends React.Component {
  constructor(props) {
    this.state = { user: null, loading: true };
  }
  // ... lifecycle methods
}

// After (Hooks + TypeScript)
interface User {
  id: number;
  name: string;
  email: string;
}

const UserProfile: React.FC = () => {
  const [user, setUser] = useState<User | null>(null);
  const [loading, setLoading] = useState(true);

  useEffect(() => {
    fetchUser().then(setUser).finally(() => setLoading(false));
  }, []);

  return <div>{loading ? 'Loading...' : user?.name}</div>;
};

Key issuesI found: the agent successfully updated 47 files, but initially had typing issues with event handlers and needed refinement of generic types. The automated tests also required manual review to ensure proper TypeScript coverage.

Using Chat Participants

Chat participants are specialized AI assistants that have access to specific parts of your development environment. Think of them as experts in different areas who can help with targeted tasks.

They’re basically AI helpers prefixed with @ that have special knowledge and capabilities:

  • @workspace has access to your entire project structure, and can search files and understand relationships between components. Use @workspace when you need project-wide analysis: "Find all API endpoints in this project" or "Show me where user authentication is implemented."

  • @terminal knows about command-line operations, and can suggest shell commands and explain terminal output. Use @terminal for command-line help: "What command runs the tests?" or "How do I build this project for production?"

  • @vscode is an expert in VS Code features, and can help with settings, debugging, and editor configuration. Use @vscode for editor assistance: "Set up debugging for Node.js" or "Configure auto-formatting for this project."

Example usage:

@workspace Can you find all the database models in this project?
@terminal What's the command to install dependencies and start the dev server?
@vscode How do I set up breakpoints for debugging this Express app?

Step 10: Power User Features and Advanced Workflows

Beyond the core Copilot features you've learned, there are specialized tools and commands that can supercharge your productivity. These features go beyond basic chat modes and model selection, focusing on complex multi-file operations and advanced automation.

Advanced Slash Commands

/doc - Generate documentation
/explain - Detailed code explanation
/fix - Fix errors in selected code
/tests - Generate unit tests
/new - Create new project structure

Multi-File Operations

Using # References:

The # symbol creates specific references that tell Copilot exactly what to focus on. These references work like precise pointers to different parts of your project:

  • #file:filename: References a specific file: #file:UserModel.js

  • #codebase: References your entire project codebase for searching

  • #selection: References currently selected code

  • #editor: References the currently active file

"Update #file:UserModel.js to include timestamps"
"Search #codebase for all database queries"  
"Refactor #selection to use modern JavaScript syntax"
"Add error handling to #editor for all API calls"

These references help Copilot understand exactly where to look and what to change, making multi-file operations much more precise.

Drag and Drop:

Drag and drop is one of the most intuitive ways to provide context to Copilot. You can simply drag files from the VS Code explorer directly into the chat window, and Copilot will instantly understand their contents and structure.

This feature is particularly useful when you're working on related components and need the AI to understand how different files connect together. Copilot remembers these file relationships throughout your conversation, so you don't need to re-upload files when continuing the same discussion.

This context persistence works across multiple chat sessions, making it easy to pick up where you left off on complex multi-file projects.

Stage 2 Practice Exercises

Exercise 1: Chat Mode Practice

  1. Use Ask Mode to understand a complex function

  2. Switch to Edit Mode to refactor it

  3. Compare the approaches

Exercise 2: Agent Mode Project

  1. Start Agent Mode (Shift+Cmd+I)

  2. Request: "Create a simple todo app with testing"

  3. Watch the autonomous development process

  4. Review the generated code

Exercise 3: Advanced Features

  1. Use @ participants for project questions

  2. Experiment with slash commands

  3. Practice multi-file operations

Ready for CLI Tools?

You've now learned the basics of GitHub Copilot in VS Code! CLI tools like Claude Code and Gemini offer even more power for terminal-based development.

If you’re interested in terminal AI you can continue to Stage 3 just below. If you prefer to stick with VS Code, just skip to Stage 4 for advanced workflows.

Stage 3: CLI-Based AI Agents (Claude Code & Gemini)

Step 11: Meet Claude Code – Your Terminal AI Assistant

What is Claude Code?

Remember how GitHub Copilot helps you in VS Code? Claude Code does the same thing, but in your terminal.

Instead of typing in VS Code and getting suggestions, you type in your terminal and have conversations with AI. It's like having a coding buddy right in your command line.

Simple example:

In VS Code with Copilot:

// create a function to validate email
[AI suggests code]

In Terminal with Claude Code:

claude
> Create a function to validate email addresses
[AI writes the code for you]

So when should you use VS Code/Copilot and when should you use Claude Code?

Claude Code is great if you:

  • Like working in the terminal

  • Want to have AI conversations about code

  • Need help with command-line tasks

  • Want more control over AI interactions

Stick with VS Code Copilot if you:

  • Prefer visual editors

  • Are happy with your current workflow

  • Don't spend much time in terminal

Pricing

Claude Code requires Claude Pro (100/month),orClaudeMax+(100/month),orClaudeMax+(200/month) subscription, or pay-per-use with API credits.

Claude Code Limitations

Here are some important considerations if you’re planning to use Claude Code:

  • Paid only – No free tier, requires Claude Pro subscription or API credits

  • Terminal-based – Less visual than IDE-integrated tools

  • Learning curve – Requires comfort with command-line interfaces

  • Context management – You need to manage conversation context manually

  • Internet dependency – Requires stable connection for all operations

  • Session limits – Long autonomous sessions consume significant API credits

Installation

Recommended (all platforms):

npm install -g @anthropic-ai/claude-code

Alternative installs:

  • macOS/Linux: curl -fsSL https://claude.ai/install.sh | bash

  • Windows: irm https://claude.ai/install.ps1 | iex

Basic Usage

Interactive Mode (Recommended):

Interactive mode is Claude Code's primary interface where you have real-time conversations with the AI. Unlike one-shot commands that execute once and exit, interactive mode creates a persistent session where you can ask follow-up questions, iterate on solutions, and build complex projects over time.

Interactive mode is recommended because:

  • Context persistence: Claude remembers the entire conversation and project context

  • Iterative development: You can refine requests and build on previous responses

  • Real-time collaboration: Ask questions, get explanations, and modify approaches as you work

  • Session resumption: Continue previous conversations with claude --resume

Other Modes Available:

  • One-shot mode: Single command execution (explained below)

  • Agent mode: Autonomous development sessions that can work for hours independently

  1. Navigate to your project:
cd your-project
claude
  1. Start conversing naturally:
Claude Code > analyze this codebase and suggest improvements

Claude Code > now help me refactor the user authentication

Claude Code > add unit tests for the payment module
  1. Continue previous session:
claude --resume

One-shot Commands (for quick tasks):

One-shot commands are single-execution commands that perform a specific task and then exit. Unlike interactive mode, these don't maintain conversation context – they're perfect for quick, standalone tasks.

What are One-shot Commands?

These are commands you run with a specific instruction directly from your terminal, without entering an interactive session. Claude executes the request and provides results immediately.

When to Use One-shot Commands:

  • Quick analysis or code reviews

  • Simple file modifications

  • Automated scripts and CI/CD integration

  • When you need a single, specific answer

Examples:

claude "analyze this codebase and suggest improvements"
claude "fix all TypeScript errors in src/"
claude "generate unit tests for utils.js"
claude "explain what this function does" --file src/auth.js

The key difference is that one-shot commands don't remember context between runs, while interactive mode maintains full conversation history and project understanding.

Interactive vs Autonomous Sessions:

Within interactive mode, you can choose between collaborative and autonomous approaches:

Interactive Session (collaborative):

Claude Code > I'm building user authentication. What approach should we take?

You: Use JWT tokens with refresh token rotation

Claude Code > implement JWT authentication with refresh tokens
[Shows you the implementation step by step]

Claude Code > shall I also add password reset functionality?

You: Yes, use email-based reset

Autonomous Session (hands-off development):

Claude Code > Build a complete user management system with authentication, profiles, preferences, and admin features. Use best practices for security and testing.

[Claude works for hours autonomously, providing periodic updates]
[Final result: Complete user management system ready for production]

When to Use Each: Use interactive sessions when learning or when you want control over decisions. Use autonomous sessions for well-defined tasks where you trust Claude to make good choices independently.

Key Features

Thinking Modes (use in interactive session):

Thinking modes are special commands that tell Claude how deeply to analyze before responding. You choose these modes manually based on your problem's complexity.

When to Use Each Mode:

  • think – Quick analysis for straightforward tasks: "think: review this function for bugs"

  • think hard – Deeper reasoning for complex logic: "think hard: optimize this algorithm"

  • think harder – Complex problem solving with multiple considerations: "think harder: design a scalable database schema"

  • ultrathink – Maximum depth analysis for architectural decisions: "ultrathink: evaluate microservices vs monolith for this project"

How They Work:

Claude shows you its reasoning process with longer thinking modes. You'll see step-by-step analysis before getting the final answer. Higher thinking modes take longer but provide more thorough solutions.

Choosing the Right Mode:

Use think for quick code reviews, think hard for debugging complex issues, think harder for system design problems, and ultrathink for major architectural decisions that affect your entire project.

Project-Level Customization with Claude.md

One of Claude Code's most powerful features is project-level customization using .claude/CLAUDE.md files. This lets you give Claude context about your specific project, coding standards, and preferences.

Set up CLAUDE.md like this:

# Create project-level configuration
mkdir -p .claude
touch .claude/CLAUDE.md

Here’s an example CLAUDE.md file:

# Project Context

This is a Node.js REST API using Express and PostgreSQL.

## Coding Standards

- Use async/await, never callbacks
- All database queries use Prisma ORM
- Write tests with Jest for all new functions
- Follow RESTful conventions

## Project Structure

- `/src/routes` - API endpoints
- `/src/models` - Database models
- `/src/middleware` - Express middleware
- `/tests` - Unit and integration tests

## Preferences

- Use TypeScript for all new files
- Prefer functional programming patterns
- Include JSDoc comments for all functions

This helps Claude understand your project structure automatically. It also helps Claude follow your specific coding standards, suggest appropriate patterns for your tech stack, and remember your preferences across sessions.

Pro tip: Update your CLAUDE.md as your project evolves to keep Claude's suggestions relevant and accurate.

Claude Code Autonomous Development Sessions

Here’s an example of a multi-hour autonomous development session:

cd your-project
claude

Your prompt: "Build a scalable GraphQL API with real-time subscriptions, authentication, rate limiting, and comprehensive testing"

Claude's 6-hour autonomous process:

Claude Code > ultrathink: analyzing requirements and designing architecture

[Creates detailed technical specifications and development plan]

Claude Code > implementing core GraphQL server with Apollo
[Runs: npm install apollo-server-express graphql]
[Creates: server.js, schema/typeDefs.js, resolvers/index.js]

Claude Code > adding authentication and authorization middleware
[Creates: middleware/auth.js, utils/jwt.js, models/User.js]
[Implements JWT strategy with proper error handling]

Claude Code > setting up real-time subscriptions with Redis
[Runs: npm install graphql-redis-subscriptions]
[Configures WebSocket connections, creates subscription resolvers]

Claude Code > implementing rate limiting and security measures
[Adds helmet, express-rate-limit, query complexity analysis]

Claude Code > writing comprehensive test suite
[Creates unit tests, integration tests, load tests]
[Runs: npm test - sees 8 failing tests]

Claude Code > fixing test failures automatically
[Identifies async timing issues, fixes resolver logic]
[Re-runs tests repeatedly until 94/94 tests pass]

Claude Code > performance optimization and caching
[Implements Redis caching, optimizes database queries]
[Adds performance monitoring and logging]

Claude Code > generating comprehensive documentation
[Creates API docs with examples, README, deployment guide]

Claude Code > final validation and cleanup
[Runs full test suite, checks code coverage: 96%]
[Creates production build and deployment scripts]

This represents 6 hours of autonomous work (you can work on other projects while it’s doing this). The result is a production-ready GraphQL API with authentication, real-time features, and comprehensive testing.

Why this works:

  • Autonomous Feedback Loops: Claude runs tests, sees failures, fixes them automatically

  • Context Awareness: Maintains understanding of the entire project structure

  • Self-Correction: Iterates on solutions until they work properly

  • Tool Integration: Uses git, npm, testing frameworks seamlessly

Web Search Integration:

Claude Code can search the web to get current information, which is especially useful since AI training data has cutoff dates. This feature helps you stay current with the latest documentation, best practices, and solutions.

Claude Code > search for the latest React 19 features and update my components

[Claude searches web, then continues the conversation with findings]

Claude Code > now apply those new features to the UserProfile component

When Web Search Helps:

  • Getting current documentation for new library versions

  • Finding solutions to recent error messages or bugs

  • Researching latest best practices and patterns

  • Comparing current approaches to problems

The web search happens automatically when Claude detects it needs current information, or you can explicitly request it by mentioning "search" or "latest" in your prompts.

Claude Code Keyboard Shortcuts

You can use these keyboard shortcuts to be even more productive:

Essential controls:

  • Ctrl+C – Cancel current input or generation

  • Ctrl+D – Exit Claude Code session

  • Ctrl+L – Clear terminal screen

  • Up/Down arrows – Navigate command history

  • Esc + Esc – Edit previous message

Multiline Input:

  • \ + Enter – Quick escape to create newline (works in all terminals)

  • Option+Enter (Mac) / Shift+Enter (configured) – Insert newline

Step 12: Google Gemini CLI

When to Use Gemini vs Claude Code:

Gemini is another CLI-based AI tool that complements Claude Code rather than competing with it. While Claude Code excels at deep reasoning and complex development tasks, Gemini offers unique advantages: massive context windows (1M+ tokens), generous free limits, and powerful multimodal capabilities.

Use Gemini when you:

  • Need to analyze entire large codebases at once

  • Want to process images, diagrams, or sketches

  • Are working within budget constraints (generous free tier)

  • Need extremely large context windows for complex projects

Use Claude Code when you:

  • Need sophisticated reasoning and problem-solving

  • Want autonomous development sessions

  • Prefer advanced thinking modes for complex analysis

  • Are building production systems requiring detailed planning

The Best Approach: Many developers use both tools strategically – Gemini for analysis and visual inputs, Claude Code for complex development tasks.

Gemini brings Google's AI to your terminal with generous free limits.

Installation

Using npx (recommended for trying):

npx @google/gemini-cli

Global installation:

npm install -g @google/gemini-cli
gemini  # Starts interactive session

Authentication

  1. Sign in with Google:
gemini auth login
  1. Check status:
gemini auth status

Free limits:

  • 60 requests/minute

  • 1,000 requests/day with Google account

Built-in tools:

  • /memory – Manage conversation memory

  • /stats – View usage statistics

  • /tools – List available tools

  • /mcp – Configure Model Context Protocol servers

Gemini CLI Limitations

Here are some important considerations if you’re planning to use Gemini:

  • Rate limits – 60 requests/minute and 1,000/day on free tier

  • Google dependency – Requires Google account and internet connection

  • Newer tool – Smaller community and fewer resources compared to GitHub Copilot

  • Terminal-focused – Less integration with popular IDEs

  • Multimodal processing – Image uploads have size limits (20MB)

  • Beta features – Some advanced features may be unstable

Unique Gemini Features

Massive Context Window:
Gemini can handle 1 million+ tokens in a single session, meaning it can analyze entire large codebases simultaneously. This is particularly useful for understanding complex system architectures and relationships between many files.

Multimodal Capabilities:
Gemini can process and understand various types of visual content alongside code, making it uniquely powerful for design-to-code workflows and visual debugging.

Turn Your Sketches Into Code

This is really cool: you can literally draw something on paper and Gemini will turn it into working code!

Here's how to do it:

  1. Create your sketch: Draw your idea on paper, a whiteboard, or digital tablet

  2. Take a photo or screenshot: Use your phone or take a screenshot to capture the sketch digitally

  3. Save the image: Save it as JPG, PNG, or WebP format (under 20MB)

  4. Show it to Gemini using the command line:

gemini -p "Turn this sketch into a React component with nice styling" sketch.jpg

Alternative methods:

# If you're in an interactive session, you can reference the file:
gemini
> analyze this UI sketch and create the HTML/CSS: @sketch.jpg

# Or drag and drop in supported terminals
gemini
> implement this design as a Vue component
[drag sketch.jpg into terminal]

Gemini then looks at your drawing and creates:

  • A working React component that matches your sketch

  • Nice CSS styling that makes it look good

  • Form validation if you drew a form

  • All the code you need to make it work

It's like having a designer and developer that can read your mind!

Fix Bugs By Showing Gemini Images

Got a bug in your UI? You can show Gemini visual information to help debug:

gemini -p "This UI looks broken. What's wrong and how do I fix it?" image.png

Gemini can analyze visual information and tell you:

  • What's causing the problem

  • Exactly what code to change

  • Sometimes even better ways to do it

Turn Architecture Diagrams Into Code

Draw a system diagram and Gemini can build it:

gemini -p "Build this system architecture with Docker and databases" diagram.jpg

Gemini will:

  • Understand your diagram

  • Create all the Docker files you need

  • Set up the databases and connections

  • Give you a working system based on your design

Why This Visual Coding is Amazing

Instead of spending hours translating a design into code, you can:

  1. Show Gemini your sketch or design

  2. Ask Gemini to build it

  3. Get working code in minutes instead of hours and just refine as necessary

Most of the time, Gemini gets pretty close to what you wanted on the first try. Even when it's not perfect, it gives you a great starting point that saves you tons of time.

Step 13: Comparing CLI Tools

Here’s a quick table to help you compare the features of Claude Code and Gemini CLI:

FeatureClaude CodeGemini CLI
Context WindowLarge1M+ tokens
Web SearchBuilt-inGoogle Search integration
File EditingDirect editsDiff-based
Thinking Modes4 levelsReAct loop
IDE IntegrationVS Code shortcutsTerminal-first
Free TierLimitedGenerous (1000/day)
Open SourceNoYes
MultimodalNoYes (images, PDFs)

Step 14: Advanced CLI Workflows

Workflow 1: Interactive Code Review with Claude Code

Claude Code > review my recent git changes

[Claude analyzes the diff]

Claude Code > fix the security issue you found in the login function

Claude Code > now create a pull request with a good description

Workflow 2: Conversational Architecture Analysis with Gemini

Gemini > analyze this codebase architecture and identify technical debt

[Gemini provides comprehensive analysis]

Gemini > create a migration plan for the database issues you found

Gemini > generate API documentation for the endpoints

Workflow 3: Interactive Test-Driven Development

Claude Code > I need to add payment processing. Start by writing comprehensive tests

[Claude creates test suite]

Claude Code > now implement the payment service to pass these tests

Claude Code > add error handling and edge cases

Combining VS Code with CLI Tools

The Power of Hybrid Workflows:

The most productive developers don't typically choose just one AI tool – they strategically combine VS Code extensions with CLI tools to maximize their efficiency. Each tool has unique strengths, and combining them creates a workflow that's greater than the sum of its parts.

Benefits of Combining Tools:

  • Seamless Context Switching: Start with Copilot for rapid development, then seamlessly move to Claude Code for complex analysis without losing momentum

  • Complementary Strengths: Use each tool's best features, like Copilot's real-time suggestions + Claude's deep reasoning + Gemini's visual processing

  • Continuous Workflow: No need to copy/paste code between tools - work directly in your project with different AI assistance as needed

  • Reduced Mental Load: Tools handle different cognitive tasks, letting you focus on creative problem-solving

How to Practically Combine Tools:

Example workflow – building a user dashboard:

  1. Start in VS Code with Copilot: Use tab completion to rapidly build basic component structure

  2. Keep VS Code open, launch Claude Code: Get architectural advice and refactoring suggestions while maintaining your editor context

  3. Switch to Gemini for visual elements: Upload UI mockups to generate matching styles

  4. Return to VS Code: Apply all suggestions with Copilot helping with implementation details

Key Integration Points:

  • Shared Project Context: All tools work in the same directory, understanding your project structure

  • File System Coordination: Changes made by CLI tools are immediately visible in VS Code

  • Version Control Integration: Use CLI tools for git operations while VS Code shows visual diffs

Quick Switching Setup

What is Quick Switching?

A quick switching setup refers to configuring your development environment so you can rapidly move between different AI tools without friction. Instead of typing long commands or navigating through multiple setup steps, you create shortcuts that let you instantly access the right AI tool for your current task.

Add to your shell config (.zshrc or .bashrc):

# Quick AI commands for interactive mode
alias cc="claude"
alias gc="gemini"

# For quick one-shot commands when needed
alias think="claude 'think hard:'"
alias analyze="gemini -p 'analyze:'"

Stage 3 Practice Exercises

Exercise 1: Interactive Claude Code Project Setup

  1. Create a new project directory

  2. Launch: claude

  3. Start conversation: "set up a Node.js Express API with PostgreSQL"

  4. Continue chatting: "add authentication middleware"

  5. Keep going: "now add comprehensive error handling"

  6. Review the generated code and ask questions

Exercise 2: Interactive Gemini Codebase Analysis

  1. Navigate to an existing project

  2. Launch: gemini

  3. Start with: "analyze this codebase and identify potential security vulnerabilities"

  4. Follow up: "explain the most critical issue in detail"

  5. Continue: "create a fix for the authentication vulnerability"

  6. Ask: "what other improvements should I prioritize?"

Exercise 3: Interactive Combined Workflow

  1. Start with Copilot in VS Code for initial development

  2. Switch to interactive Claude Code session for complex refactoring

  3. Use interactive Gemini session for codebase analysis and documentation

  4. Practice seamlessly moving between tools

Need help with CLI tools? See the Troubleshooting Quick Reference for setup and common issues.

Stage 4: Mastery – Combining Tools and Advanced Workflows

Step 15: Tool Selection Strategy

When to Use Each Tool

Alright, so when should you use each tool in your workflows?

You can use GitHub Copilot as an inline pair-programmer when speed matters. It helps you crank out new functions, get real-time suggestions as you type, and pick up unfamiliar APIs or frameworks on the fly. It’s also handy for quick docs lookups without breaking your flow.

Then you can switch to Claude Code for bigger, messier jobs: complex multi-file refactors, drafting comprehensive tests, and “thinking out loud” about architecture and trade-offs. Here it also helps with Git tasks like guiding you through operations and assembling pull requests.

Finally, you can reach for the Gemini CLI from the terminal when you need to analyze large codebases end-to-end or incorporate visual inputs (like screenshots/diagrams) into your workflow. It’s useful for lots of runs thanks to a free tier, and it fits scenarios where you might want a customizable, script-friendly setup.

Step 16: Understanding MCP – Making AI Tools Work Together

What is MCP?

MCP (Model Context Protocol) is a simple way to give your AI tools extra powers. Think of it like adding apps to your phone – each MCP server adds a new capability to your AI.

Why Should Beginners Care About MCP?

Here’s the problem without MCP: your AI can only work with what it knows and what you tell it. It can't:

  • Search the web for current information

  • Test your website automatically

  • Remember your project details between sessions

  • Connect to your databases or APIs

But with MCP servers, your AI can suddenly:

  • Get current information – Search Google for latest docs and solutions

  • Test your code – Automatically check if your website works

  • Remember your project – Keep track of your architecture and decisions

  • Connect to tools – Work with GitHub, databases, and more

So instead of manually doing repetitive tasks, your AI can handle them automatically. This means you’ll spend less time googling error messages, manually testing your code, and explaining your project to the AI each session. And you’ll spend more time actually building things.

Simple MCP Examples for Beginners

Here are beginner-friendly examples of what MCP can do for you:

Example 1: Getting Help Without Googling

You: "This CSS isn't working. Find out why and fix it"

Without MCP: You'd google the error, read docs, try solutions
With MCP: AI searches current CSS docs, finds the issue, fixes it automatically

Example 2: Testing Your Website Automatically

You: "Check if my contact form actually works"

Without MCP: You'd manually fill out the form, check email, test edge cases
With MCP: AI fills out the form, verifies email is sent, tests different inputs

Example 3: AI Remembers Your Project

You: "Add a new feature to my todo app"

Without MCP: You explain your database structure, API routes, frontend framework
With MCP: AI already remembers everything and just builds the feature

Ready to Try MCP?

Don't worry if this seems overwhelming! You can start with just one simple MCP server and add more as you get comfortable.

Easy MCP Setup for Beginners

We’ll start with VS Code (as it’s the easiest option):

  1. Open VS Code

  2. Go to Extensions (Ctrl+Shift+X)

  3. Search for "GitHub Copilot MCP" or similar MCP extensions

  4. Click "Install"

And you’re done! The extension handles everything automatically

With this, you get web search capability for your AI, basic project memory, and simple automation features.

To test it out, ask your AI: "Search for the latest React best practices and show me an example". If it can search and bring back current information, MCP is working!

Want More MCP Power?

Once you're comfortable with basic MCP, you can explore a more advanced setup below:

  • Custom MCP server installation

  • Advanced configuration options

  • Building your own MCP integrations

For now, the VS Code extension approach above will give you plenty of AI superpowers to get started!

That's MCP in a nutshell! Start with the simple VS Code extension approach above, and you'll quickly see how much more powerful your AI becomes.

Next Steps

  • Try the basic VS Code MCP extension

  • Test it with simple requests like "search for X and implement it"

  • Once comfortable, explore more MCP servers in Stage 4

MCP transforms your AI from a code suggester into a true development partner. The best part? Once you set it up with one tool, it works with all of them!

MCP Not Working?

If the AI says it can't search the web, there are a couple things you can try.

First, check if the MCP extension is actually installed in VS Code. Then try restarting VS Code. Finally, make sure you're asking in a way the AI understands: "Search for X and show me Y".

If VS Code extension won't install, try checking your internet connection or updating VS Code to the latest version. You can also look for "MCP" or "Model Context Protocol" extensions in different names.

If you’re still having trouble, we’ll cover advanced troubleshooting below. Or you can also ask your AI: "Help me troubleshoot MCP setup".

Advanced MCP Setup and Integration

Manual MCP Server Installation

For advanced users who want full control over their MCP setup:

Step 1: Install MCP Servers

Most MCP servers can be installed via npm:

# For web automation and testing
npm install -g @modelcontextprotocol/server-puppeteer

# For web search without API keys
npm install -g @mcp-servers/duckduckgo

# For database access
npm install -g @modelcontextprotocol/server-postgres

Some servers (like GitHub) use Docker instead:

docker pull ghcr.io/github/github-mcp-server

Step 2: Configure Your Tool

Understanding Hierarchical Configuration:

Each AI tool checks for MCP configurations in multiple locations, prioritizing more specific settings over general ones. This means you can have global defaults but override them for specific projects. Think of it like CSS – more specific rules override general ones.

Claude Code has the most flexible setup:

Claude Code configuration hierarchy (checked in order):

  1. Project level: .claude/mcp.json (highest priority)

  2. Local settings: .claude/settings.local.json

  3. Global config: ~/.claude/mcp.json (fallback)

Other tools:

  • VS Code: .vscode/mcp.json (project-level only)

  • Cursor: .cursor/mcp.json (project-level only)

  • Windsurf: Uses VS Code's configuration format

Here’s an example configuration (works in any tool, just adjust the file location):

{
  "mcpServers": {
    "puppeteer": {
      "command": "npx",
      "args": ["@modelcontextprotocol/server-puppeteer"]
    },
    "duckduckgo": {
      "command": "npx",
      "args": ["@mcp-servers/duckduckgo"]
    },
    "github": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITHUB_PERSONAL_ACCESS_TOKEN",
        "ghcr.io/github/github-mcp-server"
      ],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "your_token_here"
      }
    }
  }
}

Production MCP Servers

1. Game-Changing Cognitive Tools:

Sequential Thinking Server:
This server transforms how AI approaches complex problems by breaking them into logical steps. When you ask for a large feature implementation, instead of jumping straight to code, the AI first creates a detailed plan with phases, dependencies, and decision points.

This is invaluable for refactoring legacy systems or building new features where order of operations matters. The server maintains this planning context throughout the entire development session, ensuring consistent decision-making.

Memory Bank Server:
Eliminates the frustrating need to re-explain your project structure every session. This server creates persistent memory about your architecture choices, coding standards, team preferences, and project goals. When you return to work days later, the AI immediately knows your database schema, API patterns, and even why certain decisions were made. It's like having a project documentation system that stays perfectly synchronized with your development work.

Knowledge Graph Server:
Creates a living map of your codebase relationships – not just file dependencies, but conceptual connections between features, shared utilities, and architectural patterns. When you modify one component, the AI can instantly identify all related areas that might need updates. This prevents bugs caused by missing related changes and helps with impact analysis during refactoring.

2. Web Automation & Testing Servers:

Puppeteer Server:
Provides headless Chrome browser control for comprehensive testing workflows. The AI can automatically navigate your web application, fill forms, click buttons, and verify expected behaviors.

This is particularly powerful for regression testing – the AI can replay user workflows and catch breaking changes before deployment. It also enables screenshot-based testing and performance monitoring automation.

Playwright Server:
Extends browser automation across Chrome, Firefox, and Safari simultaneously. This server is essential for cross-browser compatibility testing and allows the AI to catch browser-specific issues early in development.

Unlike manual testing, the AI can run identical test scenarios across all browsers in parallel, generating comparative reports on functionality and performance differences.

3. Development Integration Servers:

GitHub Server:
Transforms your terminal into a full GitHub interface with AI intelligence. The AI can automatically create branches, manage pull requests, analyze code review comments, and even generate PR descriptions based on code changes. It can also triage issues, assign labels based on content analysis, and maintain project boards by understanding the relationship between issues and actual code changes.

DuckDuckGo Search Server:
Provides real-time access to current documentation and solutions without API costs. When the AI encounters errors or needs to verify best practices, it can instantly search for the most recent information. This is crucial for rapidly evolving technologies where training data becomes outdated quickly. The server also helps with troubleshooting by finding solutions to error messages you haven't seen before.

PostgreSQL Server:
Enables direct database analysis and optimization. The AI can examine query performance, suggest index optimizations, analyze data patterns, and even generate migration scripts. This server is particularly valuable for debugging production issues where the AI needs to understand actual data distribution and query execution patterns rather than just theoretical database design.

4. Helper Tools:

MCP Compass
Helps you find the right MCP server for any task.

These servers turn your AI from a code suggester into a real development partner that can test, search, remember, and automate!

Step 17: Advanced Prompt Engineering

Contextual Prompting

Provide examples:

// Instead of: "create a validation function"
// Use: "create a validation function like this one but for email:
// function validatePhone(phone) { return /^\d{10}$/.test(phone); }"

Specify constraints:

claude "refactor this code to use functional programming, no loops, use map/filter/reduce"

Include edge cases:

gemini -p "implement user authentication that handles: expired tokens, concurrent logins, rate limiting"

Step 18: Building AI-Assisted Development Pipelines

Automated Code Review Pipeline

  1. Pre-commit with Copilot:
// .copilot-instructions
"Review all changes for: security issues, performance problems, code style";
  1. PR Review with Claude:
claude "review this PR: git diff main..feature-branch"
  1. Documentation with Gemini:
gemini -p "generate changelog and update README for these changes"

Test-Driven AI Development

  1. Write test specifications:
claude "write comprehensive test specs for a payment processing system"
  1. Generate test code:
gemini -p "implement these test specifications using Jest"
  1. Implement with Copilot:

    • Use Agent Mode to implement features

    • Tests guide the implementation

Step 19: Creating Your Personal AI Workflow

Setting Up Your Environment

1. VS Code Settings (settings.json):

{
  "github.copilot.enable": {
    "*": true
  },
  "github.copilot.advanced": {
    "inlineCompletions.enable": true,
    "chat.enabled": true
  }
}

2. Claude Code Configuration (~/.claude/settings.json):

{
  "cleanupPeriodDays": 7,
  "permissions": {
    "allow": [
      "Bash(fd:*)",
      "Bash(rg:*)",
      "Bash(ls:*)",
      "WebFetch(domain:github.com)",
      "WebFetch(domain:stackoverflow.com)"
    ],
    "deny": ["WebFetch(domain:medium.com)"]
  }
}

3. Gemini Setup (~/.gemini/config.json):

{
  "defaultModel": "gemini-2.5-pro",
  "contextWindow": "large",
  "safetyMode": "interactive"
}

Custom Commands and Aliases

Shell aliases for common tasks:

# Launch interactive sessions
alias cc='claude'
alias gc='gemini'

# Quick one-shot commands (when you need them)
alias aicommit='claude "create a git commit with a descriptive message"'
alias aireview='claude "review my uncommitted changes"'
alias complexity='gemini -p "analyze code complexity and suggest simplifications"'
alias security='claude "think harder: check for security vulnerabilities"'
alias aidocs='gemini -p "generate comprehensive documentation"'

Final Project: Build a Full Application with AI

Project Requirements

Build a task management API with:

  • User authentication

  • CRUD operations

  • Real-time updates

  • Testing suite

  • Documentation

Suggested Workflow

Phase 1: Interactive Planning

# Start Claude Code session
claude

Claude Code > ultrathink: design a scalable task management API architecture

[Claude provides detailed analysis]

Claude Code > now break this down into implementation phases

# Switch to Gemini for specifications
gemini

Gemini > create detailed technical specifications for this task management API

Gemini > include database schema and API endpoint specifications

Phase 2: Interactive Implementation

  1. Use Copilot Agent Mode for initial setup

  2. Implement features with inline Copilot

  3. Switch to interactive Claude Code session for complex logic:

Claude Code > implement the user authentication system we planned

Claude Code > now add the task CRUD operations

Claude Code > integrate real-time updates with WebSockets

Phase 3: Interactive Testing & Documentation

# Claude Code session for testing
claude

Claude Code > write comprehensive tests for all API endpoints

Claude Code > add integration tests for the authentication flow

Claude Code > create performance tests for high load scenarios

# Gemini session for documentation
gemini

Gemini > generate comprehensive API documentation with examples

Gemini > create a developer onboarding guide

Phase 4: Interactive Optimization

# Claude Code for performance optimization
claude

Claude Code > analyze and optimize our database queries

Claude Code > implement caching for frequently accessed data

Claude Code > add monitoring and logging

# Gemini for final review
gemini

Gemini > review the entire codebase for improvements

Gemini > identify potential security vulnerabilities

Gemini > suggest deployment optimizations

Measuring Your Progress

Stage 1 Milestones

  • Comfortable with tab completion

  • Can write effective prompts

  • Understand AI limitations

Stage 2 Milestones

  • Using multiple models effectively

  • Mastering chat modes and agents

  • Using advanced chat features

Stage 3 Milestones

  • Fluent with CLI tools

  • Can combine VS Code and terminal workflows

  • Understanding tool strengths

Stage 4 Milestones

  • Created custom AI workflow

  • Built complete application with AI

  • Can teach others AI-assisted development

Stage 4 Practice Exercises

Exercise 1: Tool Selection Mastery

  1. Pick a medium-complexity coding task (for example, "Build a URL shortener API")

  2. Plan which tool to use for each phase (design, coding, testing, deployment)

  3. Execute using your chosen workflow

  4. Document what worked well and what you'd change

Exercise 2: Custom Workflow Creation

  1. Identify a repetitive development task in your work

  2. Design an AI-assisted workflow using multiple tools

  3. Test and refine the workflow

  4. Create documentation for teammates

Exercise 3: Complete Project Build

  1. Build a small but complete application using only AI assistance

  2. Use at least 2 different AI tools strategically

  3. Include testing, documentation, and deployment

  4. Reflect on productivity gains vs traditional development

Continuing Your Journey

Stay Updated

  • Follow tool release notes

  • Join AI coding communities

  • Experiment with new features

Advanced Topics to Explore

  • Custom MCP server development

  • AI model fine-tuning

  • Enterprise deployment strategies

  • Team collaboration patterns

Resources for Continued Learning

  • Official documentation for each tool

  • Community forums and Discord servers

  • Open-source AI coding projects

  • Conference talks and tutorials

Common AI Issues

Even with the best AI tools, you'll encounter challenges. These issues are normal and manageable once you understand their patterns. Here are the most common problems developers face and practical solutions that actually work.

"My AI suggestions are terrible!"

Problem: AI gives irrelevant or wrong suggestions

Solution:

  • Write clearer comments

  • Open related files for context

  • Start with simpler tasks

  • Make sure you're in the right file type

Example Fix:

// Instead of: "make function"
// Try: "create function to validate US phone number format (xxx) xxx-xxxx"

"AI is too slow"

Problem: Waiting too long for suggestions

Solution:

  • Check your internet connection

  • Close unnecessary programs

  • Try a lighter-weight AI tool

  • Be patient - complex suggestions take time

"I'm afraid of becoming dependent on AI"

Problem: Worried about losing coding skills

Solution:

  • Use AI as a learning tool, not a crutch

  • Always understand the code before accepting

  • Practice coding without AI regularly

  • Focus on problem-solving, not syntax

"It's suggesting outdated code"

Problem: AI suggests old patterns or deprecated methods

Solution:

  • Specify versions in your comments

  • Keep your tools updated

  • Learn to recognize outdated patterns

Example:

// create React functional component using hooks (not class component)

Troubleshooting Quick Reference

Common Issues (All Tools)

ProblemQuick Fix
No AI suggestionsCheck internet connection, restart editor, verify login
"Need to pay" messageCheck free tier limits, verify account status
Suggestions are poorUse clearer comments, open related files for context
Tool won't installUpdate editor, check internet, try different installation method

GitHub Copilot Issues

ProblemSolution
No suggestions in VS CodeCheck bottom-right for "GitHub Copilot" status
Free tier expiredCheck free access for students/maintainers
Agent Mode not workingTry Shift+Cmd+I (Mac) or Ctrl+Shift+I (Windows/Linux)
Chat not respondingTry restarting VS Code, check internet connection

Claude Code Issues

ProblemSolution
"Command not found"Reinstall: npm uninstall -g @anthropic-ai/claude-code && npm install -g @anthropic-ai/claude-code
Authentication failedRun claude auth login, check API credits remaining
Slow responsesCheck network: ping api.anthropic.com, try lighter model with --model claude-3-haiku
MCP servers not workingCheck ~/.claude/mcp.json syntax, test server: npx @mcp/server-github --help
Commands hang/freezePress Ctrl+C to cancel, restart terminal, check background processes

Gemini CLI Issues

ProblemSolution
Authentication requiredRun gemini auth login, check Google account permissions
Rate limit exceededCheck usage: gemini /stats, wait 1 minute or upgrade plan
Won't installTry npx @google/gemini-cli instead, check Node.js 16+
Image upload failsCheck format (JPG/PNG/WebP), size under 20MB, verify file path
Context window errorsBreak large requests into smaller chunks, clear history

Emergency Checklist

When nothing works, try these in order:

  1. Restart your editor/terminal

  2. Check internet connection

  3. Verify you're logged in to the right account

  4. Update to latest version of the tool

  5. Try a different tool (if one fails, others usually work)

  6. Ask the AI itself: "Help me troubleshoottooltoolsetup"

What's Next After Completing All Stages?

Once you've mastered the basics, here are some simple next steps:

Working with Your Team

Team AI Workflow Basics

Shared Prompt Libraries:

Building a team prompt library transforms how your entire team uses AI. Start by creating a shared repository where developers document prompts that work well for your specific domain and codebase.

For example, if you're building e-commerce software, create standardized prompts for common tasks like "generate product catalog API endpoints following our REST conventions" or "create payment processing error handling using our standard patterns."

Document successful Agent Mode workflows that team members can reuse. One developer might discover that Claude Code works particularly well for database migrations when given specific context about your schema evolution practices. By sharing these workflows, you prevent each team member from having to discover effective approaches independently.

Tool Standardization:

Team productivity multiplies when everyone uses compatible AI tools. Agree on primary tools based on your team's needs - for instance, GitHub Copilot for all developers to ensure consistent inline assistance, plus Claude Code for complex architectural tasks that benefit from deep reasoning. Establish clear guidelines about when to use autonomous Agent Mode versus collaborative sessions to prevent conflicts and ensure code quality.

Set up shared MCP server configurations that give all team members access to the same enhanced AI capabilities. This might include team-specific servers for your internal APIs, shared database access, or custom tools that understand your deployment pipeline. When everyone has the same AI capabilities, collaboration becomes seamless.

AI-Generated Code Reviews:

Transform your code review process to work effectively with AI-generated code. Establish conventions for tagging AI-generated sections in pull requests - this helps reviewers focus their attention appropriately. Instead of nitpicking syntax that AI typically handles well, reviewers can concentrate on architectural decisions, business logic correctness, and integration patterns that require human judgment.

Implement rigorous testing for AI-generated code, as automated tests catch AI mistakes more reliably than manual review. Create team standards for testing AI output, including edge cases and integration scenarios that AI might miss. This allows you to benefit from AI's speed while maintaining quality through systematic verification.

Document AI tool decisions in commit messages.

Simple Team Setup

Start small and build up:

  • Get everyone using the same AI tools first

  • Create a shared document of prompts that work well for your projects

  • Figure out when your team should use Agent Mode vs regular assistance

  • Set up MCP servers for your most important team tools

For Bigger Projects

As your projects grow, you might want to:

  • Try different AI models for different tasks (fast ones for simple code, powerful ones for complex problems)

  • Create shortcuts for tasks you do often

  • Connect AI tools with your existing development workflow

Keep Learning

AI coding tools improve every month! Stay current by:

  • Following the tools' release notes (they email updates)

  • Joining Discord communities for AI coding

  • Trying new features as they come out

Conclusion

Congratulations! You now have everything you need to start your AI-assisted coding journey. Remember, every expert was once a beginner, and with AI as your coding partner, you can learn and grow faster than ever before.

Remember:

  • AI doesn't replace your creativity – it amplifies it

  • Every suggestion is a learning opportunity

  • Mistakes are part of the journey

  • The community is here to help

You're not just learning to code with AI – you're learning about the future of software development. In a few months, you'll wonder how you ever coded without it. The developers who embrace AI assistance today will be the leaders of tomorrow.

Happy coding! 🚀