api/skills_scan.py.dox.md
skills_scan.py API endpoint.skills_scan.py because this directory is intentionally flat.skills_scan.py owns the runtime implementation.skills_scan.py.dox.md owns durable notes about responsibilities, contracts, side effects, and verification for that implementation.SkillsScan (ApiHandler)
async process(self, input: dict[str, Any], request: Request) -> dict[str, Any] | Responsehelpers.api.ApiHandler; WebSocket handlers must derive from helpers.ws.WsHandler.targets returns existing installed skill roots that contain at least one SKILL.md.skills_file accept only .zip uploads, extract them into tmp/skill_scans, discover contained SKILL.md folders, and return paths plus cleanup_paths for the scanner prompt.tmp/uploads are deleted after extraction or failure.__future__, helpers, helpers.api, helpers.skills_import, pathlib, shutil, time, typing, uuid, werkzeug.datastructures, werkzeug.utils.helpers.skills.get_skill_roots() and filters to roots where discover_skill_md_files() finds skills.extract_skills_zip() so zip entries remain bounded to the temp extraction root.display_path provides normalized /a0/... style display when possible.No child DOX files.