Skiller — Agenten-Anleitung
Skiller ist eine plattformübergreifende Desktop-App (Electron) zum Installieren, Synchronisieren und Bearbeiten von KI-Agenten-Fähigkeiten für viele Agenten (Claude Code, Cursor, Copilot CLI, etc.). Bundle-ID: com.beautyfree.skiller.
Stack
| Ebene | Technologie |
|---|---|
| Hauptprozess / nativ | Electron (src/electron-main/index.ts), Node 20 |
| Benutzeroberfläche | React 19, Vite 7 (Root src/mainview), Tailwind CSS 4, react-router-dom |
| API | tRPC über HTTP auf 127.0.0.1 + ipcMain Push-Kanal für Main→Renderer-Ereignisse |
| Build | electron-vite (Entwicklung + Bündelung) + electron-builder (Paketierung, Signierung, Auto-Updates) |
| Updater | electron-updater (GitHub Releases, latest-*.yml + Blockmaps) |
Repository-Struktur
| Pfad | Rolle |
|---|---|
src/electron-main/ | Electron-Hauptprozess: BrowserWindow, Tray, tRPC-Server, macOS-Vibrancy, Plattform-Adapter |
src/preload/ | contextBridge – stellt window.api.{invoke,on,platform} für den Renderer bereit |
src/main/ | Plattformunabhängiger Main-Seite-Code: Skill-Überwacher, tRPC-Router, Marktplatz-Cache, App-Updater-Wrapper, Einstellungen, Scanner |
src/mainview/ | Vite-App: App.tsx, Seiten, Komponenten, index.html, CSS-Tokens |
src/shared/ | Typen / RPC-Schema, geteilt zwischen Main und Renderer (inkl. AppPlatform-Interface) |
agents/ | Gebündelte Agenten-Metadaten (kopiert in die App über electron-builder.yml extraResources) |
assets/icons/ | Laufzeit-Icons: AppIcon.iconset/, app.icns, app.ico, app/icon-512.png |
assets/icons/Skiller.icon/ | Nur Quelle (Icon Composer): scripts/build-app-icons.py liest Assets/Image.png via icon.json |
build-resources/ | entitlements.mac.plist für gehärtete Laufzeitumgebung |
scripts/ | build-app-icons.py, normalize-skiller-icon-layer.py, repack-dmg.sh |
docs/DEVELOPMENT.md | Einrichtung, HMR, Signierung, CI, DMG-Neuverpackung – vor Änderungen an Release/Signierung lesen |
DESIGN.md | UI-Tokens und Produktdesign-Notizen |
Bearbeiten Sie nicht manuell generierte Icons unter AppIcon.iconset/, app.icns, app.ico oder app/icon-512.png – diese werden aus der Quelle (siehe unten) neu generiert.
Befehle
bun install
Entwicklung
bun run dev– electron-vite dev: überwacht Main + Preload, startet Vite auf Port 5180 für den Renderer mit HMR. Öffnet ein Electron-Fenster, das die Vite-URL lädt.bun run dev:debug– WiedevmitAGENTSKILLS_DEVTOOLS=1(Renderer DevTools beim Öffnen).
Überprüfungen
bun run typecheck–tsc --noEmitfür Renderer +tsc -p tsconfig.node.json --noEmitfür Main/Preload.
Produktions-Bundle (Web + Main + Preload)
bun run build–electron-vite build→out/{main,preload,renderer}/. Wird vonelectron-builderkonsumiert.
Plattform-Installer (auf dem Ziel-Betriebssystem ausführen; electron-builder kreuzkompiliert keine nativen Module)
bun run dist:mac–electron-vite build && electron-builder --mac && bash scripts/repack-dmg.shbun run dist:win–electron-vite build && electron-builder --winbun run dist:linux–electron-vite build && electron-builder --linux
Siehe docs/DEVELOPMENT.md für Signierungs-Umgebungsvariablen und Artefakt-Pfade.
Icons
- Bearbeiten Sie die kanonische Ebene:
assets/icons/Skiller.icon/Assets/Image.png(optionalpython3 scripts/normalize-skiller-icon-layer.pyausführen). - Generieren Sie die Plattform-Assets neu:
python3 scripts/build-app-icons.py
AktualisiertAppIcon.iconset/,app.ico,app.icns,app/icon-512.png.
Das macOS DMG-Styling verwendetassets/icons/app.icnsviascripts/repack-dmg.sh.
Konventionen für Agenten
- Bevorzugen Sie Bun für Skripte und lokale Ausführungen (
bun,bunx). Der Electron-Hauptprozess selbst läuft auf Node (Electrons gebündeltem Node 20) – verwenden Sie nur Node-kompatible APIs. - UI-Strings für benutzerseitige Texte: Fügen Sie Schlüssel unter
src/mainview/i18n/hinzu (Englisch inen.ts); halten Sie Code-Kommentare auf Englisch. - Folgen Sie bestehenden Mustern:
@/-Imports aussrc/mainview(sieheelectron.vite.config.ts/tsconfig.json). - Vermeiden Sie Scope-Creep: Ändern Sie nicht
node_modules/oder nicht zusammenhängende, nur marketingbezogene Pfade, es sei denn, die Aufgabe erfordert es. - Nach RPC- oder Shared-Type-Änderungen stellen Sie sicher, dass sowohl Main-Handler (
src/main/rpc-handlers.ts) als auch Renderer-Aufrufer übereinstimmen (src/shared/oder lokale Schema-Module). - Native Node-Module (
better-sqlite3) benötigenelectron-builder install-app-deps, um gegen Electrons ABI neu gebaut zu werden. Einbun installallein reicht nicht aus.
Umgebungsvariablen (nicht abschließend)
| Variable | Zweck |
|---|---|
AGENTSKILLS_TRPC_PORT | tRPC-HTTP-Port (Standard 17888; fällt bei Konflikt auf +48 zurück) |
AGENTSKILLS_DEVTOOLS | Auto-Öffnen der Renderer DevTools beim Start (nur Entwicklung) |
AGENTSKILLS_DISABLE_WINDOW_BLUR | 1 → Vibrancy auf macOS erzwingen deaktivieren, selbst wenn Einstellungen es aktivieren |
CSC_NAME, APPLE_API_KEY, APPLE_API_KEY_ID, APPLE_API_ISSUER, APPLE_ID, APPLE_APP_SPECIFIC_PASSWORD, APPLE_TEAM_ID | macOS-Signierung + Notarisierung. Siehe docs/DEVELOPMENT.md. |
Weiterführendes
README.md– Produktübersicht und Installationslinks.docs/DEVELOPMENT.md– Entwicklung, DMG, Updater, GitHub Actions Release und GitHub Pages für diedocs/-Landingpage.