All Posts
Engineering·April 13, 2026

/init Is a Tourist Map.
You Need a GPS.

We indexed a real codebase with both Claude Code's /init and Optiq's Context Engine. Here's what each one actually gives your model to work with.

The Honest Starting Point

Someone told us recently that /init is “more than enough 97% of the time, even in very large codebases.” That it's simpler, doesn't need a vector database, and just works.

They're not wrong. /init is a good tool. It scans your repo, writes a markdown summary of the project structure, and stuffs it into the system prompt. For quick questions about architecture or “where does X live,” it gets the job done.

But we think the 97% number is generous. And we can show you exactly where it breaks down.

The Test

We took a real project — a Discord bot with an XP/leveling system, virtual economy, shop, daily quests, achievements, and moderation tools. Around 30 files, a few thousand lines of TypeScript. Not huge, not trivial.

We ran /init (took 1 minute 20 seconds) and indexed with Optiq (took 50 seconds). Then we asked both the same questions.

Question 1: “How does the XP system calculate level thresholds?”

/init gave the model this:

“tiered XP curve (different formulas for levels 1-10, 11-25, 26-40, 40+)”

One line. No formulas, no file path, no code. The model knows something exists but has zero ability to work with it. It still needs to find the file, read it, and understand it before making any changes.

Optiq gave the model this:

getNewXpForLevel(level): 1-10: 600 + (level * 340) 11-25: 1500 + (level * 400) 26-40: 2500 + (level * 650) 40+: 5000 + (level * 900)

The actual function, the exact formulas, plus the full call chain across four files: handleMessageCreate → addXp → level calculation → voice XP service. Ranked at 0.98 confidence. The model can start editing immediately.

Question 2: “What happens when a user buys something from the shop?”

/init gave the model this:

“shopSystem.ts / shopBundles.ts / flashSales.ts — virtual shop and economy”

Three file names. No indication of how they connect, what the purchase flow looks like, or what edge cases exist. The model has to read all three files and piece it together.

Optiq gave the model this:

The complete purchaseItem() function with balance validation, dynamic VIP pricing, bulk discount calculation, inventory updates with expiration handling, and the shop command that renders flash sales. All connected, all ranked by relevance.

The Difference Isn't Subtle

/initContext Engine
OutputStatic markdown fileLive searchable code graph
UpdatesManual re-runContinuous, on every save
UnderstandingText summaryAST + execution flow + imports
RetrievalWhole file dumpPruned functions, ranked
ScaleSmall to medium reposAny size
Indexing time1m 20s50s

Where /init Actually Falls Short

The core issue isn't that /init is bad. It's that it front-loads a static summary into the context window and then gets out of the way. Every time the model needs to actually touch code, it still has to:

  1. Figure out which file to open (the summary gives hints, not answers)
  2. Read the entire file (even if it only needs one function)
  3. Understand the code it just read
  4. Hope it found the right file on the first try

That's 3-4 tool calls before the model can even start working. Each one burns tokens, adds latency, and risks the model reading the wrong file or missing a connected piece in another module.

Optiq skips all of that. Ask a question, get the relevant functions with their call chains, ranked by confidence. The model goes straight to editing.

The Context Window Problem

There's a deeper issue that doesn't show up in small projects but becomes critical at scale: models reason worse when you dump too much into them.

/init puts the same static summary into every conversation, whether you're fixing a typo or refactoring the auth system. It can't adapt. When the model then reads full files on top of that, the context window fills with irrelevant code that actively degrades output quality.

Optiq's context pruning returns only the specific functions needed for the task. A 2,000-line file becomes the 40 lines that matter. The model sees less, but understands more.

When /init Is Enough

We're not going to pretend /init doesn't work. If you're asking “what framework does this project use” or “where's the entry point,” a static summary handles that fine. For quick orientation in a new codebase, it's genuinely useful.

But the moment you need to understand how code actually flows — how a request moves through middleware, how a purchase updates inventory and triggers notifications, how an XP gain cascades through leveling and quest progress — a summary can't help you. You need the code itself, and you need the right code.

Try It Yourself

We're not asking you to take our word for it. Index a repo you know well. Ask both tools the same question. See which one gives your model something it can actually work with.

bash
npm install -g @optiqcode/cli
optiq login
optiq index .
optiq search "how does auth work"

The beta is free. No credit card, no waitlist. Bring your own API keys and index as many repos as you want.