| name | ecm-setup-file-classify |
| description | 资本市场项目文件批量分类 Skill。对客户提供的尽调文件(通常先存放在项目 02-99-未分类文件 目录)进行批量阅读和理解,为每个文件分配一个或多个分类标签,输出"文件→标签"和"标签→文件"两张映射表。触发场景:客户发来一堆文件让我分类、帮我给这些尽调文件打标签、批量文件分类、文件分类打标签、梳理客户资料、为文件归位做准备、自动识别文件类型、给 DD 资料分章节等。支持一份文件同时属于多个标签(many-to-many)。注意:本 skill 只输出分类结果,不做物理移动——移动由 ecm-setup-file-organize 完成。
|
| version | 0.1.0 |
| license | MIT |
| module | ecm-setup |
| user_role | 项目组律师 |
| phase | ["启动阶段"] |
| category | ["项目管理","文件处理"] |
| depends_on | {"external_skills":["pdf","xlsx","docx"],"internal_skills":[]} |
ecm-setup-file-classify
定位与边界
本 skill 负责:
- 扫描指定目录(默认
02-99-未分类文件/)下所有文件
- 逐个阅读文件内容,基于内容判断其属于哪些分类标签
- 允许一份文件同时贴多个标签(many-to-many)
- 输出两张表:按文件分类、按标签分组
- 主动提示异常(版本重复、类别缺失、标签过多)
本 skill 不负责:
- 物理移动或复制文件(由
ecm-setup-file-organize 做)
- 对文件内容做尽调性质的实质分析(由
ecm-dd-* 系列做)
- 读取加密文件或损坏文件(遇到时跳过并记录)
免责声明
本 skill 的分类结果仅供律师参考,不构成对文件法律性质的最终判断。律师需复核分类结果的合理性,并在 file-organize 前确认。完整免责声明见仓库顶层 DISCLAIMER.md。
资深律师执行标准
执行本 skill 时,必须同时遵循 senior-lawyer-execution-standards.md。本 skill 的任何输出不得突破四条底线:事实可追溯、法源可核验、风险可分级、建议可落地;无法核验时必须显式标注。
本 skill 的实务加固点
- 一文多标签:同一文件同时涉及历史沿革、股东、批准授权或资产权属时必须多标签,不得强行单一归类。
- 低置信度显性化:文件名模糊、扫描件无法读取、缺页或版本不明时,必须进入“待人工确认”而非自动归类。
- 关键底稿识别:营业执照、章程、三会文件、验资/评估、工商档案、产权证书、处罚文书应优先标注为核心底稿。
- 不改变文件事实:分类只标注位置和标签,不得改写文件名称中的日期、主体、文号或版本。
前置依赖
核心原则
一份文件可以(且经常)属于多个标签。不要在分类阶段把文件硬分到"唯一最合适"的标签——这会导致下游 DD skill 丢失应有输入。
常见多标签组合:
| 文件 | 应贴的标签 |
|---|
| 公司章程 | entity + charter |
| 涉及股权调整的股东会决议 | approval + shareholders + history |
| 增资协议 | history + approval |
| 环评批复(募投项目的) | environment + fundraising |
| 资产评估报告(股权转让用) | history + assets |
输入
- 目标文件夹路径(必填):包含待分类文件的目录
- 默认约定:
{项目根目录}/02-尽职调查/02-99-未分类文件/
- 也支持指向其他目录(比如律师把客户临时发来的文件放在桌面某处)
- 文件类型清单(可选):用户可提前告知"这批主要是工商类文件"等预先缩小范围
- 扫描深度(可选):是否递归子目录,默认递归
处理流程
步骤 1:扫描目录
find "{目标目录}" -type f -not -name ".*"
记录:文件名、扩展名、相对路径、大小。
步骤 2:批量阅读
按文件类型选择读取方式:
| 扩展名 | 读取方式 |
|---|
.pdf | 调用 pdf skill 提取文本;扫描件请求用户先 OCR 或基于文件名判断 |
.docx / .doc | 调用 docx skill 提取文本 |
.xlsx / .xls / .csv | 调用 xlsx skill 读取第一个 sheet 的前 N 行,判断类型 |
.txt / .md | 直接 Read |
.jpg / .png | 仅基于文件名推测,或提示用户 OCR |
| 其他 | 跳过,记录到"无法识别"列表 |
批量控制:单批最多处理 10–20 个文件,避免上下文过载。大批量(>50 个文件)分批处理,每批输出一次中间结果。
步骤 3:判断标签
对每个文件,结合文件名 + 文件内容的前若干段,比对 shared/terminology/classification-labels.md 的"典型文件"列,给出 1–3 个标签。
标签数量约束:
- 典型:1 个标签(单一章节明确)
- 常见:2–3 个标签(跨章节,如章程 = entity + charter)
- 异常:超过 3 个标签("综合资料包"文件),必须在输出中提示律师拆分
- 失败:0 个标签(无法识别),归入"未分类",提示人工判断
消歧规则:
- 若看起来既属
tax / environment / litigation 中某个具体类,又属兜底 compliance——选具体类,不选 compliance(compliance 只用于真正的兜底)
- 若看起来既属
financial(审计报告、财务报表),也能支撑某个具体 DD 章节——贴 financial,并按需追加具体章节标签(例:某份审计报告里单独的"或有负债说明"可以 financial + debt)
步骤 4:生成输出
见下方"输出格式"章节。
步骤 5:异常提示
在输出的"特殊情况说明"段落主动列出:
- 版本重复:
xxx.pdf 和 xxx(旧版).pdf 并存——请确认哪份是现行有效
- 类别缺失:未发现任何
{某标签} 相关文件——建议向客户补充索取
- 标签过多:某文件被贴了 >3 个标签——建议在 organize 前拆分
- 无法识别:扫描件/加密文件/损坏文件清单——建议 OCR 或让客户重新提供
- 文件名与内容不符:文件名"营业执照.pdf"但内容是章程——以内容为准,并提醒律师核实
输出格式
严格按以下模板输出,所有三个章节必须都有(即使某节为空也要保留标题并注明"无")。
# 文件分类结果
**扫描目录**:`{绝对路径}`
**扫描时间**:{YYYY-MM-DD HH:MM}
**文件总数**:{N}
**成功分类**:{M}
**未分类**:{N - M}
## 1. 按文件分类(File → Tags)
| 序号 | 文件名 | 标签 | 备注 |
|:---:|:------|:-----|:-----|
| 1 | 公司章程.pdf | entity, charter | 现行有效版本(2024 修订) |
| 2 | 2023 年第一次临时股东会决议.pdf | approval, shareholders | 涉及股权结构调整 |
| 3 | 营业执照.pdf | entity | |
| ... | ... | ... | ... |
## 2. 按标签映射(Tag → Files)
### approval
- 2023 年第一次临时股东会决议.pdf
- 董事会关于本次发行的决议.pdf
### entity
- 公司章程.pdf(另含 charter 标签)
- 营业执照.pdf
### charter
- 公司章程.pdf(另含 entity 标签)
- 三会议事规则.pdf
### shareholders
- 股东名册 2024Q4.xlsx
- 2023 年第一次临时股东会决议.pdf(另含 approval 标签)
### history
- ...
(其他标签类似展开;无文件的标签不列出,放在第 3 节的"类别缺失"提示)
## 3. 特殊情况说明
### 版本重复
- `公司章程.pdf` 和 `公司章程(旧版).pdf` 并存,建议确认现行有效版本
### 类别缺失
- 未发现任何 `litigation` 相关文件——建议向客户补充索取"无诉讼/仲裁/处罚证明"
- 未发现任何 `environment` 相关文件——如业务涉及生产制造,建议索取环评批复等
### 标签过多
- `综合资料包.pdf` 贴了 5 个标签(entity/history/business/assets/related-party),建议在 organize 前拆分
### 无法识别
- `扫描件 001.pdf` 至 `扫描件 005.pdf` 为图片扫描件,未做 OCR 无法判断;建议先 OCR 或由客户重新提供电子版
- `<加密文件>.pdf` 需要密码
### 文件名与内容不符
- 文件名 `营业执照.pdf` 但内容是公司章程——以**内容**为准,已按 `entity + charter` 分类;建议核实文件名
性能与执行策略
| 文件量 | 策略 |
|---|
| ≤ 20 个 | 单次处理,一次性输出完整结果 |
| 20–50 个 | 单次处理可以,但输出可能较长,考虑先输出第 1 节,再输出第 2 节 |
| 50–200 个 | 分批处理,每批 20 个,中间阶段性输出;最后做合并汇总 |
| >200 个 | 建议律师先自己按"明显类型"做一次粗分(例如"这 80 个都是工商类"),再按批量跑 |
与 file-organize 的接口
本 skill 的输出(第 1 节、第 2 节的表格)是 file-organize 的直接输入。用户可以:
- 直接在同一对话里说"按上面的分类结果做 organize"
- 或把分类结果保存为文件再传给 organize(例如
classification.md)
分类结果不要手工编辑——如果律师发现个别分类有误,应重新跑本 skill 或在对话里局部修正("把 3 号文件的标签改成 xxx"),再交给 organize。
FAQ
Q:如果客户的文件夹结构已经自己分过类了(例如他们已经按"1. 工商"、"2. 财务"建了子目录)?
A:本 skill 仍然按内容重新打标签,不依赖客户的目录结构。但要在"特殊情况说明"里标注"客户提供了初步分类,本 skill 分类结果与客户分类的差异"。
Q:PDF 扫描件没做 OCR 怎么办?
A:仅凭文件名推测标签,并在"无法识别"段标注。文件名不明确时贴 internal(默认进入 00-项目管理和沟通/,由律师复核)。
Q:能不能自动做 OCR?
A:本 skill 不内置 OCR 能力。如果 PDF 是可搜索型(扫描件 + 内嵌文本层)pdf skill 能直接读;若是纯图片型,提示律师用外部 OCR 工具或 macOS 内置 OCR 先处理。