Claude Code, part 2: making the leap without shipping slop

Hard-won advice from the trenches on how to get real productivity gains from Claude Code without vibecoding

Tom coaches a robot basketball team

This article is oriented toward developers who are ready to try making the shift to using Claude Code, rather than typing all or most of the code themselves.

OK, ready? Here's the main idea:

TL;DR: you're a software architect now.

You have a dev team now, if you didn't already! You get to make decisions, and stop worrying about semicolons!

Delegating can take getting used to. For myself, I was already a software architect and CEO leading a small team when Claude Code's ability hit an inflection point in late 2025. So I think of Claude Code as an extension of that team, able to handle surprisingly advanced tasks, but always under the supervision of human beings who know what is wanted and why.

As the non-coding responsibilities of my job ramped up, I found myself repeating the mantra: stop writing code! Keep thinking about it! Keep reviewing it! That same mantra works for managing Claude Code.

Sure, but how do I do that and not ship slop?

OK, that's enough for grand pronouncements. Here's some practical, lived advice for faster development with AI, based on experiences with our own projects:

First Steps

To get started, install Claude Code, launch the terminal, cd to your project and run the claude command.

 

Now: stop typing in vscode! Ask Claude Code to do it!

Push yourself on this at first. Sometimes you will type things that are suspiciously code-like when talking to Claude Code, but Claude Code effectively unlocks English as a high level programming language.

When needed, use control-g to open a text editor to edit your prompt. You can create a more detailed plan this way.

Tell Claude Code to write tests (better yet: write your own), and use your own eyeballs to make sure the tests are relevant. Ask Claude Code to keep right on iterating until your tests pass.

Paste screenshots right into the CLI with control-v (yes control, not command, not shift-control) and refer to them in your prompts.

If you have to shut down your Claude Code terminal window, you can get back to your chat later with: claude --resume

Use control-o to toggle to "verbose mode" and see more of what's going on. In my opinion, it should be even more verbose, but it's an improvement. However, one quirk: I often have to toggle back again to see that it's finished.

Stay in the loop

Claude Code will ask your permission to make changes. Allow Claude Code to do most things, but don't let it touch git. Reserve that privilege for yourself, and do frequent diffs and commits and pushes. This is where you keep your own eyes on the quality of what's going in.

Of course, you should open PRs for review by coworkers as well.

Helping Claude Code learn

If you keep telling Claude Code the same things, create a CLAUDE.md file in the project and tell it those things once. If you use other AI products, create AGENTS.md too and keep them in sync. Unfortunately, Claude Code doesn't automatically look at AGENTS.md, at least not yet.

Your past command history is a gold mine. Use the up arrow to navigate through your past prompts and mine them for CLAUDE.md material.

If you keep telling Claude Code to do the same thing across multiple projects, or your CLAUDE.md is taking up too much of the context window, create skills. See below for everything you need to know.

If Claude Code keeps generating the same complex command lines, tell it to create a ./claude-tools folder in the project. Ask Claude Code to keep its tools there to avoid reinventing them. Tell Claude Code to mention them in CLAUDE.md.

To address UI bugs and discrepancies, ask Claude Code to install and use the playwright module. This gives Claude Code "hands and eyes" to manipulate a virtual web browser.

Recently, when I migrated a project from Apostrophe 2.x to Apostrophe 4.x, I had almost no problems on the back end despite a big change in syntax. Most of my manual effort went into walking through the site finding CSS problems.

With playwright, I am able to ask Claude Code to iterate on its own through the pages of a website and even compare it to the existing production site. Playwright has access to the browser dev console too.

This is another area where you'll see Claude Code make up complicated command lines and make repeated bash scripting mistakes. So, see above re: ./claude-tools.

In general... get Claude Code into an iterative loop. Make it "grind" for you.

When you want to tell Claude Code certain things in EVERY project

The simplest way to do that is by creating a "top-level" CLAUDE.md file. You can do that by creating a ~/.claude/CLAUDE.md file. It works just like a regular CLAUDE.md file in an individual project folder: Claude Code always reads it before starting work.

However, you don't want CLAUDE.md files to get too big. If you start using up too much of Claude's "context" with advice that is only needed part of the time, the quality of the generated code will suffer. You will burn through your quota faster too. That's when it's time to write a Claude Skill.

Creating Skills

When your CLAUDE.md files are becoming too large, it's time to think about writing Claude Skills (aka "Agent Skills") for the advice the AI doesn't need 100% of the time. This is a lot simpler than it sounds:

1. Create a skill file for each distinct topic, with a name like this:

 ~/.claude/skills/apostrophecms-migration/SKILL.md

(Note that each skill gets its own subdirectory. "apostrophecms-migration" is just an example.)

2. The skill is a Markdown file, much like CLAUDE.md. However it must start with "front matter" giving it a name and a description. The actual guidance comes after the front matter, like this:

---
name: Apostrophe 2.x to 4.x migration
description: Effective patterns for migrating Apostrophe 2.x projects to Apostrophe 4.x
---

# Learn about migration

Always reference the official migration guide:

https://apostrophecms.com/docs/guide/migration/upgrading.html

When migrating, use `web_fetch` to retrieve the latest documentation
and follow those guidelines alongside these patterns.

# Create checkpoint and migration branches

Next, start by creating a `pre-a4` branch representing the original code
before the migration. Then create an `a4` branch to work on the migration.

# Common pitfalls

* Remember that in A2, module names are plural but the
"type" property (and the "name" option) are singular, while in
A4 both are singular for simplicity. Rename modules
accordingly. Also don't forget to change core helper calls
like `apos.images.first` to `apos.image.first`, etc.
* Change `shortName` by adding `-a4`. This will prevent a
conflict between the old and new databases during
development. Let the developer worry about content 
migration.

This is the important part: the description must be plain English explaining when to use it. It must be short, and it must be enough information to decide WHEN to read the rest of the skill.

Claude uses this to avoid wasting context on skills that aren't relevant right now.

After the front matter though, it's just markdown! You can copy and paste straight from past prompts, or remove material from CLAUDE.md.

There's more you can do in a skill, such as providing sample scripts. So far, I haven't felt the need.

When Claude isn't cooperating

If Claude Code seems to "get dumber," try shutting off the million-token context window with an environment variable:

# in your .bashrc file
export CLAUDE_CODE_DISABLE_1M_CONTEXT=1

Then restart claude in a new terminal window.

Things are changing fast out there, but as of 2026-04-09, I'm seeing a lot of "me too" responses to this advice.

In Conclusion

Claude Code is there to take away the drudgery and allow you to focus on your real talent: deciding exactly what to build, and how. As well as, yes, reviewing code and demanding changes from the AI until that code is well-factored, functional, bug-free and thoroughly unit- and functional-tested.

Your responsibility to make the right decisions and review code quality hasn't gone away. But the need to track down syntax errors for ten hours a day definitely has. And that makes a big difference.

But at some point, you may grow impatient with approving everything Claude Code wants to do. There's an alternative workflow that represents a different compromise between safety and productivity: put Claude Code in a box, and let it code its heart out inside the box. To learn more about that technique, see my previous article.

Pricing