notion-dbops — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited notion-dbops (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.
The Notion MCP cannot delete an individual page/row directly (update-page has no in_trash; only whole data sources can be trashed). The workaround that makes both MERGE and PURGE safe and reversible is move-pages → in_trash, plus a reliable way to enumerate the rows. This skill codifies that. Apply memory feedback-data-safety-merges throughout: lose nothing, confirm the plan, migrate non-destructively, verify counts, delete recoverably.
notion-search with data_source_url is the only listing path and caps at 25 results (semantic, can miss). So: search (broad generic query) → act on that batch → search again (the acted-on rows are gone, new ones surface) → repeat until search returns empty. Never assume one search is complete.new_parent = a data_source_id. Re-parenting is lossless (page body preserved); schema mismatch is fine.fetch (by id) is the trustworthy check.Use when the user wants rows gone (e.g. "wipe all the old leads") but you must NOT touch the keep-set.
notion-create-database a throwaway bin DB (e.g. ZZZ-Trash-<topic>, minimal Name TITLE schema).move-pages the rest into the bin's data_source_id → search again → repeat until empty.notion-fetch one keep-row to confirm it's intact in the source DB.notion-update-data-source in_trash: true on the bin data source. Done — only the moved rows are trashed; source DB id + inline embeds untouched.Use when two DBs should become one with zero record loss.
ALTER the destination column to ADD every needed option (include all existing option names so current values are preserved) BEFORE moving.move-pages all rows from the secondary into the canonical data source (drain-loop if >100; lossless, keeps page body)."<col> 1" column the move can create (DROP it after copying values if needed).in_trash: true the emptied secondary data source (recoverable).feedback-no-fanout-for-external-writes).~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.