Measuring AI-Readiness — AI Conf 2026
Intro

» But really, today

Your repo is half the harness.
Measuring what makes an agent loop converge.

Drop feedback, grab these slides, get the toolkit — one QR for all of it.

Stefano Maestri

Stefano Maestri

maeste.it · @maeste

QR to the talk page
maeste.it maeste.it/speaking/aiconf2026.html Feedback + slides + agent-ready toolkit
🔁

The agent is a process.

It runs inside a second-level operating system. And most of that OS is already in your repo — usually broken.

// context first, then the measurement

A compass

Harness = space. Loop = time + decision.

THE HARNESS

The space the agent moves in

The limits: what it's allowed to do, what it can reach, how its work gets checked.

sandbox · permissions · tools · tests · evals

THE LOOP

Time + a decision inside it

How many times to repeat, and when to stop. A loop is not an automation — a loop has a decision inside it.

trigger · goal · verifier · state

An agent is a process running in a second-level OS — the harness draws the limits, the loop manages the process.

artificialcode.substack.com — "The agent is a process, and it runs in a second-level OS"

Harness engineering

Define the limits the agent moves in.

On top of context curation, harness engineering adds the ability to set the boundaries we want the agent to operate within — the harness itself. With those boundaries in place, the agent gains autonomy and can tackle longer, more complex tasks.

A SANDBOX

An isolated execution environment — where it can run without breaking the host.

SOME EVALS

Checks that judge the work — deterministic first, model-based second.

SELF-VERIFICATION

A way for the agent to tell whether its own output is correct.

Loop engineering

Define when the harness cycles — and when it stops.

For even greater autonomy, we also define the limits of the loop in which the harness cycles to reach the result. A loop is made of:

initial state

where the run begins

a trigger

an event that starts it

a goal

the end state to reach

the skills

consolidated, reusable behaviours

working memory

what's done & what remains to verify

decision mechanism

continue, or stop — goal reached

Why this makes your repo decisive

You can't own the model. You own the repo.

The full harness is LLM + repo + external apparatus (sandbox, skills, MCP, evals). The model and the cloud runtime are not yours. The repo is the slice you own — and it's where the verifier lives.

The loop is the new expensive, failure-prone part. A weak repo = a loop that doesn't converge. So we measure the repo — and fix what we find.

"It worked on my machine"
"It worked in my prompt."

An agent ships plausible, confident work. Nothing in the repo pushes back. By the time a human notices, it's a PR — or worse, it's merged.

The failure is almost never the model. It's the environment the model ran in.

Three failure modes

Every horror story maps to one of three questions.

"What does this project even do? What conventions should I follow?"

→ INSTRUCT

"Where do tests go? What's the entry point? Why is this 2000 lines?"

→ NAVIGATE

"Did my change break anything? Is there CI? Do tests pass?"

→ VALIDATE

…and a fourth we'll meet shortly: can the agent run safely? 🛡️ SECURE

The model

Four questions. Four axes.

📝
INSTRUCT
Does it understand WHAT we want?
weight 28%
🧭
NAVIGATE
Can it find WHERE + reach tools?
weight 30%
VALIDATE
Did it do it RIGHT?
weight 30%
🛡️
SECURE
Can it run SAFELY?
weight 12%

One scan = an x-ray of your slice of the harness, axis by axis.

Before the scan — feel the model

Drag the axes. See your shape.

The interactive radar lets you explore the model before touching your repo: move each axis 0–100, watch the shape change, and see the level jump. A balanced shape means well-rounded; a dent on SECURE means work to do.

📝 · 🧭 · ✅ · 🛡️ four sliders
INSTRUCT / NAVIGATE / VALIDATE / SECURE, weighted 28/30/30/12
Live level & overall score
🔴 L1 ≥40 · 🟠 L2 ≥55 · 🟡 L3 ≥70 · 🟢 L4 ≥85 · 🏆 L5 ≥95
Screenshot & share
Drop it in your engineering blog to justify the next cleanup sprint
QR to the interactive radar playground
maeste.it maeste.it/aiconf2026/playground.html Interactive 4-axis radar playground
The project — agent-ready-skill

6 Agent Skills. One rubric. Any agent.

A set of Agent Skills that evaluate how well a codebase is prepared for agentic coding — and scaffold new projects to be ready from day one. AGENTS.md-first, cross-vendor, MIT.

/agent-ready-scan

Full diagnostic across the 7 dimensions. The x-ray.

/agent-ready-fix

Auto-generate missing files, ranked by impact.

/agent-ready-report

Layered report + badge in .agent-ready/.

/agent-ready-diff

Delta vs previous scan — track progress.

/agent-ready-init

Greenfield scaffolding — don't accrue debt.

/agent-ready (router)

Main entry point — routes to sub-commands.

scan → fix → report → diff · the closed loop. init for greenfield.

How scoring works

One command. Four axes. A number.

quicknote — before
$ /agent-ready scan . ╭─────────────────────────────────────╮ 📝 INSTRUCT ████████░░░░ 58% 🧭 NAVIGATE ██████████░░ 71% ✅ VALIDATE █████░░░░░░░ 39% 🛡️ SECURE ███░░░░░░░░░ 25% ├─────────────────────────────────────┤ Layers (v2): Portable 54 / 88 Target-specific n/a (no --agents) ╰─────────────────────────────────────╯ Overall: 52% │ 🟡 Partially Ready

7 dimensions, weighted, rolled into 4 axes. Portable layer (any agent) + target layer (per --agents).

Axis 1 · weight 28%

📝 INSTRUCT — does it understand WHAT?

D1 · +18 ptsAgent Instructions & Context

AGENTS.md first (cross-vendor standard), not CLAUDE.md. CLAUDE.md = one-line symlink bridge. Scores conciseness — bloated instructions hurt. Scoped/hierarchical files.

D7 · +10 ptsSpec-Driven Workflow & Docs

specs/ with acceptance criteria, ADRs, issue/PR templates, ARCHITECTURE + comprehension signals. The agent reads intent, not just code.

If you do one thing: write a tight AGENTS.md (<200 lines: overview, build/test/lint, structure, conventions, safe-to-run). $ ln -s AGENTS.md CLAUDE.md

INSTRUCT — the quickest win

One file. Biggest jump.

35%
BEFORE
53%
AFTER +AGENTS.md

AGENTS.md — the cross-vendor standard for project context. Overview, build/test/lint, structure, conventions, safe-to-run. Bridge to CLAUDE.md with a symlink — one source of truth, no drift.

$ ln -s AGENTS.md CLAUDE.md # bridge, no drift

v2 penalizes instruction bloat — concise beats copied-and-drifted.

Axis 2 · weight 30%

🧭 NAVIGATE — can it find WHERE + reach tools?

D2 · +18 ptsNavigability & Code Intelligence

Repo map, semantic-nav amenability (typed, analyzable code), dependency clarity, README, file-size sanity. v2 retired the weak heuristics — directory depth & naming don't predict success.

D5 · +12 ptsAgent Tooling & Capabilities

Standard Skills, bundled scripts, MCP declaration + nav servers actually wired up (Serena/Sourcegraph) so the agent jumps to symbols instead of grepping.

Real levers — repo map, typed code, wired MCP — not naming folklore.

Scan your repo — axis 2

What the agent can (and can't) reach.

quicknote — NAVIGATE
╭──────────────────────────────────────╮ 🧭 AXIS 2: NAVIGATE ════════════════════════════════ Score: 52/100 ██████████░░░░ 52% .editorconfig found +2 pyproject.toml found +2 ruff configured [tool] +4 pyrightconfig.json missing -4 .env.example missing -2 Dockerfile missing -2 ⚠️ Large files (>300ln) 3 found -2 ╰──────────────────────────────────────╯

Repo maps, semantic-nav, MCP servers (Serena/Sourcegraph), file-size sanity — real levers, not naming folklore.

Axis 3 · weight 30%

✅ VALIDATE — did it do it RIGHT?

D3 · +16 ptsTesting & Feedback

Test suite, documented + fast commands, coverage — and feedback quality: descriptive assertion messages (not bare asserts) + a type checker the agent can run.

D4 · +14 ptsCI/CD, Automation & Governance

CI runs tests + lint, automated formatting, pre-commit, governance: CODEOWNERS + Dependabot/Renovate.

Where most repos bleed points. Tests are the agent's only signal — skip VALIDATE and it's flying blind. This is the axis that decides if your loop can converge.

Scan your repo — axis 3

Where most repos bleed points.

quicknote — VALIDATE
╭──────────────────────────────────────╮ ✅ AXIS 3: VALIDATE ════════════════════════════════ Score: 28/100 ████████░░░░░░░ 28% pytest configured [tool.pytest] +6 test files found 12 files +5 poetry.lock present +2 CI workflow missing -4 coverage configured no -4 SECURITY.md missing -2 pre-commit missing -2 ╰──────────────────────────────────────╯

This is the axis that decides if your loop can converge at all.

The testing paradox

Tests aren't for finding bugs.
They're the agent's stop condition.

Without a verifier

  • Agent writes code
  • You manually verify everything
  • Bottleneck. Fatigue. Mistakes.
  • No convergence — just repeated prompting. Vibes.

With a verifier

  • Agent writes code
  • Agent runs the check → pass ✓
  • You review the PR confidently
  • The loop can decide when it's done.
.github/workflows/ci.yml — copy, adapt, commit
# CI runs tests + lint — the cheapest verifier you can ship name: CI on: [push, pull_request] jobs: quality: # ruff check + ruff format --check test: # pip install -e ".[dev]" · pytest
Axis 4 · weight 12% · the plot twist

🛡️ SECURE — can it run SAFELY?

D6📦 Sandbox & Isolation

Committed devcontainer, documented execution policy. LINCE.sh — a documented, repeatable OS-level sandbox. Credit for evidence in the repo, not self-report.

D6🔑 Secret & Supply-Chain

.gitignore secrets, .env.example, committed lockfiles, Dependabot. No unverifiable --sandbox flag.

D6💉 Injection & Perms

Instructions only in trusted files; restrictive agent deny rules. The most-skipped axis — and the one that blocks real delegation.

You can't delegate what you can't confine. One dimension (D6) — for now.

✨ Magic moment

Same repo. Same tool. Different number.

quicknote — after the fixes
$ /agent-ready scan . ╭─────────────────────────────────────────────╮ AGENT READINESS ASSESSMENT Repo: quicknote · Agents: claude ═══════════════════════════════════════ Overall: 84% │ 🏆 Optimized 📝 INSTRUCT ██████████████░░ 88% 🧭 NAVIGATE █████████████░░░ 82% ✅ VALIDATE ██████████████░░ 86% 🛡️ SECURE ████████████░░░░ 79% ╰─────────────────────────────────────────────╯

Your repo has a number. Now you know which slice of the harness to build next.

The kicker

The agent fixes what the agent needs.

/agent-ready fix
$ /agent-ready fix 🔍 Loading previous scores... 📊 Gaps identified (sorted by impact): 1. AGENTS.md missing [instruct] +18pt 2. No CI (tests+lint) [validate] +14pt 3. No exec/sandbox policy [secure] +12pt 4. No .env.example / lockfile [secure] +5pt ## Files to GenerateAGENTS.md (+ CLAUDE.md symlink bridge) ✨ docs/agent-execution.md — sandbox policy ✨ .github/workflows/ci.yml — test + lint ✨ .env.example + .gitignore secret patterns Proceed? (y/n) > y ✅ Created: AGENTS.md (tailored to your project) 🔗 Created: CLAUDE.md → AGENTS.md (bridge, no drift)

Not a generic template — gaps ranked by impact, scoped to your repo.

Start agent-ready on day one

For a new project: don't accumulate the debt.

/agent-ready init
$ /agent-ready init . --agents claude 🌱 Scaffolding a portable-first baseline…AGENTS.md (< 200 lines) 🔗 CLAUDE.md → AGENTS.md ✨ .env.example + .gitignore secret coverage ✨ docs/agent-execution.md (sandbox policy) ✨ .github/workflows/ci.yml + .pre-commit-config.yaml ✨ specs/TEMPLATE.md Baseline score: 41/100 🟡 Partially Ready

init (greenfield) sets an opinionated baseline · fix (brownfield) remediates by impact. Same rubric, two entry points.

What you take home

Not theory. Not hype. Your repo.

🧠
A mental model
4 axes — INSTRUCT · NAVIGATE · VALIDATE · SECURE — to size up any codebase.
🔢
A number
Your repo's score — and the loop-readiness it implies.
🛠️
A toolkit
6 skills — scan · fix · report · diff · init — AGENTS.md-first, any agent.
Visualize your progress

Your Agent Readiness Radar

📝 INSTRUCT 88% 🧭 NAVIGATE 82% ✅ VALIDATE 86% 🛡️ SECURE 79%
📝 INSTRUCT88%
🧭 NAVIGATE82%
✅ VALIDATE86%
🛡️ SECURE79%

Overall 84% · 🏆 Optimized. Put this in your engineering blog, share with your team, track progress over time.

» 07 / 07

Build the loop.
Stay the engineer.

The loop, not the model, is now the expensive, failure-prone part. Measure the loop-readiness of your repo before you turn the model loose.

1. scan your repo — RisorseArtificiali/agent-ready-skill

2. read "L'agente è un processo…"

3. move ONE axis this week

Stefano Maestri
maeste.it · @maeste · AI Conf 2026

QR to the talk page
maeste.it maeste.it/speaking/aiconf2026.html Feedback + these slides + the toolkit
Finale