Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

WPS Word Document

v1.0.0

创建或编辑 Word (.docx) 文档。当用户要求生成、导出、下载 Word 文档,或对现有 .docx 编辑时使用本技能。当最终交付物是"文档"且用户未指定格式时(如"生成文档"、"写一份文档"、"帮我做个文档"),默认使用本技能生成 .docx。仅适用于最终交付物,中间生成物的格式不受此约束。

0· 58·0 current·0 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for xixihaha123123123123/wps-docx.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "WPS Word Document" (xixihaha123123123123/wps-docx) from ClawHub.
Skill page: https://clawhub.ai/xixihaha123123123123/wps-docx
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install wps-docx

ClawHub CLI

Package manager switcher

npx clawhub@latest install wps-docx
Security Scan
VirusTotalVirusTotal
Suspicious
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
技能名、描述、SKILL.md 中的工作流与捆绑的脚本(html2docx、edit_docx、office 工具)一致:提供 HTML→DOCX 转换、DOCX 解包/打包/校验和基于 XML 的文本替换等功能。所包含的文件和所需能力与技能目的相称,没有请求不相关的二进制或环境变量。
Instruction Scope
运行说明限定了写入 HTML(通过 start_write_file/end_write_file)并通过 jupyter_cell_exec 调用捆绑的 Python 脚本执行转换/编辑,这与技能目的匹配。但需注意:html2docx 源码导入了 urllib.request(很可能会在转换时下载 HTML 中引用的远程资源,如图片);edit_docx 接受以 @ 开头的 JSON 路径(会读取本地文件),这意味着如果调用时传入不受信任的路径,技能代码可以读取磁盘上的任意可访问文件。SKILL.md 没有明确警告关于网络访问或从任意本地路径加载替换规则的行为。
Install Mechanism
这是指令 + 随包 Python 脚本的技能,没有外部下载或运行不明来源的安装步骤。没有使用 URL 下载或第三方包安装脚本,代码随技能包提供,安装机制低风险。
Credentials
技能不要求任何额外环境变量或凭据。运行示例使用 os.getenv('skill_path') 来定位捆绑脚本,这是平台常见做法。没有发现技能要求与其用途不相称的密钥/令牌。但需要注意技能在运行时会读取提供给脚本的文件路径(INPUT/OUTPUT/可能的 @JSON 路径),应谨慎控制这些路径以避免访问敏感文件。
Persistence & Privilege
技能未设置 always:true,也不会修改其他技能或系统范围配置。它在执行时会读写由用户/代理提供的路径(OUTPUT_ROOT 等),这是其功能所需的最低权限范围。
Assessment
总体上该技能看起来与你要的“生成/编辑 .docx”用途一致:它包含用于 HTML→DOCX 转换和基于 XML 的替换的本地 Python 实现,没有外部下载或不明凭据请求。但在安装/使用前请注意: - 网络访问:html2docx 可能会在转换过程中下载 HTML 中引用的远程资源(例如图片)。如果你不能接受技能在运行时访问网络,请在受控环境中运行或确保 HTML 不包含远程资源。 - 本地文件读取:edit_docx 支持以 "@path" 指定 JSON 替换规则文件,这会让脚本读取磁盘上的该文件。不要向该参数传入敏感文件路径,确保替换规则来源可信。 - 执行环境:SKILL.md 建议通过 jupyter_cell_exec 运行捆绑的脚本——这会在宿主环境执行 Python 代码,请在受信任或隔离的环境中运行该技能,避免在包含敏感文件或凭据的主机上直接执行。 建议操作:先在隔离目录和非敏感示例文档上测试转换与替换流程;检查生成的 docx 内容和外部请求(若监控网络);始终不要向替换输入或脚本参数传入未审查的绝对路径或包含敏感数据的路径。

Like a lobster shell, security has layers — review code before you run it.

documentvk978dn54f1zmfck4fxav70pyv18536jfdocxvk978dn54f1zmfck4fxav70pyv18536jflatestvk978dn54f1zmfck4fxav70pyv18536jfwordvk978dn54f1zmfck4fxav70pyv18536jf
58downloads
0stars
1versions
Updated 1w ago
v1.0.0
MIT-0

DOCX 文档创建与编辑

何时使用

  • 最终交付物为文档且用户未指定格式时,默认生成 .docx
  • 用户明确要求生成、导出、下载 Word 文档
  • 对现有 .docx 做文本替换(正文、页眉、页脚)
  • 解包查看 Word XML 结构并重新打包

注意:任务过程中的中间生成物(如临时数据文件、处理脚本等)不需要使用本技能,格式自由选择。

何时不要使用

  • 批注、回复批注
  • 接受修订或保留修订
  • 大规模样式重构、复杂目录修复、复杂域代码处理

快速参考

任务推荐方式
创建新 .docx写 HTML → html2docx() → 见工作流 A
编辑现有 .docxedit_docx() → 见工作流 B
检查 XML 结构unpack_docx()
重新打包pack_docx()(默认含校验)

工作流 A:创建新文档

流程分三步:根据内容基调设计视觉风格 → 用 start_write_file / end_write_file 编写语义化 HTML → 通过 jupyter_cell_exec工具 执行转换脚本输出 .docx。

第 1 步:分析内容基调,推演视觉风格

在编写 HTML 前,先完成意图识别与风格推演,并将结果直接落实到后续 CSS 中:

  • 色板:根据内容基调设定主标题颜色、正文颜色和弱化文本颜色。轻量级高亮可使用浅色背景。公文、法律声明、严肃通知、学术论文等严肃场景禁止使用彩色,仅使用 #000000#333333
  • 字体:正式报告优先使用衬线体(宋体、仿宋);现代文档或技术文档优先使用无衬线体(微软雅黑、黑体);代码部分使用等宽字体(Consolas);公文场景禁止使用非衬线字体,默认全用宋体或黑体
  • 节奏:设定符合打印和离线阅读的行高(如 1.51.8)、统一段落间距(如 12pt)及章节留白

第 2 步:用 start_write_file / end_write_file 编写 HTML 文件

强制规则:必须使用 start_write_file + end_write_file 写入 HTML 文件。禁止通过 Python 代码生成 HTML 内容。 HTML 内容应由你直接以文本形式输出,以充分发挥 LLM 的长文本生成能力和排版能力。

  1. 调用 start_write_file(path="<OUTPUT_ROOT>/<文档名>.html") 开启写作模式
  2. 直接以 <!DOCTYPE html> 开头输出完整 HTML(禁止使用 ```html 等 markdown 代码围栏包裹,直接输出原始 HTML 内容)
  3. 输出完毕后调用 end_write_file() 保存文件

生成 HTML 时,提示词正文按以下约束执行:

  • 适用范围:本规范仅适用于经 html2docx() 转为 Word 文档的 HTML 源文件,不适用于其他场景的 HTML 写作
  • 角色目标:根据用户输入指令,生成专门用于转换为 .docx 文件的单文件 HTML 源文件,要求结构严谨、内容生动、具备专业美感,并适配 Word 离线阅读场景
  • 核心目标:深入理解用户输入内容的意图、受众和情感基调,量身定制符合 Word 渲染逻辑的视觉呈现方案;排版兼顾信息层级秩序与文档正式感,确保转换为 .docx 后仍具备良好阅读体验

Technical Constraints(Word 渲染限制,必须绝对遵守):

  • 禁用现代布局:绝对不可使用 Flexbox(display: flex)、CSS Grid(display: grid)、floatposition: absoluteposition: fixed;若需左右分栏或复杂对齐,必须且只能使用无边框表格:<table border="0" cellpadding="0" cellspacing="0">
  • 禁用现代 CSS 特性:绝对不可使用 CSS 变量(var(--xxx))、calc()clamp()、伪类(如 :hover)、transition、媒体查询(@media
  • 安全单位与颜色:字体大小和行高必须使用 ptpx,缩进和间距可使用 em;颜色值必须使用确定的 Hex 值,如 #000000,不可使用 rgba()hsla()
  • 字体声明机制:必须使用标准 CSS 的字体回退机制,并严格遵守“先英文字体,后中文字体”的声明顺序,例如 font-family: Arial, "Microsoft YaHei", SimSun, sans-serif;

语义化重组与内容强化:

  • HTML 必须包含完整 <!DOCTYPE html><html><head><body> 结构,且头部必须声明 <meta charset="UTF-8">
  • 严格按信息层级分配 h1h6,为 Word 自动目录做好结构化准备
  • 在不改变核心原意的前提下优化可读性:长段落中的关键结论可独立抽取并使用 <blockquote> 包裹,配合左侧粗边框(border-left)和极浅背景色强调;公文等严肃文档不宜使用此样式
  • 将松散短句归纳为 <ol><ul> 列表,并保持列表项间距适中
  • 识别专业术语、代码片段、按键,使用 <code> 标签包裹,并设置浅灰背景、圆角及等宽字体

Word 兼容 CSS 构建:

  • CSS 仅允许写在 <head><style> 标签内,尽量使用标签选择器或单层类选择器,避免复杂嵌套
  • 如内容基调需要传统中文排版,可使用 text-indent: 2em; 处理首行缩进
  • 如需使用表格,必须通过 CSS 设置 border-collapse: collapse;,并为 thtd 设置明确边框与内边距,例如 border: 1px solid #dddddd; padding: 8px;

Output Constraints:

  • 必须输出单文件 HTML,包含完整 <!DOCTYPE html><head>(含内联 <style>)和 <body>
  • 严肃文档必须基于事实创作,禁止编造数据、KPI、日期、公司名、电话、邮箱、论文引用等
  • 文档内容需根据用户需求和上下文灵活调整文体,禁止生搬硬套和假大空
  • 用户如明确限制字数、字体、排版、演讲时长等要求,必须严格遵循

第 3 步:执行转换脚本(仅用于 HTML → DOCX 转换)

jupyter_cell_exec工具 仅用于调用 html2docx 转换脚本,不要用它来生成或写入 HTML 内容。

通过 jupyter_cell_exec工具 执行以下代码:

import sys, os
sys.path.insert(0, os.path.join(os.getenv('skill_path'), 'docx', 'scripts'))
from html2docx import html2docx

result = html2docx(input_html="<OUTPUT_ROOT>/report.html", output_docx="<OUTPUT_ROOT>/report.docx")  # 此处填写 OUTPUT_ROOT 完整路径
print(result)

路径规则:

  • html2docx() 的两个参数需要填写 OUTPUT_ROOT 前缀的完整绝对路径

函数签名:

参数类型说明
input_htmlstr输入 HTML 文件路径
output_docxstr输出 DOCX 文件路径

返回值: dict,必须检查 result["ok"] 判断转换是否成功。

# 成功
{"ok": True, "output_path": "...", "message": "转换成功,文件大小 123.4 KB"}
# 失败
{"ok": False, "output_path": "...", "message": "转换失败: ..."}

纯 Python 实现(BeautifulSoup + python-docx),无需 Selenium 或 Chrome。

工作流 B:编辑现有文档

1. 基础文本替换

通过 edit_docx() 完成,内部流程:解包 → 合并相邻同样式 run → 文本替换 → 重打包 → 校验。通过 jupyter_cell_exec工具 执行:

import sys, os
sys.path.insert(0, os.path.join(os.getenv('skill_path'), 'docx', 'scripts'))
from edit_docx import edit_docx

result = edit_docx(
    input_docx="<OUTPUT_ROOT>/input.docx",
    output_docx="<OUTPUT_ROOT>/output.docx",
    replacements=[
        {"from": "旧公司名称", "to": "新公司名称"},
        {"from": "2024年", "to": "2025年"},
    ],
)
print(result)

参数:

参数类型默认值说明
input_docxstr输入文件完整路径
output_docxstr输出文件完整路径
replacementslist[dict]替换规则列表,每项含 "from""to"
partslist[str] | NoneNone要处理的 XML 部件(支持 glob),默认 document.xml + header*.xml + footer*.xml
match_modestr"literal""literal" 精确匹配 或 "regex" 正则匹配
ignore_caseboolFalse是否忽略大小写

返回值结构:

{
    "ok": True,                         # 校验是否通过
    "input_path": "...",
    "output_path": "...",
    "match_mode": "literal",
    "ignore_case": False,
    "files_modified": ["word/document.xml"],
    "replacements_applied": [           # 每条规则的命中次数
        {"from": "旧公司名称", "to": "新公司名称", "count": 3},
    ],
    "validation": {"ok": True, "errors": [], "warnings": []},
}

正则替换示例:

import sys, os
sys.path.insert(0, os.path.join(os.getenv('skill_path'), 'docx', 'scripts'))
from edit_docx import edit_docx

result = edit_docx(
    input_docx="<OUTPUT_ROOT>/input.docx",
    output_docx="<OUTPUT_ROOT>/output.docx",
    replacements=[{"from": r"Q([1-4]) 2024", "to": r"Q\1 2025"}],
    match_mode="regex",
    ignore_case=True,
)
print(result)

2. 低层 XML 编辑

如果 edit_docx() 替换命中数为 0,通常是目标文本被 Word 拆成了多个 XML run。可退回低层工具链手动处理:

import sys, os
from pathlib import Path

sys.path.insert(0, os.path.join(os.getenv('skill_path'), 'docx', 'scripts'))
from office.unpack import unpack_docx
from office.pack import pack_docx

source = Path("<OUTPUT_ROOT>/input.docx")
unpacked = Path("<OUTPUT_ROOT>/input_unpacked")
output = Path("<OUTPUT_ROOT>/output.docx")

unpack_docx(source, unpacked)   # 解包并合并相邻同样式 run
# 用 jupyter_cell_exec工具 读取并修改 unpacked/word/*.xml
pack_docx(unpacked, output)     # 重打包(默认含校验,失败会抛 ValueError)

重点文件:

  • word/document.xml:正文
  • word/header*.xml:页眉
  • word/footer*.xml:页脚
  • word/styles.xml:样式

编辑规则

  • edit_docx() 是基础文本替换工具,不负责批注、修订和复杂域代码
  • 解包时会合并相邻的同样式 run,提高文本替换命中率
  • 对于被 Word 拆成复杂片段的文本,退回 unpack_docx() 手动处理
  • pack_docx() 会自动修复常见的 XML 空白属性和 durableId 溢出问题

Troubleshooting

问题处理方式
FileNotFoundError检查路径是否使用了 OUTPUT_ROOT 完整前缀
缺少依赖 beautifulsoup4pip install beautifulsoup4
replacements_applied 中某项 count 为 0unpack_docx() 检查目标文本是否被拆成多个 XML run
DOCX 验证失败检查修改过的 XML 文件是否有语法错误
flex/grid 布局错位转换器将 flex/grid 降级为表格,简化布局结构或改用扁平 HTML
输出样式丢失确认 CSS 选择器命中正确;复杂嵌套选择器可能不被支持,改用类选择器或标签选择器
中文乱码确认 HTML 头部有 <meta charset="UTF-8">

资源

文件用途
skills/docx/scripts/html2docx.pyHTML → DOCX 转换主入口(html2docx()
skills/docx/scripts/edit_docx.pyDOCX 文本替换编辑
skills/docx/scripts/office/unpack.py解包 DOCX 为 XML 目录
skills/docx/scripts/office/pack.py重打包 XML 目录为 DOCX
skills/docx/scripts/office/validate.pyDOCX 结构校验
skills/docx/scripts/office/_shared.py底层 XML 读写与命名空间工具

Comments

Loading comments...