Skip to main content

add-hap

当用户要求向本仓库收录新的鸿蒙 HAP 应用、添加 Hap、收录应用或添加新项目到 README 表格时使用本技能;项目链接可以由用户直接提供,也可以从 GitHub issue 中获取。

Source facts

Repository
Zitann/HarmonyOS-Haps
Last source activity
October 14, 2026 at 05:23
Detected SKILL.md language
Chinese
Stars
3,504
Forks
109

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
8 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
add-hap
description
当用户要求向本仓库收录新的鸿蒙 HAP 应用、添加 Hap、收录应用或添加新项目到 README 表格时使用本技能;项目链接可以由用户直接提供,也可以从 GitHub issue 中获取。
# 添加新 Hap 到合集 当用户提供一个新的鸿蒙 HAP 项目链接(或从 issue 中获取到待收录仓库链接)时,按以下步骤将其收录进 `README.md`。 ## 第 1 步:查看 issue 在项目根目录用终端运行以下命令拉取本仓库的 issue 列表(需先设置 `GITHUB_TOKEN` 环境变量): ```sh uv run .agents/skills/add-hap/scripts/fetch_issues.py ``` 脚本会输出 **106 号之后**(即从 107 号开始)的 open issue 及其正文摘要,从中看是否有人提供了 GitHub 软件仓库链接。 - 如果找到此类 issue,取其中提供的仓库链接作为待收录项目,进入下一步。 - 如果用户已直接提供项目链接,可跳过本步的查找过程,直接使用用户提供的链接。 ## 第 2 步:收集项目信息 访问上一步确定的项目链接(用 `fetch` 工具抓取 GitHub 仓库页面和 README),收集: - **项目名**:有中文名就用中文名(通常在 README 中,或者在https://raw.githubusercontent.com/<owner>/<repo>/<branch>/AppScope/resources/base/element/string.json中),没有就用仓库英文名。 - **项目简介**:根据 README 用中文写**一句话**简短描述软件功能(不超过 25 字左右,与apps.yaml中现有条目风格一致)。 ## 第 3 步:判断目标分类表格 按优先级依次检查项目的 `module.json5` 中的 `deviceTypes`: 1. 抓取 `entry/src/main/module.json5`(GitHub raw 链接形如:`https://raw.githubusercontent.com/<owner>/<repo>/<branch>/entry/src/main/module.json5`,分支通常是 `main` 或 `master`)。 2. 如果是 Flutter 跨端项目,鸿蒙代码在 `ohos` 子目录,改抓 `ohos/entry/src/main/module.json5`。 3. 分类规则: - `deviceTypes` 同时包含 `phone`、`tablet` 和 `2in1` → **一次开发,多端部署** - 包含 `phone`、`tablet` 但**没有** `2in1` → **鸿蒙手机/平板** - 只有 `2in1` → **鸿蒙电脑** - 抓不到 module.json5 时,根据 README 判断;仍无法判断时,默认放入 **一次开发,多端部署** ## 第 4 步:获取最新 release 日期 访问项目的 releases 页面(`https://github.com/<owner>/<repo>/releases`),获取最新一次 release 的发布日期,格式化为 `MM-DD`(如 `07-31`)。如果最新 release 是去年发布的,使用 `YYYY-MM-DD` 格式。 ## 第 5 步:写入 apps.yaml 数据源并生成 README 在项目根目录的 `apps.yaml` 中对应该项目的分类列表下追加一条记录(缩进 4 空格加 `- name:`,后续字段缩进 6 空格),格式为: ```yaml - name: 项目名 url: https://github.com/<owner>/<repo> link: https://github.com/<owner>/<repo>/releases desc: 一句话描述。 time: MM-DD ``` 字段说明: - `link` 通常等于 `url` + `/releases`;如果项目没有 release(如用 Telegram 群组分发),`link` 填实际下载地址。 - `time` 用第 4 步获取的日期:今年发布用 `MM-DD`,去年及更早发布用 `YYYY-MM-DD`。 - 下载链接若以 `/releases/` 结尾需去掉末尾斜杠。 然后在项目根目录用终端运行以下命令生成 README(生成器会自动按日期倒序排序,无需手动插行): ```sh uv run .agents/skills/add-hap/scripts/generate_readme.py ``` 生成后应同时提交 `apps.yaml` 与 `README.md` 两个文件的变更。 ## 第 6 步:更新贡献者名单并生成 SVG 1. 检查项目的开发者(仓库 owner 的用户名)是否已在 `CONTRIBUTING.md` 中(该文件每行格式为 `- [显示名](https://github.com/用户名)`,列表按首字母排序)。 2. 如果已存在,跳到下一步。 3. 如果不存在,将该开发者按 `- [用户名](https://github.com/用户名)` 格式插入到 `CONTRIBUTING.md` 的正确排序位置,然后在项目根目录用终端运行: ```sh uv run .agents/skills/add-hap/scripts/contributers.py ``` (`uv` 不带参数运行,脚本需要 `GITHUB_TOKEN` 环境变量来获取头像。如果运行失败,报告错误并告知用户。) ## 第 7 步:回复并关闭 issue 确认 `apps.yaml`、`README.md`(及 `CONTRIBUTING.md`/SVG)的变更已提交后,如果本次收录的项目来自第 1 步发现的某个 issue,用终端运行以下命令回复该 issue 并关闭它(需设置 `GITHUB_TOKEN` 环境变量): ```sh uv run .agents/skills/add-hap/scripts/close_issue.py <issue编号> ``` 脚本会向该 issue 发表评论「已收录,感谢分享」并将其置为 closed。 注意: - 仅当项目是从 issue 中获取的才需要本步;如果用户直接提供了项目链接、没有对应 issue,则跳过本步。 - 如果回复或关闭失败(如评论已存在、issue 已被关闭),报告错误并告知用户。 ## 第 8 步:广播新收录通知 在项目根目录用终端运行以下命令,向订阅者广播本次新收录的应用(需先设置 `BROADCAST_UNION_ID` 和 `BROADCAST_CHANNEL_ID` 环境变量): ```sh uv run --env-file .env .agents/skills/add-hap/scripts/broadcast.py "✨ 新收录 · <应用名1>:<描述1> · <应用名2>:<描述2> · <应用名3>:<描述3>" ``` 脚本会调用 `common.send_broadcast` 向订阅者推送一条纯文本消息。若环境变量未设置或接口失败,脚本会打印提示但**不影响**本次收录结果;本步可选,广播失败无需重试。
View on GitHub