Context
scanAll() scans every path in settings.customScanPaths, including the current vault, but getWatchPaths() only includes built-in tool directories and project-home discovery. Changes under custom roots therefore remain stale until a manual refresh or restart.
Evidence:
src/scanner.ts:344-349 scans custom paths.
src/scanner.ts:366-390 omits custom paths from watcher discovery.
src/main.ts:46-52 adds the vault as a custom path.
Task
Include existing supported skill directories below every custom scan root in the watcher set. Normalize and deduplicate the resulting paths.
Acceptance criteria
- Changes below custom scan roots trigger refreshes.
- Behavior works when project scanning is disabled.
- Duplicate paths do not create duplicate watchers.
- Tests cover addition, modification, and deletion under a custom root.
Context
scanAll()scans every path insettings.customScanPaths, including the current vault, butgetWatchPaths()only includes built-in tool directories and project-home discovery. Changes under custom roots therefore remain stale until a manual refresh or restart.Evidence:
src/scanner.ts:344-349scans custom paths.src/scanner.ts:366-390omits custom paths from watcher discovery.src/main.ts:46-52adds the vault as a custom path.Task
Include existing supported skill directories below every custom scan root in the watcher set. Normalize and deduplicate the resulting paths.
Acceptance criteria