AI Infrastructure Installation Package
A platform-agnostic format for packaging and sharing complete AI workspace workflows — a superset of the SKILL.md open standard and Microsoft APM.
What’s new in v1.5: Registry & Ecosystem — a standardized registry.yaml index format that lets packages be discovered, and a formal ## Installing from a Registry section that defines how an AI browses a registry and installs from it. Packages authored under v1.0–v1.4 remain fully valid.
(Unchanged from v1.4.)
(Unchanged from v1.2 — see v1.2 spec for directory layout and bundle format.)
(Unchanged from v1.3 — see v1.3 spec for component definitions and decision table.)
(Unchanged from v1.3 — see v1.3 spec for platform adapter conventions.)
(Unchanged from v1.4 — see v1.4 spec for the nine normative validation checks.)
A3IP packages are distributed as .a3ip.bundle files. A registry is an index that makes packages discoverable: it lists available packages with enough metadata for an AI to find what a user needs, retrieve the bundle, and install it without any additional lookups.
A registry is a single registry.yaml file. It can be local (a file on the user’s machine) or remote (a URL that returns the YAML content). Both are treated identically by the AI installer.
---
format: a3ip-registry
spec: "1.5"
name: "My Package Registry" # human-readable name, optional
description: "..." # what this registry covers, optional
maintained_by: "Author Name" # optional
updated: "2026-05-12" # ISO date of last update, optional
---
packages:
- name: package-name # must match manifest.yaml name exactly
version: "1.0.0" # current version in this registry entry
description: "One-sentence description of what this package does."
author: "Full Name <email>"
license: proprietary # or: MIT, Apache-2.0, etc.
platforms:
- cowork
- claude-code
tags: # optional — for browsing and filtering
- code-review
- gitlab
bundle_url: "./packages/package-name.a3ip.bundle"
# Relative path, absolute path, or https:// URL.
# The AI resolves this relative to the registry file's location.
min_a3ip_spec: "1.0" # minimum spec version required to install
changelog_summary: "..." # optional — one-line summary of latest version's changes
Field reference:
| Field | Required | Description |
|---|---|---|
name |
✅ | Package name — must match manifest.yaml name: exactly |
version |
✅ | Current version string — must match manifest.yaml version: |
description |
✅ | One-sentence description for browsing |
author |
✅ | Package author |
license |
✅ | License identifier |
platforms |
✅ | Platforms the package has been tested on |
bundle_url |
✅ | Where to retrieve the bundle — relative path, absolute path, or HTTPS URL |
tags |
optional | Keywords for filtering |
min_a3ip_spec |
optional | Minimum A3IP spec version required by the package |
changelog_summary |
optional | What changed in the latest version — shown during browse |
bundle_url resolution rules:
bundle_url starts with https:// or http://: retrieve via HTTP GET.bundle_url starts with ./ or ../: resolve relative to the directory containing registry.yaml.bundle_url is an absolute path (starts with / or a drive letter): use directly.When a user asks to install a package from a registry, or when the AI needs to suggest packages, the AI follows this sequence:
registry.yaml. Common locations:
~/registries/my-registry.yamlhttps://example.com/a3ip-registry.yamlregistry.yaml in the current working directory.Read and parse registry.yaml. Load the packages: list.
Filter by need. If the user described what they need (e.g. “I want a code review workflow for GitLab”), filter by tags, description, and platforms. Present only relevant matches.
bliq-code-review-flow v1.0.0
Complete code review workflow for GitLab-based .NET microservice teams.
Platforms: cowork, claude-code | License: proprietary
Latest: initial release
Ask the user to choose. If multiple packages match, ask which one to install. If exactly one matches, confirm before proceeding.
After the user selects a package:
Retrieve the bundle. Resolve bundle_url per the rules above. Read the bundle file into context (or fetch via HTTP if it is a URL).
Proceed with normal installation. The bundle is a standard .a3ip.bundle file. Follow the standard installation procedure: read INSTALL.md from the bundle, run the configuration wizard from CONFIGURE.md, apply each install step.
Version check. Before installing, check installed.json in the user’s local config directory. If it exists and its version matches or exceeds the registry entry’s version, tell the user the package is already up to date. If the installed version is older, proceed as an upgrade (use CHANGELOG.md upgrade steps).
Record the registry source. After a successful install, add a registry_source field to installed.json:
{
"package": "bliq-code-review-flow",
"version": "1.0.0",
"installed_at": "2026-05-12T21:00:00Z",
"platform": "cowork",
"registry_source": "./registry.yaml"
}
This allows future update checks to re-query the same registry.
If installed.json contains a registry_source field, the AI can check for updates:
registry_source to locate the registry.registry.yaml and find the entry whose name matches the installed package.version with installed.json version.bundle_url is unreachable: report the error and do not modify the installed package.To publish your own packages, create a registry.yaml file following the format above and place it alongside your .a3ip.bundle files. A minimal registry for a single local package:
---
format: a3ip-registry
spec: "1.5"
name: "My Workflows"
---
packages:
- name: my-workflow
version: "1.0.0"
description: "A workflow package for my team."
author: "Me <me@example.com>"
license: proprietary
platforms:
- cowork
bundle_url: "./my-workflow.a3ip.bundle"
No server required — a registry can live entirely on a shared drive, a Git repository, or any file-accessible location.
(Unchanged from v1.2.)
(Unchanged from v1.0.)
(Unchanged from v1.4. Updated spec compatibility table below.)
| Spec version | Features added |
|---|---|
1.0 |
Core: manifest, INSTALL.md, CONFIGURE.md, bundle format, `` substitution |
1.1 |
Versioning: CHANGELOG.md, installed.json, ## Upgrading in INSTALL.md, refresh: on config keys, min_a3ip_spec:, latest_change: |
1.2 |
Security: trust_level: on scripts, permissions: block, ## Plan in INSTALL.md, storage: on sensitive config keys |
1.3 |
Terminology: formal component definitions, decision table, platform adapter conventions |
1.4 |
Validation: nine normative checks every conformant validator must implement |
1.5 |
Registry: registry.yaml format, browsing protocol, install-from-registry, update checks |
(Unchanged from v1.4, with one addition.)
adapters/<platform>/.adapters/<os>/scripts/.INSTALL.md and performs setup. No human-operated CLI required.CONFIGURE.md turns installation into a conversation.values are set once at install time. values are filled at runtime.CHANGELOG.md gives the AI a precise, version-scoped upgrade path.installed.json lives with the user’s config, not in the package..a3ip.bundle is a single readable text file.A3IP Specification v1.5 Supersedes v1.4. All v1.0, v1.1, v1.2, v1.3, and v1.4 packages remain valid under v1.5. Released: 2026-05-12