Context Engineering

The most important skill in AI-assisted development isn't prompting — it's shaping the context window.

/ Dylan G Harbour / 5 min read
aiengineering
scroll

Everyone talks about prompt engineering. But the real leverage in AI-assisted development comes from something upstream of the prompt: context engineering — the deliberate practice of shaping what the model sees before it generates a single token.

The Context Window Is Your Workspace

Think of the context window as a desk. A messy desk with irrelevant papers scattered everywhere produces worse work than a clean desk with exactly the right references laid out in front of you.

When I work with AI tools — whether it’s Claude, Copilot, or a custom pipeline — the quality of output correlates almost perfectly with the quality of context I provide. Not the cleverness of my prompt. The relevance of what surrounds it.

The model doesn’t know what it doesn’t see. Your job is to make sure it sees the right things.

What Goes Into Context

Context engineering means being intentional about every piece of information the model receives:

  • System instructions — the persona, constraints, and rules that shape behaviour
  • Relevant code — not the entire codebase, but the specific files, types, and patterns that matter for this task
  • Examples — concrete input/output pairs that demonstrate the expected style and quality
  • Constraints — what not to do is often more valuable than what to do
  • History — prior decisions, architectural context, and the “why” behind existing code

The mistake most people make is dumping everything in. More context isn’t better — better context is better.

A Practical Example

Here’s how context engineering applies to a real task. Say I need AI to write a database migration:

# Bad context: vague prompt, no surrounding information
prompt: "Write a migration to add user preferences"

# Good context: structured, scoped, example-driven
system: "You write PostgreSQL migrations for a Rails 7 app.
  Follow our conventions: timestamps on every table,
  use enums over strings, add indexes for foreign keys."
existing_schema: |
  -- users table (abbreviated)
  CREATE TABLE users (id bigserial PRIMARY KEY, email text NOT NULL);
example_migration: |
  -- Our style for reference
  class AddNotificationSettings < ActiveRecord::Migration[7.0]
    def change
      create_table :notification_settings do |t|
        t.references :user, null: false, foreign_key: true
        t.integer :frequency, default: 0, null: false
        t.timestamps
      end
    end
  end
prompt: "Write a migration to add a user_preferences table
  with theme (enum: light/dark/system), language (string),
  and timezone (string)."

The second version produces correct, convention-following code on the first try. The first version produces generic code that needs three rounds of correction.

Context Engineering in the SDLC

This connects directly to how AI is reshaping the entire development lifecycle. At every phase — from requirements through deployment — the quality of AI assistance depends on how well you engineer the context:

PhaseContext That Matters
RequirementsUser stories, personas, existing feature behaviour
ArchitectureSystem constraints, team size, infrastructure limits
ImplementationType signatures, conventions, adjacent code
TestingFunction contracts, edge case history, coverage gaps
OperationsRecent logs, deployment history, runbook patterns

The engineers who get the most from AI aren’t writing better prompts. They’re building better context — CLAUDE.md files, structured project docs, clear type systems, and well-organised codebases that AI tools can navigate.

The Meta-Skill

Context engineering is a meta-skill. It improves everything downstream:

  • Better code generation — because the model understands your patterns
  • Better reviews — because the model has the architectural context to evaluate trade-offs
  • Better testing — because the model knows what contracts to verify
  • Better debugging — because the model can see the relevant state

It’s also a skill that compounds. The CLAUDE.md you write today pays dividends in every session that follows. The type system you invest in makes every AI-assisted implementation more accurate. The conventions you document become the examples the model learns from.

The best investment you can make in AI-assisted development isn’t learning prompt tricks. It’s making your codebase, your documentation, and your intent legible to machines. That’s context engineering.


This is a companion piece to The AI-Native SDLC, which covers how AI is reshaping every phase of software delivery.