city-weather-cover/SKILL.md
Generate a natural-geography-style city weather cover image from a city name. Use when the user gives a city and wants a weather poster, weather cover, 天气预报图, 城市封面图, or similar output that must match the city's current local weather and time of day, use Chinese text, and feature a locally resonant landmark, landscape, heritage site, or historically significant figure.
npx skillsauth add run6270/skill city-weather-coverInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Turn one city name into a finished weather cover image with no user back-and-forth in the normal path.
When this skill triggers, do the work end-to-end. Do not stop to ask the user to confirm ordinary choices such as source selection, subject selection, prompt wording, or whether to retry with a simpler generation path.
The user should be able to say only:
给我做一个临汾的天气预报图片做一个南京天气预报封面做一个西安天气海报Then return the final image directly.
scripts/compose_weather_poster.pyIf the normal path works, do not mention the fallback. If the fallback was needed, mention it briefly only after delivering the result.
Always browse for up-to-date facts. Do not guess today's weather, today's wind, or the current local time.
Prefer this source order:
weather.com.cn weather1d pages, then local meteorological or tourism sites if needed.Collect these facts:
Also capture one or two sources that can support the final answer.
Prefer, in order:
Pick automatically. Do not ask the user to choose unless they explicitly request a specific subject.
If using a historical figure:
The background must reflect the verified current period, not a generic daytime postcard.
Translate facts into visible cues:
晴: direct light, clearer air, stronger contrast多云: visible cloud structure, softer direct light阴: diffuse light, flatter shadows, cooler sky小雨 or 雨后: wet ground, puddle reflections, haze or low cloud, softened contrast雾 or 霾: reduced distance clarity, atmospheric depth loss雪: snow cover, cold diffuse light, winter surface cuesTranslate time into visible cues:
If the current local time is after sunset, do not generate a bright daytime scene.
Use scripts/city_weather_cover.py to generate the prompt text.
Use scripts/genimage_task.mjs for live task submission because this API path has been more reliable than direct Python requests.
Direct poster attempt:
python3 scripts/city_weather_cover.py "CITY_NAME" \
--date "2026-04-03" \
--local-time "19:17" \
--weather-summary "多云转晴" \
--temp-range "12℃~16℃" \
--wind "南风 3-4级" \
--subject "牛山国家森林公园" \
--subject-type landmark \
> /tmp/city-cover-prompt.json
node scripts/genimage_task.mjs generate \
--base-url "$GENIMAGE_BASE_URL" \
--prompt "$(jq -r .prompt /tmp/city-cover-prompt.json)" \
--ratio 3:4 \
--resolution 4k \
--wait
If direct poster generation fails or the model produces poor text rendering, immediately switch to background-only mode:
python3 scripts/city_weather_cover.py "CITY_NAME" \
--prompt-mode background \
--date "2026-04-03" \
--local-time "19:17" \
--weather-summary "多云转晴" \
--temp-range "12℃~16℃" \
--wind "南风 3-4级" \
--subject "牛山国家森林公园" \
--subject-type landmark \
> /tmp/city-cover-background.json
node scripts/genimage_task.mjs generate \
--base-url "$GENIMAGE_BASE_URL" \
--prompt "$(jq -r .prompt /tmp/city-cover-background.json)" \
--ratio 3:4 \
--resolution 4k \
--wait
Then compose the final poster locally:
python3 scripts/compose_weather_poster.py \
--background-url "BACKGROUND_IMAGE_URL" \
--download-to "output/city-weather/city-bg.png" \
--output "output/city-weather/city-poster.png" \
--city-name "CITY_NAME" \
--date-text "2026年4月3日" \
--weather-summary "多云转晴" \
--local-time "19:17" \
--temp-range "12℃~16℃" \
--wind "南风 3-4级" \
--caption "CITY_NAME · SUBJECT"
city_weather_cover.py:
--prompt-mode full and --prompt-mode backgroundcompose_weather_poster.py:
genimage_task.mjs supports these inputs for the image API:
GENIMAGE_BASE_URLGENIMAGE_TOKENGENIMAGE_USERNAMEGENIMAGE_PASSWORDGENIMAGE_AUTH_FILEToken lookup order:
--tokenGENIMAGE_TOKENGENIMAGE_AUTH_FILE./.genimage/session.json~/.genimage/session.jsonIf no token is available but username and password are present, the script logs in first and saves the session.
Local composition uses Pillow.
If Pillow is missing, create a workspace-local venv and install it automatically rather than asking first:
python3 -m venv .skill-venv
.skill-venv/bin/pip install Pillow PyYAML
Use that venv for local composition and validation.
Return:
Prefer delivering the finished poster directly. Keep process notes brief.
If the first image uses the wrong lighting or weather mood, retry automatically with a stricter background prompt rather than asking the user what to do next.
references/fact-and-scene-guide.md when choosing anchors or mapping weather/time into imagery.scripts/city_weather_cover.py --help, node scripts/genimage_task.mjs, and python3 scripts/compose_weather_poster.py --help to inspect the automation surface.documentation
Provide a lookup index of dbt models (BigQuery tables) to guide query writing against a data warehouse. Use when you need to query, analyze, or look up data in a dbt-powered data warehouse, or when resolving a vague data question into the right BigQuery tables to query.
development
Evidence-first academic integrity auditing and public-interest science storytelling distilled from the full Bilibili video corpus of 耿同学讲故事 plus public interviews. Use when investigating suspected paper/data/image/academic-identity problems, evaluating biomedical or health-tech claims, drafting official complaint memos, or writing rigorous Chinese public-interest scripts with explicit evidence boundaries.
tools
Create a GitHub pull request following project conventions. Use when the user asks to create a PR, submit changes for review, or open a pull request. Handles commit analysis, branch management, and PR creation using the gh CLI tool.
testing
Assists in writing high-quality content by conducting research, adding citations, improving hooks, iterating on outlines, and providing real-time feedback on each section. Transforms your writing process from solo effort to collaborative partnership.