Maintain XerahS daily development blog drafts under docs/blog using the YYYY/YYYY-MM/blog-YYYYMMDD.md layout. Use when asked to create, update, or consolidate the current UTC+8 blog post from new feature work, bug fixes, build/tooling changes, or recent git history.
Treat the daily blog as a single consolidated record across these three repositories:
https://github.com/ShareX/XerahS.githttps://github.com/ShareX/ShareX.ImageEditor.githttps://github.com/McoreD/XerahS.Editor.gitThe XerahS repo is the publishing destination for all blog files and docs commits.
You must base every blog entry only on real git history. Do not guess, infer unsupported changes, or fabricate technical details.
git log --date=iso-strict or pre-dumped TSV logs when available.Create blog posts in the XerahS repo under:
docs/blog/YYYY/YYYY-MM/blog-YYYYMMDD.md
Rules:
Resolve the target UTC+8 date.
docs/blog/YYYY/YYYY-MM/blog-YYYYMMDD.md.Ensure the daily draft exists with the helper script:
powershell -NoProfile -ExecutionPolicy Bypass -File .ai/skills/draft-blog-post/scripts/upsert-blog-draft.ps1
Use an explicit date when needed:
powershell -NoProfile -ExecutionPolicy Bypass -File .ai/skills/draft-blog-post/scripts/upsert-blog-draft.ps1 -Date 2026-03-13
Append a verified bullet to an existing section without creating a second post for the same day:
powershell -NoProfile -ExecutionPolicy Bypass -File .ai/skills/draft-blog-post/scripts/upsert-blog-draft.ps1 -Date 2026-03-13 -Section Fixes -Bullet "Refreshed ShareX.VideoEditor npm bootstrap after the latest submodule update."
Gather context before drafting.
git log --date=iso-strict --since=<day-start-UTC> --until=<day-end-UTC>).git log --oneline -n 20; open specific commits with git show --stat <commit>.git diff -- <paths> or git -C <submodule> diff -- <paths>.Consolidate the day into one markdown post.
Populate all required sections (see Content requirements below). Keep the post in draft form unless the user asks for a polished publication pass.
Before finishing, remove untouched placeholders if the draft is meant to be reviewed by humans.
Every processed day must include all of these sections:
## Summary## Features## Fixes## Build and Tooling## Commits Reviewed## Notes## Commits Reviewed.XerahS: ..., ShareX.ImageEditor: ..., XerahS.Editor: ....TBD placeholders with real content once a day is processed.For each day with blog content, create exactly one git commit in the XerahS repo that stages only that day's blog-YYYYMMDD.md file.
Commit message format:
[vX.Y.Z] [Docs] Add YYYY-MM-DD <short description> blog draft.
Rules:
blog-YYYYMMDD.md file and exactly one corresponding docs commit in the XerahS repo.When possible, use multiple subagents in parallel to speed up the work.
A day is only considered complete when:
Cursor Automations can run this full skill on a daily schedule (cloud agent with cron or preset). See SCHEDULING.md for setup at cursor.com/automations.
To only ensure today's draft file exists (no content or commit), use the daily wrapper:
.ai/skills/draft-blog-post/scripts/run-daily-draft.ps1
Use -IncludePreviousDay when you want to cover both the current UTC+8 day and the previous UTC+8 day, for example in a scheduled workflow that runs at 16:00 UTC.
That script switches to the repo root and runs the upsert for the current UTC+8 day, and optionally the previous UTC+8 day. For content population and commit-grounded blog prose, run this skill in Cursor or use Cursor Automations.
Script path:
.ai/skills/draft-blog-post/scripts/upsert-blog-draft.ps1
Behavior:
docs/blog/YYYY/YYYY-MM/ if it does not exist.blog-YYYYMMDD.md with the standard daily draft template if it does not exist.-Section and -Bullet are provided, appends a deduplicated bullet to that section and removes the section placeholder.Supported append sections:
FeaturesFixesBuild and ToolingCommits ReviewedNotes