Agent skill

Release Announcement Poster

by NanmiCoder in NanmiCoder/cc-haha

Turns the latest release notes into a short WeChat group message and a tall PNG poster, with contributor GitHub IDs checked and real avatars embedded.

MITAuto-check passedWriting & Content

SKILL.md written in Chinese; this summary is our English description.

Install Release Announcement Poster

skills CLI
$ npx skills add NanmiCoder/cc-haha --skill release-announcement -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install NanmiCoder/cc-haha release-announcement --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/NanmiCoder/cc-haha.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/release-announcement .claude/skills/release-announcement && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
release-announcement
GitHub stars
15k
Token cost
~516 tokens
SKILL.md length
124 words
Files
7 (incl. scripts, references)
Skills in repo
2
Repo updated
First seen
Licence
MIT

At a glance

Turns the latest release notes into a short WeChat group message and a tall PNG poster, with contributor GitHub IDs checked and real avatars embedded.

  • Works in 6 steps: 在仓库根目录运行 python3… → 仅依据该版本的中文 release note 提炼主要功能和关键修复;纯修复版的… → 对 credit_candidate: true… → …
  • Announcing a new version to a WeChat group with a poster and a short message
  • SKILL.md covers 工作流 and 图像与环境
  • Runs Python scripts from its folder; calls python3

What it does

The SKILL.md is written in Chinese. A bundled Python script scans the workspace, Git history, local main and origin/main for the newest release-notes Markdown without switching branches or fetching anything, and the agent reads the notes, their source and any @GitHubID mentions from the result. It picks the main features and key fixes only from what the notes say, leaves the features or fixes list empty when a release has none, and keeps every claim traceable to the original text.

Contributors with a clear credit in the notes are checked against GitHub's public user API and their real avatars are downloaded; if an ID cannot be verified, the run stops and reports it instead of inventing or redrawing an avatar. A second script step renders the poster from a `poster-spec.json` file into a PNG with accurate Chinese text, with no image-generation model drawing the body. The agent also writes `wechat-copy.txt`: the version number, one sentence on the main change and one sentence of thanks. Nothing is sent to a group automatically, and creating or publishing the GitHub Release is out of scope.

Generated files go under the git-ignored `artifacts/` folder. Scanning needs only the Python standard library, while rendering needs Pillow and a system font that covers Chinese.

When your agent uses it

  • Announcing a new version to a WeChat group with a poster and a short message
  • Crediting release contributors with verified GitHub IDs and real avatars
  • Regenerating the poster for an earlier version of the release notes

Example prompts

  • “Use release-announcement to make the WeChat poster and short message for the latest version.”
  • “Generate the release poster for version 0.6.6 and keep it separate from the newest one.”
  • “Check the contributor IDs in the latest release notes and put their avatars on the poster.”

Requirements

  • Python for the scan and render scripts
  • Pillow and a Chinese-capable system font for rendering
  • Network access to GitHub's public user API for avatars

Workflow steps

6 steps, taken from the first numbered list in SKILL.md.

  1. 在仓库根目录运行 python3 .agents/skills/release-announcement/scripts/release_poster.py scan --repo . --out…
  2. 仅依据该版本的中文 release note 提炼主要功能和关键修复;纯修复版的 features 留空,纯功能版的 fixes 留空,绝不为了填版式虚构内容。有重要模型或供应商更新时可加一个简短区块。每条信息必须能追溯到原文,压缩表述时保留条件和边界。安装提醒只写原文确有的信…
  3. 对 credit_candidate: true 的账号逐个核对发布说明里的贡献项;普通 @ID 提及(例如 PR reviewer)不算代码署名。render 会通过 GitHub 公共用户 API 校验 ID…
  4. 按 数据格式 写 poster-spec.json,版本必须与 scan 结果一致。运行 python3 .agents/skills/release-announcement/scripts/release_poster.py render --scan…
  5. 写一段适合微信群的短文案,保存为同目录的 wechat-copy.txt:版本号 + 1 句主要变化 + 1 句感谢,具体细节交给图片。有本次明确署名的贡献者时感谢代码贡献;没有时只感谢反馈与支持,不暗示本版有特定群友提交。文案不要宣称未核实的下载地址或公开发布状态,也不要自动…
  6. 打开成图检查标题、文字换行、头像和 ID 对应、正文是否从顶部很快开始。最后提供 PNG、短文案、所用 release note 来源和任何未核实项。生成物放在被 Git 忽略的 artifacts/,不要提交生成图、头像缓存或中间 JSON。

What it can do on your machine

Read from SKILL.md and the folder at commit 1c78154. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 3 files in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python3

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Release Announcement Poster loads about 516 tokens when it runs, and up to ~1.4k if it reads all its reference files. Until then it costs about 31 tokens; SKILL.md has 124 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~31
When it runs · the whole SKILL.md, loaded when a task matches
~516
With references · SKILL.md plus every file in references/, read only if the agent opens them
~1.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from NanmiCoder/cc-haha at commit 1c78154, republished under its MIT licence (© NanmiCoder). 124 words, ~516 tokens.

Download SKILL.mdSave it as .claude/skills/release-announcement/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.
name
release-announcement
description
从本项目最新的 release-notes Markdown 制作微信群发布短文案与竖版长图,核验贡献者 GitHub ID 并嵌入真实头像。用于版本发布宣传,不负责创建或发布 GitHub Release。

Release announcement

在本仓库调用 $release-announcement 时,交付一张可发微信群的 PNG 长图和一段很短的群文案。默认使用 版式与文案要求;用户另有要求时以用户要求为准。

调用方式:Codex 使用 $release-announcement;Claude Code Haha 的终端输入 /release-announcement。这两个工具都从项目的 .agents/skills/ 读取同一份技能。

工作流

  1. 在仓库根目录运行 python3 .agents/skills/release-announcement/scripts/release_poster.py scan --repo . --out artifacts/release-posters/latest-scan.json。它按语义版本比较工作区、当前 Git 历史、本地 main 和已有的 origin/main,不切换分支、不抓取远程。读取 JSON 中的中文发布说明、来源和 @GitHubID 提及;credit_candidate 仅表示有明确署名格式,仍需核对上下文。如果来源不是工作区文件,明确告知用户。 复测旧版本时加 --version 0.6.6 并使用独立输出路径,避免覆盖最新版本的 scan 结果。
  2. 仅依据该版本的中文 release note 提炼主要功能和关键修复;纯修复版的 features 留空,纯功能版的 fixes 留空,绝不为了填版式虚构内容。有重要模型或供应商更新时可加一个简短区块。每条信息必须能追溯到原文,压缩表述时保留条件和边界。安装提醒只写原文确有的信息。不要把英文译文重复计数。
  3. 对 credit_candidate: true 的账号逐个核对发布说明里的贡献项;普通 @ID 提及(例如 PR reviewer)不算代码署名。render 会通过 GitHub 公共用户 API 校验 ID 并下载真实头像;无法核验时停止并报告,不能臆造头像、错配姓名,不能让图像生成模型重绘头像。正式生成不能使用 avatar_path 跳过核验。
  4. 按 数据格式 写 poster-spec.json,版本必须与 scan 结果一致。运行 python3 .agents/skills/release-announcement/scripts/release_poster.py render --scan artifacts/release-posters/latest-scan.json --spec <poster-spec.json> --out <poster.png>。建议输出到 artifacts/release-posters/v<version>/,保留已有文件,文件名加版本或修订号。此脚本固定使用紧凑版式绘制准确中文和头像;不要用 imagegen 绘制正文。
  5. 写一段适合微信群的短文案,保存为同目录的 wechat-copy.txt:版本号 + 1 句主要变化 + 1 句感谢,具体细节交给图片。有本次明确署名的贡献者时感谢代码贡献;没有时只感谢反馈与支持,不暗示本版有特定群友提交。文案不要宣称未核实的下载地址或公开发布状态,也不要自动向群发送。若需要下载入口,先检查对应 GitHub Release 是否存在。
  6. 打开成图检查标题、文字换行、头像和 ID 对应、正文是否从顶部很快开始。最后提供 PNG、短文案、所用 release note 来源和任何未核实项。生成物放在被 Git 忽略的 artifacts/,不要提交生成图、头像缓存或中间 JSON。

图像与环境

默认长图不需要生成式插画:顶部仅有约 230px 的版本标题,直接进入实际有内容的功能或修复区。这样版式与中文文字最稳定。用户明确想增加插画时,可用 imagegen 只生成无字装饰素材,再用脚本绘制全部文字与真实头像;不能让装饰占去首屏。

scan 只用 Python 标准库;render 需要 Pillow 和可用的中文系统字体。缺依赖时先查看项目已有运行环境,不为一次制图修改生产依赖。GitHub 头像获取是公开只读请求;失败时给出具体账号和原因。

© NanmiCoder, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 6 other files (scripts, references) in .agents/skills/release-announcement of NanmiCoder/cc-haha.

  • SKILL.md
  • agents/openai.yaml
  • references/editorial-brief.md
  • references/poster-spec.md
  • scripts/.gitignore
  • scripts/release_poster.py
  • scripts/test_release_poster.py

Open the folder on GitHubat commit 1c78154

Compare with similar skills

Release Announcement Poster next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Release Announcement Poster compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Release Announcement Poster this skillNanmiCoder/cc-haha15k—~516Automated safety check: PassMIT
pybind11 Release Publicationpybind/pybind1118k—~2.5kAutomated safety check: PassCustom licence
EverOS Release WorkflowEverMind-AI/EverOS13k—~1.3kAutomated safety check: PassApache-2.0
Pre ReleaseZhuoZhuoCrayon/throttled-py651—~1.1kAutomated safety check: PassMIT
Rocketpy ReleaseRocketPy-Team/RocketPy1.1k—~1.3kAutomated safety check: PassMIT
Releasezmievsa/cadwyn309—~522Automated safety check: PassMIT

Similar skills

  • Walks a maintainer through publishing a pybind11 release after the preparation PR merges, with preflight checks, confirmations before each push and a GitHub release.

    18k GitHub stars~2.5k tokensUpdated today
    DevelopmentAuto-check passed
  • EverOS Release Workflow

    EverMind-AI/EverOS

    Walks through cutting a versioned everos release: bump the version, update the changelog, tag it, and review the drafted GitHub Release page before publishing.

    13k GitHub stars~1.3k tokensUpdated today
    DevelopmentAuto-check passed
  • Pre Release

    ZhuoZhuoCrayon/throttled-py

    Automates release preparation for throttled-py. An agent skill from ZhuoZhuoCrayon/throttled-py.

    651 GitHub stars~1.1k tokensUpdated 1 mo ago
    DevelopmentAuto-check passed
  • Rocketpy Release

    RocketPy-Team/RocketPy

    Cut a new RocketPy release: prepare the version-bump branch, update the changelog and all version references, and guide the PR-to-master + PyPI flow.

    1.1k GitHub stars~1.3k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Release

    zmievsa/cadwyn

    Prepare and publish Cadwyn releases. An agent skill from zmievsa/cadwyn.

    309 GitHub stars~522 tokensUpdated today
    DevelopmentAuto-check passed
  • Skills Constitution

    jiabaobei/skills-constitution

    当 Agent 接到专业任务(编码/爬虫/文件操作/API调用/数据分析/文档/部署/推送等)时,强制先查记忆层和技能索引,有匹配必用、无匹配必搜、答复时自动推荐(排除已装)。用于防止 Agent 跳过技能直接硬扛通用能力。跨平台通用(WorkBuddy/Claude/ChatGPT/Cursor/Gemini 等 20+ 框架)。完整版本史见 CHANGELOG.md。

    231 GitHub stars~5.6k tokensUpdated 4 days ago
    DevelopmentAuto-check passed

More from NanmiCoder/cc-haha

  • Image Generation Tools

    NanmiCoder/cc-haha

    Generates new images and edits existing ones through the desktop's built-in ImageGen and ImageEdit tools, with rules for choosing between them and writing the art-direction prompt.

    15k GitHub stars~991 tokensUpdated yesterday
    Auto-check passed

Questions about Release Announcement Poster

What does Release Announcement Poster do?

Turns the latest release notes into a short WeChat group message and a tall PNG poster, with contributor GitHub IDs checked and real avatars embedded. md is written in Chinese. A bundled Python script scans the workspace, Git history, local main and origin/main for the newest release-notes Markdown without switching branches or fetching anything, and the agent reads the notes, their source and any @GitHubID mentions from the result.

When should I use Release Announcement Poster?

Release Announcement Poster fits situations like: announcing a new version to a WeChat group with a poster and a short message; crediting release contributors with verified GitHub IDs and real avatars; regenerating the poster for an earlier version of the release notes.

How do I install Release Announcement Poster in Claude Code?

Run `npx skills add NanmiCoder/cc-haha --skill release-announcement -a claude-code`. Or copy the skill folder (.agents/skills/release-announcement in NanmiCoder/cc-haha) into .claude/skills/release-announcement in your project. Claude Code loads it when a task matches its description.

How do I install Release Announcement Poster in Codex?

Run `npx skills add NanmiCoder/cc-haha --skill release-announcement -a codex`. Or copy the skill folder (.agents/skills/release-announcement in NanmiCoder/cc-haha) into .agents/skills/release-announcement in your project. Codex loads it when a task matches its description.

Can I use Release Announcement Poster in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add NanmiCoder/cc-haha --skill release-announcement -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/release-announcement, .gemini/skills/release-announcement, .github/skills/release-announcement and .opencode/skills/release-announcement in your project.

What does Release Announcement Poster need to run?

Going by SKILL.md and its folder, Release Announcement Poster needs Python for the scripts in its folder and the command-line tools its instructions call (python3). Our summary lists: Python for the scan and render scripts; Pillow and a Chinese-capable system font for rendering; Network access to GitHub's public user API for avatars.

Does Release Announcement Poster access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Release Announcement Poster safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Release Announcement Poster use?

Release Announcement Poster is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Release Announcement Poster use?

About 516 tokens (SKILL.md is roughly 2.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 876 tokens, read only when the agent opens those files.

What are the alternatives to Release Announcement Poster?

Skills that share tags, products or a category with Release Announcement Poster: pybind11 Release Publication (pybind/pybind11, 18k stars), EverOS Release Workflow (EverMind-AI/EverOS, 13k stars), Pre Release (ZhuoZhuoCrayon/throttled-py, 651 stars) and Rocketpy Release (RocketPy-Team/RocketPy, 1.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Release Announcement Poster?

NanmiCoder (a GitHub user) maintains it in NanmiCoder/cc-haha, which has 14,886 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 5, 2026.

Source: NanmiCoder/cc-haha on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.