Add to Wishlist Skill
Overview
This skill automates adding items to your wishlist YAML files by:
- •Fetching a product web page
- •Extracting product information (name, type, price, image URL)
- •Calling the wishlist CLI tool in programmatic mode to add the item
Instructions
Step 1: Understand the Request
Identify the product URL and optionally the wishlist type. The user may say things like:
- •"Add https://example.com/product to my wishlist"
- •"Add this to my baby wishlist: https://example.com/toy"
- •"Put https://shop.com/widget on my watchlist"
Extract:
- •Product URL (required)
- •Wishlist type (optional:
default,baby,watches,camera- defaults todefault)
Step 2: Fetch and Extract Product Information
Use the WebFetch tool with a comprehensive extraction prompt:
Extract the following product information from this page: 1. Product name: The full product title or name 2. Product type: Categorize this product as one of: book, hardware, toy, wardrobe, font, software, service, subscription, game, accessory, camera, watch, or other relevant category. Infer from the product description, category, and context. 3. Price: The product price with currency symbol (e.g., $50, €200, £75, ₽1000). If multiple prices shown, prefer the main/regular price. 4. Image URL: The primary product image URL or OpenGraph image URL. Must be an absolute URL (starting with http:// or https://). Format your response clearly with each field labeled.
Step 3: Validate Extracted Data
Ensure all required fields are present:
- •Name: Must not be empty
- •Type: Must be a reasonable product category
- •Price: Must include currency symbol
- •Image URL: Must be an absolute URL (validate it starts with
http://orhttps://)
If any required field is missing or invalid:
- •Report which fields are missing or problematic
- •Ask the user if they want to provide the missing information manually
Step 4: Call the Wishlist CLI Tool
Once all data is validated, call the wishlist CLI in programmatic mode:
/Users/chuhlomin/Projects/chuhlomin/chuhlomin.com/bin/wishlist \ --url="<product-url>" \ --name="<extracted-name>" \ --type="<inferred-type>" \ --price="<extracted-price>" \ --image-url="<extracted-image-url>" \ --list="<wishlist-type>"
Important: When --image-url is provided, the CLI runs in programmatic mode (no interactive prompts).
Flags:
- •
--url: Original product page URL (required) - •
--name: Product name (required in programmatic mode) - •
--type: Product type/category (required in programmatic mode) - •
--price: Price with currency (required in programmatic mode) - •
--image-url: Product image URL (required in programmatic mode) - •
--list: Wishlist file to update -default,baby,watches, orcamera(defaults todefault)
Step 5: Confirm Success
After the CLI completes:
- •Check the exit code (0 = success)
- •Show the CLI output to the user
- •Confirm which wishlist file was updated (e.g.,
content/wishlist.yml)
If the CLI fails:
- •Show the error message
- •Suggest potential fixes (e.g., rebuild the CLI if binary is missing)
Examples
Example 1: Add to Default Wishlist
User: "Add https://fsd.it/shop/fonts/pragmatapro/ to my wishlist"
Actions:
- •WebFetch: Extract name="Pragmata Pro", type="font", price="€200", image URL
- •Call CLI:
bash
/Users/chuhlomin/Projects/chuhlomin/chuhlomin.com/bin/wishlist \ --url="https://fsd.it/shop/fonts/pragmatapro/" \ --name="Pragmata Pro" \ --type="font" \ --price="€200" \ --image-url="https://fsd.it/path/to/image.jpg" \ --list="default"
- •Confirm: "Item added to content/wishlist.yml"
Example 2: Add to Baby Wishlist
User: "Add this toy to my baby wishlist: https://example.com/toy"
Actions:
- •WebFetch: Extract product details
- •Call CLI with
--list="baby" - •Confirm: "Item added to content/wishlist-baby.yml"
Example 3: Handle Missing Data
User: "Add https://example.com/product"
Actions:
- •WebFetch: Name extracted, but price not found on page
- •Report: "I found the product name 'Widget XL' and categorized it as 'hardware', but couldn't find a price on the page. Would you like to provide the price manually?"
Product Type Categories
When inferring the product type, use these common categories:
- •book - Books, ebooks, printed materials
- •hardware - Electronics, gadgets, tools, devices
- •toy - Toys, games (physical items for children)
- •wardrobe - Clothing, shoes, accessories, fashion
- •font - Typefaces, font families
- •software - Software licenses, apps, programs
- •service - Subscriptions, memberships, services
- •game - Video games, board games
- •camera - Camera equipment, lenses
- •watch - Watches, timepieces
- •accessory - General accessories
- •other - Anything that doesn't fit above categories
Error Handling
CLI Binary Missing
If you get "command not found" or similar:
# Rebuild the wishlist CLI cd /Users/chuhlomin/Projects/chuhlomin/chuhlomin.com go build -o bin/wishlist ./cmd/wishlist
WebFetch Fails
If the page can't be fetched:
- •Report the error to the user
- •Suggest they check if the URL is accessible
- •Offer to add the item manually if they provide the details
Invalid Image URL
If the extracted image URL is relative (e.g., /images/product.jpg):
- •Try to resolve it to an absolute URL using the page's base URL
- •If resolution fails, report this and let the CLI handle image fetching (omit
--image-url)
Notes
- •The wishlist CLI preserves YAML comments when adding items
- •Programmatic mode (with
--image-url) bypasses all interactive prompts - •The CLI also updates the OpenGraph cache at
cache.yml - •Supported wishlist files:
- •
content/wishlist.yml(default) - •
content/wishlist-baby.yml(baby) - •
content/wishlist-watches.yml(watches) - •
content/wishlist-camera.yml(camera)
- •
Tips
- •Be generous with type inference - use context clues from the page
- •Prefer primary product images over logo/icon images
- •If multiple prices exist (sale price, regular price), use the regular price
- •Currency symbols are important - don't omit them
- •Validate image URLs are absolute before passing to CLI