_load_skill_payload() reconstructed skill_dir as SKILLS_DIR / relative_path, which is wrong for external skills from skills.external_dirs — they live outside SKILLS_DIR entirely. Scripts and linked files failed to load. Fix: skill_view() now includes the absolute skill_dir in its result dict. _load_skill_payload() uses that directly when available, falling back to the SKILLS_DIR-relative reconstruction only for legacy responses. Closes #10313
This commit is contained in:
@@ -72,7 +72,14 @@ def _load_skill_payload(skill_identifier: str, task_id: str | None = None) -> tu
|
|||||||
skill_name = str(loaded_skill.get("name") or normalized)
|
skill_name = str(loaded_skill.get("name") or normalized)
|
||||||
skill_path = str(loaded_skill.get("path") or "")
|
skill_path = str(loaded_skill.get("path") or "")
|
||||||
skill_dir = None
|
skill_dir = None
|
||||||
if skill_path:
|
# Prefer the absolute skill_dir returned by skill_view() — this is
|
||||||
|
# correct for both local and external skills. Fall back to the old
|
||||||
|
# SKILLS_DIR-relative reconstruction only when skill_dir is absent
|
||||||
|
# (e.g. legacy skill_view responses).
|
||||||
|
abs_skill_dir = loaded_skill.get("skill_dir")
|
||||||
|
if abs_skill_dir:
|
||||||
|
skill_dir = Path(abs_skill_dir)
|
||||||
|
elif skill_path:
|
||||||
try:
|
try:
|
||||||
skill_dir = SKILLS_DIR / Path(skill_path).parent
|
skill_dir = SKILLS_DIR / Path(skill_path).parent
|
||||||
except Exception:
|
except Exception:
|
||||||
|
|||||||
@@ -1263,6 +1263,7 @@ def skill_view(name: str, file_path: str = None, task_id: str = None) -> str:
|
|||||||
"related_skills": related_skills,
|
"related_skills": related_skills,
|
||||||
"content": content,
|
"content": content,
|
||||||
"path": rel_path,
|
"path": rel_path,
|
||||||
|
"skill_dir": str(skill_dir) if skill_dir else None,
|
||||||
"linked_files": linked_files if linked_files else None,
|
"linked_files": linked_files if linked_files else None,
|
||||||
"usage_hint": "To view linked files, call skill_view(name, file_path) where file_path is e.g. 'references/api.md' or 'assets/config.yaml'"
|
"usage_hint": "To view linked files, call skill_view(name, file_path) where file_path is e.g. 'references/api.md' or 'assets/config.yaml'"
|
||||||
if linked_files
|
if linked_files
|
||||||
|
|||||||
Reference in New Issue
Block a user