Skip to content
Back to skills

ruanzhu-kit

ASecurity

生成中国软件著作权登记(软著)全套申请材料——页数写死的程序鉴别材料 PDF、文档鉴别材料(说明书)PDF,以及在线表单逐字段可复制的填写清单。当用户提到「软著」「软件著作权」「版权登记」「程序鉴别材料」「文档鉴别材料」「源程序前30页后30页」时使用。

  • 27 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 24, 2026
ai-agentsbashnodegit

Security analysis

A100/100

Pro scans all 13 files and shows the line behind each finding

Scanned September 30, 2026

npx -y skills add CatCatUncle/ruanzhu-kit --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of ruanzhu-kit?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for ruanzhu-kit
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/catcatuncle-ruanzhu-kit/badge)](https://www.skillsdirectory.com/skills/catcatuncle-ruanzhu-kit)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: ruanzhu-kit
description: 生成中国软件著作权登记(软著)全套申请材料——页数写死的程序鉴别材料 PDF、文档鉴别材料(说明书)PDF,以及在线表单逐字段可复制的填写清单。当用户提到「软著」「软件著作权」「版权登记」「程序鉴别材料」「文档鉴别材料」「源程序前30页后30页」时使用。
---

# 软著登记材料生成

把一个软件项目加工成中国版权保护中心要求的全套登记材料,并算出在线表单每一项该填什么。

材料由 `ruanzhu-kit` 生成,不要手搓 HTML 和分页脚本——页数算错整份材料要重做。

## 先跟用户说清楚:说明书和表单描述由用户本人写

2026 年起软著申请材料要手抄签字声明:本软件确系人的独立开发,**未使用 AI 开发编写代码、撰写文档或生成登记申请材料**,
声明失实有失信和法律后果。所以这个技能的分工是:

- **你(agent)做**:跑 `ruanzhu` 命令——清点源码、排除不该收的文件、出程序鉴别材料、核页数、算字数、跑口吻检查,把结果讲给用户听
- **用户本人做**:写说明书正文,写表单里的开发目的、面向行业、主要功能、技术特点
- **不要**替用户起草、润色或改写说明书和这四项表单描述,也不要帮忙规避那条声明
- 用户说项目本身就是 AI 写的,照实告诉用户这份声明签不了,拿不准请用户去问中国版权保护中心或律师

开工前把这段分工用一两句话告诉用户。

## 三条命令

```bash
npx github:CatCatUncle/ruanzhu-kit init        # 生成 ruanzhu.config.json 和说明书骨架
npx github:CatCatUncle/ruanzhu-kit count       # 看清点到哪些文件、多少行、排版几页
npx github:CatCatUncle/ruanzhu-kit all --doc   # 出两份 PDF + 表单清单 + 留存 .doc,并回读核验页数
```

技能目录里已经有这个仓库的话(`~/.claude/skills/ruanzhu-kit/`),直接
`node ~/.claude/skills/ruanzhu-kit/bin/ruanzhu.mjs …`,不用联网。
需要 Node 18+ 和 Chrome/Chromium/Edge 任一(`CHROME_PATH` 可指定)。
下文的 `ruanzhu` 指上面任一种调用方式。

## 硬约束(错了整份重做)

| 约束 | 要求 |
|---|---|
| 源程序页码 | 超过 60 页的,交**前连续 30 页 + 后连续 30 页**,中间略;不足 60 页全交 |
| 文档页码 | 同理;但说明书**不足 30 页也可以全本提交**,不必凑页数 |
| 每页行数 | 不少于 50 行,页数在生成前算死,不许交给排版引擎漂 |
| 页眉页码 | 每页页眉标**软件名称和版本号**(与申请表一致),右上角标页码;工具自动出,核验会查 |
| 文件格式 | 在线系统**只收 PDF**,Word 只用于改字和留存 |
| 著作权人 | 与营业执照/身份证**一字不差**,含行政区划和「有限公司」后缀 |
| 源程序量 | 表单、说明页、代码统计**三处同一个数** |

## 步骤

### 1. 清点源码(最容易翻车的一步)

只收用户自己写的代码。依赖、构建产物、运行期数据、AI 生成的中间产物一律排掉——
行数虚高审查员一翻就露馅。`ruanzhu count` 会列出收进来的文件和行数最多的文件,
对着看一遍,不该在里面的加进 `ruanzhu.config.json` 的 `exclude` / `excludeFiles`。

`order` 决定拼接顺序,按「入口 → 核心模块 → 能力层 → 配置」排,让审查员看到的是
一份连贯的工程,不是按字母表打乱的文件堆。

### 2. 出程序鉴别材料

```bash
ruanzhu source --doc
```

命令跑完会回读 PDF 核验页数:超 60 页的项目应该是 **62 页**(封面 1 + 前 30 + 说明页 1 + 后 30)。
核验没全绿就别交。

页面太空可以 `--lines-per-page 60` 排密一点,上限 66 行(A4 + 2cm 边距 + 9pt)。

### 3. 写说明书,出文档鉴别材料

`init` 生成的 `ruanzhu/说明书.md` 是固定 11 章骨架:总体功能描述、运行环境、编译环境、
安装、启动、主要功能说明、软件架构、文件清单、配置文件、规范文件、常见问题。

这一步**由用户本人写**:把骨架交给用户,说明要照软件实际界面补完 `……`、截图用真实运行界面。
用户写完后,你来跑:

```bash
ruanzhu manual --doc
```

第六章「主要功能说明」要和表单里的「软件的主要功能」互相对得上,别一个写五条一个写八条。

### 4. 出表单填写清单

表单十项的分工:

- **开发/运行环境六项**:`init` 已由程序按本机配置和依赖清单预填(`ruanzhu form` 也会补空项),
  这是机器读出来的事实,你可以对着项目帮用户核对——比如 Web 项目的运行平台要写服务器系统 + 客户端浏览器。
- **开发目的、面向行业、主要功能、技术特点**:**由用户本人写**,写进 `ruanzhu.config.json` 的 `form`。
  把 [docs/form-fields.md](docs/form-fields.md) 的写法要点告诉用户,别代写。

用户写完后跑:

```bash
ruanzhu form
```

产出 `表单填写清单.md`,每个字段带字数和是否超限,可以直接往在线系统里粘。
空着的字段会标红,把缺哪几项告诉用户。

两个最常填反的字段:

- **开发该软件的操作系统** = 写代码用的系统;**该软件的运行平台** = 软件能跑的系统。
- 开发环境配置要**不低于**运行环境,反过来逻辑上说不通。

**软件的主要功能**必须 500–1300 字,低于 500 会被驳回。

### 5. 口吻检查

`ruanzhu form` 会在清单「口吻检查」一节挑出套话(赋能、一站式、全方位……)、「一、xx。二、xx。」式提纲、
Markdown 符号、好几句同一个开头。把检查结果原样转告用户,由用户自己改;可以转告的写法提示是:

- 先一两句说这是个什么软件、谁用;然后照着软件的菜单/页面逐个写:在哪点了什么 → 软件做了什么 → 得到什么
- 用软件里真实的菜单名、按钮名、文件格式;编号用「1、2、3、」;每条长短不齐是正常的

## 交付前自检

- [ ] 程序鉴别材料 PDF 页数核验通过(超 60 页的是 62 页)
- [ ] 说明书 PDF 页数真实,不是空壳
- [ ] 源程序量三处一致
- [ ] 著作权人与营业执照/身份证一字不差
- [ ] 说明书和四项表单描述是用户本人写的
- [ ] 表单十项全部填满,「软件的主要功能」字数落在 500–1300,50 字字段都没超
- [ ] 口吻检查没有挑出套话和 Markdown 符号
- [ ] 材料里没有依赖、构建产物、运行期数据、AI 中间产物

## 常见坑

| 坑 | 后果 | 解法 |
|---|---|---|
| 用 Word 排版导 PDF | 页数随版本漂,50 行/页能渲成 71 页 | 用本工具,分页点在生成前钉死 |
| 按行数硬切分页 | 超长行折行撑破页面 | 按折行后的高度分页(本工具默认行为) |
| 把源码「对半分再各凑 30 页」 | 代码量大时每页几百行,PDF 远不止 62 页 | 取整份源程序的前 30 页和最后 30 页 |
| 统计行数时混入 node_modules、workspace | 行数虚高,驳回 | `ruanzhu count` 核对文件清单 |
| 著作权人写简称 | 驳回 | 与证照逐字对照 |
| 文件名与上传栏位对不上 | 传错位置 | 用工具生成的 `①…` `②…` 文件名 |
| 公司申请缺权属证明 | 驳回 | 备《职务开发声明》或《软件著作权转让合同》 |
| 转让合同没写「可对外再许可」 | 公司对外授权效力存疑 | 合同须含再许可条款 |

## 法人 vs 个人

| | 法人(公司) | 个人 |
|---|---|---|
| 办理身份 | 法人或其他组织 | 自然人 |
| 著作权人 | 营业执照全称 | 身份证姓名 |
| 其他证明文件 | **必须**传营业执照 + 权属证明 | 一般不需要 |
| 适用 | 投标、申政策、商业授权 | 个人开发者 |

个人开发、公司申请的,要准备《软件著作权转让合同》,写明转让**全部财产权利**
且**含对外再许可**的权利,否则公司后续对外授权存在效力瑕疵。
在 `ruanzhu.config.json` 里把 `applicantType` 设成 `company`,表单清单会带上这段提示。

## 交付物

```
①程序鉴别材料_源程序前30页后30页_<软件名>.pdf   ← 传「程序鉴别材料」
②文档鉴别材料_说明书_<软件名>.pdf              ← 传「文档鉴别材料」
表单填写清单.md                                ← 逐字段可复制
<软件名>源程序.doc / <软件名>说明书.doc          ← --doc 产出,可编辑留存
```

其他证明文件(营业执照、权属证明)由用户自己准备,命名成 `③其他相关证明文件_….pdf`。

## 没有 Node 环境时

核心只有一个算法:**按折行后的高度分页,而不是按行数**。一行 300 字符在 A4 上
(2cm 边距、9pt Courier New)会折成 4 行,每行 89 字符,每页最多 66 行。先算出每一行
占几个行高单位,累加到 50 就换页,用 `<div style="page-break-after:always">` 钉死分页点,
再用 `chrome --headless=new --no-pdf-header-footer --print-to-pdf=out.pdf in.html` 渲染。
实现见 [lib/paginate.mjs](lib/paginate.mjs)。

Files in this skill

  • SKILL.md6.9 KB
  • bin/ruanzhu.mjs15.4 KB
  • docs/form-fields.md3.6 KB
  • lib/collect.mjs4.8 KB
  • lib/config.mjs2.6 KB
  • lib/index.mjs273 B
  • lib/markdown.mjs2.7 KB
  • lib/paginate.mjs3.1 KB
  • lib/render.mjs8.6 KB
  • lib/verify.mjs2.6 KB
  • package.json873 B
  • templates/manual.md2.4 KB
  • test/run.mjs6.7 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.