Skip to content

Surface Codex .system and Claude marketplace plugin skills in cloud mode#658

Closed
Mng-dev-ai wants to merge 2 commits into
mainfrom
fix/surface-codex-system-skills
Closed

Surface Codex .system and Claude marketplace plugin skills in cloud mode#658
Mng-dev-ai wants to merge 2 commits into
mainfrom
fix/surface-codex-system-skills

Conversation

@Mng-dev-ai

@Mng-dev-ai Mng-dev-ai commented Jun 21, 2026

Copy link
Copy Markdown
Owner

Summary

Follow-up to #657. After moving skill discovery to per-sandbox HOMEs, the skills list was still empty/near-empty in cloud mode. Two distinct gaps, both fixed here:

1. Codex preinstalled (.system) skills

Codex stores preinstalled skills under .codex/skills/.system/<name>/, while user-installed ones go flat in .codex/skills/<name>/. The scan only walked the flat path, so the .system dir (no SKILL.md of its own) was skipped. Added .codex/skills/.system as a read-only base per home, mirroring the existing Cursor skills-cursor built-in handling.

2. Claude marketplace plugin skills

_get_claude_plugin_skill_paths read .claude/plugins/installed_plugins.json and enabledPlugins from settings.json — neither exists in the current Claude layout, so no plugin skills surfaced. Rewrote it against the real layout: known_marketplaces.json gives each marketplace's installLocation, and bundled skills live under <installLocation>/{plugins,external_plugins}/*/skills/. Surfaced read-only (the marketplace manages those dirs; updates overwrite edits). Only physically-present plugins are scanned (the official marketplace installs ~52 of 234 catalog entries), so this reflects what's installed, not the full catalog.

Result (verified against real on-disk sandbox homes)

Running the real SkillService.list_all() across all sandbox homes: 0 → 30 skills (25 Claude plugin skills + 5 Codex .system), all read_only=True, deduped across homes. Confirmed get_files still serves them (viewable) and update is rejected for read-only skills.

Known limitation (pre-existing)

Skill identity is {source, name}, so two plugins exposing a same-named skill (e.g. access/configure in discord/imessage/telegram) collapse to one entry. Disambiguating needs a plugin/location qualifier in the API + UI — tracked separately.

Test notes

No automated test suite run (repo policy). Verified by executing the actual service against the real per-sandbox homes.

🤖 Generated with Claude Code

Mng-dev-ai and others added 2 commits June 21, 2026 19:28
Codex stores preinstalled skills under .codex/skills/.system/<name>/,
while user-installed ones stay flat in .codex/skills/<name>/. The scan
only walked the flat namespace path, so the .system directory (which has
no SKILL.md of its own) was skipped and no Codex skills appeared.

Add .codex/skills/.system as a read-only base per home, mirroring the
existing Cursor skills-cursor built-in handling — the CLI manages that
dir and overwrites edits. Flat user-installed Codex skills still resolve
via the namespace path and take priority on name collisions.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The plugin skill discovery read .claude/plugins/installed_plugins.json
and enabledPlugins from settings.json — neither exists in the current
Claude layout, so no plugin skills surfaced. Rewrite it against the
actual layout: known_marketplaces.json gives each marketplace's install
location, and bundled skills live under <installLocation>/plugins/*/skills
and <installLocation>/external_plugins/*/skills.

Surface these read-only since the marketplace manages those dirs. Across
the per-sandbox homes this takes the skills list from 5 (Codex .system
only) to 30 (25 Claude plugin skills + 5 Codex).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@Mng-dev-ai Mng-dev-ai changed the title Surface Codex preinstalled (.system) skills in the skills list Surface Codex .system and Claude marketplace plugin skills in cloud mode Jun 21, 2026
@Mng-dev-ai Mng-dev-ai closed this Jun 21, 2026
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.

1 participant