Skip to content

chore: fill in the missing manifest fields and keep shared values in one place - #93

Merged
renanfagundes merged 4 commits into
mainfrom
chore/manifest-details
Oct 21, 2026
Merged

renanfagundes merged 4 commits into
mainfrom
chore/manifest-details

Conversation

@renanfagundes

@renanfagundes renanfagundes commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Run-NaN:

Every platform manifest now has the fields its listing reads, and the shared values live in one file so they can't drift.

What changed

  • Claude Code plugin.json: adds displayName, repository, and the fields Anthropic's directory reads for the listing (icon, documentationUrl, supportUrl, privacyPolicyUrl, termsOfServiceUrl).
  • Codex plugin.json: adds repository and drops the empty screenshots list.
  • Antigravity plugin.json: gets repository and the shared values from the sync. No category: agy 1.4 rejects it as an unknown field.
  • Both marketplace entries: add category.
  • One source for shared values: scripts/plugin-metadata.json holds version, author, homepage, repository, license, keywords and category. node scripts/sync-manifests.mts writes them into every manifest and the README sample output. A release now means changing version there and running the script.
  • Codex release zip: node scripts/build-codex-zip.mts builds dist/unity-codex-<version>.zip for OpenAI's plugin portal. It refuses to build if the manifests drift, leaves out evals/ and tests/, and prints the version and skill count to check before uploading.
  • CI: a new Validate manifests workflow typechecks the scripts with tsc (strict), then runs sync-manifests.mts --check and fails if any manifest drifts. The scripts are TypeScript and run directly on Node 24.

Deliberately not added

  • version on the Claude marketplace entry: plugin.json wins at install and claude plugin validate warns when both are set.
  • Display fields (author, homepage, license, keywords) on the Claude marketplace entry: entry values override plugin.json, and the relative ./ source already lets Claude Code read plugin.json before install.
  • owner and description in .agents/plugins/marketplace.json: the Codex marketplace schema doesn't define them.
  • A root plugin.json (the newer Codex layout): Antigravity also reads a root plugin.json, so the Codex settings stay in .codex-plugin/.
Check Result
claude plugin validate . --strict on a clean checkout (Claude Code 2.1.289) ✅ passes
node scripts/sync-manifests.mts --check ✅ passes
Drift detection: changing only the version in plugin-metadata.json ✅ --check exits 1 and lists the three manifests and the README
agy plugin validate . (Antigravity CLI 1.4.4) ✅ passes. --strict fails on main too: six skills are over the 24,000-byte body limit (see below)
Codex validate_plugin.py (last published version; Codex removed it from the CLI in September) ✅ passes, except requires_local_executor, which is already on main and in the approved 0.1.8-beta listing

Found, not fixed here: Antigravity loads only the first 24,000 bytes of a skill body, so six skills are cut off there: unity-cli, migrate-birp-to-urp, levelplay-unity-integration, physics-3d-collision, optimize-web and localization. The fix is moving detail into references/ in each skill's source repo, not here.

Also worth confirming policy.authentication: "ON_USE" in .agents/plugins/marketplace.json: current OpenAI docs list ON_INSTALL and ON_FIRST_USE. This PR leaves it unchanged.

No version bump here, so installed users see no change until the next release.

🤖 Generated with Claude Code

…one place

- Add repository to the Claude Code and Codex manifests, and category to the
  Antigravity manifest and both marketplace entries.
- Add displayName and the directory listing fields (icon, documentation,
  support, privacy policy and terms of service links) to the Claude Code
  manifest.
- Drop the empty Codex screenshots list.
- scripts/plugin-metadata.json now holds the values every manifest shares.
  scripts/sync-manifests.mjs writes them into each manifest and the README
  sample output, and its --check mode runs in CI so the manifests can't drift.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@renanfagundes
renanfagundes marked this pull request as ready for review October 21, 2026 09:22
@renanfagundes
renanfagundes requested a review from a team as a code owner October 21, 2026 09:22
renanfagundes and others added 2 commits October 21, 2026 11:29
agy 1.4 reports category as an unknown field, which fails validate --strict.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
scripts/build-codex-zip.mjs checks the manifests match plugin-metadata.json,
stages a unity/ folder with the skills (no evals/ or tests/), both manifests,
the README, the license and the logos, then writes
dist/unity-codex-<version>.zip and prints the version and skill count.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
chris-addison
chris-addison previously approved these changes Oct 21, 2026
Comment thread scripts/sync-manifests.mts
…n CI

Node 24 runs the .mts files directly. The workflow now runs tsc against
scripts/tsconfig.json (strict, erasable syntax only) before the drift check.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

@ziyiunity ziyiunity left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, and it fixes the version drift across manifests. I ran it locally: sync-manifests --check passes, and the zip builds with 32 skills and no evals or tests. Two small things: 'C:\Windows' in build-codex-zip.mts is C:Windows at runtime since \W isn't an escape, so it should be 'C:\\Windows'. And sync-manifests rewrites any 0.x.y in .github/README.md, so a mention of another tool's version (the Codex CLI is 0.x) would get overwritten; matching only the sample output lines would be safer.

@renanfagundes
renanfagundes merged commit 2ca9a1a into main Oct 21, 2026
4 checks passed
@renanfagundes
renanfagundes deleted the chore/manifest-details branch October 21, 2026 15:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants