Constraint: Public marketplace should only expose production-ready plugins while KeyInfo now publishes internal skills explicitly.
Rejected: Keeping eapil-prefixed test plugins | They conflict with future KeyInfo-published skills and confuse plugin identity.
Confidence: high
Scope-risk: narrow
Directive: Keep plugin IDs stable and avoid eapil-prefixed test fixtures in the public market.
Tested: python scripts/validate_marketplace.py; CODEX_HOME temp codex plugin marketplace add .; CODEX_HOME temp codex plugin add docx@eapil-skill-market
Not-tested: Remote Codex Desktop install after push.
Constraint: Codex installs and removes plugin units, not individual SKILL.md files.\nRejected: Keep every skill in one eapil-skills bundle | Users could not selectively install only the needed skill pack.\nConfidence: high\nScope-risk: moderate\nDirective: Add future skills as separate eapil-* plugins unless they are intentionally bundled.\nTested: python json.tool for marketplace and plugin manifests; validate_plugin.py for all 13 plugins; codex plugin marketplace add . --json; codex plugin list --marketplace eapil-skill-market --available --json; codex plugin add eapil-pdf/eapil-xlsx/eapil-threejs-fundamentals.\nNot-tested: Remote Git marketplace refresh after push.
Constraint: Codex Git sparse checkout preserves selected paths, so plugins/codex is not treated as the marketplace root by the CLI.\nRejected: Require users to rely on a single plugins/codex sparse path | The CLI leaves the manifest nested and rejects the marketplace root.\nConfidence: high\nScope-risk: narrow\nDirective: Keep the root .agents/plugins/marketplace.json as the primary Git entrypoint.\nTested: python json.tool on both marketplace manifests; validate_plugin.py.\nNot-tested: Remote Git marketplace add after this commit.