Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add 2aronS/notion-md-agent --skill bulk-updategit clone --depth 1 https://github.com/2aronS/notion-md-agentWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/2arons/notion-md-agent/bulk-update)<a href="https://agentmods.dev/skills/2arons/notion-md-agent/bulk-update"><img src="https://agentmods.dev/badge/skills/2arons/notion-md-agent/bulk-update.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00021 | $0.00787 |
| Opus 5 | $0.00010 | $0.00394 |
| Sonnet 5 | $0.00004 | $0.00157 |
| Haiku 4.5 | $0.00002 | $0.00079 |
Grade A, and why
bulk-update scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 6d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
This is a copy
97% identical to bulk-update — 3 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 105 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Bulk Update
Update properties or content across many pages in a database safely.
Pagination (Critical)
Notion returns max 100 results per query. You MUST paginate to process all pages:
# First query
databases(action="query", database_id="<id>", filter={...}, page_size=100)
# Response includes: has_more=true, next_cursor="abc123"
# Continue until has_more=false
databases(action="query", database_id="<id>", filter={...}, page_size=100, start_cursor="abc123")
Never assume a single query returns all results. Always check has_more.
Dry-Run Mode
Before making any changes, ALWAYS show the user what will change:
- Query the database with the filter
- For each matching page, show:
- Page title (current value)
- What will change (old value -> new value)
- Total count of affected pages
- Ask for explicit confirmation before proceeding
Example dry-run output:
Found 23 pages matching filter. Changes:
1. "Project Alpha" -- Status: "Active" -> "Archived"
2. "Project Beta" -- Status: "Active" -> "Archived"
...
(21 more)
Proceed with update? (yes/no)
Update Execution
After user confirms:
-
Track progress -- maintain counters:
succeeded: pages updated successfullyfailed: pages that errored (with page ID and error message)skipped: pages already in target state
-
Update each page:
pages(action="update", page_id="<id>", properties={ "Status": { "select": { "name": "Archived" } } }) -
Rate limit awareness:
- Notion rate limit: 3 requests/second average
- For large batches (50+ pages), warn user it may take time
- If you get 429 errors, pause and retry
-
Error recovery:
- Never stop on first error -- continue processing remaining pages
- Collect all failures with their page IDs
- After completion, report: "Updated 20/23 pages. 3 failed: [page IDs + error reasons]"
- Offer to retry failed pages
Property Value Format
Remember the nested format (same as organize-database skill):
// Properties must use typed nested objects
{ "Status": { "select": { "name": "Done" } } }
{ "Tags": { "multi_select": [{ "name": "urgent" }, { "name": "review" }] } }
{ "Priority": { "number": 1 } }
{ "Reviewed": { "checkbox": true } }
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 6d ago First seen · 105 lines · 21 tokens per session scan A 6912b744a67f
bulk-update is a skill published in the GitHub repository 2aronS/notion-md-agent (9 stars, last pushed 3mo ago), licensed MIT. It adds 21 tokens to every session and 787 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. It is 97% identical to bulk-update, differing in 3 lines, and is treated as a copy.
Other skills, from other repositories
[object Object]
Read, search, and open notes in the user's "{{GRAPHNAME}}" Reflect graph via the reflect CLI. Use when the user asks about their notes, daily notes, journal, or anything they may have written down in Reflect.
audhd-executive-function
AUDHD executive function accommodations. Apply to all output the founder will act on.
markdown-documents
Use when creating or editing Markdown documents, notes, reports, briefs, drafts, or other editable writing where Markdown should be the primary artifact format.
alive:system-cleanup
The world feels messy. Stale tasks, orphan folders, v2 remnants, unsaved sessions — entropy is accumulating and needs to be addressed before it compounds. Scans across all walnuts, then surfaces issues one at a time.
alive:world
The human doesn't know what to work on, or wants to see everything at once. They need the big picture — what's active, what's stale, what needs attention. Renders a live world view grouped by ALIVE domain, then routes to open, tidy, find, history, or map.
alive:bundle
Create, share, and graduate bundles — the unit of focused work within a walnut. Manages the full bundle lifecycle from creation through sharing to graduation.