CC bank-scan-household-splitter
客户丢来一个压缩包,里面几百张身份证正反面、开卡申请书、合同——**人工一张张挑,一下午就没了,还容易漏**。 这套按人按户自动拆好:解包 → 抽出全部图片 → 视觉模型批量识别"这是谁的正/反面、哪份申请书" → 按户匹配 → 每户输出一个独立 Word。 有一条用真金白银换来的选型红线:**证件识别不要用 GLM-4V-Flash**(实测 18 张身份证背面里 11 张被编造,还编出了姓名),必须用高准确度视觉模型并配交叉校验。 - 输入:RAR/ZIP 加密压缩包,或几百页全是图片、没有文字的扫描件 docx - 输出:「姓名-身份证+开申请书.docx」单户文件 + 「待人工核对」文件夹(识别不出或匹配不上的单独放,不混进正常结果) - 图片不出本机:解包与提取都在本地做,只有识别那一步调视觉模型 适用:银行影像材料归户、律师立案材料整理、催收/诉讼材料分户、批量证件归档。 触发词:扫描件拆分、材料按户分开、银行影像材料、身份证正反面识别、归户、批量证件归档、律所立案材料、docx 提取图片、OCR 分类、催收材料整理。 适用对象:银行影像材料归户、律师立案材料整理、催收/诉讼材料分户、批量证件归档。 输入:RAR/ZIP 加密压缩包,或几百页的扫描件 docx(全是图片、无文字) 输出:「姓名-身份证+开申请书.docx」单户文件 + 「待人工核对」文件夹(识别不出/匹配不上的单独放,不混进正常结果) 核心做法:解包 → 从 docx 抽出 word/media 全部图片 → 视觉模型批量识别「这是谁的正/反面、哪份申请书」→ 按户匹配 → 生成单户 Word。 ⚠️ 里面有一条用真金白银换来的选型红线:证件识别**不要用 GLM-4V-Flash**(实测 18 张身份证背面里 11 张被编造,还编出姓名),必须用豆包 Seed 2.0 Pro 这类高准确度视觉模型,并配交叉校验。 触发词:扫描件拆分、材料按户分开、银行影像材料、身份证正反面识别、归户、批量证件归档、律所立案材料、docx 提取图片、OCR 分类。 图片不出本机(解包与提取全在本地做),只有识别那一步调视觉模型。
客户丢来一个压缩包,里面几百张身份证正反面、开卡申请书、合同——人工一张张挑,一下午就没了,还容易漏。 这套按人按户自动拆好:解包 → 抽出全部图片 → 视觉模型批量识别"这是谁的正/反面、哪份申请书" → 按户匹配 → 每户输出一个独立 Word。 有一条用真金白银换来的选型红线:证件识别不要用…
As a process C 53/100 · Has gaps — weak spots: result and completion, when it triggers, inputs and preconditions
How to improve
- Say in the description WHEN to use the skill ("use when…", example requests): that is the agent's main cue.
- Your own cases (evals/evals.json, 4–6 real requests with expected answers): the full check would then run those instead of a model-drafted suite.
- A spec.yaml with trigger phrases and assertions — a behaviour contract for CI; `skilltest init` writes a template.
Guard findings · 0
✓ No critical or high findings
Files scanned: 4. Evidence is masked. Grey chips explain why severity was lowered.
Against the Agent Skills spec
- warning
description-no-whendescription does not say WHEN to use the skill (no "use when") - note
frontmatter-keyunknown frontmatter key "slug" - note
frontmatter-keyunknown frontmatter key "displayName" - note
frontmatter-keyunknown frontmatter key "summary"
Process rating: all ten parameters 53/100
- 0Result and completion. Does not say what the result is
- 0Inputs and preconditions. Does not say what the process needs to start
- 0Failures and branches. Linear process with no failure handling
- 0Progress reporting. Says nothing while it works
- 20When it triggers. No condition that starts the skill
- 100Tools and files. No external tools needed
- 100Steps. 31 steps
- 100Consistency. Name and required fields are in place
- 100Execution cost. Instruction body is 904 tokens
- 100Running it twice. No mutating operations
Everything here is measured from the skill text rather than judged by a model, so the numbers are checkable. A parameter weighs more when it is a more common reason for the process to stall.
Quality signals
- +5Description has no quoted example phrases that should trigger the skill
- +4Description does not say when NOT to use the skill (false activations)
- +3Description length 912: 120–800 characters recommended
- +3Output format is not stated: the model decides each time
- -41 reference files, but SKILL.md never points to them: the model will not open them
- -31 of 1 scripts are never mentioned in SKILL.md
- +2Single-language instructions
- +4Structure: 13 headings
- +3Step-by-step instructions: 31 items
- +4Has examples (5 code blocks)
- +1License stated
Quality base 70; lint remarks subtract, signals add up to 100. Result: 60.