edu-analytic-geometry
把一道解析几何题解成一个自包含的交互教学网页:左栏题面 + 动态控制台(一个 可变参数滑块驱动实时重算的几何量 + 理论范围/定值指示),中栏 KaTeX 分步解析,右栏 2D…
把一道立体几何题解成一个自包含的交互教学网页:左侧 MathJax 分步解析, 右侧 Three.js 可交互 3D 模型(分步高亮 + 镜头切换)。支持三种入口——给定文字题目、 随机出题、上传题目图片识别后解题。覆盖正方体/长方体、棱锥/棱柱、圆柱/圆锥上的线面角、 二面角、异面直线夹角、点到平面距离、体积等题型,统一用"建系+向量法",并由 sympy 精确 计算驱动(答案、3D 坐标、步骤数值同源一致)。其他 agent 也可调用本技能生成此类网页。 触发词:立体几何, 线面角, 二面角, 异面直线, 点到平面距离, 正四棱锥, 正方体求角,
$ npx -y skills add wy51ai/edulab --skill edu-solid-geometry --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/edu-solid-geometryContext preview
The summary Claude sees to decide when to auto-load this skill.
把一道立体几何题解成一个自包含的交互教学网页:左侧 MathJax 分步解析, 右侧 Three.js 可交互 3D 模型(分步高亮 + 镜头切换)。支持三种入口——给定文字题目、 随机出题、上传题目图片识别后解题。覆盖正方体/长方体、棱锥/棱柱、圆柱/圆锥上的线面角、 二面角、异面直线夹角、点到平面距离、体积等题型,统一用"建系+向量法",并由 sympy 精确 计算驱动(答案、3D 坐标、步骤数值同源一致)。其他 agent 也可调用本技能生成此类网页。 触发词:立体几何, 线面角, 二面角, 异面直线, 点到平面距离, 正四棱锥, 正方体求角,
name: edu-solid-geometry description: >- 把一道立体几何题解成一个自包含的交互教学网页:左侧 MathJax 分步解析, 右侧 Three.js 可交互 3D 模型(分步高亮 + 镜头切换)。支持三种入口——给定文字题目、 随机出题、上传题目图片识别后解题。覆盖正方体/长方体、棱锥/棱柱、圆柱/圆锥上的线面角、 二面角、异面直线夹角、点到平面距离、体积等题型,统一用"建系+向量法",并由 sympy 精确 计算驱动(答案、3D 坐标、步骤数值同源一致)。其他 agent 也可调用本技能生成此类网页。 触发词:立体几何, 线面角, 二面角, 异面直线, 点到平面距离, 正四棱锥, 正方体求角, 解这道几何题, 随机出一道立体几何题, 这张图里的立体几何题; solid geometry, line-plane angle, dihedral angle, angle between skew lines, distance to plane, interactive geometry solution page.
一个可直接用浏览器打开的单页 HTML:左侧题面/答案/分步解析(公式用 MathJax), 右侧是题目对应的 3D 模型(Three.js,可旋转缩放,分步高亮关键元素并切换镜头)。 形态与 `template/lesson.html` 一致。
计算核心 `lib/geometry_kernel.py` 依赖 **sympy**。运行脚本前先确认有一个能 import sympy 的 `python3`:跑 `python3 -c "import sympy"`。
**缺库时的处理(重要)**:若 import 报错(sympy 或后续用到的任何库都同理),**先询问用户是否安装**, 得到同意后再帮忙安装(`python3 -m pip install <库名>`),或换一个已装该库的解释器;**不要未经询问直接装**。 下文命令里的 `python3` 均指这个能跑通依赖的解释器。
把题目整理成结构化 spec(格式见 `references/problem-schema.md`):几何体类型与尺寸、 已知构造点/条件、所求类型与对象、**语言**。
> **输出语言跟随提示词语言**:英文提示 → 英文网页,中文 → 中文。spec 里记下 `language`。
按 `references/conventions.md` 的建系约定与解法配方,调用 `lib/geometry_kernel.py`: 得到精确坐标、关键向量、法向量、最终答案,以及各步骤要展示的中间量(均为 LaTeX 字符串)。 顶点的 three.js 坐标用 `kernel.to_three(points, scale)` 得到。
可先在命令行跑 kernel 验证答案,例如:
python3 lib/geometry_kernel.py # 内置样例自检
> 📍 **输出位置(重要)**:成品 HTML 一律写到**用户当前工作目录(`Path.cwd()`)**,除非用户显式指定路径。 > **绝不要**写进技能自身目录(`skills/edu-solid-geometry/output/` 等)——那是技能内部的开发样例目录。 > 临时构建脚本也放到 cwd 或临时目录(如 `/tmp`),用完可删。
写一个**临时构建脚本**,导入 kernel、bodies、generate,拼出 `lesson` / `steps` / `model` 数据 (schema 见 `references/problem-schema.md`),再调用 `generate.render_html(data, out)` 注入模板产出 HTML。 `out` 用 **cwd 下的绝对路径**:
from pathlib import Path out = Path.cwd() / "solution-<题目简述>.html" # 落在用户当前目录,而非技能目录 generate.render_html(data, out)
(`quad_pyramid` / `tri_pyramid` / `cuboid` / `cube` / `prism`),罕见几何体可手写 edges。
并把它放进"建系/列已知条件"那步的 `highlight`,在 3D 图中点处标出长度(见 problem-schema)。
**可直接参考的范例**:`scripts/generate.py` 里的 `build_data()`(正四棱锥·线面角)、 `build_cube_data()`(正方体·线面角)、`build_box_volume_data()`(长方体·体积)都是完整范本,照着改即可。
`generate.py` 可直接出已注册的题;**不传路径时默认写到当前工作目录(cwd)**,也可显式给 cwd 下的文件名 (用技能目录里的 `scripts/generate.py`,输出落在 cwd):
python3 <技能目录>/scripts/generate.py cube ./cube.html python3 <技能目录>/scripts/generate.py box ./box.html
**随机出题**:`generate.py random <seed> [输出.html]`,内部用 `kernel.is_clean(...)` 判答案规整、不过重抽:
python3 <技能目录>/scripts/generate.py random 7 ./random.html # 不给路径则默认 ./random.html(cwd)
扩展随机题型时沿用"随机参数 → 求解 → is_clean 不过就重抽"。
(技能仓库内开发时可用 `.claude/launch.json` 的 `geom-preview`;在别处运行就对 cwd 起一个临时静态服务。)
> ⚠️ **必须关闭你开过的端口/服务**:预览检查一结束就立即停掉本地服务,**绝不留下占用端口的进程**。 > - 用 preview 工具开的:检查完马上 `preview_stop`(传对应 serverId)。 > - 直接起的 `http.server`:用完 `kill` 掉,或核对 `lsof -nP -iTCP:<port> -sTCP:LISTEN` 确认已释放。 > - 交付前确认端口已释放,再告诉用户结果。开了不关 = 未完成自检。
成品写在**用户当前工作目录(cwd)**,命名形如 `solution-<题目简述>.html`,把(cwd 下的)路径告诉用户,可直接浏览器打开。 交付前确认:**(1)** 成品在 cwd、不在技能目录;**(2)** 没有遗留任何由本次预览开启的本地服务/端口。
A collection of education skills that turn academic problems into interactive lesson web pages and narrated explainer videos.
Repo: wy51ai/edulab
把一道解析几何题解成一个自包含的交互教学网页:左栏题面 + 动态控制台(一个 可变参数滑块驱动实时重算的几何量 + 理论范围/定值指示),中栏 KaTeX 分步解析,右栏 2D…
把一个化学反应做成自包含的微观 3D 交互演示网页:左/上为 Three.js 可交互分子动画 (拖滑块看断键·成键·原子重组,分步高亮),右为 KaTeX 反应方程 + 分步讲解 +…
Use when asked to make an explainer / walkthrough video (讲解视频、解题视频、例题精讲、微课) for a math…