Generate Collection Classification for Safari tab groups and Raindrop collections using the bookmark-index CLI
You are generating Classification Cards — structured semantic identities for browser tab groups and Raindrop collections stored in the bookmark-index database. Each card captures what a collection represents, enabling disambiguation between overlapping topics and accurate URL-to-collection matching.
You ARE the LLM — you do not need OpenRouter or any external API. You generate cards directly and import them via classify --import.
Read references/classify.md (relative to this skill) for:
bookmark-index list unclassified --limit 10 --json
Returns { total, offset, limit, rows }. The total field tells you how many unclassified collections remain. Use --offset N to page through them. Filter by source with --safari or --raindrop.
bookmark-index show "<collection name>" --json
Returns the collection's tabs (titles + URLs), existing card (if any), version info, and author. Use this data to build the Collection Card.
For each collection, fetch page content from a sample of its URLs to produce a richer, more accurate card. This also captures a page snapshot that is stored alongside the card.
Rules:
discord.com, localhost, any .ts.net domainWebFetch tool to retrieve each URLAssemble the snapshot:
Concatenate the fetched content into a single markdown string:
## Tab Title 1
<truncated page content>
## Tab Title 2
<truncated page content>
Store this string as the page_snapshot field in the card JSON. If no pages could be fetched (all failed or were skipped), omit page_snapshot.
Use both the tab metadata (titles, URLs) AND the fetched page content to generate the card fields.
For each collection, consider the collection name, tab titles, URLs, and fetched page content. Apply the system prompt and categories from the reference to produce a Collection Card JSON object.
Note: make sure you use your own model name in the --author field.
echo '<object keyed by collection name>' | bookmark-index classify --import --all --author "$your_model_name"
The batch format is:
{
"Group A": { "description": "...", "category": "...", "topics": [...], "intent": "...", "confidence": 0.9, "page_snapshot": "## Title\ncontent..." },
"Group B": { "description": "...", "category": "...", "topics": [...], "intent": "...", "confidence": 0.8 }
}
The page_snapshot field is optional — include it when pages were successfully fetched, omit it otherwise.
After importing a batch, loop back to step 2 to get the next page.
Important: Do NOT delegate classification to subagents. The bookmark-index CLI writes to a local SQLite database. Subagents spawned via the Agent tool may run in isolated worktrees with a separate copy of the database, causing their imports to silently disappear. Always run bookmark-index show and bookmark-index classify --import directly from the main session.
--author "model-name" to distinguish agent-generated cards from other sources--safari or --raindrop to focus on one sourcepage_snapshot is stored in the group_classifications table and shown by bookmark-index show