mirror of
https://github.com/openai/codex.git
synced 2026-04-26 23:55:25 +00:00
feat: Support loading skills from .agents/skills (#10317)
This PR adds support for loading [skills](https://developers.openai.com/codex/skills) from `.agents/skills/`. - Issue: https://github.com/agentskills/agentskills/issues/15 - Motivation: When skills live on the filesystem, sharing them across agents is awkward and often ends up requiring symlinks/duplication. A single location under `.agents/` makes it easier to share skills. - Loading from `.codex/skills/` will remain but will be deprecated soon. The change only applies to the [REPO scope](https://developers.openai.com/codex/skills#where-to-save-skills). - Documentation will be updated before this change is live. Testing with skills in two locations of this repo: <img width="960" height="152" alt="image" src="https://github.com/user-attachments/assets/28975ff9-7363-46dd-ad40-f4c7bfdb8234" /> When starting Codex with CWD in `$repo_root` (should only pick up at root): <img width="513" height="143" alt="image" src="https://github.com/user-attachments/assets/389e1ea7-020c-481e-bda0-ce58562db59f" /> When starting Codex with CWD in `$repo_root/codex-rs` (should pick up at cwd and crawl up to root): <img width="552" height="177" alt="image" src="https://github.com/user-attachments/assets/a5beb8de-11b4-45ed-8660-80707c77006a" />
This commit is contained in:
@@ -425,7 +425,9 @@ async fn load_requirements_from_legacy_scheme(
|
||||
/// empty array, which indicates that root detection should be disabled).
|
||||
/// - Returns an error if `project_root_markers` is specified but is not an
|
||||
/// array of strings.
|
||||
fn project_root_markers_from_config(config: &TomlValue) -> io::Result<Option<Vec<String>>> {
|
||||
pub(crate) fn project_root_markers_from_config(
|
||||
config: &TomlValue,
|
||||
) -> io::Result<Option<Vec<String>>> {
|
||||
let Some(table) = config.as_table() else {
|
||||
return Ok(None);
|
||||
};
|
||||
@@ -454,7 +456,7 @@ fn project_root_markers_from_config(config: &TomlValue) -> io::Result<Option<Vec
|
||||
Ok(Some(markers))
|
||||
}
|
||||
|
||||
fn default_project_root_markers() -> Vec<String> {
|
||||
pub(crate) fn default_project_root_markers() -> Vec<String> {
|
||||
DEFAULT_PROJECT_ROOT_MARKERS
|
||||
.iter()
|
||||
.map(ToString::to_string)
|
||||
|
||||
Reference in New Issue
Block a user