QRefAI
Contents
AI Coding

Part 1 — Foundations

Where is my team on the spectrum, what is an agentic harness, and why does it take months to build?

6 min · Updated June 2026

If you’ve been handed an AI coding tool and told to “make it enterprise-grade,” this is where to start. Before you touch a config file, you need two mental models: where your team sits today, and what you’re actually building. Neither answer is a config file.

1.1 — Where is my team on the spectrum, and does this whole guide apply to me?

Think of AI-assisted development as a spectrum, not a switch. The axis that matters is how outputs get verified — not how clever your prompts are.

Vibe codingStructured AI-assistedAgentic engineering
IntentCasual promptsDetailed prompts + constraintsSpecs, architecture docs, memory files
Verification“Seems to work”Manual testing, spot checksAutomated tests + evals, CI gates
Codebase understandingMinimalReview of critical pathsFull architecture review; AI handles detail
Right scopePrototypes, scriptsFeatures in known codebasesProduction systems at team scale
RiskHigh (disposable code)ModerateLow (systematic verification)

Where are you on the spectrum? AI coding maturity runs from casual prompting to governed agentic engineering — and the right setup for a weekend prototype is reckless for a payment system. Start by placing yourself: before building anything, map where you sit on the AI coding maturity spectrum.

Download templates
AI Agentic OS Maturity Assessment (.xlsx)Download

Score your team across the five maturity dimensions before reading further. Takes about ten minutes and tells you exactly which parts of this guide apply to you.

1.2 — Everyone keeps telling me to build a 'harness,' but I think it's just a good CLAUDE.md file. Help me understand what it actually is and why it's more than configuration.

Diagram of the four-layer agentic harness stack: context, capability, control, and governance layers

An agentic harness is the engineered environment around a coding agent that determines whether the code it produces is safe, consistent, compliant, and aware of how your organization actually works. The model is the engine; the harness is the car, the road, and the traffic laws.

The trap most teams fall into is thinking the harness is “a good CLAUDE.mdfile.” It isn’t. The 2026 consensus is blunt: successful deployments invest weeks to months of dedicated engineering time building the harness before broad rollout, and keep investing as the codebase and models evolve. The harness is a platform-team product with a backlog, an owner, and a release cycle.

Think of it as a layered stack, not a file:

  • Context layerwhat the agent knows about your project every session (instruction files)
  • Capability layerwhat the agent can do and look up (skills, MCP servers, code-intelligence tools)
  • Control layerspecialized personas and deterministic gates (subagents, hooks, event-driven workflows)
  • Governance layerwhat the agent is allowed to do and how you prove it afterward (managed policy, enterprise controls, audit pipelines)

1.3 — I'm running both Claude Code and Copilot and don't want to build everything twice. What the core building blocks and whether they line up across the two.

Yes — and that symmetry is the single most important fact for building one reusable harness. There are seven primitives, and they map almost 1:1 across the two vendors.

PrimitiveWhat it doesClaude CodeGitHub Copilot
Instruction memoryPersistent project context loaded every sessionCLAUDE.md (hierarchical, @import).github/copilot-instructions.md, *.instructions.md, AGENTS.md
Custom agentsSpecialized personas with scoped tools/model/prompt.claude/agents/*.md.github/agents/*.agent.md
SkillsOn-demand, progressively-disclosed task playbooks.claude/skills/<name>/SKILL.md.github/skills/<name>/SKILL.md (same standard)
PluginsBundle of skills + commands + agents + hooks + MCP.claude-plugin/plugin.json via marketplacesOrg Copilot marketplace from a private repo
Hooks / eventsDeterministic gates on the agent’s lifecycle21 lifecycle events, 4 handler typesAgent hooks (preview) + Actions + Agentic Workflows
Tools / MCP serversExternal tool and data access via MCPclaude mcp add (stdio/HTTP/SSE)mcp-config.json, .vscode/mcp.json, GitHub MCP Registry
Settings / policyEnterprise enforcement users can’t overridemanaged-settings.json + MDMGitHub Enterprise AI Controls + Copilot policies
Cross-vendor mapping of the seven agent primitives across Claude Code and GitHub Copilot

Because the primitives line up, you can author most assets once in a vendor-neutral form and compile them to both targets. That’s the core thesis of Part 7.

1.4 — I keep hearing 'context engineering' is the thing that matters now. Why the bottleneck moved into context engineering instead of the model itself.

The core reason:a model’s raw capability is fixed the moment you pick it, but what you feed it changes on every single call — and that input now determines success more than the model’s ceiling does. Two forces created this flip.

First, models got good enough that they stopped being the constraint. For routine engineering work, today’s frontier models can already do the task. So the failures you actually hit in practice aren’t “the model wasn’t smart enough” — they’re “the model didn’t know our auth pattern,” “it grepped the wrong file,” “it followed a stale convention from a 300-line instruction file.” Those are all input failures, not intelligencefailures. Upgrading the model doesn’t fix any of them.

Second — and this is the counterintuitive part — feeding the model more doesn’t help and usually hurts. A bigger model with a bloated context loses to a smaller model with a clean one. That’s why context is the lever: it’s the input you control on every call, it’s where the real failures originate, and adding more is actively harmful past a point. Here’s the relationship:

Chart showing context quality vs model capability as the primary lever for AI coding output quality

1.5 — I want to install dozens of capabilities (instructions, skills, MCP etc.) from my organization assets library and from other teams. How to make this possible without bloating the context and why it matters when I'm building this.

Progressive disclosure is the loading model Anthropic formalized with Agent Skills, now the dominant context-engineering pattern across the industry. Three layers:

  1. 1.Discovery — always loaded, tiny. At startup the agent scans the YAML frontmatter of every installed skill — roughly 80 tokens each. With 40+ skills installed, that’s only ~1,500 tokens total.
  2. 2.Activation — loaded when relevant. When the agent decides a skill applies, it reads the full SKILL.md body — a median of ~2,000 tokens across Anthropic’s official skills.
  3. 3.Reference — loaded only when a step demands it. Supporting files (references/, scripts/, assets/) are read only when the agent actually executes a step that needs them.
Pyramid diagram of the three-tier progressive disclosure loading model: discovery (always loaded), activation (loaded when relevant), and reference (loaded on demand)

Why it matters: it’s what makes a large harness viable. You ship a deep library of organizational knowledge without paying for all of it on every prompt. It also tells you exactly where to put things — always-relevant knowledge in the (lean) instruction file, situational knowledge in skills, bulky material (long checklists, code templates, scripts) in skill reference files.

You’ll make this three-tier routing decision for every piece of organizational knowledge you encode. Get it right and the harness scales. Get it wrong and you pay for context you don’t need while the agent ignores what you paid for — which, as 1.4 showed, is not a hypothetical risk but a measured one.

Found this useful?