Repository navigation
Codex repo-local .agents/skills are not discovered in project threads #3576
Description
Summary
When using T3 Code with a repo that contains Codex repo-local skills under .agents/skills/*/SKILL.md, the Codex composer only shows global/user skills. The repo-local skills are not discoverable via $skill in the thread composer.
This does not appear to be a Codex CLI discovery problem. If codex app-server is asked directly for skills with the repo cwd, it returns the repo skills correctly.
Reproduction
- Open a project in T3 Code whose repo contains local skills, for example:
/Users/jakeleventhal/Developer/myrepo/.agents/skills/*/SKILL.md
- Start or open a Codex thread for that project.
- Type
$in the composer to browse skills.
Actual
Only global/user Codex skills appear. Repo-local skills from .agents/skills are missing.
Expected
The composer should include skills discovered for the active project/thread cwd, including repo-local skills from .agents/skills.
Evidence
Direct Codex app-server probing works when using the project cwd:
"skills/list params": {
"cwds": ["/Users/jakeleventhal/Developer/myrepo"],
"forceReload": true
}That returned repo-scoped skills such as:
audit-slow-sql-queries
create-linear-issue-from-diff
create-vercel-preview-deployment
frontend-conventions
generate-test-plan-from-diff
implement-linear-issue
investigate-marketplace-order-issue
review-changes
review-gh-pr-comments
trpc-procedure-usage
validate-changes
write-tests
Each had paths like:
/Users/jakeleventhal/Developer/myrepo/.agents/skills/<name>/SKILL.md
and scope: "repo".
Suspected cause
The composer appears to use provider status skills:
selectedProviderStatus?.skills ?? []But Codex provider status is populated by a probe using the T3 Code server process cwd:
const probeResult = yield* probe({
binaryPath: codexSettings.binaryPath,
homePath: codexSettings.homePath,
cwd: process.cwd(),
customModels: codexSettings.customModels,
environment: resolvedEnvironment,
})Then the probe calls:
client.request("skills/list", {
cwds: [input.cwd],
})So the composer skill list is based on the T3 Code server cwd, not the active project/thread cwd. That makes it global/provider-scoped instead of project-scoped.
Possible fix
Make Codex skill discovery project-aware. For example:
- Fetch
skills/listusing the active project or thread cwd when rendering composer skill suggestions. - Cache skills keyed by
(providerInstanceId, cwd)rather than only provider status. - Keep provider status for account/model readiness, but avoid using it as the sole source for project-local skill suggestions.
- Re-run
skills/listfor the active cwd when Codex emitsskills/changed.
This would align the UI with Codex app-server behavior and allow .agents/skills to work in T3 Code project threads.
Activity
jakeleventhal commentedon Jun 26, 2026
Tried grok code and got same results
StiensWout commentedon Jun 30, 2026
Additional reproduction from a T3 nightly server setup:
t3 v0.0.29-nightly.20260630.690t3 servewas running from a systemd service withWorkingDirectory=/srv/workspaces/srv/workspaces/t3code/srv/workspaces/t3code/.codex/skills/t3-contribute/SKILL.mdObserved behavior:
/srv/workspaces/t3codeincludedt3-contributein the available skills./srv/workspacesdid not includet3-contribute./srv/workspaces.WorkingDirectoryto/srv/workspaces/t3codemade the provider cache includet3-contribute.That confirms the suspected cause in this issue: provider status skill discovery is based on the T3 server process cwd, not the active project/thread cwd. The workaround is to install the skill globally under
~/.codex/skills, but that makes a project-specific skill appear globally, which is not ideal.lmtr0 commentedon Jul 4, 2026
I got skills for most of the work I do day to day. What would be the best approach to getting this merged and fixed?
I'm willing to contribute.
Also observed:
In codex and opencode with the webui
Desktop app shows the same behaviour
lmtr0 commentedon Jul 8, 2026
I've finished my implementation; hopefully it gets merged.
I've open PRS for the base and codex impls, if they get merged, I'll open PRS for the cursor and opencode ones as well
juliusmarminge commentedon Jul 20, 2026
Closing as a duplicate of #3040. Both reports describe repository-local
.agents/skillsmissing because discovery is not scoped to the selected project cwd. No active superseding PR was found; implementation should stay attached to #3040.