Generate guided Chinese software copyright application materials from a real project. Use this skill when the user asks for 软件著作权, 软著申请资料, 软著代码材料, 操作手册, 申请表信息, or wants Word/TXT materials for software copyright registration. The workflow analyzes the imported project, extracts real source code, creates Markdown drafts for user confirmation, then uses a pinned OfficeCLI backend to produce final Word documents and TXT.
92%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
这个 skill 生成可审阅、可追溯的软著申请资料。核心原则:
软件著作权申请资料/。不要默认写到 /tmp、/private/tmp 或其他临时目录。软件著作权申请资料/正式资料/,不要散落在输出目录根部。草稿/申请表信息.md 的“软件全称”字段一致;正式生成时以已确认的申请表软件全称为准。草稿/申请表信息.md 的“版本号”字段一致;正式生成时以已确认的申请表版本号为准。草稿/业务理解.md/json,理解软件业务、行业、目标用户、核心价值和操作流程。一、相关文档,不得使用 (1)、相关文档。相关文档必须用表格指向总体设计、详细设计、测试案例等配套文档。正文尽量使用连续段落,不使用项目符号列表或 1. 2. 3. 编号列表。草稿/操作手册自检记录.md 和 草稿/操作手册自检记录.json,记录初稿、按项目流程扩写、去制式表达等自检轮次;如果前 3 轮仍发现问题,必须继续补写修正,直到问题清零或记录无法自动修复的原因后再停止。playwright-cli 是否可用;如果用户说现在不截图、先跳过截图或截图失败,操作手册仍必须保留清晰可见的截图预留位置,正式 Word 中也要能看到。/theme + raw-set 把主题字体统一为宋体(SimSun)和 Times New Roman,并重新读取主题确认 Calibri、Calibri Light、等线等默认主题字体已消失。1.0.151,运行时必须设置 OFFICECLI_SKIP_UPDATE=1,不得静默升级、静默安装或回退到 python-docx/Pandoc/.NET 工具包。references/officecli_backend.md。开始执行前,从当前已加载的 SKILL.md 位置取得本 skill 的绝对目录,记为 <SKILL_DIR>;找到可用的 Python 3.10+ 解释器,记为 <PYTHON>。下面命令中的尖括号是必须替换的占位符,不要依赖 ${CLAUDE_SKILL_DIR} 等某个 agent 专属环境变量,也不要把占位符原样交给 shell。
按当前阶段读取对应参考资料,不要一次性把所有内容都塞入上下文:
凡是涉及用户选择、确认或补充信息的阶段,必须先停止当前执行,不得继续调用下一步脚本。即使处于自动审核、自动继续或无人值守模式,也必须把 STOP_FOR_USER 和 NEXT_ACTION 原样告知用户,并等待用户输入后再继续。
禁止使用“用户未选择则默认继续”的逻辑。用户回复确认后,先用确认脚本记录对应门禁,再进入下一阶段:
<PYTHON> "<SKILL_DIR>/scripts/confirm_stage.py" --workdir 软件著作权申请资料 --stage <阶段名> --note "<用户确认内容>"必须停住的门禁:
environment:OfficeCLI 缺失时必须由用户确认全局安装并在安装后重启 Codex;版本不匹配时,用户必须切换固定版本或明确承担使用未经验证版本的风险。project:存在多个项目候选目录时,用户必须指定项目目录。business:草稿/业务理解.md 生成后,用户必须确认行业、目标用户、核心功能和申请口径。application-fields:草稿/申请表信息.md 生成后,用户必须补全并确认硬件、系统环境、著作权人、日期等字段。code-selection:草稿/代码文件选择.json 生成后,用户必须确认或修改抽取文件。screenshot-method:操作手册截图前,用户必须在 Playwright CLI 自动截图、用户自行截图两种方式中选择一种;如果用户明确说“现在不截图/先跳过截图”,记录为 skip。markdown:全部 Markdown 草稿完成后,用户必须确认可以进入 Word/TXT 生成。一开始先在当前工作目录创建输出目录并检查运行能力:
<PYTHON> "<SKILL_DIR>/scripts/check_environment.py" \
--out-dir 软件著作权申请资料输出:
软件著作权申请资料/环境检查.md软件著作权申请资料/环境检查.json环境检查必须告诉用户:
1.0.151。用户选择:
irm https://raw.githubusercontent.com/iOfficeAI/OfficeCLI/main/install.ps1 | iex。安装完成后要求用户重启 Codex;不得在当前任务中假定 PATH 已刷新后继续执行。officecli --version,再重新运行环境检查。只使用 PATH 中的全局命令,不使用 OFFICECLI_PATH、--officecli 或项目内 工具/officecli.exe。environment 门禁,正式生成时显式传入 --allow-untested-officecli。用户回复后记录门禁:
<PYTHON> "<SKILL_DIR>/scripts/confirm_stage.py" \
--workdir 软件著作权申请资料 \
--stage environment \
--note "<用户选择>"不要等到最后验证阶段才发现 OfficeCLI 不可用;这个信息必须在流程开始时给出。
用户通常会把项目放在当前文件夹下。先扫描当前目录,避开本 skill、自身输出目录、node_modules、构建产物和隐藏目录,找到最可能的项目根目录。
如果有多个候选项目,必须停止并询问用户选择;如果只有一个明显候选项目,可以直接使用。
运行:
<PYTHON> "<SKILL_DIR>/scripts/analyze_project.py" \
--project <项目目录> \
--out 软件著作权申请资料/analysis/project.json分析内容包括:
package.json、README、脚本命令、依赖在写申请表和操作手册前,先让脚本收集项目证据:
<PYTHON> "<SKILL_DIR>/scripts/generate_business_context.py" \
--project <项目目录> \
--analysis 软件著作权申请资料/analysis/project.json \
--software-name "<软件全称>" \
--out-dir 软件著作权申请资料/草稿输出:
草稿/业务理解证据.md草稿/业务理解证据.json草稿/业务理解模型稿模板.json这一步只收集证据,不决定最终业务口径。接下来必须由模型阅读 业务理解证据.md/json、README、PRD/BRD、页面文案、路由、接口、必要源码和用户补充资料,自行判断:
模型不得用脚本关键字表决定行业、功能和结构;不得把用户给的范本文案、测试项目名称、测试项目流程写成通用规则。
模型完成研判后,生成一个业务理解模型稿 JSON,字段至少包含:
product_positioningindustrytarget_userscore_valuebusiness_featuresbusiness_feature_detailsoperation_flowapplication_purposemain_functionstechnical_characteristicsmanual_sectionsmanual_modulessystem_requirementsfaqglossary其中 manual_modules 是操作手册的核心输入,必须按真实页面、导航入口或业务流程填写。脚本不得按 auth/query/form 等分类模板自动补入口、步骤或反馈;缺少 manual_modules 或关键字段时必须停止让模型回到项目证据中补写。每个模块必须包含:
title:页面或流程名称。evidence:对应页面、路由、组件、需求文档或 README 证据。purpose:该页面在软件中的用途。usage 或 usage_scenario:用户在什么业务场景下会使用该页面,正在处理什么具体事务。缺少时不得生成操作手册。entry:用户从哪里进入该页面。visible_elements:用户实际能看到的输入框、按钮、列表、标签、状态或结果区域。operation_steps:按真实页面顺序写用户动作,不能写代码实现。validation_rules:必填项、长度限制、权限、额度、状态、异常提示等规则;没有则留空数组。feedback:操作完成后用户能看到的结果、提示或状态变化。screenshot:截图预留说明。manual_sections 只允许补充当前软件本身的用途、业务场景、页面组织或用户流程,不要写“本操作手册用于……”“面向软著审核……”“不描述代码实现……”这类解释文档写作方式的元话语。最终操作手册应像真实软件说明书,而不是生成过程说明。
然后运行:
<PYTHON> "<SKILL_DIR>/scripts/generate_business_context.py" \
--project <项目目录> \
--analysis 软件著作权申请资料/analysis/project.json \
--software-name "<软件全称>" \
--out-dir 软件著作权申请资料/草稿 \
--model-context <模型生成的业务理解JSON>输出:
草稿/业务理解.md草稿/业务理解.json最终业务理解必须覆盖:
如果项目材料不足、业务类型较新,或用户明确希望参考竞品,可联网搜索相近产品和行业资料;外部调研只用于理解行业表达,不能编造项目不存在的功能。调研摘要应写入业务理解草稿,并区分“项目证据”和“行业参考”。
生成 业务理解.md/json 后必须停止,等待用户确认或修改。业务理解确认前,不得生成申请表和操作手册。如果业务理解仍不充分,先请用户补充产品说明。用户确认后运行:
<PYTHON> "<SKILL_DIR>/scripts/confirm_stage.py" \
--workdir 软件著作权申请资料 \
--stage business \
--note "<用户确认内容>"先读取 application_fields.md,严格按其中的官网字段顺序、枚举、长度和来源口径向用户确认。项目可推断字段可以先给建议值,著作权人、日期、软件全称、版本号和硬件/系统环境必须由用户明确确认;项目版本小于 V1.0 时,询问本次用 V1.0 还是项目当前版本。
特别注意:
草稿/申请表信息.md 为准,并统一用于文件名、页眉、标题和正文。此阶段先停止等待用户输入;收到回复后可整理为 answers JSON 传入申请表草稿生成。申请表字段的最终门禁在 草稿/申请表信息.md 生成后记录。
生成代码材料前,先运行候选文件分析:
<PYTHON> "<SKILL_DIR>/scripts/propose_code_selection.py" \
--project <项目目录> \
--analysis 软件著作权申请资料/analysis/project.json \
--out-dir 软件著作权申请资料/草稿输出:
草稿/代码文件候选清单.md:给用户看的候选说明。草稿/代码文件选择.json:可编辑的选择文件。脚本生成的候选清单只列证据,不默认选择文件。模型必须先阅读业务理解、候选文件、入口文件、页面文件和必要源码,判断哪些源码最能体现软件真实功能和运行逻辑,然后修改 代码文件选择.json:
selected: true 表示抽取该文件。selected: false 表示不抽取该文件。model_reason 必须说明为什么选择该文件。模型选择通常优先考虑前端入口、页面、核心组件、业务交互、数据请求、状态处理等能给审核员看懂软件功能的代码;如果相关前端代码不足 60 页,再补充后端服务、业务处理等相关源码。补充文件同样必须写入 代码文件选择.json 并由用户确认。不要默认抽取全量代码库。代码材料按完整文件抽取并去除纯空行,不支持只抽取某个文件的中间行段。用户确认并记录 code-selection 门禁后,代码抽取只读取 代码文件选择.json 中选中的完整文件。用户确认后运行:
<PYTHON> "<SKILL_DIR>/scripts/confirm_stage.py" \
--workdir 软件著作权申请资料 \
--stage code-selection \
--note "<用户确认内容>"运行代码材料抽取:
<PYTHON> "<SKILL_DIR>/scripts/extract_code_material.py" \
--project <项目目录> \
--analysis 软件著作权申请资料/analysis/project.json \
--selection 软件著作权申请资料/草稿/代码文件选择.json \
--software-name "<软件全称>" \
--version "<版本号>" \
--out-dir 软件著作权申请资料/草稿代码分页规则:
>= 60:生成 代码-前30页.md 和 代码-后30页.md。< 60 且候选源码已用尽:只生成 代码-全部.md。< 60 但候选清单还有可补充源码:停止并要求用户在 代码文件选择.json 中继续选择补充文件。代码提取清单.md 和 代码提取清单.json,用于追溯代码来源。代码提取清单.json 的 outputs,不得因为目录里残留旧文件而额外生成材料。生成申请表信息草稿:
<PYTHON> "<SKILL_DIR>/scripts/generate_application_info.py" \
--analysis 软件著作权申请资料/analysis/project.json \
--code-manifest 软件著作权申请资料/草稿/代码提取清单.json \
--business-context 软件著作权申请资料/草稿/业务理解.json \
--software-name "<软件全称>" \
--version "<版本号>" \
--out-dir 软件著作权申请资料/草稿生成后必须停止,让用户检查并补全 草稿/申请表信息.md。字段补全并确认后运行:
<PYTHON> "<SKILL_DIR>/scripts/confirm_stage.py" \
--workdir 软件著作权申请资料 \
--stage application-fields \
--note "<用户确认内容>"生成操作手册草稿:
<PYTHON> "<SKILL_DIR>/scripts/generate_manual_draft.py" \
--analysis 软件著作权申请资料/analysis/project.json \
--business-context 软件著作权申请资料/草稿/业务理解.json \
--software-name "<软件全称>" \
--version "<版本号>" \
--out-dir 软件著作权申请资料/草稿操作手册草稿不得照抄用户提供的范本文案或旧项目内容,但应吸收其结构特点:先写相关文档、说明、功能特点和系统要求,再按真实页面或核心流程逐章说明操作,最后写常见问题解答和术语表。一级章节标题使用中文大写序号;相关文档章节必须是表格;功能特点和页面操作章节必须以段落展开,不用项目符号和编号列表堆信息。必须基于模型写入 草稿/业务理解.json 的 manual_modules 组织章节;manual_sections 只用于补充说明性段落,不应用来反复插入同一批功能模块。各功能章节必须写清页面用途、进入位置、用户看到的控件和数据、实际操作、输入限制或异常提示、操作结果和截图预留。语言要面向普通用户,说明“这个页面是干嘛的、用户怎么进入、用户点什么/填什么、操作后看到什么”,不要写代码实现、框架名称、接口封装、状态管理、异步队列等技术细节。撰写时由 agent 自行检查章节是否完整、内容是否过薄、语言是否过于技术化,并在草稿内部完成必要补写;完整草稿完成后只让用户做一次整体确认,确认前不得进入正式 Word/TXT 生成。
生成脚本必须同时写出 草稿/操作手册自检记录.md 和 草稿/操作手册自检记录.json。自检记录至少包含:
操作手册的模块写作必须从 草稿/业务理解.json 的行业、目标用户、核心价值、业务功能、典型操作流程和 manual_modules 出发。不同模块要写出各自的业务作用、入口、控件、规则和反馈,不能统一套用“进入页面、填写内容、提交按钮、查看结果”的固定句式,也不能使用“进入方式:/页面内容:/操作步骤:/操作规则:/操作结果与反馈:”这类字段标题;相近模块也要结合项目真实业务区分各自的操作目的和结果。自检时必须检查是否把同一批模块在多个章节中重复展开;如发现重复,改为每个真实页面或流程独立成章。不得把测试项目的功能名称、业务流程或示例文案写成通用规则。
操作手册草稿完成后,先停止并让用户选择截图方式,必须给出两种选项:
软件著作权申请资料/截图原始/。软件著作权申请资料/用户截图/,agent 只负责整理和引用。如果用户明确说“现在不截图”“先跳过截图”“这次不截图”,也必须记录截图方式门禁,方法填 skip。跳过截图不阻塞正式资料生成,但操作手册中每个核心功能模块必须保留可见的截图预留文字,例如:【截图预留:请在此处插入“项目管理”页面或操作结果截图。】。不要使用 HTML 注释作为截图占位,因为正式 Word 中看不到。
用户选择后,先记录门禁:
<PYTHON> "<SKILL_DIR>/scripts/confirm_stage.py" \
--workdir 软件著作权申请资料 \
--stage screenshot-method \
--method <playwright-cli|user-supplied|skip> \
--note "<用户选择>"然后按用户选择检查当前能力并执行:
截图原始/ 下可读取且非空的本地图片文件。软件著作权申请资料/用户截图/,提示用户把截图文件放入该目录;用户按操作手册模块顺序给文件名添加数字前缀后,运行下面的整理命令,把图片复制到 软件著作权申请资料/截图/ 并生成有序的 截图清单.json。数字前缀按数值排序,因此 2-主页.png 会排在 10-设置.png 前面。截图文件准备好后必须运行整理脚本,生成正式构建会读取的 截图/截图清单.json。Playwright CLI 自动截图把 --input-dir 指向 截图原始/、--method 设为 playwright-cli;用户自行截图则指向 用户截图/:
<PYTHON> "<SKILL_DIR>/scripts/capture_screenshots.py" \
--input-dir 软件著作权申请资料/用户截图 \
--out-dir 软件著作权申请资料/截图 \
--method user-supplied截图成功后无需手工修改 草稿/操作手册.md:正式生成脚本会按 截图清单.json 中的顺序,把可用图片依次替换到操作手册的可见截图预留位置,再通过 OfficeCLI picture 元素写入 Word。图片少于预留位时保留未匹配提示;图片多于预留位、文件缺失或格式不支持时在生成报告中说明。截图失败或用户选择暂不提供截图时,继续生成带截图预留位的文字版。
生成 Word 前,必须让用户确认 软件著作权申请资料/草稿/ 下的 Markdown。
重点检查:
申请表信息.md 的“软件全称”一致申请表信息.md 的“版本号”一致申请表信息.md 的“软件全称”和“版本号”业务理解.md 是否准确反映软件真实业务、行业和目标用户申请表信息.md 中“待用户确认”的字段是否已确认用户确认后,必须记录 markdown 门禁;未记录时不得生成正式 Word/TXT。
确认脚本会为业务理解、代码选择、申请表和最终草稿记录内容指纹。任何已确认文件在确认后又发生修改,对应门禁立即失效,必须让用户查看变化并重新确认;不能沿用旧的确认布尔值。最终确认前还必须检查代码提取清单、当前代码 Markdown、申请表、操作手册和操作手册自检记录全部存在,且没有与当前代码输出模式冲突的旧草稿。
<PYTHON> "<SKILL_DIR>/scripts/confirm_stage.py" \
--workdir 软件著作权申请资料 \
--stage markdown \
--note "<用户确认内容>"用户确认后运行:
<PYTHON> "<SKILL_DIR>/scripts/build_docx_from_md.py" \
--workdir 软件著作权申请资料 \
--software-name "<软件全称>" \
--version "<版本号>"正式生成脚本必须重新读取 草稿/申请表信息.md 中已确认的“软件全称”和“版本号”,并用它们生成正式资料文件名、代码 Word 页眉和操作手册 Word 页眉。操作手册页眉必须与代码材料页眉格式一致:左侧为“软件全称 版本号”,右侧为“第 <页码> 页”。若命令参数 --software-name / --version 与申请表字段不同,以申请表字段为准,并在 正式资料/生成报告.md 中记录提示。
生成脚本通过 OfficeCLI 原子 batch 写入 DOCX,并关闭自动更新与后台 resident。代码草稿中的每个物理行对应一个 Word 段落;超过 90 显示列的源码行在抽取阶段确定性折行,避免 Word 因代码宽度再次换行而造成页数漂移。所有代码段落连续写入正文,不设置 pageBreakBefore,最终分页由 Word 排版引擎自动完成;草稿中的页分组只用于选材量估算。不要启用 Word 自动行号替代源码行处理。
正式生成只处理 草稿/代码提取清单.json 的 outputs 中声明的代码 Markdown,并清理当前软件名下与本次模式冲突的旧代码 DOCX。不能遍历目录后把前 30 页、后 30 页和全部代码三种旧文件一起输出。
输出:
正式资料/申请表信息.txt正式资料/<软件全称>-代码(前30页).docx正式资料/<软件全称>-代码(后30页).docx正式资料/<软件全称>-代码(全部).docx正式资料/<软件全称>_操作手册.docx正式资料/生成报告.md至少执行三轮验证并修复发现的问题:
业务理解.md 和项目文档。可用命令:
<PYTHON> -m compileall -q "<SKILL_DIR>/scripts"
officecli validate <生成的docx> --json
officecli view <生成的docx> issues --json
officecli view <生成的代码docx> stats --page-count --json
officecli view <生成的docx> screenshot --grid auto --render auto -o <预览.png>validate 只证明 OpenXML 结构可读,不能证明分页正确。Windows 且安装 Word 时由 OfficeCLI 使用 stats --page-count 读取自动分页后的真实页数;前 30 页/后 30 页文档必须分别正好 30 页,否则生成失败并要求重新校准选材量,不得改回人工固定分页。其他环境先用 OfficeCLI HTML 预览,再用 Word/WPS 打开最终文件复核页数。只使用 OfficeCLI 后端,不引入其他 DOCX 渲染依赖。
以下场景必须询问并停止,等待用户输入后再继续:
代码文件选择.json。Fokkyp/SoftwareCopyright-Skill
1159f6d
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.