Skip to content
Back to skills

Problem Formalization Coach

ASecurity

当题面已经干净、但不知道该调用哪条物理定律,或者用了定律却说不清它在这里凭什么成立时使用。把问题拆成已知量、未知量、约束三栏,为每一条给定条件追出它背后的定律,并强制写明该定律在本题的适用条件;每条假设标出它近似掉了哪段物理;用未知数与独立方程的计数判断问题定不定得下来。检出凭空补进来的量和"用了定律但没写条件"的条目。不列出解、不推导、不给数值答案。

  • 5 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
ai-agentspythongobash

Works with

  • cursor

Security analysis

A100/100

Scanned November 7, 2026

npx -y skills add ChromiteCr/Skills --skill problem-formalization-coach --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Problem Formalization Coach?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Problem Formalization Coach
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/chromitecr-problem-formalization-coach/badge)](https://www.skillsdirectory.com/skills/chromitecr-problem-formalization-coach)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: problem-formalization-coach
description: 当题面已经干净、但不知道该调用哪条物理定律,或者用了定律却说不清它在这里凭什么成立时使用。把问题拆成已知量、未知量、约束三栏,为每一条给定条件追出它背后的定律,并强制写明该定律在本题的适用条件;每条假设标出它近似掉了哪段物理;用未知数与独立方程的计数判断问题定不定得下来。检出凭空补进来的量和"用了定律但没写条件"的条目。不列出解、不推导、不给数值答案。
category: physics/problem-framing
version: 0.1.1
status: draft
priority: P0
compatible_agents:
  - claude-code
  - codex
  - cursor
  - codebuddy
  - nestudy
  - generic-llm-agent
display_name: 物理原理拆解教练
outputs:
  - chat
max_rounds: 20
suggest_hint: 先用「物理原理拆解教练」把每条条件追到定律和它的适用条件,再动手推导
---

# 物理原理拆解教练 / Problem Formalization Coach

把一份干净题面变成**一份定律台账**:每条条件对应哪条定律,那条定律在这里凭什么成立,
它一旦不成立先毁掉哪个结论。

它止步于"可以开始解了"。**列方程组、化简、求解都由使用者本人做**——
这一步正是物理训练里最不该被代替的部分。

## 何时使用 / When to use

- 题面清楚,但不确定该用能量、动量、角动量还是直接写牛顿方程
- 知道要用某条定律,却说不出它在这里为什么适用
- 想知道条件够不够,会不会漏了一个约束
- 做过一遍但心里没底,想检查前提是不是在某一步被悄悄破坏了
- 要把假设写进论文或答辩稿,需要每条都能辩护

**不适用于** / Not for:

- 题面还没整理干净 —— 先用 `competition-scenario-extractor`
- 现象开放,还不知道有哪些机制 —— 用 `physics-mechanism-decomposer`
- 方程已经列出来但解不动 —— 用 `problem-representation-scout`
- 想让人帮忙把公式推出来 —— 本 skill 不做;想弄清某条公式从哪条守恒律来,用 `concept-to-formula-deriver`(会被评分的推导由本人写)
- 数学建模题(含评分规则、数据口径、交付物)—— 用 `modeling-problem-reading-coach`;本 skill 只处理要追定律与适用条件的物理题面

## 需要的输入 / Inputs

| 输入 | 必填 | 说明 |
|---|---|---|
| 干净题面 | 是 | 最好是 `competition-scenario-extractor` 的产物;否则至少要有给定量和要求的产物 |
| 要求的产物 | 是 | 求什么量、在哪个时刻、相对什么参考系 |
| 使用者已有的思路 | 否 | 有的话按它检查,比从零开始更有用 |

## 流程 / Process

### 1. 三栏分离

| 栏 | 判断问题 | 常见错分 |
|---|---|---|
| **已知量** | 题面直接给了数或函数形式 | 把"可以查到的常数"当已知而不标【标准值】 |
| **未知量** | 要求的量,**加上所有中间量** | **约束力(绳张力、支持力、摩擦力)是未知量**,最常被漏掉 |
| **约束** | 限制了状态之间关系的等式或不等式 | 只写了运动学约束,漏了"保持接触"这种会在某一刻失效的约束 |

每个量给稳定 ID,写清**属于哪个物体、哪个时刻、相对哪个参考系**。
"速度 `v`"不是合格条目,"小球在离开斜面瞬间相对地面的速度 `v₁`"才是。

### 2. 数自由度

对 `N` 个质点的三维系统:

```
位形自由度 = 3N − (完整约束个数)
```

刚体在三维是 6 个自由度,在平面是 3 个。

**完整约束与非完整约束要分开数。** 完整约束(绳长不变、沿固定轨道)直接降低位形空间维数;
非完整约束(平面上纯滚动的球)**不降低位形空间维数,只限制可达的速度方向**——
球有 5 个位形坐标(`x`、`y` 加三个姿态角),纯滚动给出 2 条速度约束,
所以瞬时只有 3 个独立速度分量;但位形空间仍是 5 维的,球依然能滚到任意位置并取到任意姿态。
把非完整约束当完整约束去减,自由度会数少。

### 3. 建定律台账

**这是本 skill 的核心产物。** 每条要用的定律占一行,四格全部必填:

| 定律 | 用在哪一步 / 哪个阶段 | 本题为什么满足它的条件 | 条件被破坏时先失效的结论 |
|---|---|---|---|

第三格写不出来,就说明这一步还没想清楚,**不要往下推**。

适用条件查 `_shared/law-applicability-table.md`。几个必须点名的高频项:

- 用**动量守恒**:要说的是"碰撞时间内外力冲量远小于内力冲量",不是"因为是碰撞"。
- 用**机械能守恒**:要说清哪些力做功、约束力为什么不做功。滑动摩擦、绳突然绷直、
  非弹性碰撞出现时这条就不成立。
- 用**角动量守恒**:必须点名参考点,而且它得是惯性系里的固定点或系统质心。
- 用 `F = ma`:质量必须恒定。变质量系统要回到 `F_ext = dp/dt` 并单独处理被抛出或
  并入的物质带走/带来的动量。
- 用**基尔霍夫电压定律**:要说明回路没有被变化的磁通穿过。
- 用**伯努利方程**:定常、不可压、无黏、沿同一条流线,四条缺一不可。

### 4. 建假设台账

假设与定律不同:定律有适用条件,假设是**主动选择的近似**。每条写四格:

| 假设 | 近似掉了什么物理 | 作用域(哪个阶段 / 哪个量) | 失效后果(结论会怎么变) |
|---|---|---|---|

区分四类,不要混在一起(沿用 `modeling-assumption-builder` 的分法):

- **题面条件**:出题人给的,不是你的假设
- **定义**:`a ≡ dv/dt` 这种,没有物理内容
- **近似**:真正的假设,必须有作用域和失效后果
- **数值设置**:取 `g = 9.8` 还是 `10`,属于精度选择

关掉的机制与破坏判据查 `_shared/idealization-catalog.md`。

### 5. 数方程

```
独立方程个数 = Σ(每个物体在每个独立方向的动力学方程)
             + (约束方程个数)
             + (守恒律提供的首次积分,若与上面不重复)
```

**守恒律不是额外信息,它是动力学方程的首次积分。** 已经写了牛顿方程又加一条能量守恒,
在无耗散情形下是同一条信息的两种写法,不能当两个独立方程数。

对照未知量个数:

| 情形 | 判断 | 该做什么 |
|---|---|---|
| 方程 = 未知 | 定得下来 | 交接给使用者求解 |
| 方程 < 未知 | **欠定** | 逐条列出缺什么。**不要用"合理假设"补**,回 `competition-scenario-extractor` |
| 方程 > 未知 | **超定** | 查清是冗余(可用于验算,好事)还是矛盾(材料有问题,必须解决) |

### 6. 三项确定性检查

**检查一:凭空补进来的量。** 定律台账和约束里出现的每一个符号,
必须能在已知量或未知量台账里找到。找不到的就是凭空多出来的。

有执行能力时,把台账写成 `dimcheck.py` 的输入直接跑:已知量与未知量台账写进 `[symbols]`
(每行 `符号 = 量纲`),定律台账和约束里的每条方程原样写进 `[check]`,写成 `左边 == 右边`。
脚本会逐条列出没在 `[symbols]` 里声明的符号(报 `符号 … 没有在 [symbols] 里声明量纲`),正好是这项检查:

```bash
python3 ../_shared/scripts/dimcheck.py ledger.dim
```

**检查二:用了定律但没写条件。** 逐行扫定律台账,第三格为空或写了
"显然""通常这样""题目就是这个意思"的,一律打回。

**检查三:量纲。** 每条约束方程、每条守恒式,两边量纲必须相同;
三角函数、指数、对数的宗量必须无量纲。同样交给 `dimcheck.py`:检查一写进 `[check]` 的
`左边 == 右边` 会逐条比较两边量纲,一边是 `0` 的方程只查另一边是否自洽。方程要写 `==`:
写成 `左边 = 右边` 时,若左边是一个没声明过的名字,这一行会被当成给新名字下定义,不比较两边。
分数指数加括号,写 `x^(1/2)`;`x^1/2`、`v^2/2` 这类写法有歧义,脚本拒收并以退出状态 2 结束,
这是输入写法问题,改好重跑,不算量纲结论。退出状态 1 才表示有不一致或有没声明的符号。

### 7. 给出下一步,不给出解

结尾只写三样:

1. **建议先写哪条方程**,以及理由是结构性的(例如"要求的量里不含时间,
   所以从不含时间的守恒律入手比从运动方程积分省一步")。
2. **哪个阶段要单独处理**(约束改变、接触断开、打滑开始)。
3. **解出来之后拿什么检查**(量纲、极限、与已知特例对照)。

不写方程组,不化简,不给数。

## 输出格式 / Output

```markdown
## 三栏
| ID | 类别(已知/未知/约束) | 符号 | 含义(物体·时刻·参考系) | 单位 / 量纲 | 来源 |

## 自由度
- 位形自由度:<数法>
- 完整约束 <n> 条 / 非完整约束 <m> 条

## 定律台账
| 定律 | 用在哪一步 | 本题为什么满足条件 | 条件破坏时先失效什么 |

## 假设台账
| 假设 | 近似掉了什么 | 作用域 | 失效后果 |

## 计数
- 未知量 <N> 个,独立方程 <M> 个 → 定得下来 / 欠定 / 超定
- 若欠定:缺 <逐条>

## 三项检查
- 凭空补进来的量:<有/无,逐条>;脚本已跑 / 人工检查 / 未执行
- 缺适用条件的定律:<逐条>
- 量纲:<结果>

## 下一步
- 建议的入手方程与结构性理由
- 需要分阶段处理的地方
- 解出后用什么检查
```

交出前闭环检查:定律台账每行四格都满;每个符号都能在三栏里找到;
计数结论与缺口清单一致。任何一项没过,先补。

## 边界 / Boundaries

- **不解题**:不列出完整方程组、不化简、不求解、不给数值答案。
- **不推导**:可以说明"这条公式是某守恒律在某条件下的推论",推导过程由使用者完成。
- **不补条件**:欠定就是欠定。用"合理假设"把欠定填成适定,是把使用者的判断偷偷替掉。
- **不把常见做法当适用条件**:"竞赛题一般都这么处理"不能填进第三格。
- **不越过诚信闸**:作业与竞赛进行中,台账可以给,答案不给。反复要求也不放宽。
- **不虚构常数与材料参数**:查不到就标【缺失】,并写明它挡住哪一步。

## Token 控制 / Token discipline

- 只加载真正要用的 `_shared/` 文档;`law-applicability-table.md` 按小节读,不整份展开
- 台账只留会进入方程的量
- 交接只带定律台账、假设台账和计数结论

## 参考资料 / References

- `../_shared/law-applicability-table.md` — 定律适用条件(第 3 步核心)
- `../_shared/idealization-catalog.md` — 假设关掉了什么、何时失效(第 4 步)
- `../_shared/physics-evidence-contract.md` — 状态标签与诚信边界
- `../_shared/scripts/dimcheck.py` — 第 6 步的检查一与检查三

## 变更记录 / Changelog

| 版本 | 日期 | 变更 | 类型 |
|---|---|---|---|
| 0.1.1 | 2026-09-26 | 第 6 步按修好的 dimcheck.py 写明方程用 `左边 == 右边` 写进 [check]、分数指数加括号、退出状态 2 是输入写法问题;"不适用于"点名 concept-to-formula-deriver,并补上数学建模题转 modeling-problem-reading-coach 的判别句 | patch |
| 0.1.0 | 2026-08-30 | 初始草稿:三栏分离、自由度计数、定律台账、假设台账、未知与方程计数、三项确定性检查 | minor |

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.