Background
Finding from the PR #2555 review round. A skill imported from a nested apps/web/.claude/skills/deploy directory is scoped to that subtree by location in Claude Code, but toRulesyncSkill emits it identically to a root skill — the location information is dropped, and a later generate rewrites it to the root .claude/skills/ with global activation (leaving the nested original in place, so Claude Code then sees both under qualified names).
Solution / Next Steps
Auto-populate paths: ["apps/web/**"] (or the claudecode-specific frontmatter equivalent) from the discovered nested root during import, so the subtree scoping survives the round-trip. Needs the nested root to be plumbed from getConfiguredImportRoots through fromDir into toRulesyncSkill.
Background
Finding from the PR #2555 review round. A skill imported from a nested
apps/web/.claude/skills/deploydirectory is scoped to that subtree by location in Claude Code, buttoRulesyncSkillemits it identically to a root skill — the location information is dropped, and a later generate rewrites it to the root.claude/skills/with global activation (leaving the nested original in place, so Claude Code then sees both under qualified names).Solution / Next Steps
Auto-populate
paths: ["apps/web/**"](or the claudecode-specific frontmatter equivalent) from the discovered nested root during import, so the subtree scoping survives the round-trip. Needs the nested root to be plumbed fromgetConfiguredImportRootsthroughfromDirintotoRulesyncSkill.