Implement skill self-evolution and skill_manage flow (#1874)

* chore: ignore .worktrees directory

* Add skill_manage self-evolution flow

* Fix CI regressions for skill_manage

* Address PR review feedback for skill evolution

* fix(skill-evolution): preserve history on delete

* fix(skill-evolution): tighten scanner fallbacks

* docs: add skill_manage e2e evidence screenshot

* fix(skill-manage): avoid blocking fs ops in session runtime

---------

Co-authored-by: Willem Jiang <willem.jiang@gmail.com>
This commit is contained in:
DanielWalnut
2026-04-06 22:07:11 +08:00
committed by GitHub
parent 055e4df049
commit 888f7bfb9d
20 changed files with 1164 additions and 59 deletions
@@ -55,7 +55,7 @@ def load_skills(skills_path: Path | None = None, use_config: bool = True, enable
if not skills_path.exists():
return []
skills = []
skills_by_name: dict[str, Skill] = {}
# Scan public and custom directories
for category in ["public", "custom"]:
@@ -74,7 +74,9 @@ def load_skills(skills_path: Path | None = None, use_config: bool = True, enable
skill = parse_skill_file(skill_file, category=category, relative_path=relative_path)
if skill:
skills.append(skill)
skills_by_name[skill.name] = skill
skills = list(skills_by_name.values())
# Load skills state configuration and update enabled status
# NOTE: We use ExtensionsConfig.from_file() instead of get_extensions_config()