
Case S4 Elements
- 1 installs
- 1 repo stars
- Updated August 4, 2026
- gcheng-001/legal-skills
Turns constituent elements into specific facts to prove, builds an evidence-to-element mapping table, and flags evidence gaps in red.
About
Step S4 of a nine-step civil-litigation method that converts each element into provable facts and maps existing evidence against them, blocking if advocatory statutes were used. A Chinese-law lawyer uses it to surface evidence gaps before trial.
- Evidence-to-element mapping with red-flagged gaps
- Validates statute nature and blocks on advocatory provisions
Case S4 Elements by the numbers
- 1 all-time installs (skills.sh)
- Ranked #1,365 of 1,879 Documentation skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/gcheng-001/legal-skills --skill case-s4-elementsAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1 |
|---|---|
| repo stars | ★ 1 |
| Last updated | August 4, 2026 |
| Repository | gcheng-001/legal-skills ↗ |
What it does
Turns constituent elements into specific facts to prove, builds an evidence-to-element mapping table, and flags evidence gaps in red.
Files
case-s4-elements(S4)要件拆解
工作定位
将S2构成要件转化为需证明的具体事实,建立证据-要件映射表,标红证据缺口。
法条性质要求:仅使用 S2 筛选出的完全性法条进行要件拆解,不使用倡导性法条。
前置条件:S3(抗辩规范)完成 必须确认:是 法条复验:必须(优先使用元典) 执行后:调用Hook脚本更新状态
---
执行流程
第一步:读取S2文件
读取 intermediate/原告九步法/S2-请求权基础/ 中的构成要件。
第一步A:验证法条性质(新增)
验证依据:从 S2 输出读取 statute_nature 字段
验证流程: 1. 读取 S2 输出的 claim_basis_analysis.legal_articles[].statute_nature 字段 2. 确认所有使用的法条均为"完全性法条" 3. 如发现"倡导性法条",记录到 advocatory_statutes_found 列表 4. 仅对"完全性法条"进行要件拆解
阻断机制:
- ❌ 发现使用倡导性法条 → 自动阻断,提示律师替换为完全性法条
- 阻断提示:⛔ S4 发现倡导性法条,无法进行要件拆解。请律师在 S2 阶段替换为完全性法条。
- ✅ 所有法条均为完全性法条 → 进入第二步
输出字段:
{
"statute_nature_verification": {
"verification_passed": true/false,
"advocatory_statutes_found": [...],
"blocking_reason": "..."
}
}第二步:转化为具体事实
将每个构成要件转化为需证明的具体事实:
- 要件:合同成立 → 事实:双方签订合同、合同内容
- 要件:违约行为 → 事实:未按约定履行、逾期时间
第三步:建立证据-要件映射表
将证据卡片(S0)与要件事实对应:
| 要件事实 | 证据编号 | 证据来源 | 置信度 | 缺口 |
|---|---|---|---|---|
| 合同成立 | SP001, SP002 | 合同文件 | 高 | 无 |
| 违约行为 | SP003, SP004 | 聊天记录 | 中 | ⚠️ 缺付款凭证 |
第四步:标红证据缺口
对证据缺口分级:
- 致命缺口:无法证明请求权成立
- 风险缺口:可能影响裁判结果
- 轻微缺口:影响不大,可补充
第五步:法条复验(元典优先)
优先使用元典Skill:
cd ~/.claude/skills/law-search
python3 scripts/yd_search.py search "民法典 第577条 违约责任构成要件" --sxx 现行有效备用方案(需手动启用北大法宝MCP):
⚠️ 北大法宝MCP当前已禁用。如需使用,请在 settings.local.json 中添加相应权限。
# 需要先在 settings.local.json 中启用:
# "mcp__pkulaw-law-search__search_article"
mcp__pkulaw-law-search__search_article(text="民法典 第577条 违约责任构成要件")第六步:生成S4文件
输出格式:JSON frontmatter + Markdown 正文
JSON frontmatter(包含法条性质验证):
---
{
"step_id": "S4",
"legal_basis_analysis": {...},
"statute_nature_verification": {
"verification_passed": true,
"advocatory_statutes_found": []
},
"elements_analysis_by_defendant": {
"黄某": {
"defendant": "黄某",
"rights_basis": "违约责任请求权",
"legal_articles": [
{
"article": "《合同法》第107条",
"current_equivalent": "《民法典》第577条",
"element_covered": "义务未履行",
"note": "完全性法条(从S2读取statute_nature)",
"statute_nature": "完全性法条"
}
],
"elements_summary": {
"权利依据的要件事由": [...],
"权利阻碍性事由": [],
"权利消灭性抗辩事由": [...],
"权利妨碍性抗辩事由": []
}
}
}
}
---Markdown 正文:
# S4 要件拆解
## 法条性质验证
- ✅ 所有法条均为完全性法条
## 请求权1:[请求内容]
### 构成要件与事实对应
| 要件 | 需证明事实 | 证据 | 置信度 | 缺口 |
|------|------------|------|--------|------|
| ... | ... | ... | ... | ... |
### 证据缺口分析
- ⚠️ 致命缺口:[说明]
- ⚠️ 风险缺口:[说明]保存到 intermediate/原告九步法/S4-要件拆解/
MD-JSON 双向同步(强制执行):
- JSON 中的
statute_nature_verification对象必须同步到 MD 正文的“法条性质验证”章节。 - MD 正文中必须包含法条性质验证表格(法条名称、法条性质、来源),并与 JSON 中
statute_nature_verification.已验证法条数组一致。 - 常见错误:JSON 中有完整的
statute_nature_verification,但 MD 正文遗漏该章节;必须补全。 - 生成完成后自检:JSON 中
verification_passed的值与 MD 中的验证结论一致。
第七步:律师确认
展示要件拆解和证据缺口,等用户确认。
第八步:同步生成被告九步法预判版
生成 intermediate/被告九步法/S4-要件拆解/
第九步:调用Hook
~/.claude/skills/case-os/scripts/case-post-step.sh [案件路径] S4---
红线
- ❌ 必须法条复验(优先使用元典)
- ❌ 仅使用完全性法条进行要件拆解(从 S2 读取 statute_nature)
- ❌ 发现倡导性法条自动阻断
- ❌ OCR低置信度信息强制核对(<0.85)
---
工具依赖
法条检索与复验:
- 元典Skill(law-search)— 法条检索与内容获取
python3 scripts/yd_search.py search "检索词"
python3 scripts/yd_search.py detail "法律名" --ft-name "条号"备用选项(需手动启用):
mcp__pkulaw-law-search__search_article— 法条检索(北大法宝MCP,当前已禁用)mcp__pkulaw-law-search__get_article— 法条内容获取(北大法宝MCP,当前已禁用)
法条性质验证(读取 S2 输出):
- S2 输出文件:
intermediate/原告九步法/S2-请求权基础/ - 读取字段:
claim_basis_analysis.legal_articles[].statute_nature
引用资源(引用 live case-os 资源,不复制):
../case-os/schema/nine_step_core_schema.json— s4_elements_analysis 字段定义../case-os/examples/nine_step_loan_case/expected_s4_elements.json— 完整输出示例
本地资源(新增):
schema/s4_output_schema.json— S4 输出结构定义examples/s4_elements_example.md— 要件拆解示例
---
九步法资源接入(强制)
执行 S4 前必须读取 live case-os 的九步法资源,引用而不复制:
1. 读取 ../case-os/references/nine_step_output_schemas.json 中 steps.S4 的 input_schema、output_schema、handoff_to_next 与 blocking_conditions。 2. 读取 ../case-os/references/nine_step_checklist.json 中 steps.S4 的检查清单,并在 Markdown 正文中逐项说明覆盖、缺失或不适用。 3. 读取 ../case-os/references/nine_step_failure_modes.json 中 failure_modes.S4 的失败模式;命中 HIGH/CRITICAL 风险时必须阻断或标记待律师处理。 4. 按需读取 ../case-os/references/nine_step_chunks.jsonl 中 step_id == "S4" 或 skill_target 指向本步骤的切片;未找到匹配切片时记录 chunks_reference_status: "none_found",不得因此跳过步骤。 5. 读取 ../case-os/examples/nine_step_loan_case/expected_s4_elements.json 作为结构参考;如本 skill 有 schema/s4_output_schema.json,同时按本地 schema 校验输出。
- 本 skill 本地示例(如存在):
examples/s4_*.md。
输出必须采用合法 JSON frontmatter + Markdown 正文。JSON 顶层 step_id、status/review_status、引用来源、律师确认口径、hook 写回状态必须与 case-os 总控一致。
- S1/S5/S6/S8/S9 只能进入
pending_review;S2/S4/S7 需完成权威复验/律师确认口径后才可交接;S10 只作 FINAL 阻断门禁,不得改写 S9 结论。
输出
输出文件:
intermediate/原告九步法/S4-要件拆解/intermediate/被告九步法/S4-要件拆解/
输出格式:
- JSON frontmatter:包含完整的要件拆解分析数据
- Markdown 正文:展示要件拆解过程和结果
顶层结构(对齐 expected_s4_elements.json):
legal_basis_analysis:法律基础分析statute_nature_verification:法条性质验证结果elements_analysis_by_defendant:各被告构成要件分析
关键字段:
statute_nature_verification:法条性质验证结果elements_analysis_by_defendant:各被告构成要件分析legal_articles:法条列表(包含 article、current_equivalent、element_covered、note、statute_nature)elements_summary:要件汇总(权利依据/阻碍性/消灭性/妨碍性事由)statutes_used_for_analysis:实际用于要件拆解的法条列表(覆盖所有 legal_articles 中的 current_equivalent)
法条性质说明:
- 完全性法条:可用于要件拆解
- 倡导性法条:不可用,自动阻断
S4 要件拆解示例报告
案件基本信息
- 案件类型:借贷合同纠纷
- 原告:刘某
- 被告:黄某、张某
- 前置条件:S2(请求权基础)完成、S3(抗辩规范)完成
---
一、法条性质验证(新增)
1.1 验证依据
从 S2 输出读取 statute_nature 字段,验证所有法条均为完全性法条。
1.2 验证结果
| 验证项 | 结果 |
|---|---|
| 法条总数 | 7 条 |
| 完全性法条 | 7 条 |
| 倡导性法条 | 0 条 |
| 验证通过 | ✅ 是 |
1.3 使用法条列表(覆盖所有实际用于要件拆解的法条)
| 序号 | 法条 | 法条性质 | 来源 | 覆盖要件 |
|---|---|---|---|---|
| 1 | 《民法典》第577条 | 完全性法条 | S2 输出 | 义务未履行 |
| 2 | 《民法典》第675条 | 完全性法条 | S2 输出 | 负有偿还义务 |
| 3 | 《民法典》第679条 | 完全性法条 | S2 输出 | 借款合同已生效 |
| 4 | 《民法典》第685条 | 完全性法条 | S2 输出 | 担保合同已生效 |
| 5 | 《民法典》第688条 | 完全性法条 | S2 输出 | 负有保证义务 |
| 6 | 《民法典》第688条第2款、第692条、第693条 | 完全性法条 | S2 输出 | 义务未履行、保证期间 |
| 7 | 《民法典》第172条 | 完全性法条 | S2 输出 | 明知无代理权 |
说明:所有法条均为完全性法条,可以进行要件拆解。
---
二、各被告构成要件分析
2.1 黄某(第一被告)
请求权基础
- 权利基础:违约责任请求权
- 法律关系:借款关系
法律条文与要件对应
| 原法条 | 现行对应 | 覆盖要件 | 法条性质 |
|---|---|---|---|
| 《合同法》第210条 | 《民法典》第679条 | 借款合同已生效 | 完全性法条 |
| 《合同法》第206条 | 《民法典》第675条 | 负有偿还义务 | 完全性法条 |
| 《合同法》第107条 | 《民法典》第577条 | 义务未履行 | 完全性法条 |
要件汇总
权利依据的要件事由:
- ✅ 借款合同已生效
- ✅ 负有偿还义务
- ✅ 义务未履行
权利阻碍性事由:
- 无
权利消灭性抗辩事由:
- ⚠️ 部分履行(70000元)
权利妨碍性抗辩事由:
- 无
2.2 张某(第二被告)
请求权基础
- 权利基础:担保责任请求权
- 法律关系:担保关系
法律条文与要件对应
| 原法条 | 现行对应 | 覆盖要件 | 法条性质 |
|---|---|---|---|
| 《担保法》第13条 | 《民法典》第685条 | 担保合同已生效 | 完全性法条 |
| 《担保法》第18条 | 《民法典》第688条 | 负有保证义务 | 完全性法条 |
| 《担保法》第18条第2款、第26条 | 《民法典》第688条第2款、第692条、第693条 | 义务未履行、保证期间 | 完全性法条 |
| 《合同法》第49条 | 《民法典》第172条 | 明知无代理权 | 完全性法条 |
要件汇总
权利依据的要件事由:
- ✅ 担保合同已生效
- ✅ 负有保证义务
- ✅ 义务未履行
权利阻碍性事由:
- ⚠️ 明知无代理权
权利消灭性抗辩事由:
- ⚠️ 主债部分履行
权利妨碍性抗辩事由:
- 无
---
三、证据-要件映射表
3.1 黄某要件证据映射
| 要件事实 | 证据编号 | 证据来源 | 置信度 | 缺口 |
|---|---|---|---|---|
| 借款合同已生效 | SP001, SP002 | 借据、转账记录 | 高 | 无 |
| 负有偿还义务 | SP001 | 借据 | 高 | 无 |
| 义务未履行 | SP003, SP004 | 催款记录、聊天记录 | 中 | ⚠️ 缺付款凭证 |
3.2 张某要件证据映射
| 要件事实 | 证据编号 | 证据来源 | 置信度 | 缺口 |
|---|---|---|---|---|
| 担保合同已生效 | SP001 | 借据(张某签字) | 高 | 无 |
| 负有保证义务 | SP001 | 借据(保证条款) | 高 | 无 |
| 义务未履行 | SP003, SP004 | 催款记录、聊天记录 | 中 | ⚠️ 缺付款凭证 |
| 明知无代理权 | SP005 | 庭审笔录 | 中 | ⚠️ 需进一步证明 |
---
四、证据缺口分析
4.1 致命缺口
无致命缺口。
4.2 风险缺口
1. 义务未履行:缺付款凭证
- 风险:可能影响违约事实认定
- 建议:补充银行流水或收据
2. 明知无代理权:需进一步证明
- 风险:可能影响张某担保责任认定
- 建议:补充张某知情的相关证据
4.3 轻微缺口
无轻微缺口。
---
五、与 S2 的数据对接
5.1 读取 S2 输出字段
statute_nature 字段:
- 从 S2 输出的
claim_basis_analysis.legal_articles[].statute_nature读取 - 仅对
statute_nature = "完全性法条"的法条进行要件拆解
阻断机制:
- 如发现
statute_nature = "倡导性法条",S4 自动阻断 - 阻断提示:⛔ S4 发现倡导性法条,无法进行要件拆解。请律师在 S2 阶段替换为完全性法条。
5.2 输出格式
JSON frontmatter:包含完整的要件拆解分析数据
legal_basis_analysis:法律基础分析statute_nature_verification:法条性质验证结果elements_analysis_by_defendant:各被告构成要件分析evidence_element_mapping:证据-要件映射表
Markdown 正文:展示要件拆解过程和结果
---
六、抗辩类型说明
本报告使用以下抗辩类型(对齐 nine_step_core_schema.json):
| 抗辩类型 | 说明 |
|---|---|
| 权利阻碍性抗辩 | 阻碍权利发生的抗辩(如无代理权) |
| 权利消灭性抗辩 | 消灭已存在权利的抗辩(如部分清偿) |
| 权利妨碍性抗辩 | 妨碍权利行使的抗辩(如同时履行抗辩) |
---
报告完成时间:2026-05-21 报告依据:
../case-os/schema/nine_step_core_schema.json../case-os/examples/nine_step_loan_case/expected_s4_elements.json- S2 输出文件(读取 statute_nature 字段)
{
"schema_name": "S4要件拆解输出Schema",
"schema_version": "1.0.1",
"schema_purpose": "定义S4要件拆解的输出结构,对齐expected_s4_elements.json",
"step_id": "S4",
"step_name": "基础规范构成要件分析",
"output_fields": {
"step_id": {
"type": "string",
"description": "步骤标识符",
"required": true,
"default": "S4"
},
"legal_basis_analysis": {
"type": "object",
"description": "法律基础分析",
"properties": {
"plaintiff_claim_basics": {
"type": "object",
"description": "原告诉讼请求基础"
},
"defense_basics": {
"type": "object",
"description": "被告抗辩基础"
}
}
},
"statute_nature_verification": {
"type": "object",
"description": "法条性质验证(读取S2输出)",
"required": true,
"properties": {
"verification_passed": {
"type": "boolean",
"description": "法条性质验证是否通过"
},
"advocatory_statutes_found": {
"type": "array",
"description": "发现的倡导性法条列表",
"items": {
"type": "object",
"properties": {
"法律名称": {
"type": "string"
},
"条款号": {
"type": "string"
},
"statute_nature": {
"type": "string",
"enum": ["倡导性法条"]
}
}
}
},
"blocking_reason": {
"type": "string",
"description": "阻断原因(如发现倡导性法条)"
},
"verification_details": {
"type": "object",
"description": "验证详情",
"properties": {
"total_statutes_from_s2": {
"type": "integer",
"description": "从S2读取的法条总数"
},
"complete_statutes": {
"type": "integer",
"description": "完全性法条数量"
},
"advocatory_statutes": {
"type": "integer",
"description": "倡导性法条数量"
},
"statutes_used_for_analysis": {
"type": "array",
"description": "实际用于要件拆解的法条列表(覆盖所有legal_articles中的current_equivalent)",
"items": {
"type": "string"
}
}
}
}
}
},
"elements_analysis_by_defendant": {
"type": "object",
"description": "各被告的构成要件分析",
"required": true,
"patternProperties": {
".*": {
"type": "object",
"properties": {
"defendant": {
"type": "string",
"description": "被告名称"
},
"rights_basis": {
"type": "string",
"description": "权利基础"
},
"legal_articles": {
"type": "array",
"description": "法律条文列表(仅包含完全性法条)",
"required": true,
"items": {
"type": "object",
"properties": {
"article": {
"type": "string",
"description": "法条(如《合同法》第107条)"
},
"current_equivalent": {
"type": "string",
"description": "现行对应法条(如《民法典》第577条)"
},
"element_covered": {
"type": "string",
"description": "覆盖的要件"
},
"note": {
"type": "string",
"description": "备注(如法条性质:完全性法条)"
},
"statute_nature": {
"type": "string",
"description": "法条性质(从S2读取)",
"enum": ["完全性法条", "倡导性法条"]
}
}
}
},
"elements_summary": {
"type": "object",
"description": "要件汇总",
"required": true,
"properties": {
"权利依据的要件事由": {
"type": "array",
"description": "权利依据的要件事由列表",
"items": {
"type": "string"
}
},
"权利阻碍性事由": {
"type": "array",
"description": "权利阻碍性事由列表",
"items": {
"type": "string"
}
},
"权利消灭性抗辩事由": {
"type": "array",
"description": "权利消灭性抗辩事由列表",
"items": {
"type": "string"
}
},
"权利妨碍性抗辩事由": {
"type": "array",
"description": "权利妨碍性抗辩事由列表",
"items": {
"type": "string"
}
}
}
}
}
}
}
}
},
"statute_nature_rules": {
"only_complete_statutes": {
"rule": "仅使用完全性法条进行要件拆解",
"description": "倡导性法条不可作为请求权基础,必须在S2阶段替换为完全性法条"
},
"blocking_mechanism": {
"rule": "发现倡导性法条自动阻断",
"description": "如从S2读取到statute_nature为'倡导性法条',S4应自动阻断并提示律师"
},
"verification_source": {
"rule": "从S2输出读取statute_nature字段",
"description": "S4不应独立判断法条性质,应直接引用S2的鉴别结果"
}
},
"validation_rules": {
"rule_1": "所有required字段必须提供",
"rule_2": "legal_articles必须仅包含完全性法条(statute_nature='完全性法条')",
"rule_3": "如发现倡导性法条,verification_passed必须为false",
"rule_4": "defense_type枚举值必须对齐nine_step_core_schema.json",
"rule_5": "elements_summary必须包含四种事由类型",
"rule_6": "statutes_used_for_analysis必须覆盖所有legal_articles中的current_equivalent"
},
"notes": [
"本Schema定义了S4要件拆解的输出结构",
"顶层结构对齐expected_s4_elements.json",
"法条性质验证依赖S2输出,不独立判断",
"仅对完全性法条进行要件拆解",
"输出采用JSON frontmatter + Markdown正文格式",
"statutes_used_for_analysis必须覆盖所有实际使用的法条"
]
}