Install
openclaw skills install @pmuhammadagus-byte/backup-validatorValidates OpenClaw backup artifacts before push by checking skill structure, secret leaks, Termux compatibility, and repository status.
openclaw skills install @pmuhammadagus-byte/backup-validatorGunakan skill ini ketika:
Memvalidasi seluruh artefak backup OpenClaw sebelum di-push ke repo remote. Mencegah:
Gunakan skill ini saat:
backup.sh akan dijalankanworkspace/, skills/, atau skill-workshop/openclaw-settingsJangan gunakan untuk:
~/openclaw-backup/backup.sh ada dan dapat dieksekusi~/openclaw-backup terinisialisasipython3 tersedia untuk redactiongrep, find, git tersedia di PATHJika salah satu tidak ada, laporkan dan berikan fallback.
BACKUP_DIR default: ~/openclaw-backupWORKSPACE_DIR default: ~/.openclaw/workspaceEXTRA_PATHS tambahan path untuk divalidasiPHASE 1 — REQUIREMENT ANALYSIS ↓ Tentukan tujuan validasi.
PHASE 2 — ENVIRONMENT ANALYSIS ↓ Deteksi platform: Linux desktop / Termux / Android.
PHASE 3 — ARCHITECTURE ↓ Siapkan daftar cek: structure, secret, skill, compatibility.
PHASE 4 — IMPLEMENTATION ↓ Jalankan setiap validator.
PHASE 5 — VALIDATION ↓ Kumpulkan hasil dan klasifikasi.
PHASE 6 — HARDENING ↓ Tambahkan fallback jika tool/command gagal.
PHASE 7 — SELF-TEST ↓ Simulasikan kasus normal, failure, dan edge case.
PHASE 8 — FINALIZATION ↓ Laporkan status: PASS / FAIL / WARNING.
Jalankan validator dalam urutan ini:
Deteksi environment sebelum memilih strategi validasi.
IF $PREFIX contains com.termux OR $HOME contains com.termux:
PLATFORM = TERMUX
ELSE IF uname -s = Linux AND uname -m = x86_64:
PLATFORM = LINUX_DESKTOP
ELSE:
PLATFORM = UNKNOWN
Catat platform di laporan.
Validasi struktur direktori backup.
Cek:
workspace/ adaskills/ adaworkspace-attestations/ adaskill-workshop/ adaagents/ adatui/ adaconfig/ adametadata/ adaJika ada direktori wajib yang hilang:
backup.shUntuk setiap SKILL.md di workspace/skills/:
Cek:
namedescriptionJika SKILL.md rusak:
Gunakan dua lapisan validasi:
Cari pola sensitif:
[0-9]{8,10}:[A-Za-z0-9_-]{35,}sk-[A-Za-z0-9]{20,}ghp_[A-Za-z0-9]{30,} atau github_pat_[A-Za-z0-9_]{20,}nvapi-[A-Za-z0-9_-]{16,}AKIA[0-9A-Z]{16}-----BEGIN [A-Z ]*PRIVATE KEY-----Jika ditemukan:
Jika backup sudah di-redact oleh backup.sh:
agents/*/models.json tidak berisi api_key, token, secret, passwordJika redaction kurang:
backup.shCek repo backup:
git status --porcelain harus kosong setelah commitgit reset --hard jika amangit add atau sesuaikan .gitignoreCek apakah branch main di remote up-to-date:
git rev-parse HEADgit rev-parse origin/mainJika berbeda:
Untuk setiap skill baru/diubah:
Cek:
IF PLATFORM = TERMUX:
/usr/local/...Jika ketidakcocokan ditemukan:
Cek:
metadata/system.txt berisi backup date validmetadata/skills-list.txt konsisten dengan workspace/skills/metadata/workspace-skill-files.txt konsisten dengan file yang adaJika inkonsistensi:
Berikan laporan dalam bentuk:
VALIDASI BACKUP — PASS / FAIL / WARNING
Platform: TERMUX / LINUX_DESKTOP / UNKNOWN
workspace/agents/ missingaurum-brain/SKILL.mdnew-skill/SKILL.md missing descriptionpath/to/file contains possible API key patternskill-x references /usr/local/bin/run.sh on Termuxbackup.shSKILL.md yang rusakINPUT ERROR → Jelaskan path/format yang salah → Berikan contoh input yang benar → Jangan lanjut validasi parsial tanpa konfirmasi
DEPENDENCY ERROR
→ python3 tidak ada: gunakan grep + sed sebagai fallback parsial
→ git tidak ada: laporkan ERROR dan minta install
TOOL ERROR
→ grep/find gagal: laporkan ERROR dengan pesan dari tool
→ Jangan lanjut validator berikutnya jika struktur tidak bisa dibaca
NETWORK ERROR → Tidak mempengaruhi validasi offline → Skip remote sync check, laporkan INFO
AUTH ERROR → Tidak relevan untuk validator lokal → Skip
TIMEOUT → Batasi durasi scan direktori → Jika timeout, laporki sebagian hasil dan minta retry
PERMISSION ERROR
→ Laporkan file/directory yang tidak bisa dibaca
→ Berikan recovery: chmod atau jalankan dengan permission yang sesuai
ENVIRONMENT ERROR → Jika platform tidak terdeteksi, set UNKNOWN dan lanjut dengan asumsi konservatif
OUTPUT ERROR → Jika laporan tidak bisa ditulis, gunakan stdout sebagai fallback
UNKNOWN ERROR → Tangkap exception → Laporkan ERROR → Jangan redact otomatis tanpa tahu konteks
PRIMARY VALIDATOR ↓ FAILED? ↓ SAFE RETRY max 2x ↓ FAILED? ↓ FALLBACK validator subset ↓ FAILED? ↓ STOP REPORT ERROR
Aturan:
Sebelum menyatakan validator selesai, pastikan:
[ ] Tujuan validator jelas [ ] Setiap cek memiliki kriteria pass/fail/warning [ ] Error handling tersedia untuk setiap kategori [ ] Fallback untuk tool yang tidak tersedia [ ] Platform detection berjalan [ ] Tidak ada command fiktif [ ] Tidak ada asumsi Linux desktop [ ] Output mudah dibaca agent [ ] Recovery action jelas untuk setiap masalah [ ] Tidak ada side effect destruktif
Nilai validator:
Architecture: apakah alur validasi logis dan tidak terputus? Reliability: apakah tetap berjalan jika sebagian tool gagal? Clarity: apakah laporan mudah dipahami agent/user? Tool Usage: apakah hanya pakai tool yang tersedia? Error Handling: apakah semua error tercover? Security: apakah aman dari secret exposure? Compatibility: apakah aman di Termux/Android/desktop? Maintainability: apakah mudah diperbarui jika pola secret berubah? Extensibility: apakah mudah menambah cek baru? Verification: apakah agent bisa mempercayai hasil laporan?
Target: minimal 90 untuk production-ready.
Jika di bawah 90: perbaiki validator sebelum menganggap siap.
Setelah menjalankan validasi, berikan:
STATUS: PASS / FAIL / NEEDS IMPROVEMENT PLATFORM: TERMUX / LINUX_DESKTOP / UNKNOWN SCORE: 0-100
SUMMARY:
DETAILS:
RECOVERY:
Jika PASS:
Jika FAIL:
Jika NEEDS IMPROVEMENT:
Jangan pernah memaksa laporan PASS jika ada ERROR kritis. Lebih baik validator menolak push daripada secret bocor atau skill rusak.
Target akhirnya:
RELIABLE + SECURE + PLATFORM-AWARE + ACTIONABLE + PRODUCTION-READY
| Mistake | Fix |
|---|---|
| Validating presence only | Check integrity, not just existence |
| No hash verification | Compare hashes for consistency |
| Ignoring permissions | Validate file permissions |
| Missing restore test | Verify backup can be restored |
| Excuse | Reality |
|---|---|
| "The files are there" | Existence ≠ integrity. |
| "It worked before" | Verify current backup. |
| "Hashes take too long" | Integrity matters. |
| Situasi | Aksi |
|---|---|
| Validasi backup | Jalankan checker |
| Backup rusak | Diagnosa & repair |
| Cek integritas | Hash + struktur |
| Restore | Verifikasi hasil |
| Rutin | Jadwalkan validasi |