Standards Proposal · Draft 0.2 · Status: Open for review

A standard for making software projects safely operable by AI agents.

The Agent-First Project Standard (AFPS) defines how repositories, APIs, SDKs, CLIs, and services expose capabilities, schemas, workflows, and validation rules so independent AI agents can discover, execute, and verify them — without relying on undocumented assumptions or chat history.

Read the draftView conformance levelsafps validate --target AFPS-3
5
Conformance levels
40+
Normative requirements
6
Test categories
7
Adjacent standards
§ 2 · Problem statement

Most projects are still structured for humans.

Built for humans
README
  → docs site
    → scattered runbooks
      → source code
        → tribal knowledge
          → Slack history
What agents need
manifest
  → capabilities
    → schemas
      → examples
        → executable tests
          → validation results

The gap is not documentation quality. The gap is conformance. A project is agent-first when an independent agent can discover its capabilities, parse contracts, execute workflows, validate outcomes, recover from known errors, and verify that documentation matches implementation.

§ 3 · Design principles

Five principles the standard is built on.

3.1

Documentation is an interface

Agent-facing docs are versioned, validated, linted, and reviewed with the same rigor as production code.

3.2

Structured sources are authoritative

Prose may explain a capability. Structured files — OpenAPI, AsyncAPI, JSON Schema, YAML — define the contract.

3.3

Discovery must be deterministic

Agents should not scrape and guess. A stable entry point exposes the project's manifest, capabilities, and artifacts.

3.4

Examples must be testable

Every request, command, workflow, and error case is a conformance fixture validated in CI.

3.5

Side effects must be explicit

Agents must know whether an action reads, writes, deletes, spends money, or triggers irreversible behavior.

§ 4 · Standards proposals

AFPS applies first to the proposal itself.

Standards proposals are the highest-leverage AFPS target because they define the contracts every later implementation will copy. If a proposal is only a narrative document, an agent has to guess which paragraphs are normative, which examples are current, which schemas are authoritative, and which tests prove compatibility.

An AFPS-compliant proposal is different. It exposes the draft, conformance model, schemas, examples, vectors, open decisions, implementation packs, and verification commands as one linked artifact graph. A coding agent can then update the proposal with the same discipline expected of production code: scoped inputs, declared side effects, executable checks, and reviewable outputs.

Core rule. A standards proposal should never ask agents to infer process from prose. The proposal should declare how to change itself.
Profile boundary. The existing AFPS project model stays lightweight enough for ordinary repositories. The Agent-First Standards profile is an additive profile for standards bodies, protocol drafts, SDK conformance projects, and specification repos.
standards-proposal capability
{
  "id": "standard.propose-change",
  "inputs": {
    "schema": "agent/schemas/change-request.schema.json",
    "valid_examples": ["agent/examples/change.valid.json"],
    "invalid_examples": ["agent/examples/change.invalid.json"]
  },
  "outputs": {
    "artifacts": [
      "specification/draft/*.md",
      "schemas/*.schema.json",
      "examples/*.json",
      "test_vectors/",
      "agent/implementation-packs/*.json"
    ]
  },
  "commands": [
    "afps validate --target AFPS-3",
    "project-specific conformance checks"
  ]
}
Project layer

AFPS stays adoption-friendly

Most projects should still start with manifest, capabilities, schemas, examples, non-interactive commands, and CI checks. That remains AFPS's broad adoption path.

Standards layer

Agent-First Standards becomes a profile

Standards repositories add typed normative requirements, conformance targets, checkability, validation strategy, test coverage, and traceability.

Source model

AFSL is the higher-maturity source model

At the highest maturity, prose is generated from a machine-readable standards model rather than being the primary source of truth.

specification/draft/*.md

Normative draft

The source of MUST, SHOULD, MAY, role, artifact, and verification semantics.

specification/draft/conformance-*.md

Conformance model

The claim surface: levels, required behavior, negative cases, and test identifiers.

schemas/*.schema.json

Schemas

Machine-readable contracts for every artifact agents and implementers must preserve.

examples/ + test_vectors/

Examples and vectors

Executable fixtures that keep the proposal grounded in concrete behavior.

agent/implementation-packs/*.json

Implementation packs

Reviewable handoff bundles with prompts, scope, smoke tests, done criteria, and rollback.

agent/manifest.json

Agent manifest

The index that tells agents which artifacts are authoritative and how to verify them.

The proposal becomes an implementation-pack factory.

Implementation packs are the natural extension of AFPS for standards work. A draft says what should be interoperable. A pack says how an agent should apply that draft in one repository: files in scope, files out of scope, prompts, smoke tests, negative tests, completion criteria, and rollback steps. That makes the standards proposal operational before the ecosystem is fully standardized.

proposal → pack → implementation → evidence
  1. 1. Proposal declares the normative behavior and conformance level.
  2. 2. Pack selects the relevant profile, scope, prompts, smoke tests, and done criteria.
  3. 3. Agent applies the pack with explicit side effects and non-interactive checks.
  4. 4. Maintainer reviews code, artifacts, conformance output, and public links together.
GateRequired behavior
Proposal gateA change starts with problem, scope, non-goals, and affected artifacts.
Artifact gateNormative text, schemas, examples, vectors, and packs move together.
Agent gateEvery capability has input schemas, valid and invalid examples, side effects, and commands.
Verification gateA non-interactive check proves the artifact graph is complete before release.
Publication gateLanding-page copy links back to source artifacts instead of becoming the source of truth.

AFSC checks for the standard itself.

AFSC is the conformance profile for agent-first standards. It does not replace AFPS; it adds checks that only make sense when the project being evaluated is a standard, protocol, or specification package.

CheckRequirementWhy it matters
AFSC-STD-001Every normative requirement has a stable ID.Agents can cite, update, test, and report against exact obligations.
AFSC-STD-002Every normative requirement declares a conformance target.Document, issuer, verifier, gateway, SDK, and profile obligations stop being mixed together.
AFSC-STD-003Every normative requirement declares checkability.Machine-checkable, test-checkable, observable, policy-judgment, and human-review rules are separated.
AFSC-STD-004Every MUST has a validation strategy.Untestable mandates are surfaced before they become conformance debt.
AFSC-STD-005Every test vector maps back to requirement IDs.Coverage can be measured and gaps are reviewable.
AFSC-STD-006Every requirement has traceability to generated prose or a source anchor.Human readers and agents can reconcile rendered text with the machine-readable model.
AFSL maturity path

AFSL is the source-model target, not the entry fee.

AFSL should be treated as a higher maturity path: a standards intermediate representation that can generate human prose, schemas, tests, conformance matrices, reports, and agent instructions. A project can be AFPS-compliant before it is AFSL-native, but a standards project should become AFSL-native when ambiguity, interoperability risk, or conformance cost justifies the heavier source model.

AFSC-1

Structured requirements

The standard publishes requirement objects with IDs, modalities, subjects, targets, checkability, and source anchors.

AFSC-2

Test-linked requirements

Requirement objects link to schemas, examples, vectors, negative tests, conformance reports, and implementation packs.

AFSC-3 / AFPS-4

AFSL source model

A machine-readable standards language becomes the source of truth and generates prose, schemas, tests, reports, and agent instructions.

§ 5 · Conformance

Adopt the standard incrementally.

0
AFPS-0
Non-Conformant

Documentation exists only as prose. No manifest, no schemas. Agents must infer behavior from source code.

1
AFPS-1
Agent-Readable

Local manifest, structured capabilities, machine-readable I/O schemas, owners, versions, and an error model.

2
AFPS-2
Agent-Discoverable

Adds a deployed discovery endpoint at /.well-known/agent-first.json and validated examples.

3
AFPS-3
Agent-Executable

Executable examples, non-interactive CLIs, dry-run mutations, idempotency, and CI-validated behavior.

4
AFPS-4
Agent-Verified

Drift detection, coverage reports, changelog enforcement, deprecation validation, security checks, and optional AFSC / AFSL maturity for standards projects.

§ 7 · Manifest

Every conforming project ships a manifest.

At minimum, projects include agent/manifest.json. Deployed services additionally expose a manifest at /.well-known/agent-first.json following RFC 8615.

The manifest declares the project, its owners, the artifacts that define its contracts, and the capabilities an agent may invoke. Each capability points to a structured definition with schemas, side effects, auth scopes, errors, and examples.

Note. AFPS is additive. It complements OpenAPI, AsyncAPI, JSON Schema, MCP, A2A, and llms.txt rather than replacing them.
agent/manifest.jsonJSON
{
  "schema_version": "0.2",
  "standard": "AFPS",
  "conformance_target": "AFPS-3",
  "project": {
    "id": "example.crm-api",
    "name": "Example CRM API",
    "version": "1.8.0"
  },
  "owners": [
    { "team": "Platform API", "contact": "platform-api@example.com" }
  ],
  "capabilities": [
    {
      "id": "customers.create",
      "type": "api_action",
      "path": "agent/capabilities/customers.create.yaml",
      "side_effects": true,
      "supports_dry_run": true,
      "auth_scopes": ["customers:write"]
    }
  ],
  "last_updated": "2026-05-07"
}
§ 9 · Normative requirements

MUST, SHOULD, and MAY — at every level.

IDRequirementLevel
AFPS-DISC-001Project must include an agent manifest.AFPS-1
AFPS-CAP-003Every capability must define input and output schemas.AFPS-1
AFPS-CAP-004Every state-changing capability must declare side effects.AFPS-1
AFPS-API-001HTTP APIs must provide OpenAPI.AFPS-1
AFPS-CAP-007Capabilities must include valid and invalid examples.AFPS-2
AFPS-ERR-002Errors must declare retryability.AFPS-2
AFPS-CAP-008Examples must validate against declared schemas.AFPS-3
AFPS-CLI-001Agent-usable CLI commands must be non-interactive.AFPS-3
AFPS-SEC-004Destructive actions must declare approval requirements.AFPS-3
AFPS-TRACE-005Changelog entries must exist for changed capabilities.AFPS-4

Selected from §9.1–9.7. The full standard defines 40+ normative requirements with explicit MUST / SHOULD / MAY semantics.

§ 6 · Ecosystem

Built on the standards you already use.

OpenAPI
HTTP API descriptions referenced by capabilities.
AsyncAPI
Event-driven channels and message schemas.
JSON Schema
Validation vocabulary for manifests, inputs, outputs, errors.
/.well-known/
RFC 8615 discovery location for the project manifest.
llms.txt
Optional Markdown entry point that links to the AFPS manifest.
MCP
Runtime tool/resource protocol; capabilities map to MCP tools.
A2A
Agent-to-agent discovery via Agent Cards, where applicable.
§ 10–16 · Compliance

A test suite, not a guideline.

A guideline says: write better docs for agents.
A standard says: a project claiming AFPS-3 must pass tests AFPS-T001 through AFPS-T406, and failures block release unless waived.

The reference runner afps-conformance executes static, schema, API, discovery, execution, and drift tests, and emits machine-readable reports for CI.

Conformance rule. Examples are not illustrative decoration — they are conformance fixtures. Invalid examples must fail for the documented reason.
.github/workflows/afps.ymlYAML
name: Agent-First Compliance

on: [pull_request, push]

jobs:
  afps:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: npm install -g afps-conformance
      - run: afps validate --project . \
               --target AFPS-3 \
               --format json \
               --output afps-report.json
      - uses: actions/upload-artifact@v4
        with:
          name: afps-report
          path: afps-report.json
§ 17 · Authoring standards

Standards themselves should be machine-readable.

AFPS tests whether a project conforms to a standard. But most standards today — including W3C Recommendations — are still authored as prose, leaving agents to extract normative meaning from paragraphs.

The companion proposal AFSL — Agent-First Standards Language defines a typed source language for standards. Each normative statement becomes a structured requirement object. Human prose, JSON Schemas, SHACL shapes, conformance tests, and agent manifests are generated outputs.

three layersspec stack
AFSL  →  how to express a standard
AFSC  →  how to test the standard
AFPS  →  how to test a project against it
§ 20 · Roadmap

From draft to stable standard.

  1. Draft 0.1Internal proposal

    Concepts, manifest format, capability format, initial checklist.

  2. Draft 0.2Testable proposalCurrent

    JSON Schemas, conformance levels, test IDs, example projects, CI examples.

  3. Draft 0.3Reference implementation

    Build afps validate, publish fixtures, validate 3–5 real repositories.

  4. Draft 0.4Ecosystem mapping

    MCP and A2A mappings, llms.txt guidance, AsyncAPI examples, pre-commit hooks.

  5. Draft 1.0Stable standard

    Freeze schemas and required tests. Publish compatibility matrix.

§ 21 · One-line definition

AFPS compliance means a project exposes enough versioned, structured, tested, and discoverable information for an AI agent to safely operate it — without guessing from prose, source code, or chat history.