一键导入
marketing-screenshots
Generate curated marketing screenshots for README.md by stubbing watchface data in the emulator
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Generate curated marketing screenshots for README.md by stubbing watchface data in the emulator
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | marketing-screenshots |
| description | Generate curated marketing screenshots for README.md by stubbing watchface data in the emulator |
| disable-model-invocation | false |
Generate the curated marketing screenshots shown in README.md. Read SCREENSHOTS.md for the full stubbing reference, then follow the steps below.
Read the HTML comments in README.md above each <img> tag — they define the exact color, complication layout, weather values, date, and steps for that variant.
default_settings() (main.c)Set s_settings.primary_color and all six complication slots to match the variant:
static void default_settings() {
s_settings.primary_color = GColorPictonBlue; // or GColorBlack, GColorPurpureus
s_settings.mini_comp_left = MINI_COMP_STEPS;
s_settings.mini_comp_middle = MINI_COMP_SUNRISE;
s_settings.mini_comp_right = MINI_COMP_BATTERY;
s_settings.bottom_comp_left = BOTTOM_COMP_HIGHLOW;
s_settings.bottom_comp_primary = BOTTOM_COMP_WEATHER;
s_settings.bottom_comp_right = BOTTOM_COMP_SUNSET;
}
Comment out persist_read_data(...) in load_settings() so stale emulator data does not override the defaults:
static void load_settings() {
default_settings();
// persist_read_data(SETTINGS_KEY, &s_settings, sizeof(s_settings));
}
load_weather() (main.c)Replace the body with hardcoded values and set s_weather.loaded = true:
static void load_weather() {
memset(&s_weather, 0, sizeof(s_weather));
snprintf(s_weather.temp, sizeof(s_weather.temp), "78");
snprintf(s_weather.high, sizeof(s_weather.high), "82");
snprintf(s_weather.low, sizeof(s_weather.low), "65");
snprintf(s_weather.city, sizeof(s_weather.city), "LA");
snprintf(s_weather.sunset, sizeof(s_weather.sunset), "7:32");
snprintf(s_weather.sunrise, sizeof(s_weather.sunrise), "6:15");
s_weather.loaded = true;
}
init() (main.c)Comment out all five app_message_* lines. If you skip this, the JS companion fetches real weather on install and overwrites the stubs:
// app_message_register_inbox_received(inbox_received_callback);
// app_message_register_inbox_dropped(inbox_dropped_callback);
// app_message_register_outbox_failed(outbox_failed_callback);
// app_message_register_outbox_sent(outbox_sent_callback);
// app_message_open(256, 256);
update_time() (main.c)Replace the text_layer_set_text call with a hardcoded string. The emulator clock keeps ticking, so emu-set-time alone is unreliable:
text_layer_set_text(s_time_layer, "10:00");
update_status_buffer() (main.c)Hardcode whichever buffers the active complications need. The emulator cannot change the date and returns 0 for steps:
snprintf(s_date_buffer, sizeof(s_date_buffer), "Sun 5");
snprintf(s_month_buffer, sizeof(s_month_buffer), "Apr");
snprintf(s_year_buffer, sizeof(s_year_buffer), "2026");
int steps = 23000; // instead of (int)health_service_sum_today(HealthMetricStepCount);
pebble clean && pebble build
pebble install --emulator emery
pebble emu-battery --emulator emery --percent 100
pebble emu-bt-connection --emulator emery --connected yes
pebble screenshot --emulator emery
Move the resulting pebble_screenshot_*.png to screenshots/ with the correct name.
Read the saved screenshot and compare it against the existing one. Flag any differences.
Apply the next variant's stubs and repeat from step 1. After capturing all variants, revert main.c with git checkout src/c/main.c.