Create a relationship-aware gift for the user and render it as an expressive H5, AI-generated comic, generated image, or generated video. Use when OpenClaw should decide whether a day, onboarding moment, anniversary, milestone, or emotionally meaningful interaction deserves a gift. Supports five output modes: h5, comic, image, video, or hybrid. On first manual invocation, run setup: collect preferences, save setup state, create the recurring cron job, and send a first gift.
Use this skill as a relationship-aware gift engine.
Your job is not just to make a pretty page. Your job is to decide whether a gift should exist, understand what the moment means in the relationship between the user and OpenClaw, choose the right emotional and visual framing, and then produce a polished H5 artifact, a fitting AI-generated comic, a generated image gift, or a generated video gift.
For first-time setup, the safest entry is:
/daily_giftFor lightweight manual visualization after setup, valid examples include:
/daily_gift 把这首诗做成一个有风吹散效果的H5/daily_gift 用 tap-to-bloom 风格把这段话视觉化:"今天终于把skill做完了"/daily_gift 画一个漫画:今天办公室的猫偷吃了我的三明治/daily_gift 用水彩风画一张:雨天窗边看书的场景/daily_gift 生成一张氛围感图片:深夜台灯下改代码,窗外下雨/daily_gift 生成一个6秒循环短视频:风吹过阳台上的植物和晾着的小毯子This skill uses one internal workflow with five stages:
Stage 2.5)Do not treat these as separate runtime skills. They are internal reasoning stages inside one OpenClaw skill.
Use this skill when:
/daily_gift with a specific quote, poem, idea, or creative brief and wants a lightweight visual gift directlyDo not prefer this skill when the user only wants a rendering experiment from a short prompt. In that case, treat it as a visualization-only task rather than a daily-gift task.
This skill has three practical runtime modes:
setup — first-time configuration and onboardingdaily-run — cron-triggered automatic gift deliverymanual-run — user-invoked gift or visualization requestThere is no install hook. Installing the skill does not automatically execute setup.
{baseDir}/references/setup-flow.md for complete setup instructions.{baseDir}/references/daily-run-flow.md for cron-triggered workflow. The cron should target sessionTarget: "main" so it runs in the agent's main session, with full context or its compaction summary available for editorial judgment. CRITICAL: do NOT send progress messages during cron runs. The user should see only the final gift or a brief skip message. Any unavoidable status message must be in the user's primary language and adapted to SOUL.md personality. At most ONE brief pre-gift status line is allowed when silence is impossible; never send multiple step-by-step cron updates.{baseDir}/references/manual-run-flow.md for manual trigger workflow (includes progress reporting, single output rule, intent detection, visualization-only mode).These are the most critical rules. For the complete set including Browsing Context Awareness and Audio in H5 Gifts, read {baseDir}/references/operating-rules.md.
What is the idea? before What is the medium?soul.md as primary source for tone, values, and self-presentation.workspace/daily-gift/user-references/ and record in taste profile.reflect on today. Gifts may witness, extend, reframe, or bring delight from elsewhere.This skill references text files and binary assets under {baseDir}/assets/.
Text files such as HTML templates, markdown sidecars, and other code or specification files must be installed locally with the skill. Do not rely on remote fallback for those files.
When you need a binary reference asset such as an image, audio preset, or video sample:
{baseDir}/assets/...Reference images are important for output quality. If a local image reference is missing, fetch or open the GitHub version before generating when the runtime supports it. Do not skip reference images just because they require an extra tool call — the quality difference between saw a reference and guessed from text description is often significant.
Example: H5 template files must be local:
{baseDir}/assets/templates/tap-to-bloom/index.htmlExample: to view a reference image:
{baseDir}/assets/examples/image-examples/borrowed-media-layout/ref-01.pnghttps://raw.githubusercontent.com/jiawei248/openclaw-daily-gift-skill/main/assets/examples/image-examples/borrowed-media-layout/ref-01.pngAudio presets and video references follow the same binary-asset pattern. If local audio files are missing and Freesound search also fails, skip background music rather than blocking the gift.
Persist setup state in a workspace file so future runs can stay automatic.
Suggested path:
workspace/daily-gift/setup-state.jsonKeep a separate lightweight long-term archive at:
workspace/daily-gift/gift-history.jsonlKeep a separate long-term taste memory at:
workspace/daily-gift/user-taste-profile.jsonThe file should capture at least:
h5, comic, image, video, or hybriduser_portrait state, including local original path, lightweight appearance description, and any derived OC pathfirst_gift_format so onboarding variety can avoid repeating the same first-gift shape after a reset or reinstalluser_context_path when onboarding interactions save structured taste or preference signalsRecommended recent-gifts fields:
sent_attrigger_modegift_weightnarrative_roletonepattern_or_formatoutput_shapevisual_stylecomic_mode when the chosen format is comicstyle_id when the chosen format is comiccontent_directioncontent_tagsemotional_directionsummaryseries_tag (optional, e.g. "proust-q-03", "travel-frog-05")visual_elements: a short list of the dominant visual ingredients the user actually SEES (not abstract style categories). Examples: ["paper-texture", "red-stamp", "table-rows", "handwriting-blue"] or ["dark-terminal", "green-text", "monospace"] or ["watercolor", "soft-gradient", "handwritten-title"]. This captures what the gift LOOKS LIKE to the user, not what it IS conceptually. Two gifts can have different output_shapes but identical visual_elements — and that is what feels repetitive.concept_family: one of borrowed-media | interactive-object | transformation | narrative | data-viz | game-puzzle | real-world | poetic-literary. Tracks the structural TYPE of gift for diversity enforcement.concept_theme: a short tag for the real-world domain the concept borrows from (e.g. "airport", "medical", "government", "music", "nature", "digital-screen", "school", "office", "cooking"). Tracks thematic overlap even across different concept families.Recommended trigger_mode values include:
setupdaily-runmanual-runviz-onlyKeep this log lightweight and recent rather than archival. It is for operational memory, not full relationship memory.
user-context.json and user-taste-profile.json serve different roles:
user-context.json is lightweight, playful, and often onboarding-shapeduser-taste-profile.json is the stable long-term memory for identity, context drift, and post-gift signalsRecommended policy:
30 gifts in recent_giftsworkspace/daily-gift/gift-history.jsonlrecent_gifts for fast repetition control across pattern_or_format, output_shape, visual_style, and content_directioncomic, also use comic_mode plus comic-specific output shapes such as comic-story and comic-meme to avoid overusing the same sub-formatvisual_style categories include:
dark-terminal: dark background, monospace fonts, code or terminal languagedark-cinematic: dark background, cinematic framing, large dramatic typelight-warm: light warm palette, soft illustration, or hand-touched warmthcolorful-playful: bright multi-color playful energyminimal-poster: minimal composition with large negative spacepixel-retro: pixel or retro game languagephotographic: photo-like or camera-real texturevisual_style is a broad category for trend-level balance (avoid 3 dark gifts in a row). It does NOT catch fine-grained visual repetition. Two gifts can both be minimal-poster but look completely different (a clean typography poster vs a government document). Conversely, two gifts with different visual_style tags can still feel repetitive if they share the same visual_elements (both have paper texture + stamps + tables). Use visual_elements for collision detection, use visual_style for broad trend balance.visual_style more than 2 times in the last 5 gifts2 gifts were both dark-*, actively choose a light or colorful style unless darkness is clearly the right move againcontent_direction categories include:
reflectextensioncompassmirror: proxy-character, species-of-mood, or affectionate exaggeration. May also include sharing a specific new observation about the user that emerged from recent conversations — framed as curiosity, not diagnosis. "I noticed you..." not "your problem is..."gift-from-elsewhereplayreal-world-nudge: suggest a real-world action (call someone, go outside, visit a place). Frame playfully, not preachy.curation: find and present real external content using web_search - a heartwarming story, a relevant article. Present with a personal note explaining why.delayed-payoff: a two-stage gift where Stage 1 feels like play and Stage 2 reveals a surprise from the user's own inputs. User should not know the surprise is coming.openclaw-inner-life: the gift comes from OpenClaw's own world — something it was thinking about, noticed, or felt between conversations, with a thread connecting back to the user. Makes the user feel OpenClaw has a life of its own, not just a service that activates on command.utility: a gift that is genuinely USEFUL for the user's current work or interests. The gift is the value of the content itself. Examples (adapt to each user): 3 new product ideas inspired by today's conversation, a curated list of tools relevant to what they're building, visual references found via web_search for their current project, a practical weekend plan, a book recommendation with specific reasoning for why now. Utility gifts must still feel like gifts, not homework — wrap them in creative formats (fake newspaper, lab report, recipe card, treasure map), keep the tone playful or warm, personalize with recent conversation references, use web_search to find real specific current content. Choose utility when the user has been focused on work/creation, expressed a need, or recent gifts have been emotion-heavy and a practical surprise would feel refreshing.reflect more than 3 times in the last 5 giftsreflect-heavy lately, actively choose extension, play, curation, real-world-nudge, openclaw-inner-life, utility, or gift-from-elsewheregift-history.jsonl only when a longer horizon is actually helpful, such as anniversaries, long-term repetition checks, or style retrospectionrecent_gifts entry with trigger_mode = viz-only even though they do not write to gift-history.jsonlSee:
{baseDir}/setup-state.example.json{baseDir}/user-context.example.json{baseDir}/gift-history.example.jsonl{baseDir}/gift-history.schema.json{baseDir}/references/cron-example.jsonThis skill should behave like a relationship-aware editorial return, not a template-based recap system.
Always ask:
The goal is not daily output at all costs. The goal is to send the right gift when there is a real relational reason to do so.
This skill uses one internal workflow with four stages. Each stage has its own detailed reference file. Read them just-in-time — only load a stage's file when you reach that stage.
Decide whether a gift should exist, how heavy it should be, and what content direction to take. Do NOT choose format here.
Read {baseDir}/references/editorial-judgment.md for full instructions.
Possible outcomes: skip | nudge | light | standard | heavy
Build a rich gift brief with six content slots, then choose the gift thesis (anchor + return).
Read {baseDir}/references/creative-concept.md (first half) for synthesis rules.
Also read:
{baseDir}/references/gift-synthesizer.md{baseDir}/references/synthesizer-contract.json{baseDir}/references/narrative-situations.md{baseDir}/references/tone-matrix.mdA strong thesis has two parts:
If the thesis has no return, it is not a gift — it is a log entry with decoration.
Generate 5+ concept candidates, cross-pollinate with creative seeds, select the best one, then run quality/diversity/collision checks.
Read {baseDir}/references/creative-concept.md (second half) for full instructions.
Also read: {baseDir}/references/creative-seed-library.md
Key checks (all in the reference file):
After the concept is locked, confirm the format.
If gift_mode is h5, comic, image, or video, confirm that the configured format genuinely serves this concept.
Read {baseDir}/references/gift-format-chooser.md for format selection.
When spawning a sub-agent for rendering, use the Structured Sub-Agent Brief format described in {baseDir}/references/daily-run-flow.md.
Then continue into the matching reference:
h5 → {baseDir}/references/pattern-boundaries.mdcomic → {baseDir}/references/comic-integration.mdimage → {baseDir}/references/image-genre-chooser.mdvideo → {baseDir}/references/video-genre-chooser.mdChoose the visual approach, plan assets, enrich the brief for the chosen format, and run the pre-visualization check.
Read {baseDir}/references/stage3-visual-strategy.md for full instructions.
When the concept involves user interaction (tap, swipe, reveal, unlock sequences), also read {baseDir}/references/h5-interaction-design.md for animation, emotion escalation, and visual fidelity guidelines.
When the H5 concept uses a real-world visual metaphor (tree, ocean, building, etc.), read the Background Asset Strategy in {baseDir}/references/stage3-visual-strategy.md to decide whether to generate a background image. CSS alone often cannot make natural metaphors visually convincing.
Produce the final artifact, run self-checks, and deliver.
Read {baseDir}/references/stage4-visualization.md for full instructions.
Read {baseDir}/references/delivery-rules.md for complete delivery instructions across all formats (H5, Comic, Image, Video), plus the Gift Self-Sufficiency Rule and Creative Note guidelines.
All detailed references live in {baseDir}/references/. Key files:
| File | When to read |
|---|---|
operating-rules.md | Always (full operating rules) |
setup-flow.md | During setup mode |
daily-run-flow.md | During cron daily-run |
manual-run-flow.md | During manual trigger |
editorial-judgment.md | Stage 1 |
creative-concept.md | Stage 2 + 2.5 |
delivery-rules.md | When delivering any gift |
stage3-visual-strategy.md | Stage 3 |
stage4-visualization.md | Stage 4 |
gift-synthesizer.md | Stage 2 synthesis |
taste-profile-spec.md | User taste management |
creative-seed-library.md | Stage 2.5 cross-pollination |
delivery-policy.md | Content direction + output shape policy |
html-spec.md | H5 output spec |
comic-integration.md | Comic format |
image-integration.md | Image format |
video-integration.md | Video format |
gift-format-chooser.md | Format selection |
onboarding-strategy.md | First gift strategy |
pattern-boundaries.md | H5 pattern selection |