From creative-skills
Polishes WPS notes by completing *** markers and adding citations for /// markers. Flags logical errors. Triggered by phrases like '打磨笔记'.
How this skill is triggered — by the user, by Claude, or both
Slash command
/creative-skills:note-copilotThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
陪伴用户打磨笔记的 AI 助手。扫描当前笔记,处理用户留下的 `***`(补全)和 `///`(引用)标记,并在发现明显逻辑错误时轻提醒。
陪伴用户打磨笔记的 AI 助手。扫描当前笔记,处理用户留下的 ***(补全)和 ///(引用)标记,并在发现明显逻辑错误时轻提醒。
用户发起后:
1. 判断是否首次使用 → 首次输出引导说明
2. get_current_note() → 获取当前笔记 note_id
3. read_note(note_id) → 读取全文 XML
4. 扫描所有 *** 和 /// 标记 → 收集待处理列表
5. 逐一处理每个标记(*** 补全 / /// 引用)
6. 检查明显逻辑错误 → 高阈值,仅标注真正的矛盾
7. 输出处理摘要
定期模式(用户明确说「定期帮我打磨」时才启动):
执行一次打磨 → sleep 300秒 → 重复
用户说「停止」时退出
判断方式:本次对话中是否已经输出过引导说明。若未输出过,则在开始打磨前先输出:
笔记协作助手已就绪 ✓
我可以帮你打磨当前笔记,处理你留下的标记:
★ 补全内容:在任意位置输入 ***
AI 会结合上下文,以你的写作风格自动补全
例:「本次会议的核心问题是 ***,我们决定...」
★ 引用资料:在任意位置输入 ///
AI 会搜索相关笔记或网络资料,以引用形式写入
例:「关于这个概念,/// 可以补充说明」
注意:*** 和 /// 在代码块中不会被处理。
处理完成后,标记会自动删除。
开始打磨...
get_current_note()
→ { note_id, title }
若返回 NO_ACTIVE_EDITOR_WINDOW:提示用户打开笔记后重试,停止执行。
笔记较短(大纲 block 数 ≤ 80):
read_note(note_id)
→ 获取完整 XML 内容
笔记较长(block 数 > 80):
get_note_outline(note_id) → 获取所有 block 的 id、type、preview
search_note_content(note_id, query="***") → 精确定位含 *** 的 block
search_note_content(note_id, query="///") → 精确定位含 /// 的 block
扫描笔记内容,找出所有 *** 和 ///。
| 场景 | 判断 | 处理 |
|---|---|---|
block type 为 codeblock | 不处理 | 跳过 |
*** / /// 出现在 ` 包裹的行内代码中 | 不处理 | 跳过 |
*** 紧邻正则、公式等逻辑性符号(如 \d***、a***b) | 不处理 | 跳过 |
/// 紧邻 URL 或路径(如 http:///、path///file) | 不处理 | 跳过 |
普通段落 <p>、标题 <h1>~<h6>、列表项中的独立 *** 或 /// | 援助请求 | 处理 |
<blockquote> 中的 *** 或 /// | 援助请求 | 处理 |
原则:优先保守判断。若不确定,跳过并在摘要中告知用户。
read_blocks(note_id, block_id=<含***的block>, before=5, after=5)
→ 获取该 block 及前后各 5 个 block 的完整 XML
分析前后文的以下维度,生成时严格匹配:
| 维度 | 观察点 |
|---|---|
| 语气 | 口语(「感觉」「其实」)vs 书面(「经分析」「综上」) |
| 人称 | 第一人称 vs 客观陈述 |
| 详略 | 每条字数,是否展开说明 |
| 格式 | 所在 block 的 type(p/h/li),是否有加粗/斜体 |
| 标点习惯 | 惯用标点,中英混写程度 |
*** 本身,其余文字保持不变// 读取该 block 完整 XML
read_blocks(note_id, block_ids=[<block_id>])
// 将 XML 中的 *** 替换为补全内容,用 replace 写回
edit_block(note_id, op="replace", block_id=<block_id>, content=<替换后的完整XML>)
注意:每次 edit_block 后 block_id 会变化,后续操作需重新 get_note_outline 或 search_note_content 获取新 ID。
读取 /// 所在 block 及前后 5 个 block,分析:
/// 前的主题词/问题优先搜索 WPS 笔记,必要时联网补充:
搜索笔记:
search_notes(keyword="<关键词>", limit=5, sort="update_time", direction="desc")
→ 找到相关笔记后,read_note(note_id) 读取内容
→ 提取最相关的 3-5 句
联网搜索(笔记中无相关内容,或需要补充外部资料时):
WebFetch 或内置搜索能力
→ 提取最相关段落(不超过 5 句)
引用格式(贴合前后文,不引入新视觉层级):
<!-- 来自笔记 -->
<blockquote>[引用内容摘要,3-5 句]</blockquote>
<p><span fontColor="#757575">来源:[笔记标题]</span></p>
<!-- 来自网络 -->
<blockquote>[引用内容摘要,3-5 句]</blockquote>
<p><span fontColor="#757575">来源:[页面标题]([URL])</span></p>
若搜索无结果:
<p><span fontColor="#757575">(未找到相关内容,请手动填写)</span></p>
// 1. 刷新大纲,获取含 /// 的 block 的最新 ID
get_note_outline(note_id)
// 2. 原子操作:删除含 /// 的 block,在其位置插入引用内容
batch_edit(note_id, operations=[
{ op: "delete", block_ids: [<///所在block_id>] },
{ op: "insert", anchor_id: <前一个block_id>, position: "after",
content: "<blockquote>...</blockquote><p><span fontColor=\"#757575\">来源:...</span></p>" }
])
注意:batch_edit 执行顺序固定为 delete → insert,无需担心顺序问题。若 /// 是笔记第一个 block,用后面 block 作为 anchor,position 设为 "before"。
整理完标记后,通读笔记内容,仅在以下情况才标注:
触发标准(必须满足其一):
不触发:
*** 补)标注方式:在问题 block 之后插入一行提醒:
edit_block(note_id, op="insert", anchor_id=<问题block_id>, position="after",
content='<p><span fontHighlightColor="#F8D7B7">⚠ [一句话描述问题,如「此处结论与第2段相矛盾」]</span></p>')
幂等检查:在插入前,先 search_note_content(note_id, query="⚠") 确认该处是否已有标注,避免重复。
✓ 笔记打磨完成「[笔记标题]」
*** 处理:N 处
/// 处理:N 处(引用了 [来源])
逻辑提醒:N 处
跳过(代码/占位):N 处
若无任何标记且无逻辑问题:
✓ 已扫描「[笔记标题]」,未发现需处理的标记。
定期模式下追加:
下一轮:5 分钟后
*** 通过 replace 替换,/// 通过 delete + insert 替换,原标记不保留仅当用户明确说「定期帮我打磨」「每 5 分钟帮我打磨」时启动:
启动时:
告知用户:「已开启定期打磨,每 5 分钟自动扫描当前笔记。说「停止」可随时退出。」
loop:
执行完整打磨流程(Step 1-7)
sleep 300 秒
重复(直到用户说「停止」「结束」「stop」)
退出时:
输出「已停止定期打磨。」
| 错误 | 处理方式 |
|---|---|
NO_ACTIVE_EDITOR_WINDOW | 提示用户打开笔记后重试,停止执行 |
BLOCK_NOT_FOUND | 重新 get_note_outline 刷新 ID 后重试一次 |
EDITOR_NOT_READY | 等待 2 秒后重试写入 |
DOCUMENT_READ_ONLY | 告知用户笔记为只读,停止处理 |
搜索(///)无结果 | 在该处插入灰色提示「未找到相关内容,请手动填写」 |
read_note 内容被截断(truncated: true) | 改用 get_note_outline + search_note_content 定位标记,再 read_blocks 读取上下文 |
npx claudepluginhub wpsnote/wpsnote-skills --plugin base-skillsReads, edits, and manages WPS notes via MCP tools using a block-based document model with XML exchange. Useful for note retrieval, search, creation, editing, and tag management.
Refines rough notes into structured documents with headings, improved phrasing, and formatting via Yuque tools. Handles links or pasted text; preserves original meaning for personal use.
Enforces Zettelkasten note-writing discipline: atomic claims, declarative titles, own-words prose, and typed link relationships. Use when capturing or refactoring evergreen notes.