agentsclimarketplace

Software copyright

Skill raidenfc/my-skills/software-copyright

Skills:软著文档自动化生成 / 前端API治理 / 小程序转换 / 静态页面API化

Install
npx -y skills add raidenfc/my-skills --skill software-copyright

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 5 stars5 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

自动生成计算机软件著作权申请资料

SKILL.md

33.9 KB, ~12.4k tokens by cl100k_base, as published. Nobody here has run it

软著资料生成 Skill

概述

此 Skill 用于自动分析项目代码和文档,生成计算机软件著作权申请所需的资料。

工作模式:采用渐进式生成,分为两大阶段:

  1. 规划阶段:分析项目并生成《软著规划书》,用户确认后进入执行阶段
  2. 执行阶段:基于规划书逐步生成三类资料文档

最终产物

  1. 软著主文档
  2. 代码文档(60 页)
  3. 使用说明书

使用方式

当用户提到需要生成软件著作权申请材料、申请资料或类似请求时,调用此 Skill。

工具使用策略

本 Skill 使用以下工具完成各项操作(优先使用原生工具,不可用时 fallback 到 shell):

操作首选工具Fallback
列出目录list_dirls -la / find
查找文件find_by_name / grep_searchrg --files / find
读取文件view_filecat
写入文件write_to_fileshell 重定向
执行命令run_command
通知用户notify_user

执行步骤

第一步:收集用户基本信息

立即询问用户以下必填信息,不要跳过此步骤:

请提供以下软著申请信息:

1. 软件全称(必填):
   - 规则:必须以“软件”、“APP”、“系统”、“平台”结尾(小程序可例外)。
   - 注意:中英文之间**不能有空格**。
   示例:享赋臻品商城系统

2. 编制单位名称(必填):
   示例:某某科技有限公司

3. 软件版本号(必填):
   - 规则:格式需规范,推荐格式:`V1.0` 或 `1.0`。
   示例:V1.0

4. 开发完成日期(必填,格式:YYYY年MM月):
   示例:2024年6月

5. 开发方式(必填,请选择):
   - 独立开发
   - 合作开发
   - 委托开发

6. 面向行业/领域(选填):
   示例:零售商场、酒店预订、餐饮服务、电器销售
   (如不提供,我将根据项目分析推断)

7. 交付目录(选填):
   默认:项目根目录/软著资料/
   (如需自定义请提供绝对路径)

重要:在用户回答完这些问题之前,不要进行任何项目分析。


第二步:分析项目结构

收集用户信息后,开始分析项目:

2.1 确定项目根目录

  • 查看用户当前工作区路径
  • 确认项目根目录位置

Monorepo 检测:检查项目根目录是否存在 pnpm-workspace.yamllerna.json、或根目录下多个 package.json(如 apps/packages/ 子目录各有独立 package.json)。若为 Monorepo 项目,询问用户选择:

  • a) 指定某个子项目(如 apps/web)作为扫描目标
  • b) 合并扫描所有子项目

2.2 扫描项目文件结构

使用 list_dir / find_by_name 扫描(不可用时 fallback 到 rg --filesfind):

  • 主要源代码目录:src/, app/, lib/, server/, mobile/, admin/
  • 配置文件:package.json, composer.json, go.mod, pom.xml, requirements.txt
  • 文档目录:.doc/, docs/, wiki/, README.md, contexts/

2.3 识别技术栈

根据文件特征判断:

  • 前端:React, Vue, Angular, Next.js, Nuxt.js 等
  • 后端:Node.js, PHP, Go, Java, Python 等
  • 小程序:UniApp, 微信小程序原生等
  • 数据库:MySQL, PostgreSQL, MongoDB 等
  • 其他:Nginx, Redis, Docker 等

2.4 统计代码行数(有效行数)

使用 shell 命令执行(排除依赖库且去除空行):

find . -type f \( \
    -name "*.js" -o -name "*.jsx" -o -name "*.ts" -o -name "*.tsx" \
    -o -name "*.vue" -o -name "*.go" -o -name "*.php" -o -name "*.java" -o -name "*.py" \
    -o -name "*.css" -o -name "*.scss" -o -name "*.less" \
    -o -name "*.html" -o -name "*.json" \
    -o -name "*.wxml" -o -name "*.wxss" -o -name "*.wxs" \
    -o -name "*.swift" -o -name "*.kt" -o -name "*.dart" \
    -o -name "*.sql" -o -name "*.sh" -o -name "*.yaml" -o -name "*.yml" \
    \) \
    -not -path "*/node_modules/*" \
    -not -path "*/dist/*" \
    -not -path "*/vendor/*" \
    -not -path "*/.git/*" \
    -not -path "*/.venv/*" \
    -not -path "*/__pycache__/*" \
    -not -path "*/target/*" \
    -not -path "*/build/*" \
    -not -path "*/.next/*" \
    -not -path "*/.nuxt/*" \
    -not -path "*/miniprogram_npm/*" \
    -not -path "*/.taro/*" \
    -not -path "*/coverage/*" \
    -not -path "*/.cache/*" \
    -not -path "*/public/*" \
    -not -path "*/migrations/*" \
    -exec grep -v "^\s*$" {} + 2>/dev/null | wc -l

[!TIP] 上述扩展名列表覆盖了大部分常见技术栈。如有特殊文件类型(如 .rs, .rb, .lua 等),可根据项目实际情况增删。

注意:此命令统计的是去除空行后的有效代码行数。 将此结果记录为 Effective_Line_Count


第三步:读取项目文档

3.1 优先读取以下文档

  1. contexts/context.md - 项目核心上下文
  2. README.md - 项目概述
  3. .doc/repowiki/系统概述.md - 系统概述
  4. .doc/repowiki/功能模块详解/ - 功能模块文档
  5. docs/ 目录下的其他文档

3.2 提取关键信息

  • 项目背景和开发目的
  • 主要功能模块列表
  • 技术特点和创新点
  • 系统架构说明

3.3 深度功能挖掘(重点执行)

普通文档分析容易遗漏后台和辅助功能。必须执行以下深度扫描,找出“不容易发现的功能”:

  1. 管理端/后台隐形功能

    • 扫描关键词admin, manage, system, config, auth, role, log.
    • 查找目标
      • 权限体系:角色管理、用户授权、菜单配置、部门管理。
      • 系统运维:操作日志、登录日志、异常监控、系统参数设置。
      • 基础配置:数据字典、公告发布、版本管理、广告位管理。
  2. 从依赖库推断技术功能

    • 检查 package.json / pom.xml / go.mod 等依赖文件。
    • redis -> 缓存加速 / 高并发处理
    • jwt / security -> 多重身份认证 / 接口安全防护
    • oss / cos -> 海量文件云存储
    • schedule / cron -> 自动化定时任务
    • websocket / socket -> 实时消息推送
    • excel / csv -> 数据批量导入导出
  3. 用户端辅助功能

    • 个人中心:修改密码、绑定手机、实名认证、地址管理。
    • 互动功能:收藏/关注、评论/点赞、分享转发、积分足迹。
    • 服务支持:在线客服、帮助中心、意见反馈、关于我们。

第四步:生成软著规划书(关键中间产物)

基于前三步收集的信息,生成《软著规划书.md》并保存到输出目录。

4.1 读取规划书模板

读取模板文件: {SKILL_DIR}/templates/planning_doc_template.md

4.2 生成代码文件索引(核心逻辑)

  1. 扫描与清洗统计

    • 遍历源码文件,对每个文件执行 grep -v "^\s*$" 统计有效行数
    • 注意:必须使用清洗后的行数,否则生成的文档行数将不足。
  2. 文件排序与筛选

    • 按照 高权重 → 普通权重 → 低权重 的顺序排列文件。权重定义如下:
    权重文件类型说明
    高优main.*, app.*, index.*, router.*, App.vue, app.json入口文件和路由配置
    普通pages/, views/, components/, modules/, screens/页面和组件
    低优utils/, helpers/, config/, types/, constants/, store/工具、配置、类型定义
    • 前 30 页选择:从头部开始累加,直到累计行数 ≥ 1590 行(FRONT_LINES)。
    • 后 30 页选择:从尾部倒推,直到累计行数 ≥ 1590 行(BACK_LINES)。
  3. 数据准备

    • 准备 file_list 数据,包含:文件路径、单文件行数、当前累计行数。

4.3 生成功能模块清单(核心关键)

分析代码提取功能模块。必须严格区分“用户端”与“管理端”的代码来源,严禁混用。

步骤 0:前端路由分析与去重(必须执行)

在提取功能之前,必须先分析前端路由文件,以"页面"为维度进行归纳,避免遗漏或机械式重复。

  1. 定位路由文件
    • Vue/React Web: 查找 src/router/index.js, src/routes.ts, src/app-routing.module.ts 或类似文件。
    • Mini-program: 查找 app.json, pages.json
    • Next.js/Nuxt.js: 扫描 pages/app/ 目录下的文件结构。
    • 纯后端项目(无前端 UI 文件时),按以下方式定位路由等效文件:
      • Django: urls.py 路由定义
      • Flask: @app.route 装饰器扫描
      • Spring Boot: @RequestMapping / @GetMapping 注解扫描
      • Go Gin/Echo: router.GET/POST 注册
      • Express/Koa: router.get/postapp.get/post 注册
      • Laravel: routes/web.php, routes/api.php

[!NOTE] 纯后端项目特殊处理:若项目完全没有前端(无 .vue, .jsx, .wxml, .html 等 UI 文件),使用说明书应改为"接口使用说明"模式,按 API Endpoint 分组组织功能描述,每个 Endpoint 描述其请求方式、参数、响应及使用场景。

  1. 智能筛选与去重

    • 读取组件内容:进入路由对应的组件文件(如 .vue, .jsx),分析其 UI 和业务逻辑。
    • 去重逻辑
      • 合并同类项:如果发现多个路由指向相似的页面(如 detail/:id),只归纳为一个"XX详情页"。
      • 排除无效页面:忽略纯静态的协议页、过渡页或无实质功能的空白页。
      • 内容审查:只有包含用户交互(表单、按钮)或动态数据展示的页面才生成模块。
  2. 用户端(User Side)

    • 核心原则:必须优先读取前端/客户端的 UI 代码。只有在完全没有前端代码时(如纯后端渲染),才允许读取后端 Controller。
    • 扫描优先级(按顺序查找):
      1. 小程序/App: .wxml, .axml, .vue (UniApp), .dart (Flutter), .swift, .kt
      2. Web 前端: .vue, .jsx, .tsx, .html
      3. 模板引擎: .blade.php, .jsp, .ejs (仅在无独立前端时使用)
    • 禁止行为:禁止使用 pure Backend Logic(如 UserLogic.php, OrderService.java)作为用户端功能的“对应代码路径”,除非该文件包含了 HTML 输出。
  3. 管理端(Admin Side)

    • 路由/菜单分析(前端优先)
      • 首选:寻找 管理后台的前端路由(如 router/admin.js, src/admin/routes.ts)或 菜单配置文件(如 menuConfig.js, layout/sider.tsx)。
      • 次选(仅当无独立前端时):分析 MVC 框架的 Admin 路由(如 routes/admin.php)和 Controller 结构。
    • 页面归纳
      • 核心原则:必须按前端页面视角归纳。例如"商品列表页"和"商品编辑页"是两个页面,而不是简单的"商品管理"一个大模块。
      • 将前端路由中的 path 映射为一个功能页面。
    • 优先寻找 admin, manager, backend 目录下的界面代码或 View 文件。
  4. 提取要求(严格执行)

    • 对于每个识别出的页面/模块,必须提取以下 5 个字段:

      1. 页面名称:从路由 path 或 title 提取(如 首页)。
      2. 功能点:页面内的主要功能列表(如 轮播图展示, 推荐列表)。
      3. 复杂度:简单/中等/复杂。
      4. 代码路径:对应的组件文件路径。
      5. 主要操作点:基于 UI 元素的交互描述(必须包含动词)。例如:“点击‘立即购买’ -> 弹出规格选择 -> 确认支付”。
    • 数量要求(尽可能全面)

      • 不要只提取最少的几个,而是尽可能覆盖路由文件中定义的业务页面。
      • 用户端:建议提取 10~20 个 模块(覆盖首页、分类、购物车、个人中心、订单、设置等)。
      • 管理端:建议提取 5~10 个 模块(覆盖控制台、商品、订单、用户、营销、财务、设置等)。

4.4 写入规划书

将收集的数据填充到模板中,写入 {输出目录}/软著规划书.md

关键规则

  • 严禁修改表格表头:必须保留模板中的 6 列结构(页面名称 | 功能点 | 复杂度 | 代码路径 | 主要操作点)。
  • 请勿重写表格:请直接替换模板中的 {Page_Name1} 等占位符,或在占位符位置循环插入新行。
  • 未识别到的字段:如果某个字段为空,请填写 "无" 或 "N/A",不要删除列。

4.5 请求用户确认

重要:生成规划书后,必须通知用户审阅并请求确认。

通知内容应包含:

  1. 规划书已生成及其路径。
  2. 核心数据摘要:
    • 预计总页数:{Total_Pages}
    • 用户端模块数:{User_Modules}
    • 管理端模块数:{Admin_Modules}
  3. 询问用户是否同意按此规划生成最终文档。

只有用户确认后,才能进入后续的"执行阶段"(第五步)。


第五步:生成软著主文档(基于规划书)

数据来源:直接读取《软著规划书.md》中的信息,不再重新分析。

  1. 读取数据:从规划书中提取基本信息、硬件环境、软件环境、源程序量(总行数)、主要功能列表、技术特点。
  2. 读取模板templates/main_doc.md
  3. 填充生成:将提取的数据填充到模板中。
  4. 保存文件:文件名 {软件名称}_{开发完成日期}.md

参考标准的软著文档结构:

  1. 开发的硬件环境
  2. 运行的硬件环境
  3. 开发该软件的操作系统
  4. 软件开发环境 / 开发工具
  5. 该软件的运行平台 / 操作系统
  6. 软件运行支撑环境 / 支持软件
  7. 源程序量
  8. 开发目的
  9. 面向领域 / 行业
  10. 软件的主要功能
  11. 软件的技术特点
  12. 代码文档(占位)
  13. 文档鉴别材料(占位)

硬件环境推断规则

如果项目文档中未明确说明,可使用以下默认值:

开发环境(个人电脑)

  • CPU:4核
  • 内存:8GB
  • 系统盘:256GB SSD
  • 带宽:100Mbps

运行环境(服务器)

  • 小型项目:CPU 2核,内存 4GB,系统盘 100GB SSD,带宽 5Mbps
  • 中型项目:CPU 4核,内存 8GB,系统盘 200GB SSD,带宽 10Mbps
  • 大型项目:CPU 8核,内存 16GB,系统盘 500GB SSD,带宽 20Mbps

第六步:生成代码文档(基于规划书)

核心逻辑:严格按照《软著规划书.md》中的文件索引逐个读取,实时累计行数,确保精确达标。

6.1 读取规划书与准备

  1. 读取 软著规划书.md,提取 4.1 前 30 页文件列表4.2 后 30 页文件列表
  2. 确认生成模式:
    • Effective_Line_Count >= 3000分页模式(前 30 页 + 后 30 页)
    • Effective_Line_Count < 3000全量模式(输出所有代码)

[!NOTE] 页数计算说明:规划阶段按每页 53 行预估分页(含安全余量),实际在 Word 中排版后每页应 ≥ 50 行

6.2 代码清洗规则(严格执行)

在读取每个源代码文件内容后,由 AI 在内存中执行以下清洗,然后再写入文档:

  1. 敏感信息过滤(正则删除整行):

    • Copyright, (c), ©
    • @author, Created by
    • Address:, Email:, Phone:
    • 具体的日期时间
    • TODO, FIXME, HACK, XXX 等开发备注
    • console.log, console.warn, console.error, print(), var_dump 等调试语句
    • 硬编码的密钥、Token(包含 ApiKey, Secret, Password, Token 等关键词的赋值行)
  2. 空行处理

    • 删除所有纯空行 (^\s*$)。
    • 仅保留代码和功能性注释(如类说明、方法说明)。

6.3 执行生成(分页模式)—— 强制达标机制

[!CAUTION] 红线规则:前部和后部代码行数必须各自达到 1590 行才能停止生成。 若行数不足,禁止写入"中间省略",必须继续添加文件直到达标。

  1. 写入顶部格式提示(必须执行)
    • 读取并写入 templates/code_material.md 文件头部的 Word 格式设置提示(即 --- 包裹的引用块)。
    • 确保包含“页眉设置”、“字体设置”等关键信息。

A. 生成前 30 页(强制循环机制)

初始化:accumulated_lines = 0, file_index = 0

WHILE accumulated_lines < 1590:
    1. 从前部文件列表取第 file_index 个文件
    2. 若文件列表已用尽 → 执行【自动补充机制】
    3. 读取文件内容
    4. 执行代码清洗(删除空行、敏感信息)
    5. 计算清洗后行数 file_lines
    6. 写入文件头注释:## 文件:{相对路径}
    7. 写入代码块(带语法高亮)
    8. accumulated_lines += file_lines
    9. 输出进度日志:[前部] 文件 {n}: {filename} | +{file_lines}行 | 累计: {accumulated_lines}/1590
    10. file_index++

结束条件:仅当 accumulated_lines >= 1590 时退出循环
记录:Actual_Front_Lines = accumulated_lines

B. 达标校验门禁(写入中间省略前必须通过)

在写入"中间省略"之前,必须通过以下检查:

检查项条件未通过处理
前部行数Actual_Front_Lines >= 1590返回步骤 A 继续添加文件
文件列表仍有可用文件执行【自动补充机制】获取更多文件

只有检查全部通过,才能写入\n\n... (中间代码省略) ...\n\n

C. 生成后 30 页(强制循环机制)

初始化:accumulated_lines = 0, file_index = 0

WHILE accumulated_lines < 1590:
    1. 从后部文件列表取第 file_index 个文件
    2. 若文件列表已用尽 → 执行【自动补充机制】
    3. 读取文件内容
    4. 执行代码清洗
    5. 计算清洗后行数 file_lines
    6. 写入文件头注释:## 文件:{相对路径}
    7. 写入代码块
    8. accumulated_lines += file_lines
    9. 输出进度日志:[后部] 文件 {n}: {filename} | +{file_lines}行 | 累计: {accumulated_lines}/1590
    10. file_index++

结束条件:仅当 accumulated_lines >= 1590 时退出循环
记录:Actual_Back_Lines = accumulated_lines

重要:必须包含最后一个文件的最后一行代码,确保文档自然结束。

6.3.1 自动补充机制(文件不足时触发)

当规划书的文件列表用尽但行数仍不足时,自动执行以下补充策略:

  1. 扫描未列入的源代码文件

    find {项目目录} -type f \( -name "*.vue" -o -name "*.js" -o -name "*.ts" -o -name "*.php" -o -name "*.go" \) \
        -not -path "*/node_modules/*" -not -path "*/vendor/*" -not -path "*/dist/*"
    
  2. 按优先级排序补充

    • 高优先级:页面组件(pages/)、视图文件(views/
    • 中优先级:通用组件(components/)、工具函数(utils/
    • 低优先级:配置文件、类型定义
  3. 动态添加到文件列表,继续循环生成直到达标。

  4. 更新规划书:将补充的文件追加到规划书的文件列表中。

6.4 执行生成(全量模式)

如果规划书指定为全量模式:

  1. 写入顶部格式提示:同样先写入 templates/code_material.md 中的格式设置提示。
  2. 写入标题 # 全部代码
  3. 遍历列表中的所有文件,逐个清洗写入,不做截断

6.5 生成后验证(强制门禁 —— 必须全部通过)

[!IMPORTANT] 验证是强制门禁:任何一项不通过都禁止标记代码文档生成任务为完成。 必须立即执行修复措施,直到所有项目通过为止。

生成代码文档后,立即执行以下验证:

验证任务:
1. 使用 wc -l 统计实际生成的行数
2. 计算实际页数 = 总行数 ÷ 53
3. 检查是否达标(所有项必须通过)
4. 输出验证报告

验证报告模板

## 代码文档生成验证报告

| 验证项 | 目标值 | 实际值 | 状态 |
|--------|--------|--------|------|
| 前部代码行数 | ≥ 1590 行 | {Actual_Front_Lines} 行 | {✅/❌} |
| 后部代码行数 | ≥ 1590 行 | {Actual_Back_Lines} 行 | {✅/❌} |
| 总源代码行数 | ≥ 3180 行 | {Total_Lines} 行 | {✅/❌} |
| 预估总页数 | ≥ 60 页 | {Total_Lines ÷ 53} 页 | {✅/❌} |
| 首页内容 | 入口代码 | {是/否} | {✅/❌} |
| 末页内容 | 自然结束 | {是/否} | {✅/❌} |
| 敏感信息过滤 | 无版权信息 | {是/否} | {✅/❌} |
| 空行过滤 | 无纯空行 | {是/否} | {✅/❌} |

### 验证结论
{全部通过 ✅ / 存在问题需要修正 ❌}

验证失败强制处理流程

IF 任意验证项为 ❌:
    1. 分析不达标原因
    2. 确定修复方案:
       - 行数不足 → 返回 6.3.1 自动补充机制,添加更多文件
       - 空行未过滤 → 重新执行代码清洗
       - 敏感信息未过滤 → 重新执行敏感信息过滤
    3. 重新生成代码文档
    4. 再次执行验证
    5. 重复上述步骤直到 ALL 验证项为 ✅

ONLY WHEN 所有验证项为 ✅:
    → 允许标记代码文档生成任务完成
    → 允许通知用户生成成功

6.6 最终检查清单(所有项必须勾选)

  • 确认第 1 页是入口代码(main/index/app)
  • 确认前 30 页行数 ≥ 1590 行
  • 确认后 30 页行数 ≥ 1590 行
  • 确认结束处是自然结束代码
  • 确认没有任何 Copyright 或人名信息
  • 确认代码中没有空行(紧凑排版)
  • 验证报告所有项为 ✅

文件名

{软件名称}_代码文档.md


第七步:生成使用说明书(基于规划书)

核心逻辑:遍历《软著规划书.md》中的功能模块清单,按复杂度级别写作规范逐个展开描述。

7.1 读取规划书与准备

  1. 读取 软著规划书.md,提取 5.1 用户端功能5.2 管理端功能 清单。
  2. 识别每个模块的复杂度(简单/中等/复杂)和对应代码路径
  3. 读取模板:templates/user_manual.md

7.2 逐模块生成流程

核心原则:像素级 UI 还原 + 业务逻辑串联。不能只写“功能介绍”,必须写“使用流程”。

准备工作: 准备两个内容块变量:User_Content_BlockAdmin_Content_Block

对清单中的每个模块,执行以下深度扫描与生成步骤:

  1. 读取源码(强制 UI 优先)

    • 读取该模块对应的 UI 界面代码(.vue, .wxml, .jsx 等)。
    • 如果源码引用了子组件,必须推断子组件的含义,或者有条件时进一步查看子组件。
  2. 深度解析 UI(像素级扫描): 你必须要在脑海中构建出页面画面,提取所有可见元素:

    • 交互控件:提取所有 Button(文案是什么?)、Input(Placeholder是什么?)、Select(选项有哪些?)、Checkbox/Switch。
    • 展示信息:提取页面展示的关键字段(如:订单号、金额、红色高亮的状态文字)。
    • 反馈机制:提取 Toast 提示、Modal 弹窗、Validator 错误红字。
  3. 关联业务逻辑

    • 如果代码中调用了 API(如 api.submitOrder()),根据 API 命名推断后台发生了什么(如:扣减库存、创建记录)。
  4. 生成详细内容: 基于上述提取的信息,编写详细的操作步骤。绝不允许一笔带过(例如:“用户填写信息后提交”是不合格的)。

    合格示例

    “用户在界面顶部点击‘筛选’按钮,在弹出的下拉菜单中选择‘已发货’状态。列表自动刷新后,用户找到目标订单,点击右侧红色的‘确认收货’按钮。系统弹出二次确认弹窗‘是否确认收到商品?’,用户点击‘确定’后,系统提示‘操作成功’并自动跳转至评价页面。”


7.3 生成策略与写作规范(严格执行)

A. 复杂度分级策略

维度复杂功能中等功能简单功能
功能概述100-150 字 (3-5句)60-100 字 (2-3句)30-50 字 (1-2句)
操作步骤详细展开 (含前置/异常)标准步骤简洁步骤
使用场景必须有 (2-3个)推荐有 (1-2个)可省略
功能特点3-5 个2-3 个1-2 个

B. 模块结构规范

每个功能模块必须严格遵循以下 Markdown 结构:

#### {模块名称}

**功能概述**
{第一句核心目的}...{最后一句价值}。

**操作步骤**

1. **{步骤标题}**
   {前置条件} 用户{动作描述},系统{响应描述}。
   - {细节补充}

2. **{步骤标题}**
   ...

**使用场景** (复杂/中等功能必需)
- **场景一**:{用户}在{背景}下,通过{操作}达到{目的}。

**功能特点**
- **特点名称**:{特点说明}

7.4 关键写作要求(红线规则)

  1. 拒绝冷冰冰

    • ❌ "点击提交按钮。"
    • ✅ "用户确认信息无误后,点击'提交'按钮,系统将自动验证数据并保存。"
  2. 强化逻辑闭环

    • 必须遵循 前置条件 -> 用户动作 -> 系统响应 -> 后续状态 的链条。
    • 使用 "首先"、"接着"、"随后"、"完成后" 等连接词。
  3. 拒绝简略描述(详细化要求)

    • 错误示范:“进入页面,填写信息,点击保存。”(太简略,不知道填了什么,点了哪个按钮)
    • 正确示范(需包含 UI 细节): “用户进入个人中心,点击头像下方的‘编辑资料’图标。在编辑页面中,用户可以点击头像区域触发‘更换头像’弹窗,选择本地图片上传;随后在‘昵称’输入框中修改名称(支持 emoji)。修改完成后,点击底部深蓝色的‘保存修改’长按钮,若格式正确,顶部弹出‘保存成功’绿色提示条。”
  4. 能够反映业务深度

    • 结合代码逻辑,描述数据流转。例如不只是“点击支付”,而是“点击支付唤起微信收银台,支付成功后系统自动扣除优惠券并生成核销码”。

7.5 生成后验证与处理

生成使用说明书后,必须执行以下检查:

验证清单

  • 用户端是否包含 ≥ 5 个模块?
  • 管理端是否包含 ≥ 3 个模块?
  • 复杂模块是否有"使用场景"?
  • 简单模块描述是否清晰完整?
  • 是否消除了所有 {占位符}
  • 描述是否包含"系统响应"?

验证不通过处理

  • 如果字数不足或描述过于简单,必须重新生成该模块。
  • 如果缺少模块,从规划书中补充更多模块。

7.6 最终检查清单

  • 确认文档结构完整
  • 确认所有占位符已替换
  • 确认截图位置已标记

文件名

{软件名称}_使用说明书.md

7.7 组装与最终生成(关键)

  1. 读取模板:读取 templates/user_manual.md 的完整原始内容。

  2. 清洗示例内容(核心步骤)

    • 清除用户端示例:保留 ### 1.1 用户端功能 标题,但删除该标题之后、### 1.2 管理端功能 标题之前的所有内容(包括模板中的 "1.1.1 注册登录"、"1.1.2 商品浏览" 等所有示例章节)。
    • 清除管理端示例:保留 ### 1.2 管理端功能 标题,但删除该标题之后、## 附录 标题之前的所有内容(包括模板中的 "1.2.1 管理员登录"、"1.2.2 商品管理" 等所有示例章节)。
  3. 执行组装

    • ### 1.1 用户端功能 标题下方,插入生成的 User_Content_Block
    • ### 1.2 管理端功能 标题下方,插入生成的 Admin_Content_Block
    • 替换全文中的 {软件名称}, {版本号}, {编制日期} 等基本信息占位符。
    • 保留:文档头部信息、版权声明(如有)、以及 此处未被删除的附录部分
  4. 保存文件

    • 将组装好并替换完成的完整内容保存为 {软件名称}_使用说明书.md

7.8 生成提示

✓ 使用说明书已基于模板组装完成
ℹ 已分析项目代码,提取了 {X} 个用户端功能模块和 {Y} 个管理端功能模块
! 请注意:您需要手动补充功能截图,标记为【需补充截图】的位置

第八步:输出与转换

8.1 创建输出目录

默认路径:{项目根目录}/软著资料/

8.2 保存 Markdown 文件

保存以下文件。务必删除模板顶部的 <!-- ... --> 警告块。

  1. {软件名称}_{日期}.md - 软著主文档
  2. {软件名称}_代码文档.md - 代码鉴别材料
  3. {软件名称}_使用说明书.md - 使用说明书框架

8.3 转换为 Word (Pandoc)

  1. 检测 Pandoc: 运行 pandoc --version 检查是否安装。

  2. 执行转换: 如果检测到 pandoc,必须将代码文档转换为 .docx 格式。可选将使用说明书也转换。

    # 必须转换:代码文档
    pandoc "{交付目录}/{软件名称}_代码文档.md" -o "{交付目录}/{软件名称}_代码文档.docx"
    
    # 可选转换:使用说明书(方便用户直接插入截图)
    pandoc "{交付目录}/{软件名称}_使用说明书.md" -o "{交付目录}/{软件名称}_使用说明书.docx"
    

    提示:若不使用 Pandoc,也可通过 Typora、VS Code Markdown PDF 插件等方式导出 Word/PDF 格式。

8.4 生成完成提示

## ✓ 软著资料生成完成

已在以下目录生成资料:
📁 {输出目录路径}

📄 文件清单:
1. {软件名称}_{日期}.md - 软著主文档
2. {软件名称}_代码文档.docx - 代码文档 (请在此文件中调整排版)
3. {软件名称}_代码文档.md - 代码文档 (源文件)
4. {软件名称}_使用说明书.md - 使用说明书框架

📝 后续操作

1. 调整代码材料格式 (重要)

打开 {软件名称}_代码文档.docx

  • 全选全文,将字体调整为 小六号 / 8号(或更小)。
  • 确保调整字体后,每一页的代码行数 不少于 50 行
  • 设置页眉:在 Word 中双击页眉区域,添加 {软件名称} {版本号}第 X 页,确保与提示一致。

2. 补充使用说明书截图

打开 {软件名称}_使用说明书,在标记为【需补充截图】的位置添加功能截图。

3. 提交材料

所有材料需加盖公章(如为公司申请)。


#### 8.5 清理临时文件(重要)

1. **识别临时文件**:
   - 仅查找本次生成过程创建的临时文件,统一使用前缀命名(如 `tmp_softcopy_*.txt`、`tmp_softcopy_*.md`)。

2. **执行清理**:
   - 仅删除匹配 `tmp_softcopy_*` 前缀的临时文件。
   - **严禁删除**:`{软件名称}_代码文档.docx`、`*.md` 以及任何最终交付物。**务必保留 Word 文档**。

---

## 重要提示

### 技术特点描述参考

可从以下角度描述:

- 架构设计(前后端分离、微服务、分布式等)
- 性能优化(缓存机制、负载均衡、并发处理等)
- 安全性(数据加密、身份认证、权限管理等)
- 用户体验(响应式设计、实时更新等)
- 数据处理(大数据分析、数据可视化等)
- 跨平台支持(多端兼容、小程序/Web/App 等)

### 代码提取注意事项

- 优先选择 `.js`, `.vue`, `.go`, `.php`, `.java`, `.py` 等源代码文件
- 排除 `node_modules/`, `vendor/`, `.git/`, `dist/`, `build/`, `test/` 等目录
- 可保留功能性注释;应移除版权声明、作者姓名、联系方式等敏感信息
- 确保代码连续性,避免中途跳转

---

## 错误处理

### 如果找不到项目文档

- 提示用户项目缺少文档,建议先创建 `README.md` 或 `contexts/context.md`
- 询问用户是否可以口头描述项目功能,由你记录后生成

### 如果无法识别技术栈

- 列出发现的文件类型
- 请用户确认使用的技术栈

### 如果代码量过少

- 提示用户源程序量较少,可能不符合软著申请要求(通常需要 3000 行以上)
- 询问是否继续生成

---

## 模板引用

执行时使用以下模板文件:

- `{SKILL_DIR}/templates/planning_doc_template.md`
- `{SKILL_DIR}/templates/main_doc.md`
- `{SKILL_DIR}/templates/user_manual.md`
- `{SKILL_DIR}/templates/code_material.md`

---

## 断点恢复机制

本 Skill 执行流程较长,为防止中断导致丢失进度,每完成一个主要阶段后,自动将进度写入 `{输出目录}/.progress.json`:

```json
{
  "current_step": 5,
  "completed_steps": [1, 2, 3, 4],
  "last_updated": "2024-06-15T10:30:00",
  "outputs": {
    "planning_doc": "软著规划书.md",
    "main_doc": null,
    "code_doc": null,
    "user_manual": null
  }
}

恢复逻辑:每次启动时,检查 {输出目录}/.progress.json 是否存在。若存在且 completed_steps 不为空,询问用户是否从上次中断处继续(跳过已完成的步骤),还是重新开始。


总结

此 Skill 的核心流程:

  1. 信息收集:询问用户软件名称、单位等基本信息
  2. 规划先行:分析项目结构,生成《软著规划书》并计算代码页数
  3. 用户确认:展示规划书,确认功能模块和文件清单无误
  4. 执行生成:基于规划书的数据,精确生成三份核心材料
  5. 质量验证:生成的每份文档都经过清洗规则和质量标准的自动验证
  6. 后续指导:提示用户补充截图

核心思想:通过"规划书"将复杂的生成任务解耦,确保源代码行数达标、功能描述详实。

确保每个步骤都清晰告知用户进度,遇到不确定的信息主动询问。

What ships with it: 8 files

30.0 KB alongside SKILL.md

Keep looking

Skills are one crate of 326,970. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.