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 codex

Read-only local audit · logical paths · no model call · does not claim live Desktop state

Before changing scope

Separate a local catalog defect from a Desktop runtime defect.

  1. Run from the intended repository root

    Run the audit in the same checkout opened by Codex Desktop. It reports every candidate .agents/skills scope from the current directory to the repository root, using repository-relative paths.

  2. 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.

  3. Keep repository skills repository-scoped

    Do not copy the skill into ~/.agents/skills as a workaround. That changes the scope under test and can expose project-specific instructions to unrelated repositories.

  4. 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.

What a useful report contains

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.

Static audit boundary

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.

Primary evidence

The local scope is documented; native visibility still needs runtime proof.

Next step

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.