Normative reference for document format, fields, and conformance.
This document is the normative entry point for the Agent Behavior Specification. It defines document format, required and optional fields, and conformance rules. Conceptual definitions and rationale live in the Core Model; this document is the formal reference for implementers.
The key words "MUST", "MUST NOT", "REQUIRED", "SHOULD", "SHOULD NOT", and "MAY" in this document are to be interpreted as in RFC 2119.
An ABS document is valid YAML. (JSON is also valid, being a syntactic subset of YAML.) The recommended file extension is .abs.yaml; plain .yaml is also acceptable.
session: <string> # REQUIRED — human-readable session name
description: <string> # OPTIONAL
abs_version: "0.1" # OPTIONAL in v0.1, RECOMMENDED, will be REQUIRED in v0.2
behaviors: # REQUIRED — ordered list of Behavior objects
- actor: <string>
action: <string>
target: <string> # OPTIONAL
content: <any> # OPTIONAL
capture: <map> # OPTIONAL
with: <map> # OPTIONAL
evaluations: <list> # OPTIONAL — step-level, checks this Behavior only
evaluations: <list> # OPTIONAL — session-level (chain), checks the whole trace
A document with no evaluations anywhere (step-level or session-level) is purely descriptive. Adding evaluations at either level makes the same document executable as a test.
Early discussion of ABS used a compact notation where a bare list of Behaviors follows session: directly:
session: Order status
- actor: user
action: says
content: "Where is my order?"
This is not valid YAML — a block mapping cannot be directly followed by a block sequence at the same indentation level. All documents in this project use the explicit behaviors: form, which is the only form v0.1 defines as conformant.
| Field | Type | Required | Notes |
|---|---|---|---|
actor | string | Yes | Who performs the Behavior. See Core Model. |
action | string | Yes | What is performed. See Vocabulary. |
target | string | No | Object or destination of the action. Semantics determined by action category — see §4. |
content | any | No | Payload of the Behavior: text, structured data, or displayed information. |
capture | map | No | Names runtime values observed in this Behavior for later reuse. |
with | map | No | Parameters passed on an outbound Action (typically calls), MAY reference captured variables. |
evaluations (step-level) | list | No | Step-level verification rules for that Behavior only. |
evaluations (session-level) | list | No | Session-level (chain) verification rules over the whole trace. |
target semantics (normative)The meaning of target is determined by the Action category of the same Behavior. An implementation MUST interpret target as follows:
| Action category | What target means |
|---|---|
Execution (calls, submits, retrieves, stores, updates) | The system, tool, or API being invoked — e.g. Order MCP, Calendar API. |
Delegation (hands_off) | The recipient of the hand-off — e.g. Human Agent. |
Interaction (selects, uploads, approves) | The UI element or object acted on — e.g. Appointment Options. |
Communication (says, asks, informs, shows, ...) | A specific recipient or channel, if one needs to be named. Normally omitted — use content for what's being communicated. |
Behaviors within a Session's list MUST be interpreted as an ordered sequence. Implementations MUST NOT reorder Behaviors for evaluation purposes.
Any content or with value MAY contain a {{variable}} reference. A conforming implementation MUST resolve {{variable}} in this order of precedence:
capture: of that name earlier in the same Session.v0.1 does not model branching within a single Session. Alternate paths MUST be represented as separate Sessions.
An implementation is ABS v0.1 conformant if it:
target per §4;exact_match and contains evaluators;sequence and never.ABS uses simple integer versions: 0.1, 0.2, …, 1.0. No patch numbers. Every version is a breaking-change boundary until 1.0.
Documents SHOULD declare abs_version: "0.1". This becomes REQUIRED in v0.2.
The normative JSON Schema for each version is published at:
https://abs-lang.org/schema/v0.1/abs.schema.json
https://abs-lang.org/schema/v0.2/abs.schema.json
An implementation MAY support multiple versions simultaneously. The document declares its contract, and the tool adapts — the same strategy used by OpenAPI and AsyncAPI.
See the Manifesto, "What ABS is not."