You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 1895a2c
Browse filesBrowse the repository at this point in the historyBrowse files
fix(codex): copy skills into .agents/skills instead of symlinking (#225)
Codex follows a symlinked skill to its source, finds the skills repo's
plugin manifest and lists the skill as `<plugin>:<skill>`; models
sometimes turn that into a nonexistent `.agents/skills/<plugin>/<skill>/`
path, and the fallback search (`rg --files`, `find`) skips symlinks and
finds nothing.
Skills are now copied into `.agents/skills/` before each turn and removed
after it (and on stop/kill), so criteria and run artifacts never see
them. Skill dirs the workspace already ships are left alone. The codex
skills sample task now counts SKILL.md files with `find` and checks the
copies are gone before grading.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: docs/TASK_DEFINITION_GUIDE.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1345,7 +1345,7 @@ Like `skill_triggered`, this criterion emits a `ClassificationCriterionResult`,
1345
1345
1346
1346
### `skill_triggered`
1347
1347
1348
-
Binary classifier: **did the agent engage the target skill during the run?** Agent-agnostic — scans the run's `turn_records` for either signal: Claude's explicit `Skill` tool call whose `skill` parameter matches `skill_name` (namespace prefixes like `plugin:skill` are stripped, so `skill_name: uipath-agents` matches `Skill(skill="uipath-coded-agents:uipath-agents")`), or — for an agent with no `Skill` tool, e.g. Codex — a command that reads the skill's files off disk (a parameter contains `skills/<skill_name>/`, matching both the repo path and the `.agents/skills/` symlink).
1348
+
Binary classifier: **did the agent engage the target skill during the run?** Agent-agnostic — scans the run's `turn_records` for either signal: Claude's explicit `Skill` tool call whose `skill` parameter matches `skill_name` (namespace prefixes like `plugin:skill` are stripped, so `skill_name: uipath-agents` matches `Skill(skill="uipath-coded-agents:uipath-agents")`), or — for an agent with no `Skill` tool, e.g. Codex — a command that reads the skill's files off disk (a parameter contains `skills/<skill_name>/`, matching both the repo path and the `.agents/skills/` copy).
1349
1349
1350
1350
Observed label is `"yes"` when either signal is found, else `"no"`. Expected label is `"yes"` iff `expected_skill == skill_name`. **Binary scoring:** `1.0` when observed matches expected, else `0.0`.
Copy file name to clipboardExpand all lines: docs/agents/CODEX.md
+3-2Lines changed: 3 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -115,7 +115,7 @@ CodexAgent supports SKILL.md files following the [Agent Skills open standard](ht
115
115
1. **config.plugins** - Local plugins with `type: local` and `path` pointing to a skills directory
116
116
2. **plugin_tools_dir** parameter - Runtime plugin directory passed to `start()`
117
117
118
-
Skills are symlinked (or copied) to `.agents/skills/` where the Codex CLI auto-discovers them. Environment variables in plugin paths (`$VAR`, `${VAR}`) are expanded at runtime.
118
+
Skills are copied to `.agents/skills/` for each turn, where the Codex CLI auto-discovers them, and removed when the turn ends. Environment variables in plugin paths (`$VAR`, `${VAR}`) are expanded at runtime.
119
119
120
120
Example with environment variable:
121
121
```yaml
@@ -206,8 +206,9 @@ The agent sets up SKILL.md files (Agent Skills open standard) in `.agents/skills
206
206
1. Scans `config.plugins` for local plugins with `path` field
207
207
2. Checks `plugin_tools_dir` parameter passed to `start()`
208
208
3. Expands environment variables in paths (`$PLUGIN_PATH`, `${PLUGIN_PATH}`)
209
-
4. Symlinks skill directories (falls back to copying if symlink fails)
209
+
4. Copies each skill directory into `.agents/skills/` before every turn (real files, not symlinks), skipping any skill dir the workspace already has
210
210
5. Codex CLI auto-discovers skills in `.agents/skills/`
211
+
6. Removes the copies when the turn ends, so criteria and run artifacts never see them
0 commit comments