mcpField
P
polish-prose

polish-prose

github.com/shaishavmaisuria文档处理57107 次安装4 天前更新
代码仓库

关于 polish-prose

polish-prose 是帮助研究者润色论文、同时保留技术内容的写作审阅技能。它标记文风问题和术语不一致,提供需经作者批准的修改建议,并检查数字与引用未发生变化。

主要功能

  1. 01检测 AI 风格和冗赘表达
  2. 02检查术语与缩写的一致性
  3. 03以可审阅的差异形式提出修改
  4. 04支持符合投稿场所规范的文风
  5. 05核验数字与引用保持不变

适用场景

  1. 01润色经 LLM 辅助撰写的论文草稿
  2. 02统一稿件中的术语用法
  3. 03调整模糊措辞和贡献陈述
  4. 04投稿前检查论文表达

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/shaishavmaisuria/research-paper-lifecycle-skills --skill polish-prose

安装后在 Claude Code 中输入/polish-prose确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
hedging-and-claims.md
llm-tells.md
venue-register.md
scripts/
prose_lint.py
terminology_check.py
texprose.py

详细介绍

润色行文

将带有 AI 腔调或过度雕琢的草稿,改写成读起来像是出自严谨研究者之手的文字——不改动任何数字、论断或引文。如今,审稿人会识别大模型的行文套路(delve/leverage 之类的词汇、层层堆叠的 Moreover 段落、连串的 em dash、千篇一律的保留措辞),而残留的“Certainly! Here is...”或“[insert citation]”更是足以导致编辑直接拒稿的尴尬。本技能会以确定性方式找出所有这类问题,然后引导人类严谨参与改写:只改表达,不改内容。

适用场景

  • “我的论文读起来像是 ChatGPT 写的”/“让这段文字更像人写的”/“去掉 AI 腔”
  • “删掉那些 AI 常用词”/“它老是说 delve 和 leverage”
  • “收紧/润色我的文字”/“这段太啰嗦了”
  • “调整我的保留措辞”——贡献表述言过其实,或结果被层层“可能”淹没
  • “让我的贡献陈述更主动”(“提出了一种方法……” → “我们提出……”)
  • “我的术语使用一致吗?”(dataset 还是 data set、缩写规范、英式还是美式拼写)
  • 在最终提交检查中,于 preflight-check 之前调用,或在使用任何 LLM 助手大量起草之后调用。

输入

  1. 草稿:.tex 文件(导言区/数学内容/verbatim 内容会自动屏蔽)、.md/.txt 文件,或通过 stdin 粘贴的文本。
  2. 可选:会议配置文件 venues/conferences/<venue>-<year>.yml(架构见 venues/schema.yml)——提供会议类别,以确定行文规范,并通过 review.llm_policy 说明 AI 使用披露义务。
  3. 可选:项目术语表(每行格式为 canonical term = variant | variant),适用于团队已统一术语的情况。

流程

  1. 先冻结技术内容。 编辑前建立不可触碰清单:每一个数字和单位、每一个 \cite 键、每一项明示结果、数据集名称和系统名称。保存快照:

    grep -oE '[0-9][0-9.,]*\s*(%|\\%|ms|s|GB|MB|x|×)?' draft.tex | sort | uniq -c > /tmp/numbers-before.txt
    

    编辑完成后(第 9 步),同一命令必须生成完全相同的输出。如果润色需要改动某项论断,请停止并告知用户——这是内容决策,不是风格编辑。

  2. 确认会议行文规范和 LLM 政策。 如果提供了会议配置文件,请读取其 family(行文规范见 references/venue-register.md)和 review.llm_policy。依赖该政策之前,务必通过实时的 cfp_url 再次核实——这些政策每一轮都会变化。明确告知用户:润色 AI 辅助生成的文本,并不能免除披露义务。如果会议要求提供 AI 使用声明,请协助撰写诚实的声明;切勿将本技能说成规避披露要求的方法。

  3. 运行检查工具(Python 3,仅使用标准库,不联网):

    python3 scripts/prose_lint.py main.tex
    python3 scripts/terminology_check.py main.tex --allow GPS,SDK
    

    两个工具都接受 .tex、纯文本或表示 stdin 的 -;可使用 --json 输出机器可读结果,使用 --strict 在仍有问题时以退出码 1 退出。退出码:0 表示正常,1 表示严格检查未通过,2 表示输入错误。--allow 会跳过缩写定义检查,适用于所在领域普遍认为人人熟知的缩写;--glossary FILE 则会强制遵循术语表。检查结果是带行号的候选问题,不会自动替换——领域术语可能看起来像问题标记(例如“leverage scores”和“robust statistics”)。

  4. 立即处理 RISK 级问题。 删除聊天机器人痕迹(“As an AI model...”、“Certainly! Here is...”、“[insert X]”)或补全占位内容,不得保留。多个会议会将未披露的大模型输出视为编辑直接拒稿的理由;未填写的占位符也意味着缺少引文——实际的引文需求应交由 verify-citations 处理,绝不可捏造引文。

  5. 编辑阶段 A——词汇和结构特征。 打开 references/llm-tells.md,逐节检查。 对每个 WARN:如果它是领域术语,或确实是最恰当的词,就保留 (偶尔使用没问题,问题在于密度,而非是否出现);否则按改写模式处理。 删除段落链中的 Moreover/Furthermore,打断这种衔接词的连续使用; 如果删除后逻辑不再连贯,说明段落顺序有问题,这一点值得留意。将 多余的 em-dash 改写为独立句子或逗号。以差异形式提出修改建议 (旧文 → 新文,并附行号),只有获得用户批准后才应用。

  6. 编辑阶段 B——弱化措辞与主张。 按照 references/hedging-and-claims.md 调整: 贡献、定义和已完成的操作应去掉弱化措辞 (用「we propose」,而不是「we attempt to propose」);对解释、 概括和局限恰当地保留一处弱化措辞;将双重弱化压缩为一处; 删除强调词(clearly、undoubtedly),要么证据足以支撑主张,要么就不作此主张。 将被动的贡献陈述改写为主动、具体的主张,明确说明新意所在。绝不能 超出论文自身证据所支持的范围强化主张,也绝不能弱化用户测得的结果。

  7. 编辑阶段 C——术语。 对每个 compound-variant、 spelling-mix 和缩写问题,都用一行记录决策:列出各个变体及其计数, 让用户选择规范形式(默认采用多数形式;拼写遵循投稿场所的规范), 然后统一应用。将决策记录在术语表文件中,并重新运行:

    python3 scripts/terminology_check.py main.tex --glossary glossary.txt
    

    规范缩写的使用:首次出现时定义,后续统一展开,不再使用的定义应删除。

  8. 编辑阶段 D——投稿场所规范。 按照 references/venue-register.md 应用相应领域规范: 人称与语态约定、时态规则、拼写规范、缩写形式政策,以及 ML、systems、 HCI 和 LNCS 投稿场所之间的文体差异。未指定规范档案时,默认采用统一的 美式拼写,以及草稿中已占主导地位的约定。

  9. 验证技术内容未变。 重新运行两个检查器(结果干净,或用户明确接受 每一项剩余问题);重新运行步骤 1 的数字快照并进行差异比较——任何差异 都表示编辑阶段存在错误,必须回退;确认 \cite 的数量和键均未改变。 对编辑阶段 B 中每一句主张力度发生变化的句子,提供简短的修改前后对照表, 以便用户逐条确认。

  10. CI 或提交前的可选关卡: 只要仍有任何 RISK/WARN,运行 prose_lint.py main.tex --strict 就会以状态码 1 退出,可将其作为 最终检查,与 preflight-check 一同使用。

输出

  • 两份检查报告(Markdown 或 --json 格式),包含带行号的问题。
  • 以差异形式提出修改建议,只有获得批准后才逐个阶段应用。
  • 一份术语决策表,以及可复用的 glossary.txt。
  • 一份验证说明:数字/引文差异检查无误、列出所有主张力度变化,并记录仍被接受的问题。

此技能不做什么

  • 不是规避 AI 检测的工具。 目标是提升文本质量并保持诚实的表达风格, 而不是骗过分类器。如果用户的真实目的是向要求披露的投稿场所隐瞒 LLM 使用情况,应拒绝这一目标,展示该投稿场所的 llm_policy,并提出代为起草 披露内容。
  • 不是内容编辑器。 它不会重组论证、添加引文,也不会改变论文的主张—— tailor-to-venue 负责调整定位,write-abstract 负责撰写摘要, verify-citations 负责处理参考文献。

与其他技能的关系

  • write-abstract — 摘要专属结构和投稿 venue 元数据规范。
  • preflight-check — 编辑初筛关卡;润色后运行。
  • anonymize-paper — 处理身份信息泄露;此技能不会处理这些内容。
  • verify-citations — 此处发现的任何引文需求都应转交给它处理。

适配你的学科

这些提示词词表不受学科限制,但行文风格因学科而异。请为你所在领域的期刊分支并调整 references/venue-register.md(许多期刊要求使用英式拼写或第三人称语态), 扩展 --allow 缩略语列表,纳入你所在领域常用的缩略语,并在 prose_lint.py 的 TELL_PATTERNS 表中添加学科专属的提示。

防护措施

  • 绝不更改数字、结果、主张、引文或技术表述; 只调整表达。每次都要通过第 9 步的差异核验。
  • 绝不自动应用词表检查结果——每个 WARN 都需要审慎判断, 而领域术语(如“杠杆分数”)并无问题。
  • 绝不为“[insert X]”占位符编造文本;应向用户索要实际内容,或将引文转交给 verify-citations 处理。
  • 绝不将结果称为“无法检测”或“由人类撰写”;绝不协助规避 AI 使用披露要求——应指出 review.llm_policy,并根据当前的 cfp_url 重新核验。
  • 绝不代表用户向任何系统提交内容。
  • 报告中最多引用被标记的行;绝不在输出中复现论文的大段内容。

记忆

此技能使用用户论文目录中的共享 .paper-memory/ 约定(完整规范:paper-memory-convention.md)。

  • **开始时:**读取 .paper-memory/lessons.md 和 profile.yml。根据 writing_preferences(风格特征、拼写、语态)设定目标行文风格,并优先关注已记录的 recurring 行文习惯(例如“你习惯用被动语态描述贡献”),先检查这些问题,而不是再次解释它们。
  • **结束时:**按照共享格式追加持久有效的发现:- [YYYY-MM-DD] (polish-prose | <scope>) pattern -> recommendation(通过 reflect-and-improve 的 reflect_log.py append 执行,该命令会去重并添加日期)。跨多个草稿出现的提示或习惯属于 recurring;一次性修正属于 this-paper。不要记录常规的一次性编辑。
  • 如果 .paper-memory/ 不存在,则按需创建,并提议将其加入项目的 .gitignore。它仅保存在本地;绝不上传,也不复制到此 repo。

评论

支持 Markdown