SkillHub

prayer-times-id

v1.0.3

Menjadwalkan reminder waktu shalat (Indonesia) ke OpenClaw System Event berdasarkan lokasi, lengkap dengan quote harian Islami dan status Ramadan otomatis.

Sourced from ClawHub, Authored by Zacky Achmad

Installation

Please help me install the skill `prayer-times-id` from SkillHub official store. npx skills add zckyachmd/prayer-times-id

prayer-times-id

Skill ini menjalankan engine Node.js untuk: 1. mengambil jadwal shalat harian dari AlAdhan API, 2. menentukan status Ramadan (otomatis/manual), 3. membuat one-shot cron job OpenClaw untuk setiap waktu shalat yang belum lewat, 4. mengirim pesan reminder berformat rapi dengan quote harian.

Struktur File

  • engine.js — engine utama penjadwalan reminder.
  • prayer_config.json — konfigurasi lokasi + pengaturan perhitungan.
  • quotes_id.json — kumpulan quote Islami berbahasa Indonesia.

Dependensi

  • Node.js 18+ (disarankan 20+)
  • OpenClaw CLI tersedia di PATH (openclaw)
  • Akses internet ke:
  • https://api.aladhan.com/v1/timings
  • https://api.aladhan.com/v1/gToH

Konfigurasi

Edit prayer_config.json:

{
  "location": {
    "name": "Cimahi",
    "latitude": -6.8722,
    "longitude": 107.5427,
    "expires": "2026-03-02"
  },
  "settings": {
    "auto_ramadan": true,
    "manual_override": null,
    "method": 11,
    "timezone": "Asia/Jakarta"
  },
  "sources": {
    "quotes_enabled": true,
    "current_day_source": "local"
  }
}

Keterangan penting: - location.name: label lokasi yang tampil di pesan. - latitude / longitude: koordinat lokasi. - settings.method: metode kalkulasi AlAdhan. - settings.timezone: timezone IANA (contoh Asia/Jakarta). - settings.auto_ramadan: deteksi Ramadan otomatis dari tanggal Hijriah. - settings.manual_override: true/false untuk override status Ramadan; null untuk otomatis.

Cara Menjalankan

Dari folder skill:

node engine.js --dry-run
  • Tidak menulis cron job, hanya simulasi output JSON.
node engine.js
  • Menambahkan cron one-shot ke OpenClaw untuk waktu shalat hari ini yang belum lewat.

Output

Engine mengeluarkan JSON ringkas, contoh:

  • status: hasil eksekusi
  • dryRun: mode simulasi atau real
  • location, timezone, ramadan
  • registered: jumlah job yang berhasil dijadwalkan
  • jobs[]: detail job per waktu shalat

Keamanan & Kepatuhan

  • Tidak ada hardcoded secret/token/api key.
  • Tidak ada hardcoded private/public IP.
  • Eksekusi CLI memakai execFileSync (tanpa shell command interpolation) untuk meminimalkan risiko command injection.
  • Penjadwalan job memakai openclaw cron add --at ... --system-event ... secara langsung (tanpa nested command / shell-style job string).
  • Input konfigurasi divalidasi (nama lokasi, koordinat, metode).
  • Input user location.name sekarang disanitasi untuk keamanan (hanya alphanumeric, spasi, dan -).
  • Request API dibatasi timeout (AbortSignal.timeout) agar tidak hang.

Catatan Operasional

  • Engine hanya menjadwalkan reminder hari berjalan; jalankan ulang harian (mis. via scheduler induk) untuk generate jadwal hari berikutnya.
  • Engine hanya menggunakan mode modern OpenClaw Cron (--at + --system-event) dan tidak lagi menyediakan fallback legacy berbasis --job 'at ...'.