mirror of
https://github.com/secondsky/claude-skills.git
synced 2026-09-18 19:54:22 +08:00
9e1ca6496b
Add .codex-plugin/plugin.json manifests for every plugin (derived from .claude-plugin/ manifests) and .agents/plugins/marketplace.json (Codex's standard marketplace location). Codex CLI users can now install plugins natively via Added marketplace `claude-skills` from https://github.com/secondsky/claude-skills.git. Installed marketplace root: /Users/eddie/.codex/.tmp/marketplaces/claude-skills. New files: - scripts/generate-codex-manifests.sh — derives Codex manifests from Claude manifests (Claude remains source of truth) - schemas/codex-plugin.schema.json + codex-marketplace.schema.json — AJV validation for generated Codex artifacts - 142 × .codex-plugin/plugin.json — one per plugin - .agents/plugins/marketplace.json — Codex marketplace catalog Changed: - scripts/sync-plugins.sh — syncs .codex-plugin/ version in lockstep pass - scripts/generate-marketplace.sh — calls generate-codex-manifests.sh after regenerating the Claude marketplace - scripts/validate-json-schemas.sh — validates Codex schemas alongside Claude - package.json — added validate:codex + generate:codex scripts - README/CHANGELOG/CLAUDE.md/PROJECT_STRUCTURE.md — Codex CLI now ✅ Native - Version bump 3.6.2 → 3.6.3 (all 142 plugins + both marketplaces + package.json) Not carried into Codex: commands/ and agents/ arrays (no Codex equivalent; use Codex /import for that). mcpServers carried through where present (3 nuxt plugins). Fixes stale delegate-my-work/.codex-plugin/plugin.json (was 3.4.0).
130 lines
4.0 KiB
JSON
130 lines
4.0 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"$id": "https://github.com/secondsky/claude-skills/schemas/codex-plugin.schema.json",
|
|
"title": "Codex CLI Plugin Schema",
|
|
"description": "JSON schema for validating .codex-plugin/plugin.json files. Derived from .claude-plugin/plugin.json by generate-codex-manifests.sh. Based on the OpenAI Codex CLI plugin specification.",
|
|
"type": "object",
|
|
"required": ["name", "version", "description", "author"],
|
|
"additionalProperties": true,
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"pattern": "^[a-z0-9-]+$",
|
|
"description": "Plugin name in kebab-case (REQUIRED)."
|
|
},
|
|
"version": {
|
|
"type": "string",
|
|
"pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$",
|
|
"description": "Semantic version (major.minor.patch). Must be valid semver."
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"minLength": 10,
|
|
"maxLength": 500,
|
|
"description": "Brief explanation of plugin purpose."
|
|
},
|
|
"author": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"description": "Author name (REQUIRED)."
|
|
},
|
|
"email": {
|
|
"type": "string",
|
|
"format": "email",
|
|
"description": "Author email."
|
|
},
|
|
"url": {
|
|
"type": "string",
|
|
"format": "uri",
|
|
"description": "Author URL."
|
|
}
|
|
},
|
|
"required": ["name"],
|
|
"additionalProperties": false
|
|
},
|
|
"license": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"description": "License identifier (e.g. MIT, Apache-2.0)."
|
|
},
|
|
"repository": {
|
|
"type": "string",
|
|
"description": "Source code URL."
|
|
},
|
|
"keywords": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"minItems": 1,
|
|
"uniqueItems": true,
|
|
"description": "Discovery tags."
|
|
},
|
|
"skills": {
|
|
"type": "string",
|
|
"description": "Path to skills directory (Codex auto-discovers SKILL.md files)."
|
|
},
|
|
"mcpServers": {
|
|
"description": "MCP server config — path string, array of paths, or inline config.",
|
|
"oneOf": [
|
|
{ "type": "string" },
|
|
{ "type": "array", "items": { "type": "string" } },
|
|
{ "type": "object" }
|
|
]
|
|
},
|
|
"interface": {
|
|
"type": "object",
|
|
"description": "UX metadata for the Codex plugin browser.",
|
|
"properties": {
|
|
"displayName": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"description": "Human-readable plugin name."
|
|
},
|
|
"shortDescription": {
|
|
"type": "string",
|
|
"description": "One-line summary (shown in list views)."
|
|
},
|
|
"longDescription": {
|
|
"type": "string",
|
|
"description": "Full description (shown in detail view)."
|
|
},
|
|
"developerName": {
|
|
"type": "string",
|
|
"description": "Developer/organization name."
|
|
},
|
|
"category": {
|
|
"type": "string",
|
|
"description": "Plugin category (freeform string)."
|
|
},
|
|
"capabilities": {
|
|
"type": "array",
|
|
"items": { "type": "string" },
|
|
"description": "What the plugin can do (e.g. Read, Write, Interactive)."
|
|
},
|
|
"defaultPrompt": {
|
|
"type": "array",
|
|
"items": { "type": "string", "maxLength": 128 },
|
|
"maxItems": 3,
|
|
"description": "Suggested starter prompts (max 3, 128 chars each)."
|
|
},
|
|
"websiteURL": { "type": "string", "format": "uri" },
|
|
"privacyPolicyURL": { "type": "string", "format": "uri" },
|
|
"termsOfServiceURL": { "type": "string", "format": "uri" },
|
|
"brandColor": { "type": "string" },
|
|
"logo": { "type": "string" },
|
|
"logoDark": { "type": "string" },
|
|
"screenshots": {
|
|
"type": "array",
|
|
"items": { "type": "string" }
|
|
}
|
|
},
|
|
"additionalProperties": true
|
|
}
|
|
}
|
|
}
|