Skip to main content
Back to all posts
Claude Code

The Claude Code Playbook: How We Ship in Hours What Used to Take Weeks

A field manual for using Claude Code to go from ambiguous requirement to shipped production code. Includes the patterns we use every day at Sprintt — subagents, plans, memory, hooks, and the one rule that matters more than all of them.

Ricardo Ramirez

Ricardo Ramirez

Founder · Sprintt

April 16, 202612 min read
Claude CodeAI DevelopmentAgentic Coding

Claude Code is the tool most product builders are sleeping on.

Not because they don't know about it — everyone has heard of it by now. It's because most people are using it like a slightly smarter autocomplete. They ask it to write a function, they accept the diff, they move on. And then they wonder why they're not seeing the 10x productivity gain everyone talks about.

The gain isn't from writing code faster. The gain is from delegating entire units of work — research, planning, implementation, verification — to an agent that operates in a real shell, with real tools, against your real codebase, over hours or days of work. Claude Code isn't a code completion tool. It's a coworker that never sleeps and never forgets to run the tests.

This is the playbook we use at Sprintt. It is the difference between a week of work and an afternoon.

The one rule that matters more than all the others

Before any of the tactics below matter, there is a single rule that separates the people shipping real work with Claude Code from the people producing slop:

The quality of your output is a function of the quality of your context.

Every time a Claude Code session goes sideways — wrong framework chosen, wrong pattern applied, bug fix that misses the actual bug — you can trace it back to missing context. The agent didn't have the relevant files. It didn't have the style guide. It didn't have the prior conversation about why that approach was rejected. It didn't have the failing test output.

When I watch engineers use Claude Code badly, they are almost always under-investing in the setup. They throw a vague ask at it, hope for the best, and then blame the tool when it produces generic code.

The people shipping great work do the opposite: they spend the first 90 seconds of every task loading context — @path/to/file, explicit links, a paragraph of intent, an example of the pattern they want copied. Then the next hour runs itself.

If you remember nothing else from this post, remember that.

The mental model: Claude Code is a subordinate engineer, not a tool

Stop thinking of Claude Code as a code generator. Start thinking of it as a junior-to-mid engineer you just hired, who is extremely capable but new to your codebase and your team.

With a junior engineer, you don't expect them to:

  • Understand your codebase on day one without being shown the key files
  • Know your team's conventions without being told
  • Make architectural decisions without a clear north star
  • Take risky, irreversible actions without checking in

But you do expect them to:

  • Read the code before changing it
  • Run the tests before reporting done
  • Ask clarifying questions when the ask is ambiguous
  • Explain what they did, not just commit it

Claude Code behaves like a great subordinate when you treat it like one. Brief it, scope it, let it run, review the work. Nothing more complicated than that.

The three modes I run Claude Code in

Everything I do in Claude Code falls into one of three modes. Being explicit about which mode I'm in — to myself and to the agent — is the second-biggest lever after context.

1. Research mode

"Go figure out how X works."

Research mode is when I don't know enough to ask a specific question yet. I need the agent to read the codebase, summarize the current state, identify the actual problem, and come back with a recommendation.

I don't want it writing code yet. I want it reading and thinking.

Example prompts I actually use:

  • "Audit how we handle rate limiting across the API routes. Give me a short report on: where limits are enforced, where they're bypassed, and the top 3 risks. Don't change code yet."
  • "Read through every file that imports useAuth. Tell me how many distinct calling patterns exist and which ones look wrong. Under 300 words."

The key is the "don't change code yet" part. Agents are biased toward action. Explicitly telling them to stay in research keeps them honest.

2. Plan mode

"I know what I want. Write me the plan to do it."

Plan mode is when I have a clear goal but want the agent to think through the sequence before touching anything. I use this for any change that will touch more than two or three files.

Claude Code has a built-in /plan — and for larger changes, I'll sometimes send work to a separate Plan agent. The output is always the same: a numbered sequence of steps, the files that will change, the tests that need to pass, and the rollback plan if something goes wrong.

The plan is the contract. If the plan is right, the execution is almost mechanical. If the plan is wrong, no amount of brilliant execution will save you.

3. Execute mode

"Do it."

Execute mode is when the plan is agreed and the agent just needs to run. This is where the 10x feeling lives — you brief the work, step away for twenty minutes, and come back to a fully implemented, tested, and documented change.

But you only get execute-mode magic if you earned it in research and plan modes.

The patterns that actually matter

Below are the Claude Code patterns we use every day at Sprintt. These aren't novelty features — they're the ones we reach for on real client work.

Pattern 1: Load context with @, always

Every session starts the same way: I drop three or four @file references into the first message. The files I'd look at first if I were doing the work myself.

This is the single highest-leverage habit in Claude Code. Agents can find files themselves, but they burn context on the search, make suboptimal choices about what to read, and sometimes miss the right file entirely. You already know what the right files are. Skip the search.

If I'm fixing a bug in a payments flow, my opening message looks like:

"Bug: when a user retries a failed payment, the charge creates a duplicate ledger entry. Relevant files: @src/api/payments/retry.ts, @src/services/ledger.ts, @tests/payments/retry.test.ts. Reproduce, diagnose, and fix. Run the test suite and confirm green before reporting done."

Everything the agent needs is already on the table. No exploration tax.

Pattern 2: Use subagents for anything that will wreck your context

Claude Code's agent system (the Task tool, with specialized subagent types) is the most underused feature in the product. People don't use it because it feels like extra setup. That instinct is wrong.

Any task that will produce a lot of intermediate output — reading 40 files, running a long grep, parsing a complex build log — should go to a subagent. The subagent does the work, chews through the noise, and returns a short summary. Your main session stays clean.

Concrete example: I was recently debugging an intermittent test failure. The failing log was 8,000 lines. If I'd piped that into the main agent, it would have consumed most of the context window. Instead, I spawned an Explore subagent: "Read the log at @test-output.log. Find the three distinct failure modes and summarize each in one sentence. Under 200 words." That's it. The main session got 200 words, not 8,000 lines.

The rule: if a step will produce more noise than signal, delegate it.

Pattern 3: Skills are your team's codified expertise

Claude skills are the answer to a question that used to be impossible: "How do I make sure every engagement we run uses our best practices without having to brief every agent manually?"

Skills are small, composable instructions that an agent can invoke by name. At Sprintt, we have skills for: writing blog posts in our voice, generating client proposals, running financial reviews, doing security reviews, and a dozen other recurring tasks. Every skill is a file. Every skill is versioned. Every skill is reviewed.

When a Claude Code session needs to do one of those jobs, it invokes the skill and gets our playbook — not whatever the base model would have done on its own.

If you are running a team, the right question is not "should we use Claude Code?" — that answer is yes. The right question is "what are the five skills that codify our house style, and who is writing them this quarter?"

Pattern 4: Hooks close the loop on quality

Hooks are shell commands the harness runs automatically in response to events — after a file is edited, before a command is run, when a session starts. They are how you enforce standards without relying on the agent to remember.

Our default hooks for a TypeScript project:

  • PostToolUse:Edit runs prettier --write on the edited file
  • PostToolUse:Edit also runs the linter and surfaces errors back to the agent so it fixes them automatically
  • A pre-commit hook runs the full type check and blocks if it fails
  • A session-stop hook runs the test suite and alerts if anything is red

The agent can't forget to format. It can't skip the linter. It can't ship broken types and walk away. The harness enforces all of it. This is how you get the consistency of a disciplined team without ever having to remind anyone.

Pattern 5: Memory for anything that will come up again

Claude Code's memory system lets you store durable notes that persist across sessions. Most people use it as a personal scratchpad. That's a waste.

The highest-leverage use of memory is capturing the reasons behind decisions — the kind of context that would otherwise evaporate between sessions and force you to re-litigate the same debate every time.

At Sprintt, we save memories for:

  • Stack and config decisions: "We use .mjs for Next.js config, not .ts — support landed in 15 but we're on 14."
  • Feedback the founder has given repeatedly: "No monospace fonts on the Sprintt site; use Inter with tabular-nums."
  • Client-specific context: "For client X, all PRs require a Jira ticket in the title — enforcement is in the CI."

When a new session starts, that context is already loaded. The agent doesn't ask the same question twice. It doesn't drift from the house style.

Pattern 6: MCP servers for the things your codebase doesn't know

MCP servers extend Claude Code's world beyond your filesystem. Linear, GitHub, Slack, your internal docs, your database — any system you want the agent to reach into becomes an MCP connection.

The practical impact: you stop copying and pasting between tools. Instead of "let me grab this Linear ticket and paste it in," you say "pull LIN-482 and implement it." The agent reads the ticket, reads the linked files, does the work, and pushes the PR. End to end.

MCP isn't a future feature. It's the table stakes for agentic workflows right now. If your agent can't reach your tracker, your docs, and your deployment system, you are leaving most of the value on the table.

The workflow we actually run

Here is the end-to-end workflow we run for a typical Sprintt engineering task. It looks mechanical. It is. That's the point.

  1. Brief the session with context. @files for the relevant code, a one-paragraph statement of intent, any non-obvious constraints.
  2. Demand a plan. "Before you change anything, give me a numbered plan. Call out any ambiguity."
  3. Approve or adjust the plan. Five minutes of my time. Saves hours of the agent's time.
  4. Execute with hooks. Let the agent run. Hooks catch format, lint, and type drift automatically.
  5. Review the diff. Not the agent's summary — the diff. Summaries describe intent; diffs describe reality. Always verify.
  6. Capture what was learned. If a surprise came up, save it to memory or update a skill. The next session benefits.

Six steps. Every task. Every engineer. Every time. This is the boring answer to "how do you get 10x out of an AI-native team" — process and discipline, applied relentlessly.

Common failure modes and how to avoid them

Failure mode: "It keeps making the wrong choice." You didn't give it the style guide. You didn't point to the existing pattern. You didn't say which of three valid approaches is the house preference. Fix: @ the exemplar file, or write a skill.

Failure mode: "It says it's done but the tests are failing." You didn't tell it to run the tests before reporting done. Fix: PostToolUse:Edit hook that runs tests on save, or an explicit instruction: "Run the test suite and confirm green before declaring done."

Failure mode: "The context is so long I can't tell what's going on." You ran too much work in one session. Fix: subagents for noisy subtasks. Reserve the main session for decisions.

Failure mode: "It rewrote half the file when I asked for a small change." You gave it an unscoped ask. Fix: "Change only the function handleRetry. Do not modify anything else. Explain why the change is minimal."

Failure mode: "I'm spending more time reviewing than coding." You are reviewing at the wrong altitude. Fix: review the plan, not the diff. If the plan is right, the diff is almost always right. If the plan is wrong, the diff is beside the point.

The uncomfortable truth

The engineers who struggle with Claude Code tend to share one trait: they want it to be easier than writing code themselves. It isn't. It's faster, but it requires a different kind of effort.

The effort you used to spend hand-writing logic now goes into briefing, scoping, reviewing, and capturing what you learned. If you don't make that trade, you get generic code at high speed. If you do, you get tailored, tested, well-documented work at a pace that feels illegal.

Claude Code is not a shortcut. It is a different job. Our job, now, is to be the person who knows what to build, how to describe it, and how to verify that what came back is actually correct. The agent handles the keystrokes.


Sprintt helps product and engineering teams adopt agentic tools like Claude Code in production workflows — not as demos, as operating systems. If you're trying to scale this pattern across a team, book a 30-minute call.

Ricardo Ramirez

Written by

Ricardo Ramirez

Founder of Sprintt. Product leader, practitioner, and operator — not an academic or a theorist. Writes about the gap between AI strategy and shipped production systems, because closing that gap is the only thing Sprintt does.

Book a 30-min call

Ready to ship?

Stop planning.
Start shipping.

30 minutes. No pitch deck. A direct conversation about where AI can drive the most impact for your organization.

Book a strategy call