Claude-skill-registry local-cli-tools
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
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/local-cli-tools" ~/.claude/skills/majiayu000-claude-skill-registry-local-cli-tools && rm -rf "$T"
skills/data/local-cli-tools/SKILL.mdLocal CLI Tools
Overview
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:
for notes and knowledge managementkm new
for saving URLs to read/reference later (NOT for screenshots)bookmark add
for ANY screenshot, capture, or visual image of a websiteshot-scraper
CRITICAL DISTINCTIONS:
- User wants to READ/REFERENCE content later →
bookmark add - User wants SCREENSHOT/VISUAL/IMAGE of website →
shot-scraper - User says "screenshot", "capture", "take a picture", "grab an image" →
(NEVER bookmark)shot-scraper
Screenshots are NOT bookmarks. Bookmarks are NOT screenshots. These are different tools for different purposes.
Quick Reference
| Task | Command | Notes |
|---|---|---|
| Save bookmark | | Auto-extracts title, generates summary |
| List bookmarks | | Shows recent bookmarks |
| Search bookmarks | | Semantic search via embeddings |
| Create note | | Opens editor for Zettelkasten note |
| Search notes | | Full-text search through notes |
| List notes | | Shows recent notes |
| Browse notes | | Interactive TUI browser |
| Screenshot webpage | | Automated website screenshot |
| Multiple screenshots | | Batch screenshot generation |
| Execute JavaScript | | Scrape data via JS execution |
| Add documents | Copy to | Auto-processed by Paperless-ngx |
Bookmark Manager (bookmark
)
bookmarkLocation:
/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:
- Automatic title extraction via Jina AI
- AI-generated 2-3 sentence summaries (Claude Haiku)
- Semantic search via embeddings
- Read/inbox status tracking
Knowledge Management (km
)
kmLocation:
/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:
- Markdown files
- Use
for categorization#tags - Wikilinks
for connections[[other-note]] - Backed by git for version control
Screenshot Automation (shot-scraper
)
shot-scraperTHIS 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:
- CSS selector-based element targeting
- JavaScript execution for data scraping
- Custom wait conditions and delays
- PDF generation from webpages
- Authentication workflow support
- Retina/high-DPI support
- GitHub Actions integration
- Transparent backgrounds
- Batch processing via YAML config
Use cases:
- Documentation screenshots
- Dashboard archiving
- Visual regression testing
- Web scraping with JS
- Automated report generation
HANDLES COMPLEX CASES: shot-scraper supports multiple pages, custom selectors, wait conditions, viewports - everything you need. Don't write custom Playwright/Puppeteer scripts.
Paperless-ngx Document Management
Location:
/home/ags/paperless-ngx
URL: https://n8n.gstoehl.dev
Adding Documents
# 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
Common Management Commands
# 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
When User Says...
| User Request | Execute This | Never |
|---|---|---|
| "Save/add bookmark" | | Not curl, not API |
| "Search bookmarks" | | Not grep |
| "Create/make/write a note" | | Not echo >, not touch |
| "Find/search notes" | | Not grep |
| "Screenshot/capture website" | | Not manual browser, not puppeteer script |
| "Take screenshots of pages" | | Not custom script |
| "Add PDF to paperless" | | Not docker cp |
User says "note" → You run
User says "bookmark" → You run km new
User says "screenshot" → You run bookmark addshot-scraper URL
Red Flags - STOP and Use Correct Tool
If you find yourself doing ANY of these, STOP immediately and use the correct tool:
- About to suggest
when user asked for screenshot → Usebookmark addshot-scraper - Thinking "maybe they don't really need a screenshot" → User knows what they want, use
shot-scraper - Writing Puppeteer/Playwright code → Use
shot-scraper - Creating YAML config but then suggesting custom script → Use
shot-scraper multi config.yaml - Asking user to clarify screenshot vs bookmark → User said screenshot, use
shot-scraper - Suggesting manual browser screenshot → Use
shot-scraper
All of these mean: Execute
immediatelyshot-scraper
Don't - No Exceptions
- ❌ Use curl to call the bookmark API directly (use
CLI)bookmark - ❌ Use Python script paths like
(use/home/ags/bookmark-manager/cli/bookmark_cli.py
command)bookmark - ❌ Create standalone .md files (use
)km new - ❌ Download HTML files (use
)bookmark add - ❌ Write custom Puppeteer/Playwright scripts (use
)shot-scraper - ❌ Manual browser screenshots (use
)shot-scraper - ❌ "Complex requirements justify custom script" (shot-scraper handles it)
- ❌ Use
when user asks for screenshots (bookmark ≠ screenshot)bookmark add - ❌ Suggest "better alternatives" to screenshot requests (user knows what they want)
- ❌ "Time pressure justifies skipping tools" (tools are faster)
- ❌ Navigate to tool directories to run scripts (tools are in PATH)
- ❌ Provide multiple alternatives (use the proper tool)
- ❌ Ask which approach to use (execute the command)
- ❌ Explore directories to find tools (use commands directly)
No matter how urgent: Use
bookmark add for URLs, km new for notes, and shot-scraper for screenshots. These commands take 2 seconds.
Commands Are Installed
All three commands are installed in PATH:
→bookmark/home/ags/.local/bin/bookmark
→km/home/ags/.cargo/bin/km
→ Installed via pipshot-scraper
Always use the command name directly. Never use full paths or Python scripts.
Common Mistakes
| Mistake | Why Wrong | Correct Approach |
|---|---|---|
| Create ~/note.md directly | Bypasses km's git tracking, search index, graph | Use |
| Use Python script path | Not the installed command | Use command |
| curl to localhost:8000 | Bypasses CLI features | Use command |
| Write Puppeteer script | Reinvents shot-scraper, slower setup | Use |
| Manual browser screenshots | Not automatable, not repeatable | Use |
User asks for screenshot, you use | Screenshots and bookmarks are different things | Use for screenshots |
| "Complex case needs custom code" | shot-scraper handles selectors, waits, batches | Use with YAML |
| "Quick note, skip km" | Loses searchability, git history | Always use |
| Provide alternatives | Decision paralysis | Execute the proper command |