Repository navigation
Add configurable extra skill roots under [skills] - #14
thedancingdeveloper wants to merge 4 commits into
Conversation
thedancingdeveloper
left a comment
There was a problem hiding this comment.
Review: no blockers (head 36e20d4)
WI-1133, a small additive change (+138, config plus ext/skills):
[skills] extra_user_rootsandextra_project_roots(relative paths); the built-in roots are always kept.confined_jointrims leading separators and joins viaAbsolutePathBuf::join. That goes throughabsolutize_from, which normalizes..lexically, then requiresstarts_with(base). So../outside, an absolute path and~/…(expanded to home, outside the base) are all dropped.- Project roots are only searched between the project root and cwd, and only if they're directories.
- Tests: the extra project root is added, and
../outsideis refused; the extra user root is added beside the built-ins.
Non-blocking: symlinks inside a root aren't resolved before the confinement check. Upstream follows symlinked skill dirs anyway, and skills only load SKILL.md files, so that's acceptable. Say so in the doc comment.
Merge condition: fork-ci green on this head.
da16a71 to
10b2590
Compare
thedancingdeveloper
left a comment
There was a problem hiding this comment.
Review: no blockers (head 10b2590)
36e20d4 is unchanged (=). The one new commit fills the two new SkillsConfig fields (extra_user_roots, extra_project_roots) in an existing config test's struct literal, which is the workspace-check fix. The earlier review stands. It's based on 219664f, one commit behind fork/main (#15's workflow-only change), so no conflict. Merge condition: fork-ci green on this head.
10b2590 to
fefebec
Compare
thedancingdeveloper
left a comment
There was a problem hiding this comment.
Review: no blockers (head 6bf23d2)
On fork/main ef97503. The two reviewed commits are identical (=). The one new commit, 6bf23d2, regenerates core/config.schema.json for the two new [skills] fields, extra_project_roots and extra_user_roots (string arrays, documented). It's the generated-schema counterpart of the config change and nothing else. Merge condition: fork-ci green on this head, under whatever test step is current when it runs.
6bf23d2 to
04c24e3
Compare
1cb1f55 to
af491fd
Compare
extra_user_roots and extra_project_roots add skill directories beside the built-in ones, which are unchanged when the keys are absent. Each value is relative to its base directory and dropped when it resolves outside it, so the config cannot point skill loading at an arbitrary path. WI-1133
SkillsConfig gained extra_user_roots and extra_project_roots, and the bundled-skills assertion builds one by hand. Both default to empty. WI-1133
extra_user_roots and extra_project_roots are part of SkillsConfig, so the committed config.schema.json fixture has to include them. WI-1133
Set project_root_markers = [] via a User config layer so the test does not depend on ancestor directories of the temp dir (e.g. a real .git).
af491fd to
f8ce933
Compare
|
no blockers (head f8ce933) Epic lead. It's on fork/main b8011f5. |
Summary
[skills] extra_user_rootsadds roots under the user config directory, beside the built-inskillsand~/.agents/skills.[skills] extra_project_rootsadds roots under each directory from the project root to the working directory, beside.agents/skills...climb or an absolute value is dropped. Absent keys change nothing.WI-1133. Do not merge; the epic lead reviews.
Test plan
cargo test -p codex-skills-extension --offline --lib extra_— the two new tests pass (root added, built-in root kept, escape dropped)cargo fmt -p codex-config -p codex-skills-extension -- --checkcargo check -p codex-config -p codex-skills --offline --lib