Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Manage linkding bookmarks - save URLs, search, tag, organize, and retrieve your personal bookmark collection. Use when the user wants to save links, search bookmarks, manage tags, or organize their reading list.
.claude/skills/sundial-org-clinkding/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 219% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 184% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 146% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 104% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 94% | 0% |
A modern Go-based CLI for managing bookmarks in linkding, a self-hosted bookmark manager.
Linkding is a self-hosted bookmark manager (like Pocket, Instapaper). clinkding is the CLI that lets you manage your bookmarks from the terminal or via AI agents.
Think of it as:
bash# Interactive configuration clinkding config init # Or manually configure clinkding config set url https://your-linkding-instance.com clinkding config set token YOUR_API_TOKEN # Test connection clinkding config test
Location: ~/.config/clinkding/config.yaml
yamlurl: https://linkding.example.com token: your-api-token-here defaults: bookmark_limit: 100 output_format: auto
bashexport LINKDING_URL="https://linkding.example.com" export LINKDING_TOKEN="your-api-token-here"
bash# List recent bookmarks clinkding bookmarks list # Search by keyword clinkding bookmarks list --query "golang tutorial" # Filter by tag clinkding bookmarks list --query "tag:programming" # Recent bookmarks (last 7 days) clinkding bookmarks list --added-since "7d" # Unread bookmarks clinkding bookmarks list --query "unread:yes" # JSON output for scripting clinkding bookmarks list --json # Plain text (tab-separated) clinkding bookmarks list --plain
bash# Simple bookmark clinkding bookmarks create https://go.dev # With metadata clinkding bookmarks create https://go.dev \ --title "Go Programming Language" \ --tags "golang,programming,reference" \ --description "Official Go website" \ --unread # Check if URL already exists before creating clinkding bookmarks check https://go.dev
bash# Update title clinkding bookmarks update 42 --title "New Title" # Add tags clinkding bookmarks update 42 --add-tags "important,work" # Remove tags clinkding bookmarks update 42 --remove-tags "old-tag" # Mark as read clinkding bookmarks update 42 --read # Update description clinkding bookmarks update 42 --description "Updated notes"
bash# Full details clinkding bookmarks get 42 # JSON output clinkding bookmarks get 42 --json
bash# Archive (hide from main list) clinkding bookmarks archive 42 # Unarchive clinkding bookmarks unarchive 42 # Delete permanently clinkding bookmarks delete 42
bash# List all tags clinkding tags list # Create a tag clinkding tags create "golang" # Get tag details clinkding tags get 1 # Plain text output clinkding tags list --plain
Bundles are collections of related bookmarks.
bash# List bundles clinkding bundles list # Create a bundle clinkding bundles create "Go Resources" \ --description "Everything related to Go programming" # Update a bundle clinkding bundles update 1 --name "Go Lang Resources" # Get bundle details clinkding bundles get 1 # Delete a bundle clinkding bundles delete 1
Upload and manage file attachments for bookmarks.
bash# List assets for a bookmark clinkding assets list 42 # Upload a file clinkding assets upload 42 ~/Documents/screenshot.png # Download an asset clinkding assets download 42 1 -o ./downloaded-file.png # Delete an asset clinkding assets delete 42 1
bash# Get user profile info clinkding user profile
bash# User: "Save this for later: https://example.com" clinkding bookmarks create https://example.com \ --title "Article Title" \ --description "Context from conversation" \ --tags "topic,context"
bash# User: "Find my golang bookmarks" clinkding bookmarks list --query "golang" # User: "Show me unread programming articles" clinkding bookmarks list --query "tag:programming unread:yes" # User: "What did I save last week?" clinkding bookmarks list --added-since "7d"
bash# User: "Tag bookmark 42 as important" clinkding bookmarks update 42 --add-tags "important" # User: "Create a bundle for my AI research links" clinkding bundles create "AI Research" \ --description "Machine learning and AI papers"
bash# User: "Give me something to read" clinkding bookmarks list --query "unread:yes" --limit 5 # User: "Show me my golang tutorials" clinkding bookmarks list --query "tag:golang tag:tutorial"
Human-friendly tables and colors for terminal display.
bashclinkding bookmarks list --json
Machine-readable for scripting and agent parsing.
bashclinkding bookmarks list --plain
Tab-separated values for pipe-friendly parsing.
Supports human-friendly time ranges:
bash# Last 24 hours clinkding bookmarks list --added-since "24h" # Last 7 days clinkding bookmarks list --added-since "7d" # Last 6 months clinkding bookmarks list --modified-since "180d"
Supported units: h (hours), d (days), y (years)
bash# Check unread bookmarks clinkding bookmarks list --query "unread:yes" # Get top 5 most recent clinkding bookmarks list --limit 5
bash# macOS pbpaste | xargs -I {} clinkding bookmarks create {} # Linux xclip -o | xargs -I {} clinkding bookmarks create {}
bash# Tag multiple bookmarks for id in 42 43 44; do clinkding bookmarks update $id --add-tags "important" done # Archive old unread bookmarks clinkding bookmarks list --query "unread:yes" --added-since "30d" --plain | \ while read id _; do clinkding bookmarks archive "$id" done
bash# Export all bookmarks as JSON clinkding bookmarks list --json > bookmarks-backup-$(date +%Y%m%d).json # Export specific tag clinkding bookmarks list --query "tag:important" --json > important.json
Available on all commands:
| Flag | Description | |------|-------------| | -c, --config <file> | Config file path | | -u, --url <url> | Linkding instance URL | | -t, --token <token> | API token | | --json | Output as JSON | | --plain | Output as plain text | | --no-color | Disable colors | | -q, --quiet | Minimal output | | -v, --verbose | Verbose output |
| Code | Meaning | |------|---------| | 0 | Success | | 1 | General error (API/network) | | 2 | Invalid usage (bad flags/args) | | 3 | Authentication error | | 4 | Not found | | 130 | Interrupted (Ctrl-C) |
bash# Verify settings clinkding config show # Test connection clinkding config test
Authentication Error:
https://)Command-Specific Help:
bashclinkding bookmarks --help clinkding bookmarks create --help
brew install daveonkels/tap/clinkdingbashbrew install daveonkels/tap/clinkding
bashgo install github.com/daveonkels/clinkding@latest
Download from releases for your platform.
bash# Bash clinkding completion bash > /etc/bash_completion.d/clinkding # Zsh clinkding completion zsh > "${fpath[1]}/_clinkding" # Fish clinkding completion fish > ~/.config/fish/completions/clinkding.fish
Built by: @daveonkels License: MIT
When a user says "Add this to linkding" or "Save this URL", follow this workflow:
1. Extract metadata from the URL
Use the summarize skill to get title and description:
bash# Get page metadata summarize url https://example.com --format json
This returns structured data with:
2. Infer appropriate tags from content
Map the content to existing canonical tags only. Do NOT create new tags.
Use this canonical tag list (263 tags total):
Tag Selection Rules:
tools over generator)clinkding tags list --plain | grep -i <keyword>awesome, cool, interesting, resources, tips3. Create the bookmark with metadata
bashclinkding bookmarks create "https://example.com" \ --title "Title from summarize" \ --description "Summary from summarize (1-2 sentences)" \ --tags "webdev,tools,reference"
User: "Save this to linkding: https://github.com/awesome/project"
Agent Actions:
bash# 1. Check if already bookmarked clinkding bookmarks check https://github.com/awesome/project # 2. Get metadata (use summarize skill) summarize url https://github.com/awesome/project --format json # 3. Analyze content and infer tags # From summary: "A CLI tool for Docker container management" # Canonical tags: docker, devops, cli, tools # 4. Create bookmark clinkding bookmarks create https://github.com/awesome/project \ --title "Awesome Project - Docker Container CLI" \ --description "Command-line tool for managing Docker containers with enhanced features" \ --tags "docker,devops,cli"
Use these rules to map content → canonical tags:
| Content Type | Canonical Tags | |--------------|----------------| | Web development, HTML, CSS, JavaScript | webdev, css, javascript | | React, frameworks, frontend | webdev, react | | Design, UI/UX, mockups | design | | Python, Go, Ruby code | programming, python/ruby | | Docker, K8s, DevOps | docker, devops, cloud | | Home automation, ESP32, sensors | smart-home, esphome, iot | | AI, ML, LLMs | ai, llm | | Productivity tools, workflows | productivity, tools | | Finance, investing, crypto | finance | | Marketing, SEO, ads | marketing | | Shopping, deals, stores | ecommerce | | Tutorials, guides, docs | guide, howto, documentation | | Security, privacy, encryption | security, privacy | | Local (DFW/Seattle) | texas, seattle |
Always run these checks:
bash# 1. Does URL already exist? clinkding bookmarks check <url> # 2. Do the tags exist? clinkding tags list --plain | grep -iE "^(tag1|tag2|tag3)$" # 3. Are we using canonical tags? # Cross-reference against the 263 canonical tags # Never create new tags without explicit user request
If user provides multiple URLs:
bash# Process each URL separately with metadata extraction for url in url1 url2 url3; do # Get metadata # Infer tags # Create bookmark done
If user says "Update that bookmark" or "Add tags to my last save":
bash# Get most recent bookmark recent_id=$(clinkding bookmarks list --limit 1 --plain | cut -f1) # Add tags (don't remove existing ones unless asked) clinkding bookmarks update $recent_id --add-tags "new-tag" # Update description clinkding bookmarks update $recent_id --description "Updated notes"
summarize to get good titles/descriptionsDave's linkding instance has 263 canonical tags after consolidation from 17,189 duplicates.
Top categories (by bookmark count):
pinboard (4,987) - Legacy import tagifttt (2,639) - Legacy import tag webdev (1,679) - Web developmentdesign (561) - Design/UI/UXcontent (416) - Content/writingcloud (383) - Cloud/hosting/SaaSbusiness (364) - Business/strategyecommerce (308) - Shopping/marketplacesmart-home (295) - Home automationproductivity (291) - Productivity toolsGolden Rule: When in doubt, use broader existing tags rather than creating new specific ones.
Other measured skills in the registry, with their headline benchmark lift.