为 shiji-kb wiki 页面补全「史记引文」节。搜索实体标注文件中对该页面实体的真实引用(而非裸字符匹配),展开已知 PN 的完整段落,过滤已引,输出新增候选。当用户说 /quote PAGE 时触发。
71
86%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
/quote PAGE → 查找并补全该页面的史记引文第一步:运行脚本(获取候选引文)
从仓库根运行:
python3 .claude/skills/quote/scripts/quote_page.py PAGE
# 限制输出条数(高频词地名可能有上百条)
python3 .claude/skills/quote/scripts/quote_page.py PAGE --max 30脚本逻辑:
type、label、pn、aliasestype 生成实体搜索正则(地名用 〖=NAME〗,人名用 〖@NAME〗 或 〖@DISPLAY|NAME〗,国名用 〖◆NAME〗)chapter_md/*.tagged.md,找实体标注出现的段落号pn: 字段中的 PN 也一并展开(即使尚无对应引文)第二步:评估候选、取舍
候选列表可能很长(高频地名有几十条),需要按以下标准取舍:
| 保留 | 跳过 |
|---|---|
| 该实体是段落叙述的主角/核心 | 仅路过性提及("经过X"、"至X而还") |
| 有具体历史事件 | 年表流水账(仅时间+事件列举,无叙述) |
| 与页面主题直接相关 | 同名异地/同名异人(注意辨别) |
| 引文简短、完整(<150字为佳) | 超长段落(>300字)且核心内容少 |
第三步:读取页面,更新史记引文节
读页面现有 ## 史记引文 节,append-only:
> 出自 开头),只在最后追加新条目> 出自 [[NNN_章节名|章节名]] (NNN-N):原文……(150字以内,超长可截断加"……")第四步(可选):更新 pn 字段
如果脚本发现的重要 PN 不在 frontmatter pn: 里,可追加到 pn: 字段。
第五步:记录修订(必须)
python3 wiki/scripts/butler/record_revision.py PAGE \
--summary "quote: 补引文N条(章节名/章节名...)" \
--author quote只要实际向页面写入了新引文,此步骤不得省略。
| page type | 搜索正则 | 示例 |
|---|---|---|
| place | 〖=NAME〗 | 〖=邯郸〗 |
| person | 〖@NAME〗 或 〖@.*|NAME〗 | 〖@蔺相如〗 〖@相如|蔺相如〗 |
| state | 〖◆NAME〗 | 〖◆赵〗 |
| role/title | 〖;NAME〗 | 〖;丞相〗 |
| story/event | 不做实体扫描,仅展开已知 pn | — |
r 型 PN(如 019-r85)是表格行,不在句子索引,脚本跳过,无需手动追加### 章节 (chap-N) [PN:[N]] 格式(kg/events 导入风格)或 > 出自 风格,两种都算"已引",不重复添加79c272f
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.