Guides
Step-by-step tutorials for AI coding tools. Hands-on walkthroughs tested on real production code.
Step-by-step tutorials for AI coding tools. Hands-on walkthroughs tested on real production code.
Most AI-assisted coding mistakes aren't bad prompts — they're suggestions that looked right and weren't. Five concrete checks that catch the failures before they ship.
AI-generated code is generally not copyrightable—but once you accept a suggestion, you own it. Here's what that means legally, operationally, and when something breaks.
AI review tools catch real bugs consistently but miss architecture, intent, and taste. Here's how to use the pair-review workflow without letting AI comments become background noise.
How to structure commits, branches, and attribution when an AI agent shares your keyboard — and the one habit that prevents merge-conflict headaches.
Most juniors in 2026 arrive with AI tools already in hand. The risk is they never build the foundations those tools are hiding. Here is a curriculum that uses AI without letting it become a crutch.
Strong type systems give AI a faster feedback loop than unit tests. Here's why TypeScript strict, Rust, and Haskell make AI more reliable—and where looser languages let mistakes slip through.
AI handles the mechanical parts of commit messages well. The part it misses is explaining why a change happened — and that gap matters more than most people expect.
Three threat axes in AI coding tools—log exfiltration, tool-call leaks, and supply-chain poisoning—and the mitigations that actually reduce risk.
A breakdown of 2026 token prices across Claude, GPT-5, and open source models — and where autonomous coding sessions actually spend the money.
Long sessions, paste-heavy work, and verbose tool output push context windows to their limits. Here are three compression strategies, what fidelity each one sacrifices, and a workflow that sidesteps the problem entirely.
AI handles the mechanical steps of debugging well. Root cause analysis is the step it skips. Here's how to force it not to.
AI coding tools hallucinate in four distinct patterns. Knowing which kind you're looking at determines whether the toolchain catches it or a human must.
Most AI-in-CI integrations create noise faster than they create signal. PR triage works. Auto-review mostly doesn't. Here's where the tradeoffs land in practice.
Most developers default to the most expensive model for every task. A four-axis framework—cost, intelligence, speed, context—shows when that's right and when it's 10x overpay.
Three pair-programming patterns for working with AI—junior dev, rubber duck, second senior—and the one to avoid: letting the model lead.
AI coding tools are fast in both directions. The problem is that fast exploration and fast shipping require completely different operating modes—and conflating them is how spike code ends up in production.
AI tools thrive on greenfield work. On legacy code with custom DSLs, undocumented invariants, and decade-old conventions, the instinct to modernize becomes a liability.
When AI handles tests and implementation together, it can satisfy itself without testing real behavior. Here's how to assign the work to get actual coverage.
Every Aider turn re-sends the full chat history. After 30+ turns that history can cost more than the code change itself. Here is how to control it.
Aider's voice mode lets you speak prompts instead of typing them, using Whisper for transcription. Here's when it speeds up the loop and when it quietly wrecks it.
Aider uses a cheap secondary model for commit messages, summaries, and name suggestions. Here's what that flag does, when it helps, and when to turn it off.
Opus 4.7's 1M-token context window is genuinely useful for large cross-file refactors and multi-document synthesis — but most tasks don't need it, and paying for it blindly is expensive.
The anthropic-skills pack ships eight skills with Claude Code. Four handle documents. This is what triggers each one, where each earns its keep, and where you should reach for something else.
The brainstorming skill forces a design-first workflow in Claude Code: one question at a time, proposals with tradeoffs, and a committed spec before any code runs.
Build a focused MCP server from scratch using the TypeScript SDK. Covers protocol basics, a real git-log-search example, wiring into Claude Code, and the iteration loop that makes debugging fast.
Opus costs roughly 5x Sonnet and 20x Haiku. Routing tasks to the right model is the single highest-leverage cost decision in a Claude Code workflow.
Claude Code's default failure mode is guessing at symptoms. The systematic-debugging skill enforces root-cause-first debugging: no fix until the cause is identified.
Claude Code's /fast toggle switches to Opus 4.6 mid-session. Here's which tasks benefit from the faster model and which ones warrant staying on 4.7.
Step-by-step install, first-run auth, and a concrete starting prompt — plus the five mistakes that make beginners give up on Claude Code before it clicks.
PostToolUse fires after every Claude Code tool call and can inject context, run formatters, and build audit trails — without blocking the agent mid-task.
SessionStart fires once before any tool calls, letting you inject real-time context—git state, sprint focus, oncall rotation—directly into the model's system prompt for that session.
Claude Code hooks run shell commands at deterministic lifecycle points. This guide covers all five events, the JSON contracts each one uses, and which hooks can block versus only observe.
Claude Code runs both as a terminal CLI and as IDE extensions for VS Code and JetBrains. The experience differs in ways that matter: here's which surface to use and when.
Starting Claude Code at the wrong directory in a monorepo costs you context. Here's how to manage session roots, per-package CLAUDE.md files, and cross-package edits without losing your mind.
MCP connects Claude Code to external tools without bundling everything into the agent. Here's how to configure servers, understand the tool-naming convention, and debug a server that won't show up.
Postgres, Notion, and Linear MCP servers extend Claude Code with live data access. Each has a clear use case and a specific gotcha that bites you if you skip the setup details.
Native tools and MCP tools look identical to the model. Understanding the lifecycle differences—and what happens when the tool list grows too large—makes MCP integrations reliable.
Claude Code's output token ceiling—not your context window—is what cuts long generations short. Here's how to spot truncation early and structure requests to stay under the limit.
Claude Code's three permission modes gate different levels of agent autonomy. Getting the mode wrong costs you either hours of unnecessary round-trips or a destructive operation you can't undo.
Claude Code's plan mode produces a written proposal with no file edits or commands. Here's when to use it, how to refine plans through dialogue, and when to skip it.
Plugin and skill are related but not interchangeable. A plugin is the installable package; a skill is the unit of behavior inside it. Getting the distinction right changes how you build, version, and share reusable workflows.
Claude Code's prompt caching has a 5-minute TTL. Understanding that clock shapes how you structure sessions and which habits quietly drain your budget.
Claude Code stores conversation history locally. Here's how to resume sessions with --continue and session IDs, when it works well, when it doesn't, and one habit that makes re-entry fast.
Claude Code's orchestrator routes tasks to skills by reading their descriptions. Here's exactly how that matching works, why competing descriptions cause routing failures, and how to fix them.
Claude Code reads a skill's description field to decide when to invoke it. A vague description means the skill never triggers; an overly broad one fires on everything. Here's how to write one that routes correctly.
Claude Code has two extension points: skills run inside the model's loop, hooks run in the harness around it. Knowing which to reach for determines whether your automation is reliable or just suggestive.
Skills shape how Claude Code thinks and works. MCP servers give it new tools to call. Confusing the two leads to building the wrong thing.
Claude Code skills are dynamically loaded behavior packages — only invoked when relevant. Here's why that matters and how the distribution model actually works.
Claude Code's built-in slash commands, user-defined skill triggers, and keybindings.json are all configurable — most users never touch them.
Claude Code streams tokens as they're generated, so you see output in under a second instead of waiting 30 seconds for silence. Here's when that trade is worth it and when it isn't.
Subagents give Claude Code an isolated context window for grunt work. Here's when that matters, when parallel dispatch pays off, and when it backfires.
Superpowers is a community skill pack for Claude Code that enforces a consistent workflow: brainstorm, plan, execute, review. Here's what each skill does and where the suite draws its own boundary.
Claude Code skips the failing-test step without enforcement. The TDD skill closes that gap by requiring a visible failing run before implementation is allowed to start.
A git-tracked shared skill library prevents duplicate work and knowledge loss when engineers leave. This guide covers repo structure, naming conventions, deprecation process, and CLAUDE.md as a skill index.
Extended thinking lets Claude reason silently before answering — useful for hard problems, wasteful on simple ones. Here's how to tell the difference and read the trace when things go sideways.
Claude Code's verification-before-completion skill enforces a simple rule: every 'done' claim must be backed by real output. No test runs summarized from memory. No lint passes assumed.
Run the same multi-file refactor through both tools and the ergonomic gap becomes concrete: Cursor wins on inline completion flow; Claude Code wins on coordinated multi-file changes. The real question is where each fits in your day.
Claude Code skills let you encode repeatable workflows as prompt-driven commands. This guide walks through writing a real skill end to end—frontmatter, body, install, and debugging.
How to use Claude Code's writing-plans and executing-plans skills together — from a vague spec to a checkboxed plan with exact file paths, complete code, and a clean execution run.
Cline's per-category auto-approve settings can eliminate constant confirmation clicks, but each category has a different blast radius. Here's how to set boundaries that speed things up without creating cleanup work.
Cline's Computer Use feature lets the agent drive a real browser to verify its own UI edits. Here's what it does well, what it breaks on, and when the round-trip cost isn't worth it.
Cline auto-creates checkpoints between major steps of a task. Roll back to any of them without unwinding your git history or restarting from scratch.
Cline stores every completed task on disk. Here is how to re-open past tasks, replay them against new branches, use them as model-version smoke tests, and what to purge before that history becomes a liability.
Codex CLI is OpenAI's official AI coding agent for the terminal. This guide covers both install paths, the two auth modes, and the sandboxed shell that makes it safer than it looks by default.
Codex CLI can review a diff or file and return categorized findings before a human ever sees your PR. Here's how to use it, what to trust, and what to ignore.
How to install Codex in a GitHub Actions runner, auth safely, scope the agent to one branch, cap per-run costs, and recover when the agent misbehaves.
Both run in your terminal, read your codebase, and execute autonomous tasks. What's different is how GPT-family and Claude-family models approach the same problem — and those differences are visible and reproducible.
Codex's reasoning_effort parameter changes how much the model thinks before responding. Here is how to read the tradeoffs and pick the right level for the task at hand.
Copilot Edits shows a unified diff across every file before you apply. Most users skip straight to Apply All and miss the selective-accept workflow that makes multi-file edits actually safe.
Composer operates across files simultaneously; getting useful diffs requires deliberate file selection, precise @-references, and a followup loop for the parts that miss.
Cursor Notepad lets you store reusable text—project conventions, prompt templates, design decisions—inside the editor and reference it from chat with @Notepad. Most people never find it.
Most days one AI coding tool is enough. This is about the narrower case where running three in parallel — each doing the thing it was built for — actually earns its cognitive overhead.
Switching AI coding tools costs more than a license fee. Muscle memory, rules files, MCP configs, and team norms all reset with every switch — here is how to evaluate whether the cost is worth paying.
Windsurf has two separate behavior controls: .windsurfrules persists across every session forever, while Cascade memory only lasts for the current session. Mixing them up causes subtle, confusing drift.
Zed's inline assistant turns selected code into context with one chord and a plain-English prompt — no panel switching, no pasting. Here's how it works and when to use it.
Zed lets you place cursors at dozens of callsites simultaneously, then invoke the inline AI assistant to transform each one with local context — a mechanical refactor pattern that Cursor's agent loop can't replicate.
Aider's git-native approach makes it better than IDE-based tools for large refactors that span dozens of files. Here's the workflow I use.
Cline supports Ollama as a model provider, which means a fully offline coding agent on your laptop. The setup is straightforward. The quality gap is large. Here's how to think about both.
A single CONVENTIONS.md file in your repo, loaded into every Aider session, drops the rate of style-mismatch fixes from common to rare. Here's what to put in it.
Zed's Channels feature lets two engineers share an editor in real time with shared AI context. The setup is straightforward; the social patterns take some getting used to.
Architect mode runs two model calls per turn: a strong model plans, a cheaper model edits. The math works for some tasks and not others. Here's the decision rule.
Cursor reads .cursorrules from the project root by default. For repos with a TypeScript frontend and a Python backend, that's the wrong granularity. Here's how to scope rules per directory.
Zed extensions run in WebAssembly, can't access the network freely, and are written in Rust. The constraint produces a different ecosystem and a different set of tradeoffs.
Cursor will write code in the average style of its training data. Cursor Rules let you override that with your project's specific conventions, framework choices, and naming standards.
Copilot's auto-review feature misses real bugs and flags style nits. Here's a three-pass workflow that uses Copilot for what it's good at and humans for what it isn't.
Windsurf's Cascade defaults assume loose TypeScript. With strict mode on, you'll get type errors on roughly half of suggestions unless you adjust the model context.
Cline lets you wire up multiple model providers and route between them. Here's the config that survived a month of real use, including the OpenRouter fallback that saved a deadline.
Aider's --subtree-only flag is necessary but not sufficient. Here's the four-file pattern for keeping aider focused on one package while still letting it see shared types.
Asking the AI 'why is this broken' produces plausible-but-wrong answers. A four-step structure produces useful ones. Here's the structure and what each step actually does.
Cursor's indexing scales surprisingly well, but a 1M-line repo will hit limits without tuning. Here's the configuration that makes it usable.
Aider's auto-commit feature can run pre-commit hooks. Configured well, this means the linter rejects bad suggestions before they reach your branch. Configured badly, it loops forever.
Copilot Enterprise's data residency story is more nuanced than the marketing pages suggest. Here's what GitHub commits to in the contract versus what they hint at on the website.
Most AI tooling guides treat frontend and backend as separate sessions. Windsurf's Cascade can hold both in one context. Here's why that matters and how to set it up.
Inheriting a 10-year-old codebase is its own kind of work. AI tools won't fix the legacy, but they can dramatically speed up the understanding-what-this-does phase.
Cascade can run autonomous tasks for half an hour. The reliability comes from prompt structure, not luck. Here's the structure that keeps it from drifting.
Cursor doesn't have a JetBrains version. Here are the actual options for getting comparable AI capabilities in IntelliJ, GoLand, or PyCharm — with the tradeoffs each one has.
Cursor BugBot reviews PRs automatically. The hit rate on real bugs is real but uneven. Here's where it justifies the cost.
Aider's edit format is well-suited to test-driven development. Write the failing test, ask aider to make it pass, review the diff. The structure produces better code than letting aider write both.
Free-form prompting feels like pair programming and often isn't. A four-role structure produces better outcomes and is closer to how human pairing actually works.
Cursor's YOLO mode auto-accepts the agent's edits and runs commands without prompting. It's not as reckless as the name suggests, if you set up the safety net first.
Cline can burn through API credits faster than expected. Anthropic's spend limits, Cline's per-task budget, and OpenRouter's usage caps each fail in different ways. Here's the configuration that actually contains spend.
Terraform is repetitive, well-documented, and pattern-heavy — exactly the kind of work AI tools handle well. The caveat is that the cost of a wrong terraform apply is unusual.
AI-generated PR reviews can catch real issues or flood your team with low-signal noise. The difference is in what you ask the AI to do and how you wire it into the human review.
AI tools write plausible SQL fast. Plausible SQL is occasionally correct, often subtly wrong, and dangerous when the wrong query touches production. Here's how to use AI for SQL safely.
Knowledge Bases let Copilot ground answers in your team's docs. Setup is easy; the real questions are about what content to include and how to keep it current.
Cursor's defaults assume mouse interaction in several places. Customizing 12 keybindings produces a fully keyboard-driven workflow.
Multibuffers let you edit selections from many files in one buffer. Combined with Zed's AI, this is a powerful refactoring primitive that few users discover.
When Cursor's suggestions are off, the cause is usually one of six things. Here's the checklist that gets you back on track.
Aider's auto-test feature wraps any shell command. For projects with custom Makefile-driven builds, the integration is straightforward but has gotchas.
Storybook stories are repetitive but high-value. Cursor handles them well with the right setup.
Copilot Extensions add capabilities through external services. Some are useful; many add more friction than value.