GitHub Action to validate A2ML manifest files in your repository.
A2ML (Agnostic Agent Markup Language) is a manifest format used across RSR
(Rhodium Standard Repository) projects to declare machine-readable metadata,
AI agent instructions, and project state. This action scans for .a2ml files
and validates their structure and required fields.
-
SPDX header — Verifies
SPDX-License-Identifieris present in the first 10 lines -
Identity fields — Requires
agent-id,name, orprojectfield (relaxed for AI-MANIFEST files) -
Version field — Checks for
versionorschema_version -
Attestation blocks — If an
[attestation]section exists, validates it containsproof,signature, orhashfields -
Section syntax — Warns on malformed
[section]headings with unclosed brackets
Add to your workflow:
name: Validate A2ML
on: [push, pull_request]
permissions:
contents: read
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: hyperpolymath/a2ml-validate-action@v1
with:
path: '.' # Directory to scan (default: repo root)
strict: 'false' # Promote warnings to errors (default: false)
# paths-ignore: defaults to vendored / fixture patterns; override
# via newline-separated string. Use '' to disable.| Input | Default | Description |
|---|---|---|
|
|
Directory path to scan for |
|
|
When |
|
vendored & fixture defaults |
Newline-separated path fragments to skip. Substring match against each
file path. Default set: |
A2ML files inside vendored projects (e.g. verified-container-spec/) have
their own identity declarations elsewhere or are themselves training corpora.
Flagging every such file as "missing identity field" is provenance noise,
not signal. The defaults match the canonical RSR vendored-content paths;
override for project-specific carve-outs.
In strict mode (strict: 'true'), all warnings are promoted to errors. This
is useful for repositories that require full A2ML compliance, such as those
following the RSR standard.
Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
SPDX-License-Identifier: PMPL-1.0-or-later
See LICENSE for details.