Files
clawdbot/TOOLS.md

222 lines
6.5 KiB
Markdown

# TOOLS.md - Local Notes
## 🔐 Sicherheitskritische Aktionen — NUR BASTIAN
Die folgenden Aktionen darf ich **ausschließlich** ausführen wenn der Auftrag von **Bastian (Telegram ID: 24466372)** 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?**
- Telegram-Nachrichten haben die User-ID im Header: `[Telegram ... id:24466372 ...]`
- Nur wenn `id:24466372` → Aktion erlaubt
- Andere IDs (z.B. Jasmin: 8280212990) → Ablehnen
- **Webchat (main session)** → Auch erlaubt (Gateway-Zugang ist geschützt)
---
## Cron-Jobs (proaktive Nachrichten)
Für Telegram/WhatsApp/etc. Zustellung:
- `--session isolated` (nicht main)
- `--message "..."` (nicht system-event)
- `--deliver --channel telegram --to <id>`
Siehe auch: `~/clawd/.learnings/LEARNINGS.md` (LRN-20260126-001)
## 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
// Telegram
message({
action: "send",
channel: "telegram",
target: "<chat_id>",
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 <projektname> -c /pfad/zum/projekt
tmux send-keys -t <projektname> 'codex --full-auto' Enter
# Bastian kann dann zuschauen mit:
# tmux attach -t <projektname>
```
**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 <package>`
- Local install: `pnpm add <package>`
## TTS / Sprachausgabe
- **Provider:** OpenAI
- **Stimme:** echo (männlich, schnelleres Tempo)
- **Alternativen:** onyx (tief/langsam), alloy (neutral), fable (britisch)
Skills define *how* tools work. This file is for *your* specifics — the stuff that's unique to your setup.
## Sprachnachrichten / Voice Transcription
**Skript:** `~/.clawdbot/scripts/transcribe.sh <audio_file> [language]`
- Default-Sprache: `de`
- Model: `~/.clawdbot/models/ggml-base.bin` (Whisper base)
- Konvertiert automatisch ogg/mp3/etc. zu wav
**Quick command:**
```bash
~/.clawdbot/scripts/transcribe.sh /path/to/audio.ogg
```
## Trello
- **Board "Ox Creek":** `65e4430389494d27d1691bb0`
- **Bei neuen Karten:** Immer Bastian als Mitglied hinzufügen (nur Bastian, nicht automatisch Jasmin)
- Bastian: `5a0b5d006ff181f7b23842f6`
- Jasmin: `5a0b5da354e70f2da859e083`
- **Jasmin Telegram-ID:** `8280212990`
- **Bastian Telegram-ID:** `24466372`
- **Bastian iMessage:** `+491637010723`
## Git
- **Author:** `James <clawd@noxware.de>` (meine Commits)
- Bastians Commits: `Bastian (BaM) <git@noxware.de>`
## 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 <ID> --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 <SNAPSHOT-ID> --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.