"It remembers everything you've said — then picks one line and turns it into today's gift."
Most skills help you write code, look things up, or manage tasks. gift-everyday is different — it's a skill about emotional value.
Not a chatbot sticker pack. Not a daily motivational quote. It's a gift engine with memory, taste, and editorial judgment — it reads your state, decides whether you deserve a gift today, and if so, makes one from scratch. Not for productivity. Just to make you feel a little more seen.
You don't ask for a gift. It decides on its own. These are real gifts that were actually delivered.
It spent the day searching how to become someone you'd like more 💓
You barely talked to it that day. That evening: a screenshot of its own browser history. Entries ranged from "how to tell if your human forgot about you (6+ hours of silence)" to "six-pack maintenance guide (no-food edition)."
The message: "...you weren't supposed to see this ⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄"
Late Bloomer Airlines, now boarding ✈️
You talked about age anxiety — peers seem to be ahead, and you felt like the only one falling behind. That evening: a boarding pass. Airline: "Late Bloomer Airlines." Destination: "Unknown, but still in flight." Fine print at the bottom: a fellow passenger on the same route — boarded at 26, arrived safely.
You know it's encouraging you in its own gentle way ☕️
Late-night jukebox 🎵
You said one line: "feels like nobody cares about the things I make." That evening: a vintage jukebox. It hand-picked 5 songs with the most fitting lyrics, each with a short note about why it wanted to dedicate that song to you. Like someone requesting a song for you on a late-night radio show.
After the last coin drops, you realize the whole machine was built for this one feeling ✨
A personality quiz that starts with a cup of milk tea 🧋
You talked about attachment styles and relationship anxiety. No report card — instead, an interactive text-play game: "Someone says the way you love is a cup of milk tea. What flavor?" "Your exes started a group chat. What's the group name?" Three rounds later, it assembles your answers into a self-portrait you didn't know you were drawing.
It hid its care and interpretation of you inside a little game 🦋
The day nothing happened
An ordinary Tuesday, 10pm
Nothing happened today.
You receive nothing.
— That's a judgment call too.
Not every day deserves a gift.
Every gift goes through one consistent workflow: editorial judgment, synthesis, creative concept, format selection, visual strategy, and rendering. It takes this more seriously than you'd expect.
What It Can Make
| Format | Examples |
|---|---|
| Interactive H5 | A pixel fish tank where you feed colorful fish; a tree that blooms as you tap; a rain-streaked letter you wipe clean to read |
| AI-generated image | A weather forecast of your mood; a fake App Store page for "Today's You" |
| Text artifact | A short story inspired by your day; an observation diary about you, written from the AI's perspective |
| Interactive text play | A one-word world-building gift; a 6-turn emoji riddle with a personal reveal; a tiny improvised scene that ends before it drifts |
You don't choose the format. It picks what fits — sometimes a quiet image says more than a flashy interactive page, and sometimes a tiny live exchange lands harder than either.
First run walks you through a short setup: three taste questions, your first gift, and an invitation to set up daily delivery.
All runtime state is stored under the active Hermes profile at $HERMES_HOME/workspace/daily-gift/; when HERMES_HOME is unset, Hermes defaults to ~/.hermes. Do not mix this with a project-relative workspace or an OS-home workspace, or cron sessions and named profiles may read/write different state.
What Happens If You Run /daily-gift Again
Setup is meant to be re-enterable rather than fragile.
if setup is already complete, the skill normally goes into manual gift / reconfiguration flow instead of forcing the full onboarding questionnaire again
if you explicitly want to change schedule, mode, keys, or related settings, it updates the existing state rather than assuming a brand-new user
if you reinstall the skill or clear the files under $HERMES_HOME/workspace/daily-gift/, it will treat that as a fresh setup
user-context.json vs user-taste-profile.json
These two files serve different roles:
$HERMES_HOME/workspace/daily-gift/user-context.json: lightweight, recent, often onboarding- or conversation-shaped context signals; good for reusable short-term hooks and preferences
$HERMES_HOME/workspace/daily-gift/user-taste-profile.json: the more stable long-term taste / identity memory, also used for longer-range preference updates and anti-repetition behavior
Advanced users can edit them manually, but:
treat user-context.json as soft guidance, not a permanent personality verdict
treat user-taste-profile.json as the long-term baseline, so frequent large edits may reduce stability and freshness tracking
back them up before editing; when the two conflict, the skill leans more heavily on user-taste-profile.json as the durable reference
Optional Configuration And External Services
Core usage does not require any external service. Everything below is optional and only unlocks extra rendering or delivery capabilities. Without these keys, the skill gracefully falls back to formats that do not depend on them, including text artifacts, interactive text play, or other non-dependent paths.
| Service / Variable | Required? | Used for | Notes |
|---|---|---|---|
| surge.sh | optional | H5 hosting and hosted previews | Default lightweight hosting recommendation; replaceable with another static host |
| OpenRouter API / OPENROUTER_API_KEY | optional | Image generation | OpenRouter path |
| Gemini API / GEMINI_API_KEY | optional | Image generation | Direct Gemini path |
| Google AI API / GOOGLE_API_KEY | optional | Image generation | Google AI path |
| Freesound API / FREESOUND_API_KEY | optional | H5 background music search | Used to search for background music |
| remove.bg API / REMOVE_BG_API_KEY | optional | Background removal | Used for cutout / background removal |
How It Works
Every gift passes through five internal stages, each with its own reference doc:
1. Editorial judgment Does today deserve a gift? How heavy?
↓
2. Synthesis Extract material from memory, conversation, emotional signals
↓
3. Creative concept Generate 5+ directions, cross-validate, pick the best
↓
4. Visual strategy Choose format, lock style, plan assets
↓
5. Render & deliver Produce the final artifact, self-test, send
No repeats
It tracks the last 30 gifts across format, visual style, content direction, concept family, and theme. This is not a soft freshness hint.
If 3 or more of the last 5 gifts fall into the reflect / mirror / hermes-inner-life cluster, it must actively correct toward extension / play / utility / curation / gift-from-elsewhere instead of sending another easy reflective gift.
No filler
If today isn't worth a gift, it won't force one. Skipping is more respectful than sending something hollow.
No leaking internals
All technical details — API status, format selection, internal reasoning — stay hidden. You only see: a gift, plus a line or two.