Skip to main content

harness-engineering

Design and implement harnesses for AI-agent-driven software development. A harness is the scaffolding—context engineering, architectural constraints, feedback loops, and entropy management—that enables coding agents to produce reliable, maintainable software at scale. Use when assessing a codebase's agent-readiness, building repository knowledge bases, designing layered architectures with mechanical enforcement, setting up application legibility (observability, browser automation), implementing "garbage collection" agents, or adopting an agent-first development workflow. Triggers: "harness engineering", "agent-first development", "harness", "agent-readiness", "agent legibility", "repository knowledge base", "coding agent scaffolding", "AI-maintainable codebase", "garbage collection agents", "context engineering for agents", "architectural enforcement", "structural tests", "custom linters for agents", "agent autonomy", "harness assessment".

Jump to install

Source facts

Repository
arisng/github-copilot-fc
Last source activity
August 28, 2026 at 04:25
Detected SKILL.md language
English
Stars
5
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
harness-engineering
description
Design and implement harnesses for AI-agent-driven software development. A harness is the scaffolding—context engineering, architectural constraints, feedback loops, and entropy management—that enables coding agents to produce reliable, maintainable software at scale. Use when assessing a codebase's agent-readiness, building repository knowledge bases, designing layered architectures with mechanical enforcement, setting up application legibility (observability, browser automation), implementing "garbage collection" agents, or adopting an agent-first development workflow. Triggers: "harness engineering", "agent-first development", "harness", "agent-readiness", "agent legibility", "repository knowledge base", "coding agent scaffolding", "AI-maintainable codebase", "garbage collection agents", "context engineering for agents", "architectural enforcement", "structural tests", "custom linters for agents", "agent autonomy", "harness assessment".
metadata
{"version":"1.0.0","author":"arisng"}
# Harness Engineering Design environments, feedback loops, and control systems that enable AI coding agents to produce reliable software at scale. A **harness** is everything around the code that keeps agents effective: structured knowledge, mechanical constraints, application legibility, and entropy management. **Core insight**: When agents struggle, the fix is almost never "try harder." Ask: *what capability is missing, and how do we make it both legible and enforceable for the agent?* **Variant**: `harness-engineering-copilot` — strategies and patterns specialized for GitHub Copilot agent customization. **Sources**: [OpenAI — Harness Engineering](https://openai.com/index/harness-engineering/) | [Martin Fowler — Harness Engineering](https://martinfowler.com/articles/exploring-gen-ai/harness-engineering.html) ## Three Harness Components | Component | What it does | Deterministic? | |---|---|---| | **Context Engineering** | Curated, structured knowledge base in the repo + dynamic context (observability, browser) | Mixed | | **Architectural Constraints** | Layered architecture enforced by custom linters and structural tests | Deterministic | | **Garbage Collection** | Periodic agents that detect drift, stale docs, and constraint violations | LLM-based | ## Assess Current Harness Before building, audit what exists. Run through this checklist with the user: 1. **Repository knowledge** — Is there an `AGENTS.md` or equivalent entry point? Is it a concise map (~100 lines) or a bloated monolith? 2. **Documentation structure** — Is there a `docs/` directory with architecture, design docs, product specs, and plans? Are they versioned and cross-linked? 3. **Architectural constraints** — Are module boundaries defined? Are dependency directions enforced mechanically (linters, structural tests)? 4. **Application legibility** — Can an agent boot, drive, and observe the application (logs, metrics, traces, browser)? 5. **Feedback loops** — When the agent produces drift, is there a process to detect and correct it? 6. **CI/CD gates** — Do linters and tests catch constraint violations before merge? Rate each 0–2 (absent / partial / enforced). Total ≤ 5 = early stage; 6–8 = developing; 9–12 = mature. ## 1. Context Engineering The repository is the agent's only world. Anything not accessible in-context effectively does not exist. ### Repository Knowledge as System of Record **Anti-pattern**: One giant AGENTS.md with everything. It crowds out task context, rots instantly, and is unverifiable. **Pattern**: AGENTS.md as table of contents (~100 lines), pointing to structured `docs/`: ``` AGENTS.md ← map, not manual ARCHITECTURE.md ← top-level domain + layer map docs/ ├── design-docs/ ← indexed, with verification status │ ├── index.md │ └── core-beliefs.md ├── exec-plans/ ← active, completed, tech-debt │ ├── active/ │ └── completed/ ├── product-specs/ ← requirements + acceptance criteria ├── references/ ← external docs, llms.txt files ├── DESIGN.md ├── FRONTEND.md ├── QUALITY_SCORE.md ├── RELIABILITY.md └── SECURITY.md ``` **Key principles**: - Progressive disclosure: agents start with a small stable entry point and are taught where to look next - Plans as first-class artifacts: execution plans with progress logs checked into the repo - Mechanical freshness: CI jobs validate the knowledge base is up-to-date, cross-linked, and correctly structured - Doc-gardening agent: periodic background task scans for stale docs and opens fix-up PRs ### Dynamic Context Providers Extend what agents can observe beyond static files: - **Browser automation**: Wire Chrome DevTools Protocol (CDP) into agent runtime. Agents take DOM snapshots, screenshots, and navigate UI to reproduce bugs and validate fixes. - **Observability stack**: Ephemeral per-worktree observability (logs via LogQL, metrics via PromQL, traces via TraceQL). Agents query: "ensure startup < 800ms" or "no span in critical journeys exceeds 2s." - **App bootability**: Make the application bootable per git worktree so agents can launch isolated instances per task. ## 2. Architectural Constraints Agents replicate patterns that exist in the repository — including bad ones. Mechanical enforcement prevents drift. ### Layered Domain Architecture Divide each business domain into fixed layers with strictly validated dependency directions: ``` Types → Config → Repo → Service → Runtime → UI ↑ Providers (auth, connectors, telemetry, feature flags) ``` - Code may only depend "forward" through the layers - Cross-cutting concerns enter through a single explicit interface: Providers - Enforced by custom linters and structural tests (not just conventions) ### Mechanical Enforcement | Mechanism | Purpose | Examples | |---|---|---| | Custom linters | Catch violations with remediation instructions in error messages | Dependency direction, structured logging, naming conventions, file size limits | | Structural tests | Validate architecture invariants | ArchUnit-style tests, import graph validation | | Pre-commit hooks | Block violations before they enter the repo | Schema validation, boundary checks | | CI validation | Catch what slips through locally | Full lint + test suite, doc freshness checks | **Critical detail**: Write custom lint error messages that include remediation instructions. These messages become agent context when violations occur, teaching the agent how to fix issues. ### Enforce Invariants, Not Implementations Be prescriptive about boundaries (e.g., "parse data shapes at the boundary"), but not about specific tools. Specify *what*, let agents decide *how* within boundaries. ## 3. Garbage Collection Full agent autonomy introduces entropy. Without active management, drift compounds. ### Golden Principles Define opinionated, mechanical rules that keep the codebase legible: - Prefer shared utility packages over hand-rolled helpers (centralized invariants) - Validate data at boundaries — don't probe data "YOLO-style" - Enforce consistency in naming, logging, and error handling ### Periodic Cleanup Agents Schedule recurring background tasks that: 1. Scan for deviations from golden principles 2. Update quality grades per domain and layer 3. Open targeted refactoring PRs (most reviewable in under a minute) **Cadence**: Daily or per-sprint. Treat like garbage collection — continuous small increments, not painful bursts. ### Quality Scoring Maintain a quality document that grades each product domain and architectural layer, tracking gaps over time. This gives both humans and agents a map of where debt lives. ## Agent-First Workflow When adopting harness engineering, the development loop changes: ``` Human: Define task → Write acceptance criteria ↓ Agent: Validate codebase state → Implement → Self-review → Request agent reviews ↓ Agent: Respond to feedback → Iterate until reviewers satisfied ↓ Agent: Detect/remediate build failures → Escalate only when judgment required ↓ Merge (minimal blocking gates — corrections are cheap, waiting is expensive) ``` **Humans work at a different abstraction layer**: prioritize work, translate user feedback into acceptance criteria, validate outcomes. When agents struggle, identify what's missing and feed it back into the repo. ## Applying to Existing Codebases Not every technique applies to brownfield code. Assess feasibility: | Technique | Retrofit difficulty | Start here | |---|---|---| | AGENTS.md + docs/ structure | Low | Create entry point, incrementally document | | Custom linters | Medium | Start with 2–3 high-value rules | | Structural tests | Medium | Enforce module boundaries first | | App legibility (CDP, observability) | High | Requires infra investment | | Full garbage collection agents | High | Start with doc-gardening only | **Pragmatic approach**: Start with context engineering (cheapest, highest ROI), add architectural constraints incrementally, garbage collection last. ## Harness as Service Template For organizations with 2–3 main tech stacks, consider packaging harnesses as reusable templates: - Pre-configured linters and structural tests for the stack - Knowledge base skeleton (AGENTS.md, docs/ structure) - CI pipeline with doc-freshness and constraint-validation jobs - Starter golden principles for the technology This parallels "golden path" service templates, but optimized for agent-driven development.
View on GitHub