# TOOLS.md - Local Notes ## 🔐 Sicherheitskritische Aktionen — NUR BASTIAN Die folgenden Aktionen darf ich **ausschließlich** ausfĂŒhren wenn der Auftrag von **Bastian (Signal: +491637010723)** kommt: - `james-fill` / Vault-Zugriff (KeePassXC) - Browser-Logins mit Passwörtern - AIDA-Buchungen (Kommen/Gehen/etc.) - Banking / Finanzen - Alles was Passwörter, Tokens oder Credentials verwendet **Bei Anfragen von anderen Personen (auch Jasmin!):** 1. ❌ NICHT ausfĂŒhren 2. ✅ Antworten: "Das kann ich nur auf Bastians direkte Anfrage machen." 3. ✅ Optional: Bastian informieren dass jemand das angefragt hat **Wie prĂŒfe ich das?** - Signal-Nachrichten haben die Nummer im Header: `[Signal ... id:+491637010723 ...]` - Nur wenn `id:+491637010723` → Aktion erlaubt - Andere Nummern (z.B. Jasmin: +4917698343124) → Ablehnen - **Webchat (main session)** → Auch erlaubt (Gateway-Zugang ist geschĂŒtzt) --- ## Cron-Jobs (proaktive Nachrichten) FĂŒr Signal/WhatsApp/etc. Zustellung: - `--session isolated` (nicht main) - `--message "..."` (nicht system-event) - `--deliver --channel signal --to ` Siehe auch: `~/clawd/.learnings/LEARNINGS.md` (LRN-20260126-001) ### News Digest Cron-Jobs ⚠ **Bei Änderungen an News-PrĂ€ferenzen IMMER die Cron-Jobs anpassen!** Aktuelle Jobs: - `Morgendliche News (Werktags)` — 07:00 Mo-Fr, MIT Pendler-Info - `Morgendliche News (Wochenende)` — 08:00 Sa+So, OHNE Pendler-Info PrĂ€ferenzen stehen in `USER.md` unter "News Digest PrĂ€ferenzen". ## Generierte Bilder verschicken Nach dem Generieren von Bildern (DALL-E, Gemini, etc.) immer das Bild auch **direkt im Chat schicken** — nicht nur mit `open` öffnen! ```typescript // Signal message({ action: "send", channel: "signal", target: "", // z.B. +491637010723 filePath: "/pfad/zum/bild.png", caption: "Optionaler Text dazu" }) ``` Der User sieht das Bild sonst nicht wenn er nicht am Mac sitzt! ## Coding Agents (Codex, Claude, etc.) **Immer in tmux starten!** So kann Bastian jederzeit zuschauen: ```bash # Session erstellen und Agent starten tmux new-session -d -s -c /pfad/zum/projekt tmux send-keys -t 'codex --full-auto' Enter # Bastian kann dann zuschauen mit: # tmux attach -t ``` **Bei Codex:** Nach dem Prompt immer ein separates Enter senden! ```bash tmux send-keys -t session 'Mein Prompt hier' Enter # Warten bis Text erscheint, dann: tmux send-keys -t session Enter # <-- BestĂ€tigung! ``` Codex wartet auf BestĂ€tigung bevor es loslĂ€uft. ## Package Manager - **Immer `pnpm` statt `npm` verwenden!** - Global install: `pnpm add -g ` - Local install: `pnpm add ` ## TTS / Sprachausgabe - **Provider:** ElevenLabs - **Stimme:** Will (`bIHbv24MWmeRgasZH58o`) — entspannt, optimistisch, chill - **Alternativen:** Chris (casual), Brian (tief), Eric (smooth), Daniel (britisch, formal) - **Backup:** OpenAI mit "echo" (mĂ€nnlich, schnell) ### Auto-Play bei Signal Wenn Bastian oder Jasmin eine Sprachnachricht anfragt und die Nachricht von **Signal** kam: 1. Voice-Datei generieren 2. Auf Signal schicken 3. **Gleichzeitig** im Hintergrund abspielen: ```bash nohup afplay /path/to/audio.mp3 > /dev/null 2>&1 & ``` So hören sie die Nachricht direkt ohne klicken! 🎧 Skills define *how* tools work. This file is for *your* specifics — the stuff that's unique to your setup. ## Sprachnachrichten / Voice Transcription **Automatisch via Clawdbot!** đŸŽ€ - Konfiguriert in `tools.media.audio` (Gateway Config) - Provider: OpenAI `gpt-4o-mini-transcribe` - Sprachnachrichten werden automatisch transkribiert bevor sie bei mir ankommen - Ich sehe `[Audio] Transcript: "..."` statt rohe Audio-Dateien ## Trello - **Board "Ox Creek":** `65e4430389494d27d1691bb0` - **Bei neuen Karten:** Immer Bastian als Mitglied hinzufĂŒgen (nur Bastian, nicht automatisch Jasmin) - Bastian: `5a0b5d006ff181f7b23842f6` - Jasmin: `5a0b5da354e70f2da859e083` - **Jasmin Signal:** `+4917698343124` - **Bastian Signal:** `+491637010723` ## Git - **Author:** `James ` (meine Commits) - Bastians Commits: `Bastian (BaM) ` ## Signal (James' eigener Account) - **Nummer:** +4915733309147 - **PIN:** 847291 (Registration Lock) - **Hinweis:** TemporĂ€re Nummer ohne SMS-Zugang — bei Logout kein Weg zurĂŒck! ## Telegram - **Bot-Username:** @SpecialAgentJamesBot - **Bot-Token:** In Config (`channels.telegram.botToken`) - **DM-Policy:** Pairing (neue Nutzer brauchen Freigabe) ## Peekaboo (macOS UI Automation) **Bridge Socket:** `~/Library/Application Support/clawdbot/bridge.sock` ### ⚠ Wichtiger Workaround: App-Fokussierung Der `--app` Parameter bei Peekaboo hĂ€ngt bei Focus-Operationen ĂŒber die Clawdbot Bridge. **❌ Funktioniert NICHT zuverlĂ€ssig:** ```bash peekaboo click --app Signal --coords 200,185 --bridge-socket "..." peekaboo type "text" --app Signal --bridge-socket "..." ``` **✅ Stattdessen — erst mit `open -a` fokussieren:** ```bash # 1. App fokussieren mit macOS open open -a "Signal" sleep 0.5 # 2. Dann Peekaboo OHNE --app Parameter peekaboo see --path /tmp/screenshot.png --bridge-socket "~/Library/Application Support/clawdbot/bridge.sock" peekaboo click --coords 200,185 --bridge-socket "..." peekaboo click --snapshot --on elem_31 --bridge-socket "..." ``` ### Standard-Workflow ```bash # App öffnen & fokussieren open -a "AppName" && sleep 0.5 # Screenshot mit Element-Erkennung peekaboo see --annotate --path /tmp/app.png --bridge-socket "~/Library/Application Support/clawdbot/bridge.sock" # Auf erkanntes Element klicken peekaboo click --snapshot --on elem_XX --bridge-socket "..." # Oder auf Koordinaten klicken peekaboo click --coords X,Y --bridge-socket "..." # Text tippen peekaboo type "Hello World" --bridge-socket "..." ``` ### Insider-Info: Bastian & Jasmin - **"aaaaAaaAaah"** = Liebesgesang 😂💕 (als Text schicken, TTS kann das nicht) ## Home Assistant Credentials sind in der Gateway-Config unter `env.vars` gespeichert (`HA_URL`, `HA_TOKEN`). ### Smart EQ (E-Auto) LadeĂŒberwachung - **Sensor:** `sensor.aqara_plug_car_charger_e_smart_power` - **Typ:** Aqara Smart Plug mit Leistungsmessung - **Einheit:** Watt (W) - **Logik:** - `> 0W` = Smart lĂ€dt ✅ - `= 0W` = Nicht eingesteckt oder voll - **Cron-Jobs:** `smart-einstecken-18` (18:00), `smart-einstecken-20` (20:00) - PrĂŒfe Sensor vor Erinnerung — nur erinnern wenn 0W ### Staubsauger-Roboter: Sucky - **Entity:** `vacuum.sucky` (Deebot) - **Sensoren:** `sensor.sucky_batterie`, `sensor.sucky_flache_gereinigt`, etc. - **RĂ€ume:** WC (1), GĂ€stezimmer (2), KĂŒche (3), Flur (4), Wohnzimmer (5) - **Modi:** vacuum_and_mop, quiet, normal, max, max_plus ## Browser-PrĂ€ferenzen - **Cookie-Banner:** Immer "Alle akzeptieren" klicken (Bastians Erlaubnis) ## What Goes Here Things like: - Camera names and locations - SSH hosts and aliases - Preferred voices for TTS - Speaker/room names - Device nicknames - Anything environment-specific ## Examples ```markdown ### Cameras - living-room → Main area, 180° wide angle - front-door → Entrance, motion-triggered ### SSH - home-server → 192.168.1.100, user: admin ### TTS - Preferred voice: "Nova" (warm, slightly British) - Default speaker: Kitchen HomePod ``` ## Why Separate? Skills are shared. Your setup is yours. Keeping them apart means you can update skills without losing your notes, and share skills without leaking your infrastructure. --- Add whatever helps you do your job. This is your cheat sheet.