sylius-a2a — a card that does not contradict itself.
The Agent Card sits at /.well-known/agent-card.json. Its skills come from the shared registry — the same capabilities also appear in the Agent Skills index and in the MCP Server Card. The card is served even when no skill is registered: it is discovery, not a capability.
Three hand-maintained lists drift apart reliably
The same capabilities of a shop appear in three places: in the Agent Card, in the Agent Skills index and in the MCP Server Card. Each of these formats has its own structure, but none of them has its own content. That is why the Agent Card reads its skills from the shared registry instead of keeping a list of its own.
Maintaining three copies by hand is the path along which they start to contradict each other — not immediately, but at the second or third skill, when one of the three places is forgotten during the update. The contradiction goes unnoticed internally, because each file on its own remains valid. It is noticed by a client that fetches two of them and has to decide which one to believe.
The card at /.well-known/agent-card.json is served even when no skill is registered. It is discovery, not a capability: it answers the question of whether this shop can be addressed via A2A at all, and how. A 404 would answer that question with no — although the answer is yes and only the list of capabilities happens to be empty.
Source code & documentation
Composer package
MIT · Sylius 2.0+ · PHP 8.2+
composer require koh/sylius-a2a
Built, tested and published under MIT. Public distribution via Packagist is being prepared (coming soon).
Part of the family
MIT
This package belongs to koh/sylius-agent-ready — seventeen bundles that make a Sylius shop usable for AI agents. Each one can be deployed on its own.