Use when user mentions bookmarks, knowledge management, notes, saving URLs, or taking screenshots - provides quick reference for km (Zettelkasten notes), bookmark (URL manager), and shot-scraper (automated website screenshots) CLI tools installed on this system
Provides three CLI tools for knowledge management: `km` for Zettelkasten notes, `bookmark` for URL management with AI summaries, and `shot-scraper` for automated website screenshots. Use these when users mention notes, bookmarks, or need website screenshots/captures.
/plugin marketplace add albertgstoehl/claude-plugins/plugin install gstoehl-tools@gstoehl-marketplaceThis skill inherits all available tools. When active, it can use any tool Claude has access to.
User has three CLI tools installed and ready to use: km for knowledge management, bookmark for URL management, and shot-scraper for automated website screenshots. Use these commands directly - they're in PATH.
REQUIRED: Always use the correct tool:
km new for notes and knowledge managementbookmark add for saving URLs to read/reference later (NOT for screenshots)shot-scraper for ANY screenshot, capture, or visual image of a websiteCRITICAL DISTINCTIONS:
bookmark addshot-scrapershot-scraper (NEVER bookmark)Screenshots are NOT bookmarks. Bookmarks are NOT screenshots. These are different tools for different purposes.
| Task | Command | Notes |
|---|---|---|
| Save bookmark | bookmark add URL | Auto-extracts title, generates summary |
| List bookmarks | bookmark list | Shows recent bookmarks |
| Search bookmarks | bookmark search QUERY | Semantic search via embeddings |
| Create note | km new "Title" | Opens editor for Zettelkasten note |
| Search notes | km find QUERY | Full-text search through notes |
| List notes | km ls | Shows recent notes |
| Browse notes | km graph | Interactive TUI browser |
| Screenshot webpage | shot-scraper URL | Automated website screenshot |
| Multiple screenshots | shot-scraper multi shots.yaml | Batch screenshot generation |
| Execute JavaScript | shot-scraper javascript URL | Scrape data via JS execution |
| Add documents | Copy to /home/ags/paperless-ngx/consume/ | Auto-processed by Paperless-ngx |
bookmark)Location: /home/ags/.local/bin/bookmark
Backend: API running on localhost:8000
# Add a bookmark (automatically fetches title and summary)
bookmark add https://example.com/article
# List recent bookmarks
bookmark list
# Search bookmarks (uses semantic search with embeddings)
bookmark search "docker security"
# Mark bookmark as read
bookmark mark BOOKMARK_ID read
Features:
km)Location: /home/ags/.cargo/bin/km
Storage: Git-backed Zettelkasten notes
# Create new note (opens editor)
km new "Docker Security Best Practices"
# Create note with content via stdin
km new "Quick Note" << 'EOF'
# Quick Note
Content here
Tags: #docker #security
EOF
# Search notes by content
km find docker
# List recent notes
km ls
# Browse note graph interactively
km graph
# Show specific note
km show NOTE_ID
# Sync to remote
km sync
Note Format:
#tags for categorization[[other-note]] for connectionsshot-scraper)THIS IS THE SCREENSHOT TOOL - Use this for ANY website screenshot request
Installation: pip install shot-scraper && shot-scraper install
Built on: Playwright for reliable browser automation
When to use: User asks to screenshot/capture/grab image of ANY website - simple or complex
# Basic screenshot (auto-names file based on URL)
shot-scraper https://datasette.io/
# Screenshot with custom height
shot-scraper https://github.com/simonw/shot-scraper -h 900
# Screenshot specific element
shot-scraper https://example.com --selector ".main-content"
# Multiple screenshots from YAML config
shot-scraper multi screenshots.yaml
# Execute JavaScript and capture data
shot-scraper javascript https://example.com "
return {
title: document.title,
links: Array.from(document.querySelectorAll('a')).length
}
"
# Generate PDF instead of screenshot
shot-scraper pdf https://example.com -o output.pdf
# Wait for element before capturing
shot-scraper https://example.com --wait 2000
# Set viewport size
shot-scraper https://example.com --width 1280 --height 720
# Capture with authentication
shot-scraper auth https://app.example.com
shot-scraper https://app.example.com # Uses saved auth
Common YAML config (screenshots.yaml):
- url: https://example.com
output: homepage.png
height: 800
- url: https://example.com/about
output: about.png
selector: ".content"
- url: https://example.com/dashboard
output: dashboard.png
wait: 2000
Features:
Use cases:
HANDLES COMPLEX CASES: shot-scraper supports multiple pages, custom selectors, wait conditions, viewports - everything you need. Don't write custom Playwright/Puppeteer scripts.
Location: /home/ags/paperless-ngx
URL: https://n8n.gstoehl.dev
# Copy files to consume directory for automatic processing
cp ~/Downloads/invoice.pdf /home/ags/paperless-ngx/consume/
# Or use docker exec for management commands
cd /home/ags/paperless-ngx
docker compose exec webserver python manage.py COMMAND
# Export all documents
docker compose exec webserver python manage.py document_exporter /usr/src/paperless/export
# Query documents via Python shell
docker compose exec webserver python manage.py shell_plus --plain -c "
from documents.models import Document
print('Total documents:', Document.objects.count())
"
# Create superuser account
docker compose exec webserver python manage.py createsuperuser
| User Request | Execute This | Never |
|---|---|---|
| "Save/add bookmark" | bookmark add URL | Not curl, not API |
| "Search bookmarks" | bookmark search "X" | Not grep |
| "Create/make/write a note" | km new "Title" | Not echo >, not touch |
| "Find/search notes" | km find X | Not grep |
| "Screenshot/capture website" | shot-scraper URL | Not manual browser, not puppeteer script |
| "Take screenshots of pages" | shot-scraper multi config.yaml | Not custom script |
| "Add PDF to paperless" | cp FILE /home/ags/paperless-ngx/consume/ | Not docker cp |
User says "note" → You run km new
User says "bookmark" → You run bookmark add
User says "screenshot" → You run shot-scraper URL
If you find yourself doing ANY of these, STOP immediately and use the correct tool:
bookmark add when user asked for screenshot → Use shot-scrapershot-scrapershot-scrapershot-scraper multi config.yamlshot-scrapershot-scraperAll of these mean: Execute shot-scraper immediately
bookmark CLI)/home/ags/bookmark-manager/cli/bookmark_cli.py (use bookmark command)km new)bookmark add)shot-scraper)shot-scraper)bookmark add when user asks for screenshots (bookmark ≠ screenshot)No matter how urgent: Use bookmark add for URLs, km new for notes, and shot-scraper for screenshots. These commands take 2 seconds.
All three commands are installed in PATH:
bookmark → /home/ags/.local/bin/bookmarkkm → /home/ags/.cargo/bin/kmshot-scraper → Installed via pipAlways use the command name directly. Never use full paths or Python scripts.
| Mistake | Why Wrong | Correct Approach |
|---|---|---|
| Create ~/note.md directly | Bypasses km's git tracking, search index, graph | Use km new "Title" |
| Use Python script path | Not the installed command | Use bookmark command |
| curl to localhost:8000 | Bypasses CLI features | Use bookmark command |
| Write Puppeteer script | Reinvents shot-scraper, slower setup | Use shot-scraper URL |
| Manual browser screenshots | Not automatable, not repeatable | Use shot-scraper |
User asks for screenshot, you use bookmark add | Screenshots and bookmarks are different things | Use shot-scraper for screenshots |
| "Complex case needs custom code" | shot-scraper handles selectors, waits, batches | Use shot-scraper multi with YAML |
| "Quick note, skip km" | Loses searchability, git history | Always use km new |
| Provide alternatives | Decision paralysis | Execute the proper command |
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.
Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.