| name | ecm-qc-shareholders-meeting-witness |
| description | 股东会见证意见(见证法律意见书)的内核审查 Skill。当用户上传一份股东会法律见证意见书/见证意见/股东大会法律意见书,要求内核、内核审查、内核复核、质检、审阅、出修订意见、出批注意见、挑错、review、check,或提到"内核意见""见证意见内核""股东会见证内核"等时触发。Skill 按四级工作流对见证意见进行全面审查:(1) 自动从巨潮资讯网(通过 AKShare / cninfo 公开 API,无需密钥)拉取该公司对应届次的"股东会通知"和"董事会决议公告"两份参考文件,拉不到则提示用户上传,都没有则跳过交叉比对;(2) 在获得参考文件的情况下,对见证意见与通知/决议做逐字段事实性交叉核对(日期/时间/届次/地点/股权登记日/议案清单/特别决议标注/关联回避/中小投资者单独计票/董事会届次等 12 项核心字段);(3) **三种特殊表决方式专项校验**——基于《公司法》第 116 条 / 第 119 条、《上市公司股东会规则》(2025 年修订)第 32 条第 2 款(单独计票)、第 33 条(累积投票)、第 46 条(特殊回购)等,对每条议案打"特别决议 / 累积投票 / 中小投资者单独计票"三个标签,再与通知标注、见证意见表述、表决结果格式四者做强校验(识别 → 核对 → 处理三步法 + 矩阵 X/Y/Z,详见 references/voting-rules.md);(4) 基于公开规则对文件进行形式审查和实质审查。注意监事会经新《公司法》及证监会过渡期安排后原则上已由审计委员会替代,但个别公司可能尚未完成撤销,见证意见中残留"监事"字样以【核实】提示项目组结合公司实际治理结构核实、不径行必改。最终输出一份带"内核"作者修订痕迹(Track Changes)和批注(Comments)的 Word 文档。批注按律师风格精简(每条 ≤ 3 句),须过"可读性闸 + 相关性闸"——只批看得懂、影响见证结论的真问题,宁可少批一条边缘问题、不可错批一条规范写法(如董事"出席"/高管"列席"、字号格式、单候选人累积投票等均不属问题),禁止"已核查无问题"类总结性批注。即使用户只是说"帮我看下这份见证意见有没有问题"或"这份股东会法律意见书能过内核吗",也应触发本 Skill。 |
| version | 0.3.0 |
| license | MIT |
| module | ecm-qc |
| user_role | 内核 / QC 团队 |
| phase | ["持续督导阶段"] |
| category | ["文书审核"] |
| depends_on | {"external_skills":["docx"]} |
股东大会见证意见内核审查 Skill
用途与依据
面向中国 A 股上市公司/新三板挂牌公司股东(大)会法律见证业务,扮演"内核小组"
角色,对项目组提交的《法律意见书》(见证意见)进行交叉比对 + 形式 + 实质 +
常见错误审查,产出一份带"内核"作者修订痕迹和批注的 Word 文档。
依据公开规则体系:《公司法》(2024 年修订)、《上市公司股东会规则》(2025 年
修订,原《股东大会规则》)、《律师事务所从事证券法律业务管理办法》(证监会
2019 年第 223 号令)、《律师事务所从事证券法律业务执业规则》(全国律协)、
《编报规则第 12 号》,及行业通用起草指引模板。
配置项
修订者名称(Reviewer Name):所有 tracked change 和 comment 的 w:author
默认写为 内核。用户在对话中明确指定其他名称(质控、合规、DC 等)
时全程采用。本文档所有 w:author="内核"、--author "内核" 均按此理解。
免责声明
本 skill 是见证业务的辅助工具,产出不构成法律意见,不替代签字律师判断。
完整声明见 DISCLAIMER.md。监管规则版本以 skill 编写时
公开施行者为准;参考文件来自巨潮资讯网等公开平台,准确性以披露源头为准。
资深律师执行标准
执行本 skill 时,必须同时遵循 senior-lawyer-execution-standards.md。
任何输出不得突破四条底线:事实可追溯、法源可核验、风险可分级、建议可落地;
无法核验时必须显式标注。
硬规则清单(唯一定义处)
以下规则全 skill 只在此定义一次;执行细节、判定矩阵、案例见所指 reference。
- 公告底稿优先:见证意见必须与会议通知、董事会决议、表决结果公告和网络
投票数据交叉核对 →
cross-check-matrix.md
- 见证边界:只对召集召开程序、出席资格、表决程序和表决结果发表见证意见,
不对议案商业合理性背书。
- 逐字精确比对:地点/议案名称/日期等关键字段逐字比对——多字、少字、
空格、标点、全/半角差异都要批 →
cross-check-matrix.md 原则 1
- 三方任一不一致即批注:见证意见 vs 通知 vs 决议公告任一方错都要批;
见证意见对、其他公告错的写【核实】不改正文 →
cross-check-matrix.md 原则 2
- 三种特殊表决方式三标签强校验:每条议案打"特别决议/累积投票/中小投资者
单独计票"三个标签,与通知标注、见证表述、表决格式逐项对照;通知未标但议案
性质应当属于的用【核实】,不在正文改判 →
voting-rules.md
- 表决结果复算:特别决议同意比例 ≥ 2/3;累积投票仅列同意票;单独计票
分母为出席中小投资者所持有效表决权;关联回避表决基数剔除回避股份。
- 监事会撤销(软处理):新《公司法》及证监会过渡期安排后上市公司监事会
原则上已由审计委员会替代,见证意见一般不再出现"监事/监事会"。但个别
公司可能尚未完成撤销,残留"监事"以【核实】提示项目组结合公司实际治理
结构核实、如已撤销再删除,不径行【必改】、不写"已修订"定论 →
voting-rules.md §四
- 总议案 vs 子议案:拆子议案逐项表决时只列子议案是行业通行做法,不批;
仅通知提案编码表把总议案单独编码并标"作为投票对象的子议案数(N)"时才
【核实】 →
voting-rules.md §六
- 模板锚点保护:写"建议删除/与下文重复/合并"类批注前,必须先对照
anti-misjudgment.md §锚点速查表;属于行业模板固定章节的不批(典型:网络
投票"程序段"vs"数字段"并存是通行结构)。
- 编号类批注前必跑脚本:任何章节/议案/列表编号疑问,先跑
render_paragraphs.py 核对渲染后编号;渲染连贯不批,跳号/错位才【必改】
→ anti-misjudgment.md §编号识别
- 视觉/Logo 校验:金杜律所文件不应含 "Mallesons" 字样(已启用独立 VI,
批注不写具体分家年份),跑
extract_images.py 提取图片逐张读图 →
checklists.md §视觉校验
- 规范用语:"中国台湾省"(非"台湾/中国台湾地区");法律适用范围应明确
不包括港澳台 →
checklists.md §规范用语
- 模板残留新形态(F7):"具体时间以董事会发出的会议通知为准"——对照
董事会决议公告:同次会议已定股东会日期 → 冗余必改;多次会议分别决定 → 保留。
- A+H 三会合并:涉及 A+H 双重上市公司的,按
cross-check-matrix.md
§A+H 专项处理(H 股纯现场、时间滞后、披露日早一天等)。
- 高风险触发器(列必改):通知期限不足、议案临时新增不合规、回避错误、
票数无法支持结论、特别决议未达 2/3 却结论"通过"、累积投票出现反对/弃权、
单独计票漏列、强制累积投票未启用(一次选举董事 ≥ 2 名为前提,且选举
独董 ≥ 2 名 / 控股股东持股 ≥ 30%;只选 1 名董事不触发)、Mallesons
字样残留。
- 不臆断年份与外部事实:涉及法规修订年份、律所品牌变更年份、机构沿革等
外部事实,一律不在批注中写具体年份(标错反生新错);也不建议项目组
给法规补注修订年份,体例不一至多【建议】"统一为不标注年份、以现行有效
版本为准" →
checklists.md §三、anti-misjudgment.md 第三部分§三
- 误判防控——下列默认不批:①董事/董秘"出席"、高管"列席"是规范区分,
非"口径不一";②字号/字体/排版一致性文本不可靠判定,禁出此类批注(尤禁
【必改】);③只选 1 名董事的累积投票;④"中小投资者"等定义的细微措辞差异
(除非实际改变计票结果);⑤会议通知/会议记录/会议决议须精确区分,底稿
内部无实质影响的细节(发出日差一两天、扫描件内部序号笔误)默认不批 →
anti-misjudgment.md 第三部分(写任何"不一致/应统一"类批注前必查)
- 名称与名单的精确比对:见证引用的公告/通知/决议标题逐字核对 cninfo
实际披露
title("延期/更正/补充/(延期后)"易错);从通知摘录回避名单等
名单时完整保留"等""及其一致行动人"等限定词,开放式不得转写成封闭具名
清单 → cross-check-matrix.md 原则 1 场景 D/E
- 批注两道闸(每条批注必过):① 可读性——没看过原文的资深律师能否一眼
看懂"问题是什么、改成什么"?做不到就重写,点明确切差异、引用原文、给可
执行改法,禁"口径不一致/体例不统一"空话;② 相关性——是否影响召集召开/
出席资格/表决程序/表决结果的判断?纯底稿细节、排版美观、与结论无关的小
瑕疵不批。宁可少批一条边缘问题,不可错批一条规范写法 →
anti-misjudgment.md 第三部分§五
输出格式契约(硬性要求,不得偏离)
1. 修订者 = "内核"
所有 <w:ins> / <w:del> / <w:comment> 的 w:author 必须统一为 内核
(覆盖 docx skill 默认的 "Claude")。comment.py 必须加 --author "内核";
直接编辑 document.xml 必须写 w:author="内核"。
2. 修订模式开启 + 最小显示改动原则
只标记真正变动的字符,不要"整段删除 + 整段重写"。
正确("我爱你" → "我恨你"):
<w:r><w:t>我</w:t></w:r>
<w:del w:author="内核" w:date="..."><w:r><w:delText>爱</w:delText></w:r></w:del>
<w:ins w:author="内核" w:date="..."><w:r><w:t>恨</w:t></w:r></w:ins>
<w:r><w:t>你</w:t></w:r>
错误:把"我爱你"整串 del、"我恨你"整串 ins。
高频场景:"2024 年"→"2025 年"只改"4"→"5";"第一次临时"→"第二次临时"只改
"一"→"二";"9:30"→"14:30"只改"9"→"14";删一句模板话只删该句。
3. 解释文字只进批注,不进正文
正文禁止任何解释性/说明性文字。疑问、底稿要求、核查提醒、法规依据、建议
全部走 <w:comment>。批注分类前缀必加:
- 【必改】 硬性错误(事实错、法规错、模板残留、基础信息错)
- 【核实】 需与公司/项目组确认再定的问题
- 【建议】 措辞优化、行文一致性、体例统一
- 【底稿】 需落实底稿或更新查验计划的事项
4. 批注精简且只针对问题(律师风格)
- 每条 ≤ 3 句:先指问题,再给改法或法规依据。
- 可读性闸:没看过原文的资深律师须能一眼看懂"问题是什么、改成什么"——
点明确切差异内容、引用原文字句、给可执行改法;禁"口径不一致""体例不
统一""请确保一致"这类空话(看不懂的批注等于没批,还消耗信任)。
- 相关性闸:只批影响召集召开/出席资格/表决程序/表决结果判断的问题;纯
底稿细节、排版美观、定义措辞、与结论无关的内部小瑕疵不批(噪音淹没硬伤)。
- 禁止"已核查无问题"类总批:专项校验全部通过的不留任何痕迹直接进下一步。
- 禁止绕弯子开头("本批注涉及……""经审查发现……"一律删除,直接说问题)。
- 同类问题合并:多个议案同犯一错,在最具代表性位置写一条,列明涉及议案号。
- 宁缺毋滥:宁可少批一条边缘问题,不可错批一条规范写法(误判比漏判更
损害内核可信度)→ 写"不一致/应统一/应删除"类批注前必查
anti-misjudgment.md
第三部分。
例外——常规模板话术必批项(不是"已核查",是律所底稿留痕的硬性要求,
每份见证意见都应批,话术见 comment-templates.md §1-§5 对应条目):
- 声明保证段 → 【底稿】落实书面承诺或董办/证券部邮件确认
- 出席资格段 → 【核实】会后按实际出席情况复核
- 表决程序段 → 【核实】届时关注实际计票/监票情况
- 签字律师/单位负责人段 → 【核实】与律所质控系统填写的见证律师核对
审查时必须系统过一遍 comment-templates.md——常规话术该批必批。
5. 批注前防误判
执行硬规则 9(模板锚点)、10(编号核对)、17(措辞/格式/相关性类误判),
详见 anti-misjudgment.md 三个部分。anti-misjudgment.md 第三部分(出席/
列席、字号格式、定义措辞、低价值点、可读性/相关性两道闸)是本轮基于专业内核
反馈新增的"减少过度挑错"核心,写任何"不一致/应统一/应删除"批注前必查。
工作流(五步)
Step 1 — 定位和预读入文件
ls /mnt/user-data/uploads/
extract-text /mnt/user-data/uploads/xxx.docx > /tmp/review-input.md
.doc 先用 scripts/office/soffice.py --headless --convert-to docx 转换;
已有修订痕迹用 pandoc --track-changes=all 查看。
通读全文形成整体理解(哪家公司、哪次会议、什么议案、有无特别决议/关联
交易/累积投票/独董选举),并提取三个信息供 Step 1.5 使用:
- 股票代码(6 位数字,开头"致 ××××"或签字页公司全称附近)
- 板块(沪 6 / 深 0、3 / 北交所 4、8 →
市场=沪深京;新三板 → 市场=三板)
- 股东大会召开日期(YYYYMMDD)
代码识别不出时用 web_search 以"公司全称 股票代码"检索;再不行直接走
Step 1.5 Level 2。
Step 1.5 — 拉取并解析参考文件(三级降级)
目的:拿到股东大会通知和董事会决议公告两份事实核对底稿。行业最高频
错误是"日期/时间/届次与通知不一致"(common-errors.md A 类),没有参考文件
审不出来。
Level 1 — 自动拉取
python /path/to/skill/scripts/fetch_cninfo_announcements.py \
--stock-code <股票代码> \
--meeting-date <YYYYMMDD> \
--market <沪深京|三板> \
--output-dir /home/claude/refs
(首次运行前 pip install requests pypdf --break-system-packages)
返回 JSON:shareholders_notice / board_resolution(元数据 + PDF 路径 +
text_path)、*_candidates(候选列表)、errors。退出码:0 = 两份都拿到
→ 读两份 .txt 进入 Step 2;1 = 只拿到一份 → 缺的走 Level 2;2 = 都没拿到
→ 走 Level 2。
自动挑选校验:脚本按启发式挑"最像的那份",可能挑错(如同日多份董事会
决议公告)。对照见证意见里的董事会/股东会届次确认;不对则从候选列表的
pdf_url 手动下载(多候选/补充通知/新老代码等特殊场景的处理见
cross-check-matrix.md §特殊场景)。
大体量扫描件的成本与聚焦:董事会决议等可能是几十页扫描件(实战见过 45 页)。
逐页深度 OCR 交叉核对确有价值(曾据此发现扫描件内部议案序号笔误),但
token 成本高。默认策略:优先聚焦与本次股东会议案、届次、日期、表决相关
的关键页(决议正文、议案清单、签署页),不对全本逐页精读;仅当用户要求
"深度核对"、或关键页发现异常需要溯源时,才扩展到全文。即便发现扫描件内部
的细微瑕疵(如某页序号笔误),也按"相关性闸"(契约 §4)判断是否值得成批注——
对见证意见结论无实质影响的,可不批或仅【底稿】轻提。
Level 2 — 提示用户上传
【内核提示】自动从巨潮资讯网拉取参考文件未成功(原因:……)。为了做事实
性交叉比对,请上传以下文件:
- [公司简称] [届次] 股东大会通知(PDF 或 docx)
- 对应的董事会决议公告(即决定召开本次股东大会的那次董事会决议公告)
上传后我会继续审查。如果暂时拿不到这两份文件,请回复"跳过比对",
我将继续审查但不做交叉核对。
用户上传 → 读取(PDF 用 pypdf,docx 用 extract-text)进入 Step 2;只传一份
→ 有哪份用哪份;回复"跳过比对" → Level 3。
Level 3 — 跳过交叉比对,显式告知
在输出文档开头(标题或收件人段首)插入整体性批注:
【内核综合意见】本次内核审查未进行与股东大会通知、董事会决议公告的
交叉核对(因参考文件未能获取/提供)。因此:
- 基础信息类字段(召开日期/时间/地点/届次/股权登记日/议案清单/
董事会届次等)未经外部文件核对,请项目组自行对照《股东大会通知》
和相应《董事会决议公告》核查;
- 本次批注仅基于见证意见文本自身的形式审查和实质审查完成。
如需完整内核,请补充上述参考文件后重新提交。
随后只做清单类审查,不写任何依赖参考文件证据的批注。注意:voting-rules.md
中基于议案性质本身的识别仍可做(累积投票列反对/弃权、单独计票口径混算等
错误与有无通知无关)。
Step 2 — 审查(同步记录 issues)
建 issue 清单,每条记录:位置 / 原文摘录 / 问题类型 / 处理方式(tracked
change、comment 或并用)/ 修改后正文或批注文案。
按以下顺序过参考清单:
-
交叉比对(仅拿到参考文件时)— 按 cross-check-matrix.md 12 项字段 +
推导性检查逐字精确对照。优先级最高(硬规则 3、4)。
-
特殊表决方式专项校验 — 按 voting-rules.md 识别→核对→处理三步法 +
矩阵 X/Y/Z。优先级与 0 等同。
-
防误判核对 — 涉及"删除/重复/合并"或编号类批注的,先过
anti-misjudgment.md(硬规则 9、10)。编号核对命令:
python3 scripts/render_paragraphs.py /path/to/file.docx [--para N]
-
视觉/Logo 校验 — python3 scripts/extract_images.py /path/to/file.docx
提取图片逐张读图,按 checklists.md §视觉校验判定(硬规则 11)。
-
形式 + 实质清单 — 按 checklists.md 形式 14 项 + 规范用语 + 实质
8 项逐项勾对。
-
常见错误扫描 — 按 common-errors.md A-I 类逐条筛查,重点 C6-C10 /
D5-D10 / E6-E12 / F7-F10 高危项。
跨字段一致性检查(高频扣分):召开日期/时间三方一致;届次全文统一;
公司简称首现定义后全文一致;年份不串年(2025 年会议不出现"2024 年");
议案列表通知 vs 意见书审议章节 vs 决议内容逐项对应无遗漏。
Step 3 — 准备修订工作目录
cd /home/claude
cp /mnt/user-data/uploads/xxx.docx ./input.docx
python /mnt/skills/public/docx/scripts/office/unpack.py input.docx unpacked/
解包后主要编辑 unpacked/word/document.xml。
Step 4 — 写入修订痕迹和批注
(A) Tracked changes — 用 Edit 工具直接改 document.xml
严格遵循契约 §2 最小显示改动。替换示例:
<w:r><w:t>截至</w:t></w:r>
<w:del w:id="1" w:author="内核" w:date="2026-04-23T00:00:00Z">
<w:r><w:delText>2024</w:delText></w:r>
</w:del>
<w:ins w:id="2" w:author="内核" w:date="2026-04-23T00:00:00Z">
<w:r><w:t>2025</w:t></w:r>
</w:ins>
<w:r><w:t>年</w:t></w:r>
- 删除整句:该句
<w:r> 替换成 <w:del> 包裹的 <w:delText>;删整段还要在
<w:pPr><w:rPr> 加 <w:del/> 标记段落标记被删,避免空段。
- 插入新内容极少用——缺漏必要模板文字且无替代表达时才
<w:ins> 补正文;
情况不确定(如不知道确切票数)一律放批注。
- 每条修订唯一
w:id 自增(与 comment id 独立);日期格式
YYYY-MM-DDT00:00:00Z;<w:del> 内用 <w:delText>;替换整个 <w:r> 块,
不把 ins/del 塞进 run 内部;原 <w:rPr> 格式要复制到新 run 保持一致。
(B) Comments — 用 comment.py
python /mnt/skills/public/docx/scripts/comment.py unpacked/ <N> \
"批注文本(XML 实体已转义)" \
--author "内核"
<N> 为批注 ID(0, 1, 2... 自增)。转义:&→&、'→’、
"→“/”。然后在 document.xml 插入三个标记(均为 <w:p>
直接子节点,不能套进 <w:r>):
<w:commentRangeStart w:id="0"/>
<w:r><w:t>被批注的原文内容</w:t></w:r>
<w:commentRangeEnd w:id="0"/>
<w:r><w:rPr><w:rStyle w:val="CommentReference"/></w:rPr>
<w:commentReference w:id="0"/>
</w:r>
批注范围精确到问题所在的几个字或一句话。同一段可同时有 tracked change +
comment:commentRangeStart → del/ins → commentRangeEnd → commentReference。
(C) 批注文案 — 按 comment-templates.md 标准话术。原则:明确指向问题、
给修改方向或落实要求、必要时引用具体条文、行动项动词开头("请补充……"
"请核查……""请落实底稿……")。
Step 5 — 打包、输出、呈递
python /mnt/skills/public/docx/scripts/office/pack.py \
unpacked/ /mnt/user-data/outputs/reviewed.docx \
--original input.docx
pack.py 自动校验 + 小修复;结构性报错按定位修 XML 后重新 pack。文件名体现
"内核后"语义:[公司简称]_[届次]_见证意见_内核后_[日期].docx。
用 present_files 呈递,附简短总结(几条 tracked change、几条 comment、
主要问题类别),不要重复罗列全部修改——律师会在 Word 里直接看。
引用的参考文件(6 个)
references/cross-check-matrix.md — 交叉比对原则 + 12 项字段 + 推导性检查 +
特殊场景 + A+H 三会专项【Step 1.5 拿到参考文件后 / 涉 A+H 公司必读】
references/voting-rules.md — 三种特殊表决方式唯一定义处(事项清单 + 关键词
矩阵 + 矩阵 X/Y/Z + 总议案例外 + 监事会撤销)【Step 2 必读】
references/anti-misjudgment.md — 批注前防误判(模板章节锚点 + 自动编号
识别)【写"删除/重复/合并/编号"类批注前必查】
references/checklists.md — 形式要件 14 项 + 规范用语 + 视觉/Logo 校验 +
实质审查 8 项 + 底稿清单【Step 2 逐项勾对】
references/common-errors.md — A-I 九类常见错误库 + 审查顺序【Step 2 必扫】
references/comment-templates.md — 全部批注标准话术(唯一话术库)【写批注
时对照】
引用的脚本
scripts/fetch_cninfo_announcements.py — 拉取通知和决议公告【Step 1.5】
scripts/render_paragraphs.py — 重建每段渲染后编号【编号类批注前必跑】
scripts/extract_images.py — 提取内嵌图片【视觉校验前必跑】
边界与谨慎处理
本 skill 不做的事情:
- 不替代律师做法律判断——拿不准的一律【核实】批注提示项目组核查
- 不修改项目组已写明的结论性意见("合法合规"/"真实有效"等),除非存在
明显事实冲突;有疑虑的一律批注提示
- 无法查证的时间/届次/公告编号等一律【核实】批注要求项目组核对,不猜测改动
遇到原文疑似缺整段(如根本没有声明事项段):以【必改】批注提示补充,
不自行在正文里补写整段声明。