Codex Desktop troubleshooting
Your repository skill exists, but Codex Desktop cannot see it.
First establish the share-safe disk and configuration evidence. Do not move a project skill into a global user directory merely to make a missing native skill entry disappear.
npx --yes github:kotobuki09/instructree#v0.22.0 skills . --client codexRead-only local audit · logical paths · no model call · does not claim live Desktop state
Separate a local catalog defect from a Desktop runtime defect.
Run from the intended repository root
Run the audit in the same checkout opened by Codex Desktop. It reports every candidate
.agents/skillsscope from the current directory to the repository root, using repository-relative paths.Resolve structural findings on disk
Check metadata failures, BOM warnings, malformed frontmatter, scan errors, possible duplicate names, and the redacted symlinked-candidate count. A valid local candidate is necessary evidence, but not proof that a running Desktop session loaded it.
Keep repository skills repository-scoped
Do not copy the skill into
~/.agents/skillsas a workaround. That changes the scope under test and can expose project-specific instructions to unrelated repositories.Collect the native result separately
After correcting local findings, start a new Desktop session for that checkout and compare the native available-skills list with the audit. Do not use a resumed thread as the post-change check: current Codex reports show its model-visible skill list can remain stale after new skills are added. Record the Desktop version, operating system, project trust state, and exact count of valid local candidates.
Capture deterministic local evidence without dumping private paths.
$ instructree skills . --client codex --json
scopes: user shared · user legacy · repository local
repository candidates: 7
metadata failures: 0
scan errors: 0
possible duplicate names: 0
Use the JSON result to preserve logical paths, scope provenance, supported user-config state, and diagnostics. Pair it with the separate native observation: expected local candidates versus skills shown by the Desktop app.
Instructree does not inspect a running or resumed session. Desktop trust, product restrictions, plugins, native discovery, and session state can change the loaded list after the on-disk audit succeeds.
The local scope is documented; native visibility still needs runtime proof.
- Official Codex skills documentation — user and repository skill locations.
- openai/codex#40458 — Windows Desktop report of valid repository-local
.agents/skillscandidates absent from the native list. - openai/codex#16607 — report that resumed threads can retain a stale model-visible skill inventory after a skill is added.
- openai/codex#40070 — report that a standalone skill reached through a symlink can inherit a namespace from its target ancestors.
- Instructree user-root research — why shared and deprecated user roots are reported separately.
Audit the local catalog, then compare it with a fresh Desktop session.
Use the read-only result to correct disk or supported-configuration defects. If the catalog is clean but the native list is still missing repository candidates, keep the two evidence layers separate when escalating.