skills/raindrop/SKILL.md
RaindropCLI skill for managing Raindrop.io bookmarks via the `raindrop` CLI. Trigger when the user wants to: search or find bookmarks, add/save a URL, update or tag a bookmark, delete a bookmark, organize or merge collections, rename or delete tags, batch-update multiple items. Also trigger for: "find my bookmarks", "save this link", "add to raindrop", "search raindrop", "manage collections", "clean up tags", "star/favorite a bookmark".
npx skillsauth add kyoji2/raindrop-cli raindropInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Expert guidance for interacting with the RaindropCLI - a Bun-powered, AI-native CLI for managing your Raindrop.io bookmarks.
The RaindropCLI provides comprehensive command-line access to Raindrop.io's bookmark manager with AI-friendly output formats. All commands support:
toon (token-optimized, default) or json (via --format json)--dry-runOption 1: Install from npm (recommended)
bun install -g @kyoji2/raindrop-cli
PATH note: After a global bun install, the binary lands in
~/.bun/bin. If your shell doesn't pick it up automatically, add this to your shell profile and reload:export PATH="$HOME/.bun/bin:$PATH"
Option 2: Install from source
git clone https://github.com/kyoji2/raindrop-cli.git
cd raindrop-cli
bun install
bun link
Verify installation:
raindrop --version
Setup complete when:
raindrop whoamireturns your name and email — that's the primary successful outcome of onboarding.
# Authentication
raindrop login [token] # Login with API token
raindrop whoami # Show current user
raindrop logout # Remove credentials
# Get context about the account
raindrop context # User info, stats, recent activity
raindrop structure # Show all collections and tags
# Search and manage bookmarks
raindrop search "query" # Search bookmarks
raindrop add <url> # Add new bookmark
raindrop get <id> # Get bookmark details
raindrop patch <id> '<json>' # Update bookmark
raindrop delete <id> # Delete bookmark
raindrop login # Interactive prompt
raindrop login "test_..." # Provide token directly
Getting an API token:
raindrop whoami # Returns user ID, name, email, pro status
raindrop context # High-level overview:
# - User details
# - Collection/bookmark counts
# - Recent activity
raindrop structure # Collection hierarchy + all tags
raindrop search "query" # Full-text search
raindrop search "query" -c 12345 # Search in specific collection
raindrop search "query" -l 100 # Limit results (default: 50)
raindrop search "query" --pretty # Formatted table output
Raindrop.io supports powerful search operators for precise filtering:
Basic Text Search:
apple iphone - Search across title, description, domain, or content"exact phrase" - Match exact phrases-excluded - Exclude terms (e.g., javascript -react)match:OR - Boolean OR (e.g., python match:OR java)Tag Search:
#tag - Find items with specific tag#"multi word tag" - Multi-word tags#tag1 #tag2 - Multiple tags (AND logic)notag:true - Find untagged itemsField-Specific Search:
title:keyword - Search only in titlesexcerpt:keyword - Search in descriptionsnote:keyword - Search in user noteslink:domain.com - Search URLs/domainsType Filters:
type:link - Web linkstype:article - Articlestype:image - Imagestype:video - Videostype:document - Documentstype:audio - Audio filesDate Filters:
created:2024-01-15 - Exact creation datecreated:>2024-01-01 - Created after datecreated:<2024-12-31 - Created before datelastUpdate:2024-01-15 - Last modified dateStatus & Special Filters:
❤️ or important:true - Starred/favorite itemsfile:true - Items with uploaded filescache.status:ready - Items with permanent copiesreminder:true - Items with remindersExamples:
# Find untagged JavaScript articles
raindrop search "javascript notag:true type:article"
# Search favorites created this year
raindrop search "❤️ created:>2024-01-01"
# Find items with "API" in title, exclude "REST"
raindrop search "title:API -REST"
# Multi-word tag search
raindrop search '#"web development" type:article'
# Find items in domain
raindrop search "link:github.com"
# Combine multiple filters
raindrop search "#tutorial type:video created:>2024-01-01" -l 20
raindrop get 123456 # Full bookmark details including:
# - Title, URL, excerpt
# - Tags, collection
# - Created/updated dates
# - Media (images, videos)
raindrop add "https://example.com"
raindrop add "https://example.com" -t "My Title"
raindrop add "https://example.com" --tags "tag1,tag2"
raindrop add "https://example.com" -c 12345 # Add to collection
raindrop add "https://example.com" -t "Title" --tags "dev,api" -c 12345
# Patch with JSON (merge update)
raindrop patch 123456 '{"title": "New Title"}'
raindrop patch 123456 '{"tags": ["new", "tags"]}'
raindrop patch 123456 '{"collection": {"$id": 54321}}'
raindrop patch 123456 '{"important": true}'
Common fields:
title: Bookmark titleexcerpt: Description/notestags: Array of tagsimportant: Boolean star/favoritecollection.$id: Move to collectionraindrop delete 123456 # Delete single bookmark
raindrop suggest 123456 # Get AI-powered tag/collection suggestions
raindrop wayback "https://..." # Check Wayback Machine availability
raindrop structure # Show all collections + tags
raindrop collection get 12345 # Get specific collection details
raindrop collection create "My Collection"
raindrop collection create "Work" --parent 12345 # Child collection
raindrop collection create "Public Links" --public # Public collection
raindrop collection create "Private" --private # Private collection
raindrop collection create "Grid View" --view grid # Set view type
View types: list, simple, grid, masonry
# Update with JSON patch
raindrop collection update 12345 '{"title": "New Name"}'
raindrop collection update 12345 '{"view": "grid"}'
raindrop collection update 12345 '{"public": true}'
raindrop collection reorder title # Sort A-Z
raindrop collection reorder -title # Sort Z-A
raindrop collection reorder -count # Sort by bookmark count
raindrop collection expand-all true # Expand all in UI
raindrop collection expand-all false # Collapse all in UI
# Merge source collections into target
raindrop collection merge "12345,67890" 99999
raindrop collection cover 12345 "/path/to/image.jpg" # Local file
raindrop collection cover 12345 "https://example.com/img.jpg" # URL
raindrop collection set-icon 12345 "rocket" # Search & set icon
raindrop collection clean # Remove all empty collections
raindrop collection empty-trash # Empty trash collection
raindrop collection delete 12345 # Delete single collection
raindrop collection delete-multiple "12345,67890" # Delete multiple
raindrop structure # Shows all tags with counts
raindrop tag rename "old-tag" "new-tag" # Rename globally
raindrop tag rename "old" "new" -c 12345 # Rename in collection
raindrop tag delete "tag1" "tag2" "tag3" # Delete globally
raindrop tag delete "unwanted" -c 12345 # Delete in collection
# Update multiple bookmarks with same changes
raindrop batch update '{"important": true}' --ids "1,2,3"
raindrop batch update '{"tags": ["work"]}' --ids "1,2,3" -c 12345
raindrop batch delete --ids "123456,789012"
raindrop batch delete --ids "1,2,3" -c 12345 # Delete within collection
raindrop schema # Dumps JSON schemas and examples
# Useful for AI context and validation
This outputs complete Zod schemas for:
All commands support:
--dry-run # Log actions without making API calls
--format json # Output as JSON instead of TOON
--format toon # Token-optimized output (default)
-v, --version # Show version
Token-optimized format designed for AI agents:
field_name: value
another_field: value
nested.field: value
Standard JSON output with --format json:
{
"field_name": "value",
"nested": {"field": "value"}
}
Search response shape:
raindrop search --format jsonreturns a wrapped object, not a plain array:{ "items": [...], "count": 50 }Access bookmarks via
.items— e.g. in Python:result["items"], in jq:.items[].
When calling the CLI from a Python script via subprocess, environment variables aren't inherited from the shell automatically. Pass them explicitly:
import subprocess, os
token = os.environ["API_KEY"] # or load from .env
result = subprocess.run(
["raindrop", "search", "query", "--format", "json"],
env={**os.environ, "RAINDROP_TOKEN": token},
capture_output=True, text=True
)
Alternatively, source your .env before running the script: source .env && python3 script.py.
raindrop context to understand the accountnotag:true, type:article, date filters, and field-specific search to find exactly what you needraindrop search with link:domain.com to avoid duplicates--dry-run firstraindrop suggest for intelligent tagging#tutorial type:video created:>2024-01-01)raindrop schema when building automationThe CLI provides helpful error messages with hints:
raindrop login to authenticateAll errors include:
# Find all untagged bookmarks
raindrop search "notag:true" -c -1
# Find recent JavaScript tutorials (articles only)
raindrop search "javascript tutorial type:article created:>2024-01-01"
# Find all GitHub repos you've starred
raindrop search "link:github.com ❤️"
# Find videos about Python, exclude beginner content
raindrop search "python type:video -beginner"
# Find articles with "API" in title from specific domain
raindrop search "title:API link:medium.com type:article"
# Combine multiple tags (AND logic)
raindrop search "#javascript #tutorial #advanced" -l 50
# Find items with notes containing "TODO"
raindrop search "note:TODO"
# Find all documents uploaded this month
raindrop search "type:document file:true created:>2024-01-01"
# Find all untagged items
raindrop search "notag:true" -c -1 --pretty
# Get AI suggestions for specific bookmark
raindrop suggest 123456
# Apply suggested tags
raindrop patch 123456 '{"tags": ["javascript", "tutorial", "react"]}'
# Mark as important
raindrop patch 123456 '{"important": true}'
# Review structure
raindrop structure
# Find duplicate or similar bookmarks by domain
raindrop search "link:example.com" -l 100
# Merge duplicate collections
raindrop collection merge "123,456" 789
# Remove empty collections
raindrop collection clean
# Rename inconsistent tags across account
raindrop tag rename "Dev" "development"
raindrop tag rename "JS" "javascript"
raindrop tag rename "py" "python"
# Delete obsolete tags
raindrop tag delete "old-tag" "deprecated"
# Find all JavaScript items without "programming" tag
raindrop search "javascript -#programming" -l 100
# Get bookmark IDs (from TOON output), then batch update
raindrop batch update '{"tags": ["javascript", "programming"]}' --ids "1,2,3,4,5"
# Mark all tutorials as favorites
raindrop search "#tutorial" -l 50
raindrop batch update '{"important": true}' --ids "10,20,30"
# Find all articles saved last week
raindrop search "type:article created:>2024-01-10 created:<2024-01-17"
# Find all images tagged "inspiration"
raindrop search "#inspiration type:image"
# Find videos without excerpts (need descriptions)
raindrop search "type:video excerpt:" -l 100
# Archive old bookmarks by moving to collection
raindrop search "created:<2023-01-01" -c 12345
raindrop batch update '{"collection": {"$id": 99999}}' --ids "1,2,3"
See references/commands.md for detailed command reference and API schema information.
tools
Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow identity, child-task linkage, waiting state, revision-checked mutations, and user-facing emergence.
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------
tools
A CLI tool for making authenticated requests to the X (Twitter) API. Use this skill when you need to post tweets, reply, quote, search, read posts, manage followers, send DMs, upload media, or interact with any X API v2 endpoint.