Remove the skillsPath field from SkillRepo and Skill structs since
recursive scanning now automatically discovers skills in all directories.
Simplify the UI by removing the path input field.
- Replace global `is_empty_for_first_import()` with independent checks:
- `is_mcp_table_empty()` for MCP server imports
- `is_prompts_table_empty()` for prompt imports
- Skills and providers already have built-in idempotency checks
- Fix misleading logs in provider import:
- Change `import_default_config` return type from `Result<()>` to `Result<bool>`
- Return `true` when actually imported, `false` when skipped
- Only log success message when import actually occurred
- Add idempotency protection to `import_from_file_on_first_launch`
This allows each data type to be independently recovered if deleted,
rather than requiring all tables to be empty for any import to trigger.
Add recursive directory scanning to discover SKILL.md files in nested
directories. When a SKILL.md is found, treat sibling directories as
functional folders rather than separate skills.
- Replace INSERT OR REPLACE with UPDATE for existing providers to avoid
triggering ON DELETE CASCADE on provider_endpoints table
- Fix endpoint merging logic to correctly mark database endpoints as
isCustom when they overlap with preset endpoints
The root cause was that INSERT OR REPLACE performs DELETE + INSERT under
the hood, which triggered the foreign key cascade and deleted all
associated endpoints from provider_endpoints table.