From 00058faae65f477044e3bb1916ef1f78e8735ad7 Mon Sep 17 00:00:00 2001 From: csunny Date: Thu, 26 Feb 2026 20:53:22 +0800 Subject: [PATCH 1/2] Refactor skill directory discovery to use recursive search with deduplication --- .../src/derisk_serve/skill/service/service.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/packages/derisk-serve/src/derisk_serve/skill/service/service.py b/packages/derisk-serve/src/derisk_serve/skill/service/service.py index b46f349d..8a3b356e 100644 --- a/packages/derisk-serve/src/derisk_serve/skill/service/service.py +++ b/packages/derisk-serve/src/derisk_serve/skill/service/service.py @@ -348,7 +348,7 @@ def _find_skill_directories(self, repo_path: str) -> List[str]: Returns: List[str]: List of skill directory paths containing SKILL.md """ - skill_dirs = [] + skill_dirs = set() # Common skill directory patterns patterns = [ @@ -363,13 +363,14 @@ def _find_skill_directories(self, repo_path: str) -> List[str]: if not os.path.isdir(search_path): continue - for entry in os.scandir(search_path): - if entry.is_dir(): - skill_md_path = os.path.join(entry.path, "SKILL.md") - if os.path.exists(skill_md_path): - skill_dirs.append(entry.path) + # Recursively search for SKILL.md in all subdirectories + for root, dirs, files in os.walk(search_path): + if "SKILL.md" in files: + skill_dirs.add(root) + # Don't go deeper into subdirectories of a skill directory + dirs[:] = [] - return skill_dirs + return list(skill_dirs) def _parse_skill_md(self, file_path: str) -> Optional[Dict[str, str]]: """Parse SKILL.md file to extract metadata. From d95a648398240b5fb5f69a67ba342830f41cbaf9 Mon Sep 17 00:00:00 2001 From: csunny Date: Mon, 30 Mar 2026 20:00:23 +0800 Subject: [PATCH 2/2] chore: move root-level docs and test scripts to docs/ and tests/ Move misplaced files from root directory to their proper locations: - docs: AGENT_ALIAS_IMPLEMENTATION_COMPLETE.md, DISCKAIMER.md, QUICKSTART.md - tests: debug_alias_registration.py, final_verification.py, test_agent_alias_complete.py, test_alias_complete_flow.py, test_file_upload_fix.py, test_simplified_alias.py, verify_agent_alias.py --- .../AGENT_ALIAS_IMPLEMENTATION_COMPLETE.md | 0 DISCKAIMER.md => docs/DISCKAIMER.md | 0 QUICKSTART.md => docs/QUICKSTART.md | 0 debug_alias_registration.py => tests/debug_alias_registration.py | 0 final_verification.py => tests/final_verification.py | 0 .../test_agent_alias_complete.py | 0 test_alias_complete_flow.py => tests/test_alias_complete_flow.py | 0 test_file_upload_fix.py => tests/test_file_upload_fix.py | 0 test_simplified_alias.py => tests/test_simplified_alias.py | 0 verify_agent_alias.py => tests/verify_agent_alias.py | 0 10 files changed, 0 insertions(+), 0 deletions(-) rename AGENT_ALIAS_IMPLEMENTATION_COMPLETE.md => docs/AGENT_ALIAS_IMPLEMENTATION_COMPLETE.md (100%) rename DISCKAIMER.md => docs/DISCKAIMER.md (100%) rename QUICKSTART.md => docs/QUICKSTART.md (100%) rename debug_alias_registration.py => tests/debug_alias_registration.py (100%) rename final_verification.py => tests/final_verification.py (100%) rename test_agent_alias_complete.py => tests/test_agent_alias_complete.py (100%) rename test_alias_complete_flow.py => tests/test_alias_complete_flow.py (100%) rename test_file_upload_fix.py => tests/test_file_upload_fix.py (100%) rename test_simplified_alias.py => tests/test_simplified_alias.py (100%) rename verify_agent_alias.py => tests/verify_agent_alias.py (100%) diff --git a/AGENT_ALIAS_IMPLEMENTATION_COMPLETE.md b/docs/AGENT_ALIAS_IMPLEMENTATION_COMPLETE.md similarity index 100% rename from AGENT_ALIAS_IMPLEMENTATION_COMPLETE.md rename to docs/AGENT_ALIAS_IMPLEMENTATION_COMPLETE.md diff --git a/DISCKAIMER.md b/docs/DISCKAIMER.md similarity index 100% rename from DISCKAIMER.md rename to docs/DISCKAIMER.md diff --git a/QUICKSTART.md b/docs/QUICKSTART.md similarity index 100% rename from QUICKSTART.md rename to docs/QUICKSTART.md diff --git a/debug_alias_registration.py b/tests/debug_alias_registration.py similarity index 100% rename from debug_alias_registration.py rename to tests/debug_alias_registration.py diff --git a/final_verification.py b/tests/final_verification.py similarity index 100% rename from final_verification.py rename to tests/final_verification.py diff --git a/test_agent_alias_complete.py b/tests/test_agent_alias_complete.py similarity index 100% rename from test_agent_alias_complete.py rename to tests/test_agent_alias_complete.py diff --git a/test_alias_complete_flow.py b/tests/test_alias_complete_flow.py similarity index 100% rename from test_alias_complete_flow.py rename to tests/test_alias_complete_flow.py diff --git a/test_file_upload_fix.py b/tests/test_file_upload_fix.py similarity index 100% rename from test_file_upload_fix.py rename to tests/test_file_upload_fix.py diff --git a/test_simplified_alias.py b/tests/test_simplified_alias.py similarity index 100% rename from test_simplified_alias.py rename to tests/test_simplified_alias.py diff --git a/verify_agent_alias.py b/tests/verify_agent_alias.py similarity index 100% rename from verify_agent_alias.py rename to tests/verify_agent_alias.py