backups — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited backups (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
List the customer's daily Postgres backups (and other DB engines if present) stored in S3 by the daily backup cron. Optionally restore Postgres/Supabase backups via pg_restore --clean --if-exists - with a safety snapshot of the current state taken first.
echo "$NOMETRIA_API_KEY"
echo "$NOMETRIA_TOKEN"
grep -s 'NOMETRIA_API_KEY\|NOMETRIA_TOKEN' .env .env.local 2>/dev/null
cat ~/.nometria/credentials.json 2>/dev/nullIf no token: tell the user to run /login. Stop.
Store: TOKEN="<the token>"
cat nometria.json 2>/dev/nullIf absent, use $ARGUMENTS or list migrations:
curl -s -X POST https://app.nometria.com/listUserMigrations \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{}'Store: APP_ID="<app_id>".
curl -s -X POST https://app.nometria.com/getBackups \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d "{\"app_id\": \"$APP_ID\"}"Response shape:
{
"backups": [
{ "s3_path": "s3://nometria-deploy-backups/myapp/2026/05/18/supabase_2026-05-18T02:00:00Z.dump.gz",
"kind": "supabase", "ts": "2026-05-18T02:00:00Z", "size_bytes": 1450000, "day": "2026/05/18",
"filename": "supabase_2026-05-18T02:00:00Z.dump.gz" }
],
"status": "ok",
"bucket": "nometria-deploy-backups"
}If status === "no_backups" - tell the user no backups exist yet (daily cron runs at 02:00 UTC) and suggest deploying + waiting until tomorrow morning.
Display backups newest-first, grouped by date:
2026-05-18
✓ supabase 02:00 UTC 1.4 MB ← latest
✓ safety 09:15 UTC 1.4 MB (pre-restore snapshot)
2026-05-17
✓ supabase 02:00 UTC 1.3 MB
2026-05-16
✓ supabase 02:00 UTC 1.2 MBMark restorable kinds (supabase / postgres / safety) with a tick. Mark non-restorable kinds (appwrite / mysql / mongodb / redis) with "(manual download via S3)".
If the user asks to restore a specific backup:
Confirm explicitly:
Restore <KIND> backup from <TIMESTAMP>?
>
This will OVERWRITE your current database. A safety snapshot of the current data is taken FIRST (uploaded to .../safety/<ts>.dump.gz) so it's reversible. Your app may be briefly unavailable while the restore runs.
After explicit confirmation:
curl -s -X POST https://app.nometria.com/getBackups \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d "{\"app_id\": \"$APP_ID\", \"restore_from\": \"<s3_path from list>\"}"Response:
{ "dispatched": true, "command_id": "<ssm-id>", "restore_from": "s3://..." }Tell the user:
Restore dispatched. Run /logs to watch the restore output. If something went wrong, the safety snapshot at .../safety/<ts>.dump.gz can be restored back to undo this.pg_restore --clean --if-exists - so they drop existingobjects before recreating them (safe and idempotent)
DB engines, point the user at the AWS Console with the listed s3_path
Do all of the above. Execute the curl call(s) and report results to the user.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.