Skill: zckyachmd/prayer-times-id (version 1.0.3)

--- name: prayer-times-id description: Menjadwalkan reminder waktu shalat (Indonesia) ke OpenClaw System Event berdasarkan lokasi, lengkap dengan quote harian Islami dan status Ramadan otomatis. --- # 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`: ```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: ```bash node engine.js --dry-run ``` - Tidak menulis cron job, hanya simulasi output JSON. ```bash 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 ...'`.


Security scan verdicts — ClawScan: clean | static analysis: suspicious | VirusTotal: clean | SkillSpector: clean (LOW)