| name | morning-briefing |
| description | Generate a morning briefing with weather, market overview, system health, and upcoming tasks. Use for daily briefings. |
| category | productivity |
| maturity | stable |
| tags | ["daily-briefing","weather","system-health","github","telegram"] |
Morning Briefing Skill
Generate a concise daily briefing for the user covering:
1. Weather (Oslo)
curl -s "wttr.in/Oslo?format=%c+%t+%h+%w+%p"
2. Market Overview
curl -s "https://open.er-api.com/v6/latest/USD" | python3 -c "
import json,sys
d=json.load(sys.stdin)['rates']
pairs = {'EUR': d.get('EUR'), 'GBP': d.get('GBP'), 'AUD': d.get('AUD'), 'NZD': d.get('NZD'), 'CAD': d.get('CAD'), 'CHF': d.get('CHF'), 'JPY': d.get('JPY'), 'NOK': d.get('NOK')}
for k,v in pairs.items():
if v: print(f'USD/{k}: {v:.4f}')
" 2>/dev/null || echo "FX data unavailable"
3. System Health
df -h / | tail -1 | awk '{print "Disk: " $5 " used"}'
for svc in openclaw-poe-gateway openclaw-argus-gateway; do
status=$(systemctl --user is-active $svc 2>/dev/null || echo "unknown")
echo "$svc: $status"
done
pid=$(pgrep -f "claude.*channels.*telegram" 2>/dev/null | head -1)
if [ -n "$pid" ]; then
echo "Claudex: running ($(ps -p $pid -o etime= | xargs))"
fi
4. GitHub Activity
~/.local/bin/gh api notifications --jq '.[0:5] | .[] | "[\(.repository.name)] \(.subject.title)"' 2>/dev/null || echo "No notifications"
5. Trade System Status
sqlite3 ${PROP_HEDGE_AGENTS_HOME:-$HOME/projects/prop-hedge-agents}/data/trade-journal.db \
"SELECT date, strategy_type, outcome FROM trades ORDER BY id DESC LIMIT 1;" 2>/dev/null || echo "No trades"
Output Format (for Telegram)
Keep it brief ā bullet points, no tables:
āļø Oslo: 12°C, partly cloudy, light wind
š Markets:
⢠EUR/USD: 1.0842
⢠GBP/USD: 1.2650
⢠...
š„ļø Systems: All healthy
⢠Kite ā
| Poe ā
| Argus ā
| Claudex ā
š Today:
⢠[any calendar events or reminders]