From 1231e7d27dd4279ea7f34cd2fac8f82d36f620f5 Mon Sep 17 00:00:00 2001 From: ata <33555998+ataniz@users.noreply.github.com> Date: Fri, 6 Nov 2026 13:49:24 +0300 Subject: [PATCH] The Codex manifest carries a version, interface metadata and an icon, so directories that validate it accept the plugin --- .codex-plugin/plugin.json | 10 +++++++++- assets/icon.svg | 1 + scripts/check-skills.mjs | 6 +++--- 3 files changed, 13 insertions(+), 4 deletions(-) create mode 100644 assets/icon.svg diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index 952af87..dfe6133 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -1,5 +1,6 @@ { "name": "plugin-stack", + "version": "1.0.0", "description": "Skills for AI plugin builders: optimize listings, submit to stores, audit discoverability, design widgets and watch competitors, on live data from OpenApps", "author": { "name": "The Open Apps, Inc.", @@ -8,5 +9,12 @@ "homepage": "https://theopenapps.com?ref=plugin-stack", "repository": "https://github.com/theopenapps/plugin-stack", "license": "MIT", - "skills": "./skills/" + "skills": "./skills/", + "interface": { + "displayName": "Plugin Stack", + "shortDescription": "Optimize listings, submit to stores, audit discoverability, design widgets and watch competitors", + "developerName": "The Open Apps, Inc.", + "websiteURL": "https://theopenapps.com?ref=plugin-stack", + "composerIcon": "./assets/icon.svg" + } } diff --git a/assets/icon.svg b/assets/icon.svg new file mode 100644 index 0000000..1510831 --- /dev/null +++ b/assets/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/scripts/check-skills.mjs b/scripts/check-skills.mjs index bba6aea..85eec88 100644 --- a/scripts/check-skills.mjs +++ b/scripts/check-skills.mjs @@ -79,9 +79,9 @@ for (const skill of skills) { if (licenses.size > 1) fail("LICENSE.txt", `differs across skills: ${[...licenses.values()].map((s) => s.join(", ")).join(" | ")}`); // Claude Code holds back an update until the version changes. With no version, every commit on main is an update. -for (const manifest of [".claude-plugin/plugin.json", ".codex-plugin/plugin.json"]) { - if ("version" in JSON.parse(readFileSync(manifest, "utf8"))) fail(manifest, "has a version"); -} +if ("version" in JSON.parse(readFileSync(".claude-plugin/plugin.json", "utf8"))) fail(".claude-plugin/plugin.json", "has a version"); +// Codex updates whatever the version says, and the HOL list requires one, so its manifest keeps a fixed one. +if (JSON.parse(readFileSync(".codex-plugin/plugin.json", "utf8")).version !== "1.0.0") fail(".codex-plugin/plugin.json", "version is not 1.0.0"); if (errors.length) { console.error(errors.join("\n"));