---
name: Ruanzhu
slug: ruanzhu
category: Writing
description: Ruanzhu generates DOCX source-code documents for software copyright filings when the user runs /ruanzhu or requests a source-code document. It follows a fixed generation workflow and output format.
github: "https://github.com/doccker/cc-use-exp/tree/main/skills/ruanzhu"
language: Python
stars: 1011
forks: 105
install: "npx degit https://github.com/doccker/cc-use-exp/tree/main/skills/ruanzhu ~/.claude/skills/ruanzhu"
installs_to: ~/.claude/skills/ruanzhu
source_path: skills/ruanzhu/SKILL.md
collection_size: 23
category_size: 1012
collection_url: "https://dirskills.com/collections/doccker/cc-use-exp"
added: 2026-08-21T05:14:35.778Z
last_synced: 2026-08-21T05:14:35.778Z
canonical_url: "https://dirskills.com/skills/ruanzhu"
---

# Ruanzhu

Ruanzhu generates DOCX source-code documents for software copyright filings when the user runs /ruanzhu or requests a source-code document. It follows a fixed generation workflow and output format.

**Install:**

```bash
npx degit https://github.com/doccker/cc-use-exp/tree/main/skills/ruanzhu ~/.claude/skills/ruanzhu
```

## README

# ruanzhu 技能 - 软著源代码DOCX生成

## ⚠️ 强制执行规则

**必须执行以下命令，禁止任何其他操作：**

```bash
cp ~/.claude/templates/ruanzhu/generate_docx.py ./generate_docx.py && python3 generate_docx.py $ARGUMENTS && rm generate_docx.py
```

### 禁止事项

- ❌ 自行编写生成脚本
- ❌ 在项目中创建任何 `.py` 文件
- ❌ 检测 python-docx 是否安装
- ❌ 创建 venv 或手动安装依赖
- ❌ 搜索项目中的文件
- ❌ 执行项目中已有的任何脚本

### 唯一允许的操作

✅ 执行上面的 bash 命令（一条命令，用 && 连接）

### 执行后状态

- ✅ 生成 `docs/ruanzhu/{软件名称}{版本}-源代码.docx`
- ✅ 使用 `--different` 时，生成 `{软件名称}{版本}-源代码-2.docx`（编号递增）
- ✅ 项目中**不应有任何新增的 .py 文件**
- ✅ 临时脚本 `./generate_docx.py` 已被删除

---

## 参考信息（仅供了解，不要自行实现）

以下内容已由 `generate_docx.py` 脚本实现，**不需要手动处理**：

### 项目信息检测

按优先级读取项目名称和版本：

```python
# 优先级 1: CLAUDE.md
# 查找 "# {项目名}" 或 "## 项目概述" 下的内容
# 版本：查找 "版本：" 或 "version:"

# 优先级 2: package.json
{
  "name": "project-name",
  "version": "1.0.0"
}

# 优先级 3: pom.xml
<artifactId>project-name</artifactId>
<version>1.0.0</version>

# 优先级 4: 用户输入
```

### 2. 检测项目语言

根据文件存在性判断：

| 检测文件 | 语言 |
|---------|------|
| `pom.xml` 或 `build.gradle` | Java |
| `package.json` | JavaScript/TypeScript |
| `Cargo.toml` | Rust |
| `Gemfile` | Ruby |
| `go.mod` | Go |
| `*.cpp` 或 `CMakeLists.txt` | C++ |
| `requirements.txt` 或 `pyproject.toml` | Python |

### 3. 源代码扫描规则

#### Java
```
优先目录：
  - src/main/java/**/controller/
  - src/main/java/**/service/
  - src/main/java/**/entity/
  - src/main/java/**/repository/
  - src/main/java/**/config/
  - src/main/java/**/security/
  - src/main/java/**/dto/
  - src/main/java/**/

排除：
  - *Test.java
  - *IT.java
  - *Tests.java
  - target/
```

#### TypeScript/Vue/React
```
优先目录：
  - src/api/
  - src/stores/
  - src/pages/
  - src/views/
  - src/components/
  - src/hooks/
  - src/utils/
  - src/layouts/
  - frontend/src/

排除：
  - *.spec.ts
  - *.test.ts
  - *.test.tsx
  - *.d.ts
  - node_modules/
  - dist/
```

#### C++
```
优先目录：
  - src/
  - include/
  - lib/

排除：
  - *_test.cpp
  - *_test.cc
  - test/
  - tests/
  - build/
```

#### Ruby
```
优先目录：
  - app/controllers/
  - app/models/
  - app/services/
  - lib/

排除：
  - *_spec.rb
  - *_test.rb
  - spec/
  - test/
```

#### Rust
```
优先目录：
  - src/

排除：
  - tests/
  - *_test.rs
  - target/
```

#### Go
```
优先目录：
  - cmd/
  - internal/
  - pkg/
  - ./

排除：
  - *_test.go
  - vendor/
```

#### Python
```
优先目录：
  - src/
  - app/
  - lib/
  - ./

排除：
  - test_*.py
  - *_test.py
  - tests/
  - __pycache__/
  - .venv/
```

### 4. 页数控制

#### 固定页数模式（默认60页）
- 每页约57行渲染行（考虑长行换行）
- 按优先级扫描，达到目标行数后停止
- 不足则输出全部

#### 自动模式（auto）
- 总页数 ≤ 60：输出全部
- 总页数 > 60：输出前30页 + 后30页，中间标注省略

### 5. 渲染行数计算

```python
def estimate_rendered_lines(text, usable_width_cm=15.5):
    """估算一行文本在Word中渲染需要的行数"""
    if len(text) == 0:
        return 1
    width = 0
    for ch in text:
        if ord(ch) > 127:  # 中文字符
            width += 0.35
        else:  # 英文/符号
            width += 0.18
    return max(1, int(width / usable_width_cm) + (1 if width % usable_width_cm > 0.1 else 0))
```

### 6. DOCX格式规范

```
页面：A4 (21cm x 29.7cm)
边距：上2.5cm, 下2.5cm, 左3.0cm, 右2.5cm
字体：宋体 + Courier New, 10pt
行距：单倍行距

页眉：
  - 左侧：{软件名称} {版本}（加粗）
  - 居中：第 X 页共 Y 页
  - 底部：下划线

页脚：
  - 居中：第 X 页
```

### 7. 输出

- 目录：`docs/ruanzhu/`（不存在则创建）
- 文件名：`{软件名称}{版本}-源代码.docx`
- 示例：`贸易订单管理系统V1.0-源代码.docx`

## 错误处理

| 错误 | 处理 |
|------|------|
| 无法检测项目信息 | 提示用户输入 |
| 未检测到源代码 | 报错并列出支持的语言 |
| python-docx 未安装 | 自动 pip install 安装 |
| 代码量不足 | 警告并输出全部 |
