# TOOLS.md - Local Notes

## 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!

## 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`

## 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.
