npx claudepluginhub norrietaylor/distillery --plugin distilleryThis skill is limited to using the following tools:
<!-- Trigger phrases: bookmark, save this link, store this URL, remember this page, /bookmark <url> [#tags] -->
Manages Linkding bookmarks via REST API: add with metadata, search by query/tags/date, list, update, archive/unarchive, delete, check URLs, manage tags/bundles.
Capture decisions, insights, and action items from the current session into the knowledge base
Manages Linkding bookmarks via REST API: search/list by query/tags/date, add with metadata, update, archive/unarchive, delete, check URLs, manage tags/bundles.
Share bugs, ideas, or general feedback.
Fetches a URL, generates a concise summary, checks for duplicates, and stores the result as a bookmark entry.
/bookmark <url> [#tags]See CONVENTIONS.md — skip if already confirmed this conversation.
#tag tokens: explicit tags to applyExample: /bookmark https://example.com/article #caching #architecture
Use WebFetch to retrieve content at the URL.
If WebFetch fails, prompt for a manual summary:
Could not fetch URL: <url>
Error: <error message>
Please provide a manual summary of the page content:
>
Continue to Step 4 with the manual summary.
Synthesize content into a summary: 2-4 sentences on main topic and takeaways, followed by 3-5 bullet points.
Show preview before storing:
## Bookmark Summary (preview)
<summary text>
Key points:
- <point 1>
- <point 2>
- <point 3>
Ready to store? (yes / edit / skip)
If the user edits, accept their revision. If they skip, confirm "Skipped. No entry was stored."
Call distillery_find_similar(content="<url> <summary>", dedup_action=true). Handle by action field:
"create": No similar entries. Proceed to Step 6.
"skip": Near-exact duplicate. Show similarity table and offer: (1) Store anyway, (2) Skip.
"merge" or "link": Related entry exists. Show similarity table and offer: (1) Store anyway, (2) Skip.
Similar entries found:
| Entry ID | Similarity | URL | Preview |
|----------|-----------|-----|---------|
| <id> | 92% | <url> | <first 80 chars> |
1. Store anyway 2. Skip
On skip, confirm "Skipped. No new entry was stored." and stop.
See CONVENTIONS.md for resolution order. Cache for the session.
Combine explicit #tag arguments with 2-5 auto-extracted keywords from the summary. Tag format rules:
source/bookmark/{domain} — derived from URL domain (drop www., dots to hyphens)domain/{topic} — subject-area tagsproject/{repo-name}/references — if project is knownwww., replace non-[a-z0-9-] with hyphens, collapse consecutive hyphens, trim leading/trailing hyphens. Must match [a-z0-9][a-z0-9\-]*.# from user-provided tagsdistillery_store(
content="<summary>\n\nKey points:\n- ...",
entry_type="bookmark",
author="<author>",
project="<project>",
tags=[...],
metadata={"url": "<the-url>", "summary": "<2-4 sentence summary>"}
)
[bookmark] Stored: <entry-id>
Project: <project> | Author: <author>
Summary: <first 200 chars>...
Tags: tag1, tag2, tag3
Stored:
[bookmark] Stored: <entry-id>
Project: <project> | Author: <author>
Summary: <first 200 chars>...
Tags: tag1, tag2, tag3
Skipped:
Skipped. No new entry was stored.
metadata.url, even if content was manually provided