312 lines
7.6 KiB
Markdown
312 lines
7.6 KiB
Markdown
---
|
||
name: softcopyright
|
||
description: "智能软件著作权申请材料生成工具。自动分析项目源码,生成符合软著申请要求的软件说明书和源代码文档。支持关键词搜索、智能源码分析、格式化输出和PDF导出。"
|
||
license: MIT
|
||
---
|
||
|
||
# SoftCopyright - 智能软件著作权申请材料生成工具
|
||
|
||
## 概述
|
||
|
||
当用户需要申请软件著作权时,此 skill 会自动完成以下流程:
|
||
1. 读取用户输入,如果是关键词则先搜索相关内容
|
||
2. 分析项目源码结构和内容
|
||
3. 生成详细的软件说明书(约2000-3000字)
|
||
4. 生成符合要求的源代码文档(60页,每页50行)
|
||
5. 导出为PDF格式供软著申请使用
|
||
|
||
## 支持的触发指令
|
||
|
||
用户可以通过以下方式触发此 skill:
|
||
- "帮我生成软著申请材料" - 处理当前目录项目
|
||
- "生成软件说明书" - 仅生成软件说明书
|
||
- "生成源代码文档" - 仅生成源代码文档
|
||
- 任何关键词 - 首先搜索相关内容,然后询问是否生成软著材料
|
||
|
||
## 工作流程
|
||
|
||
### 步骤 1: 理解用户意图
|
||
|
||
首先判断用户输入的类型:
|
||
|
||
```javascript
|
||
// 检查用户输入类型
|
||
if (用户输入包含 "软著" || "著作权") {
|
||
生成类型 = "全部材料"
|
||
} else if (用户输入包含 "软件说明书") {
|
||
生成类型 = "说明书"
|
||
} else if (用户输入包含 "源代码" || "源码") {
|
||
生成类型 = "源代码文档"
|
||
} else if (用户输入是关键词) {
|
||
先搜索相关内容
|
||
询问用户是否生成软著材料
|
||
}
|
||
```
|
||
|
||
### 步骤 2: 项目路径确认
|
||
|
||
```javascript
|
||
// 默认使用当前目录
|
||
let projectPath = process.cwd()
|
||
|
||
// 询问用户确认路径
|
||
await confirmProjectPath(projectPath)
|
||
```
|
||
|
||
### 步骤 3: 使用CLI生成软著材料
|
||
|
||
推荐使用CLI工具生成软著材料:
|
||
|
||
```bash
|
||
# 方式1: 使用关键词触发index.js(交互式)
|
||
cd ~/.claude/skills/softcopyright
|
||
node scripts/index.js 软著
|
||
|
||
# 方式2: 使用cli.js直接生成(推荐)
|
||
node scripts/cli.js generate --project <项目路径>
|
||
|
||
# 方式3: 使用快捷命令(最佳体验)
|
||
~/.claude/skills/softcopyright/softcopyright-generate --project . --auto-pdf
|
||
|
||
# 方式4: 技能系统自动调用
|
||
用户输入"帮我生成软著" → 自动执行: softcopyright-generate --project . --auto-pdf
|
||
```
|
||
|
||
该工具会:
|
||
- 自动扫描项目源码
|
||
- 识别源代码文件类型
|
||
- 分析项目结构和技术栈
|
||
- 生成HTML格式的软件说明书和源代码文档
|
||
- 询问用户是否自动在浏览器中打开并打印为PDF
|
||
|
||
### 步骤 4: 生成选项
|
||
|
||
用户可以选择:
|
||
|
||
1. **生成全部材料**(软件说明书 + 源代码文档)
|
||
2. **仅生成软件说明书**
|
||
3. **仅生成源代码文档**
|
||
4. **仅查看项目统计**
|
||
|
||
### 步骤 5: 输出位置
|
||
|
||
**默认输出路径**: `<项目目录>/softcopyright-output/`
|
||
|
||
生成的文件:
|
||
- `软件说明书_<项目名>_<时间戳>.html`
|
||
- `源代码文档_<项目名>_<时间戳>.html`
|
||
|
||
### 步骤 6: 导出PDF
|
||
|
||
有两种方式将HTML转换为PDF:
|
||
|
||
**方式1: 自动转换(推荐)**
|
||
```bash
|
||
# 添加--auto-pdf选项
|
||
node scripts/cli.js generate --project <项目路径> --auto-pdf
|
||
```
|
||
- 自动在浏览器中打开HTML
|
||
- 3秒后自动弹出打印对话框
|
||
- 选择"保存为PDF"即可
|
||
|
||
**方式2: 手动转换**
|
||
1. 在浏览器中打开生成的HTML文件
|
||
2. 按 Cmd+P (macOS) 或 Ctrl+P (Windows/Linux)
|
||
3. 在打印设置中:
|
||
- 展开"更多设置"
|
||
- 勾选"页眉和页脚"
|
||
- 选择"保存为PDF"
|
||
4. 保存PDF文件
|
||
|
||
## 工具脚本使用说明
|
||
|
||
### scanner.js - 源码扫描工具
|
||
|
||
扫描项目目录并分析结构:
|
||
|
||
```bash
|
||
node ~/.claude/skills/softcopyright/scripts/scanner.js <项目路径>
|
||
```
|
||
|
||
输出项目分析的JSON文件。
|
||
|
||
### doc-generator.js - 软件说明书生成器
|
||
|
||
生成详细的软件说明书:
|
||
|
||
```bash
|
||
node ~/.claude/skills/softcopyright/scripts/doc-generator.js \
|
||
--type manual \
|
||
--input <项目分析JSON> \
|
||
--template <模板文件> \
|
||
--output <输出PDF路径>
|
||
```
|
||
|
||
### source-exporter.js - 源代码文档生成器
|
||
|
||
生成符合软著要求的源代码文档:
|
||
|
||
```bash
|
||
node ~/.claude/skills/softcopyright/scripts/source-exporter.js \
|
||
--input <源码目录> \
|
||
--output <输出PDF路径> \
|
||
--pages 60 \
|
||
--lines-per-page 50
|
||
```
|
||
|
||
## 使用示例
|
||
|
||
### 示例 1: 完整软著材料生成
|
||
|
||
**用户**: "帮我生成软著申请材料"
|
||
|
||
**Claude 执行流程**:
|
||
|
||
1. 确认项目路径:当前目录
|
||
2. 运行源码扫描工具
|
||
3. 分析项目结构和技术栈
|
||
4. 生成软件说明书
|
||
5. 生成源代码文档
|
||
6. 导出PDF文件
|
||
7. 向用户展示生成结果
|
||
|
||
### 示例 2: 关键词搜索后生成
|
||
|
||
**用户**: "React电商系统"
|
||
|
||
**Claude 执行流程**:
|
||
|
||
1. 搜索"React电商系统"相关信息
|
||
2. 展示搜索结果
|
||
3. 询问:"是否需要为React电商系统生成软著申请材料?"
|
||
4. 用户确认后执行完整生成流程
|
||
|
||
### 示例 3: 仅生成软件说明书
|
||
|
||
**用户**: "帮我生成软件说明书"
|
||
|
||
**Claude 执行流程**:
|
||
|
||
1. 扫描项目源码
|
||
2. 分析项目功能
|
||
3. 生成软件说明书
|
||
4. 导出PDF文件
|
||
|
||
## 输出文件规范
|
||
|
||
### 软件说明书PDF
|
||
- 文件名:`软件说明书_项目名称_YYYYMMDD.pdf`
|
||
- 字数要求:2000-3000字
|
||
- 包含所有必需章节
|
||
- 专业排版和格式
|
||
|
||
### 源代码文档PDF
|
||
- 文件名:`源代码文档_项目名称_YYYYMMDD.pdf`
|
||
- 页数要求:60页(或处理全部代码)
|
||
- 每页行数:不少于50行
|
||
- 无注释和无版权信息
|
||
- 代码连续性保证
|
||
|
||
## 软件著作权申请要求
|
||
|
||
### 源代码文档要求
|
||
1. **页数要求**:通常需要20-60页
|
||
2. **格式要求**:每页不超过50行代码
|
||
3. **注释要求**:需要移除所有注释,只保留纯代码
|
||
4. **页眉页脚**:需要包含软件名称和版本号
|
||
5. **代码连续性**:需要保证代码的连续性和完整性
|
||
|
||
### 软件说明书要求
|
||
1. **内容详实**:约2000-3000字
|
||
2. **结构完整**:包含所有必需章节
|
||
3. **重点突出**:突出软件的独创性
|
||
4. **专业描述**:使用专业的技术描述
|
||
|
||
## 技术栈
|
||
|
||
- **Node.js**: 主要运行环境
|
||
- **PDFKit**: PDF文档生成
|
||
- **glob**: 文件模式匹配
|
||
- **commander**: CLI参数解析
|
||
- **chalk**: 终端颜色输出
|
||
- **inquirer**: 交互式命令行界面
|
||
|
||
## 依赖安装
|
||
|
||
使用 nvm 管理 Node.js 版本:
|
||
|
||
```bash
|
||
# 确保使用合适的 Node 版本
|
||
nvm use 18
|
||
|
||
# 安装依赖
|
||
cd ~/.claude/skills/softcopyright
|
||
npm install
|
||
```
|
||
|
||
## 最佳实践
|
||
|
||
1. **项目分析准确**: 确保正确识别项目类型和技术栈
|
||
2. **内容详实专业**: 生成专业的技术描述和功能说明
|
||
3. **格式规范合规**: 严格按照软著申请要求格式化
|
||
4. **用户交互友好**: 提供清晰的进度提示和确认流程
|
||
5. **文档完整性**: 确保生成材料的完整性和准确性
|
||
|
||
## 安全注意事项
|
||
|
||
1. **源码安全**: 不修改原始源码,只读取和分析
|
||
2. **隐私保护**: 不上传源码到外部服务
|
||
3. **本地处理**: 所有处理都在本地完成
|
||
4. **用户确认**: 重要操作前需要用户确认
|
||
|
||
## 故障排除
|
||
|
||
### 扫描失败
|
||
```bash
|
||
# 检查项目路径
|
||
ls -la <项目路径>
|
||
|
||
# 检查权限
|
||
chmod -R 755 <项目路径>
|
||
```
|
||
|
||
### PDF生成失败
|
||
```bash
|
||
# 检查依赖安装
|
||
cd ~/.claude/skills/softcopyright
|
||
npm list
|
||
|
||
# 重新安装依赖
|
||
npm install
|
||
```
|
||
|
||
### 内存不足
|
||
对于大型项目,可以:
|
||
1. 排除不必要的目录(node_modules, .git等)
|
||
2. 分批处理源码文件
|
||
3. 增加Node.js内存限制
|
||
|
||
## 开发和扩展
|
||
|
||
要添加新的文件类型支持,编辑 `scripts/scanner.js`:
|
||
|
||
```javascript
|
||
const SUPPORTED_EXTENSIONS = {
|
||
'.rs': {
|
||
'single_line': '//',
|
||
'multi_line': ['/*', '*/'],
|
||
'language': 'rust'
|
||
},
|
||
'.go': {
|
||
'single_line': '//',
|
||
'multi_line': ['/*', '*/'],
|
||
'language': 'go'
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
**版本**: 1.0.0
|
||
**作者**: peterfei
|
||
**许可**: MIT |