quirks

quirks is an agent for coding agents from windviki/vBookmarks. It costs 0 tokens per session (1,028 once invoked), scanned A, original, MIT.

A reference guide for unusual but intentional behavior in the Neat Bookmarks successor project. It records rules about deletion undo, sync status, browser-version differences, and related implementation details.

In plain words
What is it for?
Read it before refactoring or changing bookmark deletion, undo, synchronization, browser compatibility, or related settings.
Why use it?
It helps developers avoid treating known behavior as a bug or breaking assumptions that other parts of the project depend on.

Agent

Install

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.

agentmods
npx agentmods add agents/windviki/vbookmarks/quirks
Clone the repo
git clone --depth 1 https://github.com/windviki/vBookmarks

Wrote 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.

agentmods badge for quirks

README.md
[![agentmods](https://agentmods.dev/badge/agents/windviki/vbookmarks/quirks.svg)](https://agentmods.dev/agents/windviki/vbookmarks/quirks)
Your own site
<a href="https://agentmods.dev/agents/windviki/vbookmarks/quirks"><img src="https://agentmods.dev/badge/agents/windviki/vbookmarks/quirks.svg" alt="Measured on agentmods" height="20"></a>
Per session 0 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,028 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5 $0.00000 $0.01028
Opus 5 $0.00000 $0.00514
Sonnet 5 $0.00000 $0.00206
Haiku 4.5 $0.00000 $0.00103

Measured 5d ago against content hash b01f19cf478b, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

quirks 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 5d 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.

docs/agents/quirks.md · 9 lines

How it starts

The opening of the file, as written. The whole thing — 9 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Known Quirks (verified — read before refactoring)

Extracted verbatim from AGENTS.md. The main file carries one-line summaries; this is the full text.

  • Deletion undo lives in src/undo.js (P3.3): subtree snapshots in chrome.storage.session, restored depth-first; a failed restore consumes the stack entry without rollback of the partial result (by design). v4 task-2 slice A2 revived the confirmDeleteFolder* keys: deleting a non-empty folder is ConfirmDialog-gated again (default on via the confirmDeleteFolder setting, dialog copy notes the undo path; empty folders and bookmark rows still delete straight to the toast).
  • Sync-status computation lives in the service worker (src/sync-engine.js, P3.6); pages only mirror the published blob. node.syncing requires Chrome 138+: on older Chrome the status is genuinely unknown and the engine reports '' — it never fabricates synced (the old page-side manager treated "URL is not chrome://" as synced, and its cache-write shapes never matched its cache reads). Since the 2026-08 perf audit the engine IDLES below Chrome 138 (no refresh alarm, no event-driven recomputes — a timed recompute could only re-derive "unknown"; only the page-driven vbm-sync-status-request/vbm-sync-refresh messages still compute, which preserves the unsyncable markers for blacklisted URL schemes), the alarm is additionally gated on showSyncStatus, the four id-bearing bookmark events are batched into one 300 ms-debounced id-Set pass, and the 500 ms flush skips unchanged republishes via a sorted-keys fingerprint that excludes ts. The Chrome-version probe is a minimal in-module Chrome/<major> UA parse with fail-open — no SW-side probe existed before. Tooltips are localized via chrome.i18n with inline English fallbacks (syncStatusSynced/syncStatusLocal/syncStatusUnsyncable); the old folderType (Synced) concatenation leaked raw enum values and is gone. chrome.alarms rejects periods below 0.5 minutes, so the syncRefreshInterval option floor is 30 s. highlightUnsynced (default on) is honored: syncing === false tree rows get the unsynced-subtree class and the whole local subtree renders dimmed under body.highlight-unsynced.
  • Sync-preference keys live in chrome.storage.sync — since the 2026-08 storage audit that is ~45 small device-independent preferences (searchHistoryCount joined in the 2026-08-26 options round) (store.js SYNC_KEYS: the original showSyncStatus/highlightUnsynced/autoRefreshSync/syncRefreshInterval + paletteCustomCommands, theme/language, behavior toggles, view show/disable keys, feature switches, sort/filter prefs). Access is area-transparent: store.get/set and the getSetting/setSetting helpers route them automatically, localStorage doubles as their synchronous boot cache, and a one-time local→sync migration runs at store init. Bookmark-id-keyed data (quickAddFolderId, separators*, deadMarks*, visitStats) deliberately stays local — Chrome does not keep bookmark ids stable across devices; customIcon stays local because its serialized form (~10-14KB) exceeds the 8KB/item sync limit. Pages may still read the original four via store.getSyncSetting; both src/sync-engine.js and the options page normalize string and boolean forms.
  • iGuge conflict (issues #53/#57): the store-shipped iGuge proxy/acceleration extension (CRX v2.3.9, ID ncldcbhpeplkfijdhnoepdgdnmjkckij) actively disables any enabled extension that declares the proxy permission and is not on its server-pushed whitelist proxy_permissions_namewhilelist (default ["IDM Integration Module"]) — its service worker's check_clash_app() calls chrome.management.setEnabled(id, false) at every startup (js/iggservice.js). vBookmarks holds install-time proxy (Chrome forbids it as optional) for the dead-link proxy channel, so whenever both are installed vBookmarks is re-disabled on every Chrome restart. Decision (2026-08): keep the feature and coordinate whitelisting with iGuge — do NOT remove the proxy permission (removing it is the only vBookmarks-side fix, at the cost of the dead-link proxy channel). Full verified analysis + iGuge outreach draft: docs/issues/issue-53-57-iguge-conflict.md.

Read the full file on GitHub · 9 lines

Changes

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.

  1. 5d ago First seen · 9 lines · 0 tokens per session scan A b01f19cf478b

Subscribe to this mod's changes

quirks is an agent published in the GitHub repository windviki/vBookmarks (135 stars, last pushed yesterday), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 1,028 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.