tag-sync

tag-sync is a skill for Claude Code from voxpelli/vp-claude. It costs 126 tokens per session (2,438 once invoked), scanned A, original, MIT.

A tool for maintaining a vocabulary of Raindrop tags, where Raindrop is a bookmark-management service. It fetches tags, selects and describes the most-used ones, compares them with a local reference file, and can sync approved changes.

In plain words
What is it for?
Creating or refreshing the Raindrop tag reference, reviewing tag changes, choosing how many tags to keep, and rebuilding the vocabulary from scratch.
Why use it?
It keeps bookmark tags consistent and gives session-bookmarks an up-to-date reference when choosing tags.

Skill for Claude Code

Written for Claude Code: allowed-tools in frontmatter. Also seen: reads .claude/ paths.

Part of the vp-knowledge plugin — 14 skills, 5 agents, 4 hooks shipped together

Good fit Creating or refreshing the Raindrop tag reference, reviewing tag changes, choosing how many tags to keep, and rebuilding the vocabulary from scratch.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/voxpelli/vp-claude/tag-sync
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.

Any agent
npx skills add voxpelli/vp-claude --skill tag-sync
Clone the repo
git clone --depth 1 https://github.com/voxpelli/vp-claude

Made for: Claude Code.

Or install vp-knowledge, the plugin that ships this one along with the rest of its 14 skills, 5 agents, 4 hooks.

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 tag-sync

README.md
[![agentmods](https://agentmods.dev/badge/skills/voxpelli/vp-claude/tag-sync.svg)](https://agentmods.dev/skills/voxpelli/vp-claude/tag-sync)
Your own site
<a href="https://agentmods.dev/skills/voxpelli/vp-claude/tag-sync"><img src="https://agentmods.dev/badge/skills/voxpelli/vp-claude/tag-sync.svg" alt="Measured on agentmods" height="20"></a>
Per session 126 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,438 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
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.1 $0.00126 $0.02438
Opus 5 $0.00063 $0.01219
Sonnet 5 $0.00025 $0.00488
Haiku 4.5 $0.00013 $0.00244

Measured 8d ago against content hash 3d0b6c4d8324, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-08, from the pricing page.

Security

Grade A, and why

tag-sync 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 8d 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.

skills/tag-sync/SKILL.md · 270 lines

How it starts

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

Tag Sync

Fetch tags from Raindrop, curate the top N by usage, characterize each with a one-line description, and write or sync the vocabulary file. Follows the vendor-sync pattern: registry (vocabulary file) -> fetch from external (Raindrop API) -> diff against local -> preview -> apply after approval.

The output file at ~/.claude/references/raindrop-tags.md is consumed by /session-bookmarks when selecting tags for new bookmarks.

Arguments

  • /tag-sync — sync existing vocabulary (or create if no file exists)
  • /tag-sync 100 — set tag count to 100, then sync/create
  • /tag-sync --reset — force full recreation (re-characterize + re-cluster all)

Edge Cases

  • Raindrop MCP unavailable — report error and exit. Do not write a partial file.
  • find_tags returns fewer than tag_count — use all available tags. Store the actual count in frontmatter so the next sync has a realistic target.
  • ai-bookmarked not in top N — always inject it regardless of rank. It is listed in mandatory_tags frontmatter.
  • No bookmarks found for a tag (characterization step) — infer from tag name alone. Flag with * in preview: *auto-inferred from name.
  • ~/.claude/references/ directory missing — create it before writing.
  • Vocabulary fetched today, no explicit args — warn: "Vocabulary was already synced today. Pass a count or --reset to force." Do not re-fetch.
  • User declines all changes — report "No changes made" and exit.

Workflow

Step 1: Parse arguments

Accept an optional integer argument or --reset flag.

  • Integer sets tag_count (how many tags to include).
  • --reset forces creation mode even if the file exists.
  • No argument: use tag_count from existing file, or default 75.

Step 2: Load existing vocabulary

Read(file_path="~/.claude/references/raindrop-tags.md")
  • File exists — enter sync mode. Extract tag_count, fetched_at, and existing tag entries (tag name, count, characterization, cluster). Also extract optional config fields from frontmatter: blocklist, context_tags, conventions. Preserve these unchanged through the sync cycle — they are user-authored config, not Raindrop-derived data. Record which of the three are absent from frontmatter — Step 8 will backfill them from the seed values defined below. Check staleness: if fetched_at matches today's date and no explicit arguments were passed, warn "Vocabulary was already synced today. Pass a count or --reset to force." and Stop. Do not proceed to Step 3.
  • File missing (or --reset) — enter creation mode. Seed default config fields: blocklist: ["5", "4", "3", "2", "imported", "toread", "unread", "for:*"], context_tags: [], conventions: [].

Read the full file on GitHub · 270 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. 8d ago First seen · 270 lines · 126 tokens per session scan A 3d0b6c4d8324

Subscribe to this mod's changes

tag-sync is a skill published in the GitHub repository voxpelli/vp-claude (3 stars, last pushed 10d ago), licensed MIT. It adds 126 tokens to every session and 2,438 once invoked, about $0.0006 per session on Opus 5. 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-31.

Related

Other skills, from other repositories

synergy-tracker

Manage cross-project synergy tracking between sibling projects. Use when the user wants to log a shared pattern, a divergence, an extraction candidate, or something a sibling project has that this one doesn't. Also use when the user wants to promote synergy entries to Basic Memory (workflow 5). NOT for upstream…

voxpelli/claude-beads · 197 tokens

upstream-tracker

Manage upstream issue tracking for this project. Use when the user wants to log a bug or friction point in a vendor package or npm dependency, review open upstream items, resolve a tracked issue, run a trend review, generate the upstream observations section of a sprint retrospective, promote upstream observations to…

voxpelli/claude-beads · 186 tokens

retrospective

Run a sprint retrospective for this project. Use when the user says 'retrospective', 'retro', 'close out the sprint', 'what went well', 'generate retro', or wants to generate a RETRO-NN.md file. Reads UPSTREAM-.md files, recent git history, and conversation context to pre-populate the retrospective. Do NOT use for…

voxpelli/claude-beads · 91 tokens

backlog-groomer

Manage the beads backlog for this project. Use when the user wants to review or triage open issues, reprioritize the backlog, identify obsolete issues to close, investigate a topic to inform future work, create new issues from research findings, or enrich an existing issue with external context. Trigger phrases…

voxpelli/claude-beads · 191 tokens

swarm-wave

Orchestrate multi-agent development sprints with wave-based parallelism. Use when the user wants to plan a swarm sprint, partition work into file-disjoint waves, map file contention across open issues, run a post-wave quality gate with review agents, manage agent backpressure, run a parallel research wave, or…

voxpelli/claude-beads · 176 tokens

harden-memories

Audit the bd remember store and recommend which entries to prune, so each one earns its per-session bd prime injection cost. Read-only: it proposes a triage table plus the exact bd forget / migration commands; you run them. Use when bd remember entries have accumulated, feel stale, redundant, or conflicting, or when…

voxpelli/claude-beads · 185 tokens