edu-chem-reaction
把一个化学反应做成自包含的微观 3D 交互演示网页:左/上为 Three.js 可交互分子动画 (拖滑块看断键·成键·原子重组,分步高亮),右为 KaTeX 反应方程 + 分步讲解 +…
把一道解析几何题解成一个自包含的交互教学网页:左栏题面 + 动态控制台(一个 可变参数滑块驱动实时重算的几何量 + 理论范围/定值指示),中栏 KaTeX 分步解析,右栏 2D Canvas 动态几何画板(椭圆/双曲线/抛物线/圆 + 动直线/动点 + 向量 + 标注 + 画笔涂鸦)。 支持三入口——给定文字题、随机出题、上传题目图片识别后解题。覆盖求标准方程、弦长、向量 数量积范围/定值、三角形面积最值、定点、定值(斜率之积)、轨迹、离心率等题型,统一"设含参 直线 x=my+c + 联立 + 韦达 + 换元/常数分离",并由 sympy
$ npx -y skills add wy51ai/edulab --skill edu-analytic-geometry --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/edu-analytic-geometryContext preview
The summary Claude sees to decide when to auto-load this skill.
把一道解析几何题解成一个自包含的交互教学网页:左栏题面 + 动态控制台(一个 可变参数滑块驱动实时重算的几何量 + 理论范围/定值指示),中栏 KaTeX 分步解析,右栏 2D Canvas 动态几何画板(椭圆/双曲线/抛物线/圆 + 动直线/动点 + 向量 + 标注 + 画笔涂鸦)。 支持三入口——给定文字题、随机出题、上传题目图片识别后解题。覆盖求标准方程、弦长、向量 数量积范围/定值、三角形面积最值、定点、定值(斜率之积)、轨迹、离心率等题型,统一"设含参 直线 x=my+c + 联立 + 韦达 + 换元/常数分离",并由 sympy
name: edu-analytic-geometry description: >- 把一道解析几何题解成一个自包含的交互教学网页:左栏题面 + 动态控制台(一个 可变参数滑块驱动实时重算的几何量 + 理论范围/定值指示),中栏 KaTeX 分步解析,右栏 2D Canvas 动态几何画板(椭圆/双曲线/抛物线/圆 + 动直线/动点 + 向量 + 标注 + 画笔涂鸦)。 支持三入口——给定文字题、随机出题、上传题目图片识别后解题。覆盖求标准方程、弦长、向量 数量积范围/定值、三角形面积最值、定点、定值(斜率之积)、轨迹、离心率等题型,统一"设含参 直线 x=my+c + 联立 + 韦达 + 换元/常数分离",并由 sympy 精确计算驱动(答案、坐标、步骤 数值、交互引擎的理论范围同源一致)。其它 agent 也可调用本技能生成此类网页。形态与 edu-solid-geometry 平行,但用 Canvas-2D + KaTeX(非 Three.js)。 触发词:解析几何, 圆锥曲线, 椭圆, 双曲线, 抛物线, 直线与圆锥曲线, 焦点弦, 弦长, 数量积取值范围, 向量数量积, 定点问题, 定值问题, 斜率之积, 三角形面积最值, 轨迹方程, 离心率, 解这道解析几何题, 随机出一道圆锥曲线题, 这张图里的解析几何题; analytic geometry, conic sections, ellipse, hyperbola, parabola, chord length, dot product range, fixed point, fixed value, locus, eccentricity, interactive analytic geometry solution page.
一个可直接用浏览器打开的单页 HTML(三栏):
重算的几何量(交点坐标、斜率、数量积、弦长、面积…),以及"理论范围条"或"定值指示"。
叠加画笔涂鸦工具栏。
形态与目标模板 `/Users/wuyi/code/code2026/6/template/code_artifact.html` 一致。
计算核心 `lib/analytic_kernel.py` 依赖 **sympy**。运行脚本前先确认有能 import sympy 的 解释器:`python3 -c "import sympy"`(本机用 `/opt/homebrew/bin/python3.11`,sympy 1.14)。
**缺库时**:若 import 报错(sympy 或后续任何库),**先询问用户是否安装**,同意后再装 (`python3 -m pip install <库名>`)或换一个已装该库的解释器;**不要未经询问直接装**。 下文 `python3` 均指这个能跑通依赖的解释器。
把题目整理成结构化 spec(曲线类型与参数、已知点/条件、所求类型与对象、语言)。
是否规整,不规整就重抽。
> **输出语言跟随提示词语言**:英文提示 → 英文网页,中文 → 中文。spec 记下 `language`。
按 `references/conventions.md` 的解法配方,调用 `lib/analytic_kernel.py` 与 `lib/conics.py`:
渐近线、`eq_latex`、以及给前端引擎的 `board` dict)。
可命令行自检 kernel:
python3 lib/analytic_kernel.py # 旗舰题内置断言自检
> ⚠️ **端点开闭 = 正确性命门**:过焦点的弦,水平线(x 轴,θ=0)与竖直线(θ=90)都是合法直线, > 它们取到的端点要计入。例:椭圆 MA·MB 题,x 轴取到 −3、竖直线取到 7/4,故答案是**闭区间** > `[-3, 7/4]`(很多教辅误写成开的 `(-3, 7/4]`)。`range_over_m` 已据此判定,且这样答案与交互 > 工具一致——拖滑块到 0° 就读到 −3。抛物线焦点弦的"轴方向"是退化线(只交一点),其极限端点 > 不计入(`horizontal_valid=False` 或限制 param 范围)。
> 📍 **输出位置 & 唯一产物(最重要)**:交付给用户的**只有一个 `.html`**,写到**当前工作目录 > (`Path.cwd()`)**(除非用户显式指定路径)。cwd 里**不要留任何别的文件**——构建脚本(`.py`)、 > `__pycache__`、自检截图(`.png`)、临时文件都**不是交付物**,一律放 `/tmp` 或用完即删。 > 也**绝不要**写进技能自身目录(`skills/edu-analytic-geometry/output/` 是技能内部样例)。
把"组装数据 + 注入模板"的**构建脚本写到临时目录**(如 `/tmp/ag_build.py`),让它**只把 `.html` 写到 cwd**;脚本拼出 `lesson` / `steps` / `board` 数据(schema 见 `references/problem-schema.md`), 调用 `generate.render_html(data, out)` 注入 `template/board.html`,**跑完即删脚本**:
# 构建脚本放 /tmp(不要放 cwd):/tmp/ag_build.py
import sys; sys.dont_write_bytecode = True # 不生成 __pycache__
sys.path.insert(0, "<技能目录>/scripts")
import generate
from pathlib import Path
data = {"lesson": {...}, "steps": [...], "board": {...}}
out = Path.cwd() / "solution-<题目简述>.html" # 唯一产物,落在用户当前目录
generate.render_html(data, out)python3 -B /tmp/ag_build.py && rm -f /tmp/ag_build.py # -B 不写字节码;跑完删临时脚本,cwd 只剩 .html
组织讲解文字(按目标语言)。
`rangeBar`(范围题)/ `constant`(定值题)/ `answerBand`(**形状参数题**,如离心率范围)。
把曲线 `a/b/c`、焦点、动点坐标写成 `@param` 的**表达式字符串**(引擎每帧重绘曲线/焦点/渐近线), 配 `status` 读数显示不等式状态、`answerBand` 在参数轴高亮答案区间。见 conventions「形状参数题」。
`ellipse_dot_range`(范围条)、`ellipse_chord_range`、`ellipse_area_max`、 `ellipse_slopeprod_const`(定值·中心对称)、`parabola_dot_const`(定值·抛物线)、 `hyperbola_ecc_range`(**形状参数**:滑块=e,曲线随之重绘 + `status` + `answerBand`)。
已注册题直接出(`-B` 不写字节码;不传路径默认写技能 output,交付给用户时务必改成 cwd 下的 `.html`):
python3 -B scripts/generate.py list # 列出题型 python3 -B scripts/generate.py ellipse_dot_range ./sol.html python3 -B scripts/generate.py all ./out_dir # 全部题型
(`build_*` 内已加 `assert`)。
滑块实时重算正确、范围条/定值/定点/轨迹行为符合、画笔与收起面板可用。 (技能仓库内开发时可用 `.claude/launch.json` 的 `ag-preview`,端口 4601;别处运行就对 cwd 起 一个临时静态服务。)
不产生文件。自检产生的任何临时文件(构建脚本 `.py`、截图 `.png`、`__pycache__` 等)交付前一律清掉。
> ⚠️ **必须关闭你开过的端口/服务**:预览一结束立即停掉,**绝不留占用端口的进程**。 > - preview 工具开的:`preview_stop`(传 serverId)。 > - 直接起的 `http.server`:用完 `kill`,或 `lsof -nP -iTCP:<port> -sTCP:LISTEN` 确认已释放。 > - 交付前确认端口已释放再告诉用户。开了不关 = 未完成自检。
成品写在**用户当前工作目录(cwd)**,命名形如 `solution-<题目简述>.html`,把路径告诉用户, 可直接浏览器打开。交付前确认:**(1)** 成品在 cwd、不在技能目录;**(2)** 没有遗留本次预览 开启的本地服务/端口;**(3)** cwd 里**只新增了这一个 `.html`**——没有 `.py` / `.png` / `__pycache__` / 临时文件(用 `git status` 或 `ls` 核一眼,有就删掉)。
`is_constant_in_m`;在 `generate.py` 加一个 `build_*`,选定交互范式(范围条 / 定值 / 定点 / 轨迹 trace / 形状参数 answerBand)。见 `references/conventions.md` 配方表。
渐近线、准线方向。新曲线在两处各加一份即可。
`intersect_line_conic`、`point_on_conic`、`point_reflect`、`tangent_at`、`foot_perp`…), 按需扩充并在 schema 文档登记。
A collection of education skills that turn academic problems into interactive lesson web pages and narrated explainer videos.
Repo: wy51ai/edulab
把一个化学反应做成自包含的微观 3D 交互演示网页:左/上为 Three.js 可交互分子动画 (拖滑块看断键·成键·原子重组,分步高亮),右为 KaTeX 反应方程 + 分步讲解 +…
Use when asked to make an explainer / walkthrough video (讲解视频、解题视频、例题精讲、微课) for a math…
把一道立体几何题解成一个自包含的交互教学网页:左侧 MathJax 分步解析, 右侧 Three.js 可交互 3D 模型(分步高亮 + 镜头切换)。支持三种入口——给定文字题目、…