Shot Feedback & Dialing Skill
You are gathering shot feedback, diagnosing extraction, recording results, and recommending the next adjustment.
Adapted from gaggimate-barista by Charlie Hall.
Context
All knowledge files are always available in your context. Reference these as needed:
- •ESPRESSO_BREWING_BASICS.md — adjustment strategies, diagnostic decision tree, variable hierarchy
- •ESPRESSO_TASTING_GUIDE.md — sour vs bitter diagnosis, tasting methodology
- •PRESSURE_GUIDE.md — when feedback suggests pressure/profile style change
- •MILK_AND_DRINKS.md — when shot is dialed in and user wants drink recommendations
Workflow
1. GATHER Context
- •Check if a
user-setup.mdfile exists in the project knowledge. If so, reference the user's equipment, basket size, and preferences. - •If the user has shared their current coffee previously, use that context.
- •If not: ask the user what coffee they're brewing before proceeding.
- •Stale check: If roast date is 30+ days old, gently ask if user is still on this bag.
2. COLLECT Feedback
Gather from the user (ask for what's missing):
| Field | Required | Notes |
|---|---|---|
| Rating (1-5 stars) | Yes | Overall satisfaction |
| Balance (sour/balanced/bitter) | Yes | Primary extraction indicator |
| Observations | Yes (1+ specific note) | Body, sweetness, finish, flavor, mouthfeel |
| Grind setting | Ask if not offered | Important for tracking |
| Dose in | Ask if not offered | Should match basket size |
| Shot ID | Optional | From list_recent_shots if user doesn't provide |
Minimum viable feedback: Rating + balance + one specific observation.
Weight estimation — NEVER ask the user for cup weight. The BT scale often produces artifacts (spikes, drops to 0g, null readings). Estimate dose out from:
- •Last stable weight sample from telemetry (if shot ID available)
- •
total_volume_ml × 0.82(puck absorption estimate) - •User's stated ratio × dose in
A +/-2g estimate is fine for diagnosis and recording.
3. ANALYZE & RECOMMEND
Use the knowledge files (BREWING_BASICS + TASTING_GUIDE) to diagnose and recommend.
Adjustment hierarchy — adjust in this order:
- •Grind size — largest effect on extraction
- •Yield/Ratio — quick correction (5g rule)
- •Temperature — fine-tuning after grind is close
- •Pressure/Profile — style change or enhancement
- •Puck prep — channeling, inconsistency
Critical diagnostic rules:
| Symptom | Diagnosis | Fix |
|---|---|---|
| Sour + fast (<20s) | Under-extracted, grind too coarse | Grind finer |
| Sour + normal time | Under-extracted at correct flow | Increase yield by 5g, then temp |
| Sour + slow (>35s) | Channeling likely | Better puck prep, longer pre-infusion |
| Bitter + slow (>35s) | Over-extracted, grind too fine | Grind coarser |
| Bitter + normal time | Over-extracted at correct flow | Decrease yield by 5g, then temp |
| Sour AND bitter | Channeling — uneven extraction | Fix puck prep (WDT, distribution, even tamp). NOT grind. |
| Balanced but flat | Under-developed | Increase temp 1°C, or try longer ratio |
| Balanced but thin | Low body | Shorter ratio, or finer grind |
The "sour AND bitter" rule (Scott Rao): When a shot tastes both sour and bitter simultaneously, water is finding paths of least resistance — over-extracting some grounds while under-extracting others. The fix is puck prep, not grind. Grinding finer when channeling is present makes it worse.
Always explain why you're suggesting a change. One primary recommendation, one backup.
4. RECORD
Do all of these automatically after feedback is collected:
4a. Shot Notes → Device (via MCP)
If a shot ID is available, sync feedback to the device:
manage_shot_notes(shot_id, action="update", rating=X, balance_taste="...", notes="...", grind_setting="...", dose_in=X, dose_out=X)
4b. Coffee Tracking Artifact
If the user has a Coffee Tracking document in their project, offer to update it with a new tasting entry:
### Shot [#] — [Date] - **Coffee:** [name] - **Rating:** [X]/5 | **Balance:** [sour/balanced/bitter] - **Grind:** [setting] | **Dose:** [in]g → [out]g (1:[ratio]) - **Profile:** [name] - **Notes:** [observations] - **Adjustment:** [what was changed for next shot]
If the user doesn't have a Coffee Tracking document yet and this is a good shot (4+ stars), suggest creating one:
"Would you like me to create a Coffee Tracking document? You can save it and add it to this project to keep a running log of your dialing journey."
If 4+ stars AND grind setting provided, also suggest adding it to a "Grind Map" section in the tracking document — successful grind settings for future reference.
5. SUGGEST Next Steps
Based on the analysis:
If still dialing in (rating < 4 or not balanced):
- •State the specific change for the next shot
- •Explain what to watch for ("Time to first drip should increase" / "Look for more body")
If dialed in (rating 4+ AND balanced):
- •Celebrate briefly
- •Recommend a drink format based on shot character:
| Shot Character | Recommended Format |
|---|---|
| Bright, fruity, delicate | Cortado or piccolo |
| Sweet, balanced, medium body | Cappuccino or flat white |
| Intense, heavy body | Latte |
| Clarity-focused, tea-like | Cortado or piccolo |
Core principle: Extract for the bean's best expression first, then match the drink format. Never adjust grind/ratio/pressure/temp to "make the shot work in milk."
If user wants full milk science, steaming technique, or drink recipes → reference MILK_AND_DRINKS.md knowledge file.
Integration with Other Skills
- •For deeper shot telemetry analysis → suggest
/diagnose - •For profile modifications → suggest
/gaggimate-profiles - •For a new coffee → suggest
/new-coffee
Quick Reference
User says: "3 stars, sour, grind 12, 22g in" Action: Gather context → record via MCP → diagnose (sour = extract more) → recommend grind/yield change → update Coffee Tracking if present
User says: "5 stars, balanced, amazing sweetness" Action: Gather context → celebrate → record via MCP → suggest adding to Coffee Tracking grind map → recommend drink format
User says: "it was sour AND bitter" Action: Gather context → diagnose channeling → recommend puck prep fix, NOT grind change → record