GOLIVE
Back to blog

Claude Code: 5 Mistakes Web Developers Keep Making

Claude Code is powerful, but most web developers miss the features that actually make a difference. Here's what they're really getting wrong.

CLAUDE.md, sub-agents, custom commands, permissions: web developers using Claude Code without these features are missing the point. A complete walkthrough.

Over the past few months, Claude Code has become a daily tool for many web developers. Agentic, able to read your entire codebase, run commands, and self-correct in a loop, it genuinely sits in a different category from anything we had before. Yet the majority of web developers who pick it up only use about 30% of its real potential: they send prompts, glance at the generated code, and move on. This guide is here to fix that.

  • 🔑 **Set up CLAUDE.md on day one**: it acts as your persistent memory across sessions.
  • ⚡ **Custom commands** standardize your repetitive workflows with zero extra effort.
  • 🚀 **Parallel sub-agents** cut execution time on complex tasks dramatically.
  • 💡 **Claude Code hits the model directly**, with no wrapper layer, which changes the accuracy of every response.

What Claude Code does that other tools don't

The fundamental distinction to grasp: Claude Code is not a copilot, it's an agent. That difference is more than semantics. A copilot like GitHub Copilot or Cursor's classic mode completes your code line by line. Claude Code receives an instruction, plans, creates files, runs terminal commands, checks the result, and loops back if something is off.

This is what's called the "agentic loop": build, verify, fix, without waiting for your approval at every step. For a web developer managing complex projects with multiple modules, it's a genuine paradigm shift.

Another point developers often discover too late: Claude Code accesses Claude Sonnet directly, bypassing the wrapper layer of products like Cursor. In practice, there's no proprietary system prompt eating up context window space and skewing responses. You get the raw model with access to one million context tokens. On a large repo, that changes everything.

Claude Code can also spin up multiple sub-agents in parallel. While one agent analyzes your landing page, another audits your routing system and a third reviews the documentation. All three finish at the same time. That's structurally different from a tool that processes tasks sequentially.

CLAUDE.md: the feature developers underestimate

The number-one problem with AI tools: you restart a conversation and you're back to square one. Claude Code solves this with CLAUDE.md.

This text file, placed at the root of your project, is read by Claude Code at the start of every session. You put everything it needs to know in there: available project commands, the coding conventions you follow, the overall architecture, absolute rules (never use default exports except for Next.js pages, always use named exports, etc.).

The right approach: keep this file short and precise. Claude Code will read your other files anyway to absorb the codebase. CLAUDE.md should contain what isn't obvious from the code itself: intentions, constraints, architecture decisions.

If you're starting on an existing project, type /init in Claude Code. It analyzes the codebase and generates a starter CLAUDE.md. You refine it from there. If you use # in the chat to correct Claude Code, it offers to save the rule directly into CLAUDE.md or into your global user memory. That's the fastest way to capitalize on your corrections.

For projects with multiple distinct modules, you can have one CLAUDE.md per folder. Every agent working on that module will automatically load the right instructions.

This approach ties directly into what we discuss in our article on how developers use Claude Code: advanced users don't improvise their prompts, they structure their context.

Custom commands: stop repeating the same prompts

Custom commands are the equivalent of your NPM scripts, but for your Claude Code workflow. You create a Markdown file in your project's .claude/commands/ directory. The filename becomes the command name. The file content is the prompt.

A concrete example: you have a standard process for adding a component to your design system. Create a file called new-component.md with every step: create the component file following the Button.tsx example, create the associated test file, update the export index, generate the MDX documentation. Now type /new-component ComponentName and Claude Code executes all of it, in order, with the argument you passed in.

You can reference other files in your commands using @path/to/file. This forces Claude Code to use an existing file as a template rather than inventing one. On projects where consistency is critical, this is essential.

Commands come in two scopes: project (in .claude/commands/, committed with the repo, available to the whole team) and user (in your personal Claude folder, available across all your projects). Generic commands like /review-pr or /create-pr go in user scope. Project-specific commands go in the repo.

This connects directly to what we describe in our analysis of AI agents versus developers: the value doesn't come from the model alone, but from how you structure its role within your workflow.

Permissions and configuration: stop working in a degraded mode

By default, Claude Code asks for confirmation before every file edit and every command. During active development, that quickly becomes paralyzing.

Proper configuration lives in .claude/settings.json (committed to the repo, shared with the team) and .claude/settings.local.json (gitignored, for your personal preferences). Here's what you should set up:

The defaultMode: switch to acceptEdits so Claude Code can modify files without asking each time, while still prompting you for system commands. It's the right balance between control and flow.

The allow and deny lists: explicitly list authorized commands (pnpm, git, gh, ls) and forbidden ones. Claude Code won't be able to run anything outside the allow list or anything on the deny list. On a production project, it's a simple but effective safeguard.

MCP (Model Context Protocol): this is what lets you connect Claude Code to external services. Context7 for up-to-date documentation on the libraries you use (essential for recent Next.js or React projects), Notion, Slack, GitHub. Install them with claude mcp add and add them to settings.json so the whole team benefits.

Should you really switch to Claude Code in 2026?

This question keeps coming up from developers settled into their Cursor habits. Here are the facts, no sugarcoating.

Claude Code is superior for long agentic tasks: refactoring an entire module, adding a feature that touches multiple files, migrating dependencies. Direct model access and the one-million-token context window make the difference on these tasks.

Cursor still has an edge on native IDE integration, especially for inline suggestions while you type. If you code a lot by hand and use AI for on-the-fly assistance, Cursor remains relevant.

Pricing is a real consideration. The Claude Pro subscription at $20 per month is enough for moderate daily use. If you're on it several hours a day with heavy prompts, the $100 plan becomes necessary. Using the API without a subscription gets expensive fast.

The real question isn't "Cursor or Claude Code" but "am I actually using the agentic mode, or am I treating it like a fancy chatbot?" If the answer is the latter, you're not leveraging the tool.

For teams that outsource part of their development, the impact is already visible. Our clients who combine offshore developers and Claude Code see a significant shift in delivery speed on repetitive tasks and refactoring work. It's not a replacement for developers, it's a productivity multiplier for developers who know how to configure it properly.

Vincent Roye
Vincent Roye
CEO & Founder, GoLive Software

French engineer based in Vietnam since 2014. He leads a team of senior full-stack developers and has helped startups and SMEs structure their tech teams for over 11 years.