# Coffee

Learns the user's coffee taste as a written corpus plus their brewing gear, and uses...

- Repository: https://github.com/danielmiessler/LifeOS (19669 stars)
- Category: Media
- License: MIT
- Last updated: 2026-10-28
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add danielmiessler/LifeOS --skill Coffee -g -a claude-code -y`
Codex: `npx skills add danielmiessler/LifeOS --skill Coffee -g -a codex -y`
Cursor: `npx skills add danielmiessler/LifeOS --skill Coffee -g -a cursor -y`
Gemini CLI: `npx skills add danielmiessler/LifeOS --skill Coffee -g -a gemini-cli -y`

## Description

Learns the user's coffee taste as a written corpus plus their brewing gear, and uses both to recommend coffees, discover new ones that fit, answer brew questions, and log what they drink. USE WHEN my coffee, coffee taste, what coffee do I like, recommend a coffee, coffee like X, what should I drink, find a coffee, new coffee, discover coffees, beyond my usual roaster, my coffee gear, my grinder, my brewer, my brew setup, how should I brew, brew ratio, add a coffee, log this coffee, update my coffee list. NOT FOR ordering coffee or cafes (Restaurants), audio or studio gear.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Coffee

Holds the user's coffee taste as a durable corpus, plus their brewing gear, and uses both to recommend coffees that fit, discover new coffees next to the ones they love, answer gear and brew questions, and grow the corpus as they feed in more coffees. Roasters describe beans in language that buries whether a coffee fits a particular palate, so picks are screened against the written profile instead of guessed from memory.

## Ideal State

- Every pick, find and gear answer is screened against the corpus and the gear notes read for that request, never against taste recalled from memory.
- Nothing that breaks a hard rule in the corpus Taste Profile (roast range, rejected flavors, brew methods the user does not use) is ever offered as a fit, and every suggestion says in one line why it fits the profile.
- Confirmed favorites (⭐) and unconfirmed candidates (👂) never blur: only the user's own word makes a coffee ⭐.
- The corpus grows only with what the user stated, so it stays ground truth.

## Intent Routing

| Intent | Trigger | File |
|--------|---------|------|
| **Recommend** | "recommend a coffee", "what coffee should I get", "coffee like X", "what should I drink" | `Intents/Recommend.md` |
| **DiscoverCoffees** | "new coffees I'd like", "discover coffees", "what else fits my taste", "beyond my usual roaster", "broaden my coffee" | `Intents/DiscoverCoffees.md` |
| **AddCoffee** | "add to my coffee", "log this coffee", "I love X now", "update my coffee list" | `Intents/AddCoffee.md` |

| File | Read when |
|------|-----------|
| `Setup.md` | first-time setup: the config file, the taste corpus format, and a read-only proof |

For a plain "what do I like?" or "what's my gear?" lookup, read the corpus or the gear notes and answer; no intent needed.

## Data & Config

Read `<configRoot>/LIFEOS/USER/CUSTOMIZATIONS/SKILLS/Coffee/Config.md` first (`configRoot` is `$CLAUDE_CONFIG_DIR` when set, else `~/.claude`). It names two files, and both are ground truth:

The rest: https://github.com/danielmiessler/LifeOS/blob/HEAD/LifeOS/install/skills/Coffee/SKILL.md
