# TOOLS.md - Local Notes Skills define *how* tools work. This file is for *your* specifics — the stuff that's unique to your setup. ## Model Selection Policy When creating tasks, jobs, sub-agents, or hooks, choose the appropriate model: | Model | Use For | |-------|---------| | **Opus 4.6** | Everything (default) - best quality, same limits as Sonnet in Max plan | | **Haiku 4.5** | Simple bulk tasks only - news summaries, quick lookups, translations | **Default (main session):** Opus 4.6 **Sonnet 4.5:** Not used (Opus has same limits but better quality) ## Home Assistant Integration - Webhook endpoint: `/hooks/agent` - Token: configured in `hooks.token` - Model: Opus 4.5 (default) ### Arrival Hook When user arrives home, HA calls the webhook. Check `memory/arrival-reminders.json` for pending reminders and deliver them. **Important:** Just send the content directly — no explaining what you're doing (checking files, clearing reminders, etc.). User just wants the info, not the process. **File format for `memory/arrival-reminders.json`:** ```json { "reminders": [ { "id": "unique-id", "task": "fetch_weather_tomorrow" }, { "id": "unique-id", "task": "check_calendar_tomorrow" }, { "id": "unique-id", "message": "Call mom! 📞" } ] } ``` - Use `"task"` for things that require action (fetch weather, check calendar, look something up) - Use `"message"` for simple reminders to display as-is - Always include a unique `id` for each item ## Der Standard RSS Helper script: `~/.openclaw/workspace/bin/derstandard` ```bash derstandard items [max] # NEW items only (filters out seen) derstandard items --all [max] # All items including already seen derstandard article # Full article content for a specific URL derstandard articles ,,... # Fetch multiple + auto-mark as seen derstandard urls [max] # Article URLs only (default: 50) derstandard titles [max] # Article titles only derstandard seen # Show seen count and recent entries derstandard reset # Clear seen history derstandard raw [max] # Full RSS XML ``` - Uses internal fivefilters proxy (bypasses web_fetch private IP block) - Pre-processes output for minimal token usage - **Auto-tracks seen articles** in `memory/derstandard-seen.txt` - `items` marks ALL displayed URLs as seen (even if skipped) - Auto-prunes to 200 entries (oldest removed) **Workflow for news briefing:** 1. `derstandard items` → shows NEW articles, marks them as seen 2. Pick interesting ones, optionally fetch full content with `articles` 3. Next briefing: only shows articles published since last check ## Audiobookshelf Helper script: `~/clawd/bin/audiobooks` ```bash audiobooks current # Currently listening / in-progress books audiobooks recent [limit] # Recently active books (default: 5) audiobooks finished [limit] # Finished books (default: 10) audiobooks stats # Listening stats overview audiobooks libraries # List libraries audiobooks library [limit] # All books with metadata (--full for full descriptions) audiobooks genres # List genres with counts ``` - Credentials: `.credentials/services.env` - URL: `https://audiobooks.cloonar.com` - Output is tab-separated for minimal tokens - Use during wind-down to suggest continuing audiobook --- ## Jellyfin Helper script: `~/clawd/bin/jellyfin` ```bash jellyfin resume [limit] # Continue watching (in-progress items) jellyfin recent [limit] # Recently added to library jellyfin watched [limit] # Watch history (last played) jellyfin shows # All series with watch status jellyfin movies # All movies with watch status jellyfin search # Search library jellyfin stats # Watch statistics overview jellyfin libraries # List libraries jellyfin library [limit] # All movies & shows with metadata (--full for full descriptions) jellyfin genres # List genres with counts ``` - Credentials: `.credentials/services.env` (user-scoped token for `tv`) - URL: `https://jellyfin.cloonar.com` - Output is tab-separated for minimal tokens - Use during wind-down to suggest specific shows/movies --- ## Forgejo Git Access Helper script: `~/.openclaw/workspace/bin/forgejo` ```bash forgejo repos [org] # List repos forgejo files [path] # List files forgejo cat # Get file content forgejo issues # List open issues forgejo prs # List open PRs forgejo branches # List branches forgejo commits [n] # Recent commits forgejo search # Search repos forgejo raw # Raw API call ``` - URL: `https://git.cloonar.com` - User: `openclawd` (read-only) - Credentials: `.credentials/services.env` ## CalDAV Calendar Access Helper script: `~/.openclaw/workspace/bin/calendar` ```bash calendar today # Today's events (default) calendar tomorrow # Tomorrow's events calendar week # Next 7 days calendar next # Next 14 days calendar month # Next 30 days calendar date 2026-02-20 # Events on a specific date calendar 2026-02-20 # Shorthand for date calendar range 2026-02-18 2026-02-25 # Date range calendar search dentist # Search by name/location (next 90 days) calendar search rpg 180 # Search with custom day range ``` - Credentials: `.credentials/services.env` (NEXTCLOUD_URL, NEXTCLOUD_USER, NEXTCLOUD_PASS, CALDAV_CALENDAR) - Calendar: `personal_shared_by_dominik.polakovics@cloonar.com` - Output: tab-separated (time, summary, location) - Times shown in Vienna timezone ## AI News RSS (Hybrid Approach) Helper script: `~/.openclaw/workspace/bin/ainews` ```bash ainews items [max] # NEW items only (filters out seen) ainews items --all [max] # All items including already seen ainews article # Full article content via fivefilters ainews articles ,,... # Fetch multiple + auto-mark as seen ainews seen # Show seen count and recent entries ainews reset # Clear seen history ``` - Aggregates: Simon Willison, OpenAI Blog, Sebastian Raschka - Auto-tracks seen articles in `memory/ainews-seen.txt` - Auto-prunes to 200 entries **Content availability by source:** | Source | Full Content | Method | |--------|-------------|--------| | Simon Willison | ✅ In RSS/fivefilters | `ainews articles` | | Sebastian Raschka | ✅ In RSS/fivefilters | `ainews articles` | | OpenAI Blog | ❌ JS-rendered | Use `web_fetch` tool | **Hybrid workflow for AI news briefing:** 1. `ainews items` → shows NEW articles from all sources 2. For Simon/Raschka: `ainews articles ` to get full content 3. For OpenAI: Use `web_fetch` tool directly (fivefilters can't extract JS sites) 4. Write briefing with all content --- ## Brain Dump CLI Helper script: `~/clawd/bin/tasks` ```bash tasks list [--priority now,soon] [--due] [--limit N] tasks add --text "..." --priority soon [--context "..."] tasks add --recurring --text "..." --frequency daily [--when evening] [--context "..."] tasks edit [--text "..."] [--priority|--frequency|--when|--context "..."] tasks done tasks show tasks nudged ,,... tasks recurring ``` - Data: `memory/tasks.json` - `--due` filters by nudge interval: now=1d, soon=3d, someday=7d - `nudged` marks tasks as just-nudged (resets due timer) - `recurring` lists all recurring items with full context (note, when, frequency) - `add --recurring` / `edit` / `done` work for both tasks and recurring items - Output is tab-separated for minimal tokens **Heartbeat workflow:** 1. `tasks list --due --limit 2` → get tasks needing a nudge 2. Mention them conversationally 3. `tasks nudged ,` → mark as nudged --- --- ## Finnhub Stock Market API Helper script: `~/.openclaw/workspace/bin/stonks` ```bash stonks quote # Current price stonks search # Search for symbols stonks candles [days] # Price history (default: 30) stonks news [days] # Company news (default: 7) stonks profile # Company info stonks portfolio # Show virtual portfolio stonks buy # Virtual buy (EUR) stonks sell [amount] # Virtual sell (EUR or all) stonks limit-buy # Limit buy order stonks limit-sell [amt] # Limit sell order stonks check-limits # Check & execute triggered limits stonks history # Trade history ``` - Credentials: `.credentials/services.env` (global env file — ALL new credentials go here, never create separate env files) - Portfolio data: `memory/portfolio.json` - Virtual starting capital: €1,000 - **N26 constraint:** Only trade instruments available on N26 (check with user) - Symbols: Use Finnhub format (e.g., `RHM.DE` for Xetra, `AAPL` for NASDAQ) **Portfolio management:** - Check limits during morning briefing and heartbeats - Include portfolio status in morning briefing and weekly review - Be proactive about market-moving news affecting positions --- ## Scheduled Briefings | Briefing | Schedule | Content | |----------|----------|---------| | Morning Briefing | Daily 9:00 Vienna | Calendar, weather, tasks, portfolio (NO news) | | Weekly Review | Sunday 18:00 Vienna | Week recap, open tasks, portfolio performance, next week preview | **News briefings (Der Standard, AI News) are DISABLED.** Do not send them during heartbeats or morning briefings. --- Add whatever helps you do your job. This is your cheat sheet.