Skip to main content

Your First Semantic Manifest

The Semantic Manifest is a JSON document generated from AXAG annotations. It catalogs every annotated operation with full parameter schemas, constraints, and safety metadata.

From Annotation to Manifest

Given the annotation from the previous step:

Annotated search button (from previous step)
<button
axag-intent="product.search"
axag-entity="product"
axag-action-type="read"
axag-required-parameters='["query"]'
axag-optional-parameters='["category","price_min","price_max"]'
axag-scope="catalog"
axag-risk-level="none"
axag-idempotent="true"
axag-description="Search the product catalog by text query with optional filters"
>
Search
</button>

The generated Semantic Manifest entry is:

axag-manifest.json — generated output
{
"version": "0.1.0",
"generated_at": "2026-03-14T00:00:00Z",
"source": "product-search-page",
"operations": [
{
"intent": "product.search",
"entity": "product",
"operation_id": "product_search",
"description": "Search the product catalog by text query with optional filters",
"action_type": "read",
"parameters": {
"query": {
"type": "string",
"required": true,
"description": "Free-text search query for product name, description, or SKU"
},
"category": {
"type": "string",
"required": false,
"description": "Filter by product category"
},
"price_min": {
"type": "number",
"required": false,
"description": "Minimum price filter"
},
"price_max": {
"type": "number",
"required": false,
"description": "Maximum price filter"
}
},
"scope": "catalog",
"risk_level": "none",
"idempotent": true,
"preconditions": [],
"postconditions": [],
"confirmation_required": false,
"side_effects": []
}
]
}

Manifest Structure

Every Semantic Manifest contains:

FieldPurpose
versionThe AXAG specification version
generated_atTimestamp of manifest generation
sourceIdentifier for the source page or component
operationsArray of annotated operation definitions

Each operation contains the full semantic contract: intent, entity, parameters, constraints, safety metadata, and execution semantics.

Generation Approaches

Manifests can be generated through:

  1. Build-time extraction — A build plugin scans annotated HTML/JSX and outputs manifest JSON
  2. Runtime extraction — A client-side script reads axag-* attributes from the live DOM
  3. Static analysis — A linter or analyzer processes source files without rendering

The recommended approach is build-time extraction for production deployments.

Next Steps