Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Promote an open-source project across CN & EN channels — reads the repo, generates per-channel tailored copy, auto-submits issue/PR-type channels via gh, assists the rest. Use when the user wants to 宣传/推广/publicize/launch/submit their open-source project, or asks "帮我把这个项目投到阮一峰周刊/HelloGitHub/Show HN".
.claude/skills/ccplugins-promote/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-08 | ✗→✓ | ▲ Improved | -17% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 17% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 25% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 53% | 0% |
| case-17 | ✗→✓ | ▲ Improved | 17% | 0% |
核心原则:一键 ≠ 一键全发。渠道分三级自动化,越权发帖 = spam = 毁项目声誉。
硬性前置闸门,任一不过就停下问用户,不进入后续步骤:
gh repo view <owner>/<repo> 必须成功(仓库公开可达)。本地路径则检查 git remote -v 有 GitHub remote 且已 push——稿件里的每个链接都必须真实可达,绝不写入死链然后读 README 全文、描述、topics、star 数、最近活跃度,提炼:一句话定位(它是什么+替代/优于什么)、目标人群、3 个差异化亮点、演示素材(截图/GIF/demo URL)。
README 薄的判定(缺任一项即问用户补齐,不要编):① 一句话说清它是什么 ② 安装/使用方法 ③ 至少一个具体使用场景或示例。
读 channels/ 下所有渠道文件的 frontmatter,按项目画像过滤:
PROMO-LOG.md(项目根目录):同一渠道 30 天内有任何记录(含 rejected)即跳过,冷却期从最新一条记录的日期起算用 AskUserQuestion 列出推荐渠道(含自动化等级标注)让用户勾选;用户明确说"全投"则投所有合规匹配渠道。
对每个选中渠道,读其 channels/<id>.md 全文,严格按其 format_spec 生成:
docs/assets/)用 raw.githubusercontent.com URL 引用,别用外部图床。渠道规格标注图片必备的(如 ruanyf-weekly),无图不投promo-drafts/<channel-id>.md 落盘;文件首行固定为 Title: <标题>(即使该渠道标题走 gh --title 参数不进 body),复盘时才对得上号按渠道 frontmatter 的 automatable 字段:
gh auth status 确认已登录(未登录 → 让用户 gh auth login,停在这里)→ 展示最终稿 → 用户确认一次 → gh CLI 提交 → 记录返回 URL。失败就报错停,不换渠道兜底。把本次投递写入目标项目根目录 PROMO-LOG.md,固定表格 schema(机器可读,下次运行先读它):
markdown| channel | date | draft | url | status | |---|---|---|---|---| | ruanyf-weekly | 2026-07-02 | promo-drafts/ruanyf-weekly.md | https://github.com/ruanyf/weekly/issues/NNN | submitted |
date 用 ISO(YYYY-MM-DD);status ∈ draft / submitted / published / rejected| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 31,658 | 11,337 | -64% | 1 | 1 | 0% | 4,715 | 1,668 | -65% | 0 | 0 | — |
case-02 | fail→fail | 31,795 | 6,140 | -81% | 1 | 1 | 0% | 4,083 | 1,717 | -58% | 0 | 0 | — |
case-03 | fail→fail | 41,437 | 9,404 | -77% | 1 | 1 | 0% | 4,985 | 1,721 | -65% | 0 | 0 | — |
case-04 | pass→pass | 10,147 | 8,289 | -18% | 1 | 1 | 0% | 1,219 | 2,379 | +95% | 0 | 0 | — |
case-05 | pass→pass | 8,592 | 8,460 | -2% | 1 | 1 | 0% | 1,173 | 2,648 | +126% | 0 | 0 | — |
case-06 | pass→fail | 21,478 | 3,934 | -82% | 1 | 1 | 0% | 1,520 | 1,569 | +3% | 0 | 0 | — |
case-07 | pass→pass | 21,923 | 6,035 | -72% | 1 | 1 | 0% | 1,541 | 2,113 | +37% | 0 | 0 | — |
case-08 | fail→pass | 16,818 | 13,819 | -18% | 1 | 1 | 0% | 2,486 | 2,062 | -17% | 0 | 0 | — |
case-09 | fail→pass | 14,314 | 16,785 | +17% | 1 | 1 | 0% | 1,971 | 2,301 | +17% | 0 | 0 | — |
case-10 | pass→pass | 17,064 | 11,240 | -34% | 1 | 1 | 0% | 2,437 | 2,883 | +18% | 0 | 0 | — |
case-11 | fail→fail | 40,984 | 4,106 | -90% | 1 | 1 | 0% | 1,837 | 1,671 | -9% | 0 | 0 | — |
case-12 | pass→pass | 11,005 | 5,408 | -51% | 1 | 1 | 0% | 1,552 | 1,823 | +17% | 0 | 0 | — |
case-13 | fail→pass | 12,352 | 6,850 | -45% | 1 | 1 | 0% | 1,740 | 2,171 | +25% | 0 | 0 | — |
case-14 | fail→fail | 57,595 | 7,003 | -88% | 1 | 1 | 0% | 2,690 | 2,004 | -26% | 0 | 0 | — |
case-15 | fail→pass | 11,686 | 3,837 | -67% | 1 | 1 | 0% | 1,178 | 1,804 | +53% | 0 | 0 | — |
case-16 | pass→pass | 31,512 | 12,047 | -62% | 1 | 1 | 0% | 1,827 | 3,039 | +66% | 0 | 0 | — |
case-17 | fail→pass | 10,482 | 13,111 | +25% | 1 | 1 | 0% | 1,584 | 1,854 | +17% | 0 | 0 | — |
case-18 | pass→fail | 29,185 | 10,895 | -63% | 1 | 1 | 0% | 2,287 | 2,594 | +13% | 0 | 0 | — |
case-19 | pass→pass | 14,601 | 9,973 | -32% | 1 | 1 | 0% | 1,843 | 2,404 | +30% | 0 | 0 | — |
case-20 | pass→pass | 26,483 | 10,088 | -62% | 1 | 1 | 0% | 2,334 | 2,789 | +19% | 0 | 0 | — |
case-21 | pass→pass | 28,168 | 8,114 | -71% | 1 | 1 | 0% | 1,372 | 2,312 | +69% | 0 | 0 | — |
case-22 | pass→pass | 11,568 | 5,389 | -53% | 1 | 1 | 0% | 671 | 1,765 | +163% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 20 counted toward the lift figure. The other 2 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +14 percentage points is the difference between those two pass rates over the 20 comparable cases. 3 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.