Issues and PRs are welcome. This document covers the development setup and the conventions that keep the project easy to review.
SkillsManager/— the macOS app (SwiftUI, Swift 6, SwiftData, macOS 14+)Models/— data models and settingsServices/— business logic (SkillStore is the central state hub)Adapters/— agent registry and per-agent scannersViews/— SwiftUI views
tui/— the terminal UI (blessed; seetui/docs/blessed-engine.mdbefore touching keyboard handling)Tests/— swift-testing suites for the app
The app:
open SkillsManager.xcodeproj # then ⌘RRun xcodegen generate after changing project.yml.
The TUI:
cd tui
npm install
npm exec skills-managerRun the full test suite before opening a PR:
xcodebuild \
-project SkillsManager.xcodeproj \
-scheme SkillsManager \
-destination 'platform=macOS' \
testIf you change install/uninstall, scanning, or settings behavior, add or update a test in Tests/SkillsManagerTests.
- Keep file system writes inside services (
SkillStore,SymlinkInstaller, …); views stay free of direct I/O, force unwraps, andtry!. - API keys and other secrets go to the Keychain via
KeychainService— never UserDefaults. - The TUI follows the blessed rules in
CLAUDE.md: let blessed lists handle their own navigation, don't maintain a parallelselectedIndex. - Update
README.mdwhen you add, remove, or change user-facing behavior — the README is treated as a promise about what the code actually does.
- Keep PRs focused: one fix or one feature per PR.
- Describe user-visible changes in the PR description, and note any changes to supported agents or install behavior.