This document outlines the transition fully away from database-driven skill storage towards a pure File-System-Based Architecture. Skills will become directories on the server grouped by features (e.g., swarm_control, voice_chat), simplifying the user interface and maximizing flexibility (enabling git versioning, native file inclusion, etc.).
settings.SKILLS_DIR (e.g., /app/data/skills).Skill and SkillFile (do not delete db tables yet for backup).app.core.skills.loader)FileSystemSkillLoader script.os.walk() through settings.SKILLS_DIR on boot, or use a background File System Watcher (e.g., watchdog) to dynamically update capabilities.
swarm_control, voice_chat).get_weather).SKILL.md from these folders to mount Markdown schemas and execute scripts..metadata.json).metadata.json file..metadata.json for any existing folder that lacks one, assigning ownership defaults (e.g., admin)..metadata.json assigning owner_id to that user..metadata.json and auto-generates it, defaulting the owner_id to the cluster admin..metadata.json from the Visual Explorer so developers aren't bothered by system files. Permission modifications in the future will interact exclusively with this file.tool.py_execute_system_skill and get_tools inside app/core/services/tool.py to route through the new FileSystemSkillLoader cache instead of invoking the database sessions. The .metadata.json overrides will dictate authorization blocks.app.api.routes.skills)GET /api/v1/skills/ endpoint to return JSON payloads mapping the physical directories (e.g., reading directories, returning the tree object).POST, PUT, DELETE operations with standard Python os and shutil commands:
shutil.rmtree()./api/v1/skills/{feature}/{skill_id}/tree).ai_unified_frontend)name, description, skill_type, and is_system checkboxes from SkillsPage.js.get_weather).SKILL.md content (e.g., ### Skill Name: Get Weather 🌤️).SkillsPage layout into a two-panel IDE layout:
Feature > Folder Name > Files).Monaco Editor or CodeMirror instance loading the physical file content.SKILL.md via UI "Right Click -> New File"./app/data/skills/.settings.SKILLS_DIR could be parameterized per user (/app/data/skills/{user_id}/...) or we accept skills as global components for the Hub.