composer.json is both its Composer manifest and the metadata Aikeedo shows in the admin panel.
Example
composer.json
Required
string
required
Must be
aikeedo-theme.string
required
The package name,
vendor/package. It must match the installed directory, extra/extensions/{vendor}/{package}.string
required
The installer package. Use
^1.2.0 if you use object entries in extra.public.Differences from plugins
Metadata
string
Semantic version. Installing from an archive runs
composer require <name>:<version>, so keep it accurate and raise it every release.string
Shown in the admin panel. The top-level field is used, not
extra.description.string
Display name. Falls back to the package name.
string
A short one-line summary.
string
URL of a logo image for listings.
string
URL of an icon image.
string
Your product page.
string
Release date, such as
2026-09-15.object[]
Entries with
name, email, homepage and role.object
Any of
chat, docs, email, forum, irc, issues, rss, source, wiki.Assets
array
Directories and files copied to
public/e/{vendor}/{package}/ when the theme is installed. A built theme normally publishes ["assets", ".vite"]: the compiled files, and the manifest that maps source paths to their hashed names.PHP
string
A class implementing
Plugin\Domain\PluginInterface. Only needed when the theme registers routes or services. Escape the backslashes: "Acme\\Aurora\\Theme".object
Maps your namespace to
src/. Required whenever the theme ships PHP, and the package must be installed with Composer for it to take effect.Checklist
The installed directory matches
name.type is aikeedo-theme.require includes heyaikeedo/composer.version is set and raised for the release.extra.public lists everything the browser needs.If there’s PHP, the entry class and the PSR-4 namespace agree.