Vendor skills as flat skills/ children for marketplace install - #6
Conversation
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
SimeonGriggs
left a comment
There was a problem hiding this comment.
Stamped, but I see Devin's got some comments
|
@SimeonGriggs all three review comments are already fixed in Still draft only because of the two blockers outside this repo: domain verification ( |
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
d444768 to
08616c7
Compare
|
Re-requesting review after re-signing the full commit series to satisfy the default-branch signature rule. All 11 commits are GitHub-verified. This update also moves skill-sources.json out of the reserved .codex-plugin/ directory and re-runs the deterministic sync, 81-reference validation, workflow layout validation, JSON checks, and release archive test successfully. |
Summary
The problem: Installing via
codex plugin marketplace add planetscale/codex-pluginsilently installs zero skills. Codex clones without--recurse-submodules(and the bundle path rejects symlinks), soskills/anddatabase-skills/arrive empty. It only ever worked for us because we clone recursively.The fix: Drop the submodules and vendor the skills directly.
scripts/sync-skills.pypulls them from upstream and records source commits in.codex-plugin/skill-sources.json; a weekly workflow re-runs the sync and opens a PR when upstream changes.Layout
All 21 skills live flat under
skills/, with two index skills routing to the rest:Flat is deliberate — Agent Plugins v1 and OpenAI's validator only look at direct children of
skills/, so nesting would break discovery under the newer format. The index routing tables are regenerated by the sync from each child'sdescription, so they can't drift.How the sync keeps things sane
planetscale-prefix is stripped (Codex already namespaces asplanetscale:skill), and engine skills get adatabase-prefix somysql/postgresaren't global names.raw.githubusercontent.comlinks now point at the vendored copies so a bundled plugin reads its own files, not upstreammain. Validation then fails the sync on any dangling link (81 refs checked, 0 dangling).Also fixed
Everything the plugin validator was rejecting: the skills path pointed outside the accepted root (so the database skills shipped where Codex can't import them),
shortDescriptionexceeded the 30-char limit,skills/script/had noSKILL.md, and the required logo/icon assets were missing.validate_plugin.pynow passes and the sync is idempotent.Remaining blockers (external to this repo)
mcp.pscale.dev/.well-known/openai-apps-challengestill 404s (checked 2026-08-31).readOnlyHint/openWorldHint/destructiveHintannotations can't be verified behind OAuth.Link to Devin session: https://app.devin.ai/sessions/03b6759590044baea63ffb497eecad20
Requested by: @heyglassy