Query personal wine cellar database. Use for wine pairing recommendations, searching wines, checking inventory, finding bottles by region/varietal/vintage/producer, discovering what's in the cellar, checking drinking windows, or any question about the wine collection.
Install
npx skillscat add jasondchambers/winebuddy Install via the SkillsCat registry.
SKILL.md
WineBuddy Skill
Query and explore your personal wine cellar database.
Step 1: Ensure winebuddy is installed and up-to-date
if [ ! -d ~/.winebuddy ]; then
git clone https://github.com/jasondchambers/winebuddy.git ~/.winebuddy
fi && cd ~/.winebuddy && git pullStep 2: Run Commands
cd ~/.winebuddy && uv run python winebuddy.py <command>Commands Overview
| Command | Purpose |
|---|---|
query |
Search and filter wines |
discover <type> |
List distinct values (colors, varietals, regions, etc.) |
Query Command
Search wines with filters:
cd ~/.winebuddy && uv run python winebuddy.py query [OPTIONS]Filter Options
| Option | Description | Example |
|---|---|---|
--color |
Wine color | --color Red |
--varietal |
Grape variety (partial match) | --varietal "Pinot Noir" |
--producer |
Producer name (partial match) | --producer "Patricia Green" |
--country |
Country of origin | --country Italy |
--region |
Region (partial match) | --region Willamette |
--vintage |
Exact vintage year | --vintage 2019 |
--vintage-min |
Minimum vintage | --vintage-min 2015 |
--vintage-max |
Maximum vintage | --vintage-max 2018 |
--score-min |
Minimum score (professional or community) | --score-min 90 |
--in-stock |
Only wines with quantity > 0 | --in-stock |
--ready |
Wines in their drinking window | --ready |
Output Options
| Option | Description |
|---|---|
--format table |
ASCII table (default) |
--format json |
JSON output |
--format csv |
CSV output |
--sort vintage|producer|score|price|wine_name |
Sort field |
--desc |
Sort descending |
--limit N |
Limit results |
JSON Output Fields
{
"id": 1,
"wine_name": "Wine name",
"vintage": 2019,
"producer": "Winery",
"varietal": "Pinot Noir",
"color": "Red",
"country": "USA",
"region": "Oregon",
"subregion": "Willamette Valley",
"quantity": 3,
"value": 75.95,
"professional_score": 93.5,
"community_score": 91.2,
"begin_consume": 2024,
"end_consume": 2032
}Discover Command
List distinct values in the cellar:
cd ~/.winebuddy && uv run python winebuddy.py discover colors
cd ~/.winebuddy && uv run python winebuddy.py discover varietals
cd ~/.winebuddy && uv run python winebuddy.py discover producers
cd ~/.winebuddy && uv run python winebuddy.py discover countries
cd ~/.winebuddy && uv run python winebuddy.py discover regions
cd ~/.winebuddy && uv run python winebuddy.py discover vintagesExample Queries
Inventory Questions
# All wines in stock
cd ~/.winebuddy && uv run python winebuddy.py query --in-stock --format table
# Most valuable bottles
cd ~/.winebuddy && uv run python winebuddy.py query --in-stock --sort price --desc --limit 5 --format json
# Oldest vintages
cd ~/.winebuddy && uv run python winebuddy.py query --in-stock --sort vintage --limit 5 --format jsonFinding Specific Wines
# Italian wines
cd ~/.winebuddy && uv run python winebuddy.py query --in-stock --country Italy --format json
# Wines from a region
cd ~/.winebuddy && uv run python winebuddy.py query --in-stock --region "Willamette" --format json
# Specific producer
cd ~/.winebuddy && uv run python winebuddy.py query --in-stock --producer "Patricia Green" --format json
# Specific varietal
cd ~/.winebuddy && uv run python winebuddy.py query --in-stock --varietal "Nebbiolo" --format jsonDrinking Window Questions
# Ready to drink now
cd ~/.winebuddy && uv run python winebuddy.py query --in-stock --ready --format json
# Top rated wines
cd ~/.winebuddy && uv run python winebuddy.py query --in-stock --sort score --desc --limit 10 --format json
# Wines from specific vintage range
cd ~/.winebuddy && uv run python winebuddy.py query --in-stock --vintage-min 2015 --vintage-max 2018 --format jsonWine Pairing
For food pairing recommendations, use these guidelines:
| Dish Type | Recommended Varietals |
|---|---|
| Red meat (beef, lamb) | Cabernet Sauvignon, Merlot, Syrah, Red Bordeaux Blend |
| Poultry (chicken, turkey) | Pinot Noir, Chardonnay |
| Pork | Grenache, Tempranillo, Riesling |
| Fish (light) | Sauvignon Blanc, Pinot Grigio, Arneis |
| Salmon/rich fish | Pinot Noir, Chardonnay, Champagne Blend |
| Seafood/shellfish | Champagne Blend, Sparkling, Sauvignon Blanc |
| Pasta (red sauce) | Sangiovese, Nebbiolo |
| Pasta (cream sauce) | Chardonnay |
| Spicy food | Riesling, Gewürztraminer, Frappato |
Pairing Query Strategy
- Identify appropriate varietals from the table above
- Query wines by varietal, sorted by score:
cd ~/.winebuddy && uv run python winebuddy.py query --in-stock --varietal "Pinot Noir" --format json --sort score --desc --limit 5 - Check drinking windows in results to identify:
- Drink Soon:
end_consume< 2026 (current year) - Best Available: Highest scores regardless of window
- Drink Soon:
Pairing Response Format
## Wine Pairing Recommendations for [Dish]
### Drink Soon (Past Drinking Window)
1. **[Wine]** ([Vintage]) - Score: [X] | Value: $[X] | Window: [X-X]
Why it pairs: [rationale]
### Best Available (Special Occasions)
1. **[Wine]** ([Vintage]) - Score: [X] | Value: $[X] | Window: [X-X]
Why it pairs: [rationale]