pybind11 Release Publication
pybind/pybind11
Walks a maintainer through publishing a pybind11 release after the preparation PR merges, with preflight checks, confirmations before each push and a GitHub release.
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.
SKILL.md written in Chinese; this summary is our English description.
$ npx skills add NanmiCoder/cc-haha --skill release-announcement -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install NanmiCoder/cc-haha release-announcement --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "release-announcement" agent skill from https://github.com/NanmiCoder/cc-haha/tree/main/.agents/skills/release-announcement into .claude/skills/release-announcement/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release-announcement", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/NanmiCoder/cc-haha/tree/main/.agents/skills/release-announcementType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add NanmiCoder/cc-haha --skill release-announcement -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install NanmiCoder/cc-haha release-announcement --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/NanmiCoder/cc-haha.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/release-announcement .agents/skills/release-announcement && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "release-announcement" agent skill from https://github.com/NanmiCoder/cc-haha/tree/main/.agents/skills/release-announcement into .agents/skills/release-announcement/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release-announcement", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add NanmiCoder/cc-haha --skill release-announcement -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install NanmiCoder/cc-haha release-announcement --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/NanmiCoder/cc-haha.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/release-announcement .cursor/skills/release-announcement && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "release-announcement" agent skill from https://github.com/NanmiCoder/cc-haha/tree/main/.agents/skills/release-announcement into .cursor/skills/release-announcement/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release-announcement", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/NanmiCoder/cc-haha.git --path .agents/skills/release-announcement--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add NanmiCoder/cc-haha --skill release-announcement -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install NanmiCoder/cc-haha release-announcement --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/NanmiCoder/cc-haha.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/release-announcement .gemini/skills/release-announcement && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "release-announcement" agent skill from https://github.com/NanmiCoder/cc-haha/tree/main/.agents/skills/release-announcement into .gemini/skills/release-announcement/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release-announcement", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install NanmiCoder/cc-haha release-announcementInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add NanmiCoder/cc-haha --skill release-announcement -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/NanmiCoder/cc-haha.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/release-announcement .github/skills/release-announcement && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "release-announcement" agent skill from https://github.com/NanmiCoder/cc-haha/tree/main/.agents/skills/release-announcement into .github/skills/release-announcement/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release-announcement", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add NanmiCoder/cc-haha --skill release-announcement -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install NanmiCoder/cc-haha release-announcement --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/NanmiCoder/cc-haha.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/release-announcement .opencode/skills/release-announcement && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "release-announcement" agent skill from https://github.com/NanmiCoder/cc-haha/tree/main/.agents/skills/release-announcement into .opencode/skills/release-announcement/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release-announcement", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
release-announcementTurns the latest release notes into a short WeChat group message and a tall PNG poster, with contributor GitHub IDs checked and real avatars embedded.
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.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 1c78154. It shows what the files ask for, not the result of running them.
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.
Ships 3 files in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
python3From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from NanmiCoder/cc-haha at commit 1c78154, republished under its MIT licence (© NanmiCoder). 124 words, ~516 tokens.
.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.在本仓库调用 $release-announcement 时,交付一张可发微信群的 PNG 长图和一段很短的群文案。默认使用 版式与文案要求;用户另有要求时以用户要求为准。
调用方式:Codex 使用 $release-announcement;Claude Code Haha 的终端输入 /release-announcement。这两个工具都从项目的 .agents/skills/ 读取同一份技能。
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 结果。features 留空,纯功能版的 fixes 留空,绝不为了填版式虚构内容。有重要模型或供应商更新时可加一个简短区块。每条信息必须能追溯到原文,压缩表述时保留条件和边界。安装提醒只写原文确有的信息。不要把英文译文重复计数。credit_candidate: true 的账号逐个核对发布说明里的贡献项;普通 @ID 提及(例如 PR reviewer)不算代码署名。render 会通过 GitHub 公共用户 API 校验 ID 并下载真实头像;无法核验时停止并报告,不能臆造头像、错配姓名,不能让图像生成模型重绘头像。正式生成不能使用 avatar_path 跳过核验。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 绘制正文。wechat-copy.txt:版本号 + 1 句主要变化 + 1 句感谢,具体细节交给图片。有本次明确署名的贡献者时感谢代码贡献;没有时只感谢反馈与支持,不暗示本版有特定群友提交。文案不要宣称未核实的下载地址或公开发布状态,也不要自动向群发送。若需要下载入口,先检查对应 GitHub Release 是否存在。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
SKILL.md and 6 other files (scripts, references) in .agents/skills/release-announcement of NanmiCoder/cc-haha.
Open the folder on GitHubat commit 1c78154
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Release Announcement Poster this skillNanmiCoder/cc-haha | 15k | — | ~516 | Automated safety check: Pass | MIT | |
| pybind11 Release Publicationpybind/pybind11 | 18k | — | ~2.5k | Automated safety check: Pass | Custom licence | |
| EverOS Release WorkflowEverMind-AI/EverOS | 13k | — | ~1.3k | Automated safety check: Pass | Apache-2.0 | |
| Pre ReleaseZhuoZhuoCrayon/throttled-py | 651 | — | ~1.1k | Automated safety check: Pass | MIT | |
| Rocketpy ReleaseRocketPy-Team/RocketPy | 1.1k | — | ~1.3k | Automated safety check: Pass | MIT | |
| Releasezmievsa/cadwyn | 309 | — | ~522 | Automated safety check: Pass | MIT |
pybind/pybind11
Walks a maintainer through publishing a pybind11 release after the preparation PR merges, with preflight checks, confirmations before each push and a GitHub release.
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.
ZhuoZhuoCrayon/throttled-py
Automates release preparation for throttled-py. An agent skill from ZhuoZhuoCrayon/throttled-py.
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.
zmievsa/cadwyn
Prepare and publish Cadwyn releases. An agent skill from zmievsa/cadwyn.
jiabaobei/skills-constitution
当 Agent 接到专业任务(编码/爬虫/文件操作/API调用/数据分析/文档/部署/推送等)时,强制先查记忆层和技能索引,有匹配必用、无匹配必搜、答复时自动推荐(排除已装)。用于防止 Agent 跳过技能直接硬扛通用能力。跨平台通用(WorkBuddy/Claude/ChatGPT/Cursor/Gemini 等 20+ 框架)。完整版本史见 CHANGELOG.md。
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.
Categories
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.