# Declarative Crons-as-Code for OpenClaw (Haumdaucher) # Reconciled idempotently via k8s/openclaw/scripts/sync_crons.py version: 1 jobs: # 1. Maintenance & State Truncation - name: "tracking-session-sliding-window" declarationKey: "tracking-session-sliding-window" description: "Lightweight sliding-window truncation (max 8 events) for mila_tracker and nutrition_tracker" schedule: kind: "every" every: "15m" session: "isolated" delivery: "none" command: "python3 /home/node/.openclaw/scripts/compact_tracking_sessions.py" - name: "nightly-session-compaction" declarationKey: "nightly-session-compaction" description: "Nightly multi-agent session compaction and SQLite WAL checkpointing" schedule: kind: "cron" expr: "45 4 * * *" tz: "Europe/Berlin" session: "isolated" delivery: "none" command: "python3 /home/node/.openclaw/scripts/compact_sessions.py" # 2. Family Dashboards & Web Analytics - name: "dashboards-periodic-publish" declarationKey: "dashboards-periodic-publish" description: "Periodically regenerates and uploads Mila & Moritz family HTML dashboards to S3" schedule: kind: "every" every: "10m" session: "isolated" delivery: "none" command: "sh -lc 'export PATH=/home/node/.openclaw/bin:$PATH; cd /home/node/mop-skills/mop-skills/skills/datastore && uv run scripts/update_website.py --data-dir /home/node/.openclaw/wiki/main/data && uv run scripts/update_moritz_website.py --data-dir /home/node/.openclaw/wiki/main/data'" # 3. Nightly Garmin Connect Mirror - name: "garmin-nightly-mirror" declarationKey: "garmin-nightly-mirror" description: "Nächtlicher deterministischer Spiegel der Garmin Connect Daten (Aktivitäten, Daily Summary, Schlaf) in Git JSONL" schedule: kind: "cron" expr: "30 3 * * *" tz: "Europe/Berlin" agent: "fitness" model: "openrouter/deepseek/deepseek-v4.1-flash" session: "isolated" channel: "telegram" to: "-1004326921510" threadId: "20" announce: true message: | Führe den nächtlichen Garmin Connect Sync durch. Vorgehen: 1. Führe den Garmin-Sync-Befehl aus: uv run /home/node/mop-skills/mop-skills/skills/datastore/scripts/garmin_sync.py --days 2 --data-dir /home/node/.openclaw/wiki/main/data 2. Aktualisiere die gerenderten Markdown-Ansichten: PYTHONPATH=/home/node/mop-skills/mop-skills/skills/datastore/scripts uv run /home/node/mop-skills/mop-skills/skills/datastore/scripts/render_views.py --data-dir /home/node/.openclaw/wiki/main/data --wiki-dir /home/node/.openclaw/wiki/main 3. Aktualisiere das persönliche Health & Nutrition Dashboard (moritz.html): uv run /home/node/mop-skills/mop-skills/skills/datastore/scripts/update_moritz_website.py --data-dir /home/node/.openclaw/wiki/main/data 4. Git Commit & Push im Knowledge Wiki: cd /home/node/.openclaw/wiki/main && git add data/garmin/ entities/nutrition-log/ public/ && git diff --staged --quiet || (git commit -m "chore(garmin): automated nightly mirror [skip ci]" && git push origin main) 5. Finale Antwort: - Bei Erfolg: Gib exakt 'NO_REPLY' aus (intentional silence, kein Telegram-Spam in der Nacht). - Nur bei Authentifizierungsfehlern: Informiere kurz via Telegram (Thema #Sport), dass ein Garmin-Re-Auth nötig ist, oder starte den Re-Auth-Flow. # 4. Weekly Autonomous System & Error Audit - name: "itguy-weekly-health-audit" declarationKey: "itguy-weekly-health-audit" description: "Wöchentlicher Self-Audit der OpenClaw-Logs, Tool-Failures und Session-Transkripte mit Git-Commit-Korrelation" schedule: kind: "cron" expr: "0 3 * * 0" tz: "Europe/Berlin" agent: "itguy" model: "openrouter/deepseek/deepseek-v4.1-flash" session: "isolated" channel: "telegram" to: "-1004326921510" threadId: "119" announce: true message: | Führe den wöchentlichen OpenClaw System- und Log-Audit durch. Vorgehen: 1. Führe den Audit-Befehl aus: uv run /home/node/mop-skills/mop-skills/skills/openclaw-audit/scripts/audit_openclaw.py --since 7d --write-report --add-task --git-push 2. Analysiere die Ausgabe und korreliere eventuelle Fehler-Cluster mit den jüngsten Commits in infrapuzzle, mop-skills und knowledge-wiki. 3. Finale Antwort: - Wenn NEUE Probleme gefunden oder Tasks in tasks/antigravity.md eingetragen wurden: Fasse die Ergebnisse kurz, präzise und lösungsorientiert zusammen (betroffene Tools, vermutete Ursache, Link zur Task-Queue) und gib diese Zusammenfassung als finale Antwort aus. - Wenn das System gesund ist und KEINE neuen Tasks erzeugt wurden: Gib als finale Antwort exakt 'NO_REPLY' aus (intentional silence, kein Telegram-Spam). # 5. Weekly AI Roundup (Recherche) - name: "weekly-ai-roundup" declarationKey: "weekly-ai-roundup:recherche" description: "Wöchentlicher AI-Roundup und Tech-Scanning für Topic #Research" schedule: kind: "cron" expr: "30 6 * * 5" tz: "Europe/Berlin" agent: "recherche" model: "openrouter/deepseek/deepseek-v4.1-flash" session: "isolated" channel: "telegram" to: "-1004326921510" threadId: "117" announce: true message: | 🗓️ WÖCHENTLICHER AI-ROUNDUP (Freitag). Führe den in sources.md im Workspace definierten Ablauf aus und poste das Ergebnis als EINE kompakte Telegram-Nachricht in diesen Topic (#Research). 1) Hacker News: Algolia API – https://hn.algolia.com/api/v1/search_by_date?tags=story&numericFilters=points>150,created_at_i>{Unix-Timestamp von vor 7 Tagen}&hitsPerPage=100 → daraus die KI-relevanten Top-Stories nach Punkten ziehen. 2) Frontier-Labs prüfen: OpenAI, Anthropic, Google DeepMind, Meta AI, Mistral, xAI. 3) China-Labs prüfen: GLM/Z.ai, Qwen, DeepSeek, Moonshot/Kimi, MiniMax. 4) Tracker: Artificial Analysis Releases, Hugging Face Trending, OpenRouter Rankings, LMArena. 5) Newsletter/Blogs: The Batch, Import AI, Interconnects, Ahead of AI, Simon Willison, TLDR AI. 6) GitHub: Trending (weekly) + neue Releases der Kern-Orgs (openai, anthropics, google-deepmind, QwenLM, deepseek-ai, zai-org, meta-llama, mistralai). 7) YouTube nur als Hype-Indikator (Titel/Snippets), KEINE Transkripte. Ausgabe (Deutsch, Markdown, KEINE Tabellen): - Top-3-Highlights der Woche (je 1 Satz + Link) - Danach Bullets je Kategorie: ① Frontier-Modelle · ② China-Modelle · ③ Tools/Infra/Procedures · ④ Trends (HN/GitHub/YouTube), je Eintrag genau 1 Quell-Link - Scope 60/40 (Modelle/Tools). Wenn eine Kategorie nichts Neues hat: kurz 'nichts Neues'. - Am Ende NUR falls nötig eine Zeile: welche Quelle in sources.md ergänzt/entfernt werden sollte. Nutze web_search/web_fetch. Effort: medium. # 6. Weekly Bridge Tracker (Holzgartensteg) - name: "Recherche: Holzgartensteg (wöchentlich)" declarationKey: "recherche:holzgartensteg" description: "Wöchentlicher Status-Check zum Holzgartensteg Regensburg via ALLRIS & Web" schedule: kind: "cron" expr: "0 16 * * 5" tz: "Europe/Berlin" agent: "main" session: "isolated" channel: "telegram" to: "306373425" announce: true message: | Wöchentlicher Recherche-Task (Holzgartensteg, Stadt Regensburg). AUFGABE: Prüfe, ob es NEUIGKEITEN zum geplanten Holzgartensteg (geplante Fuß-/Radbrücke zwischen Grieser Spitz und Maria-Beer-Platz / Weichs) gibt — seit dem letzten Check bzw. den letzten ~7 Tagen. QUELLEN: 1) ALLRIS via Skill 'regensburg-stadtrat': Script /home/node/mop-skills/mop-skills/skills/regensburg-stadtrat/scripts/regensburg_ris.py — Befehle: search "Holzgartensteg" --limit 30 ; calendar --days 30 ; vorlage ; session . Achte auf NEUE Vorlagen, Beschlüsse, Anfragen und Sitzungstermine (Ausschuss für Stadtplanung, Verkehr und Wohnungsfragen / Stadtrat). 2) Lokale Medien via web_search: regensburg-digital.de, idowa.de, mittelbayerische.de, tvaktuell.com, regensburger-nachrichten.de. FOKUS: neue Vorlagen/Beschlüsse, Ausschuss-/Stadtrattermine, Mittel/Budget, Planungsstand (Variante, Kosten, Termin), politische Positionen. BEKANNTER STAND (nicht wiederholen, nur Abweichungen melden): 2020 aus Investitionsprogramm gestrichen ('beerdigt'); Comeback ab 2025 (Grüne/Verbände); Kommunalwahl 2026 mehrere Parteien dafür; Haushalt 2026: ~100.000 EUR Planungsmittel im Investitionsprogramm, Stadtrat-Beschluss 26.02.2026, Genehmigung Regierung der Oberpfalz 06.03.2026; Koalitionsvereinbarung 2026 mit Wiederaufnahme der Planungen. AUSGABE: Kurz auf Deutsch an Moritz. Falls echte Neuigkeiten: 3-6 Bullets mit Quelle+Link. Falls NICHTS Neues: eine kurze Zeile, z.B. 'Holzgartensteg: keine neuen Entwicklungen diese Woche.' Kein Hintergrund-Recycling.