Summary
把一道解析几何题解成一个自包含的交互教学网页:左栏题面 + 动态控制台(一个 可变参数滑块驱动实时重算的几何量 + 理论范围/定值指示),中栏 KaTeX 分步解析,右栏 2D Canvas 动态几何画板(椭圆/双曲线/抛物线/圆 + 动直线/动点 + 向量 + 标注 + 画笔涂鸦)。…
wy51ai/edulab
>- 把一道解析几何题解成一个自? 可变参数滑块驱动实时重算的几何量 + 理论范围/定值指示),中栏 KaTeX 分步解析,右栏 2D Canvas 动态几何画板(椭圆/双曲线/抛物线/圆 + 动直线/动点 + 向量 + 标注 + 画笔涂鸦)。 支持三? 数量积范围/定值、三角形面积最值、定点、定值(斜率之积)、轨迹、离心率等题型,统一"设含参 直线 x=my+c + 联立 + 韦达 + 换? 数值、交互引擎的理论范围同源一致)。? edu-solid-geometry 平行,但用 Canvas-2D + KaTeX(非 Three.js)。 触发词:解析几何, 圆锥曲线, 椭圆, 双曲线, 抛物线, 直线与圆锥曲线,…
npx skills add wy51ai/edulab --skill edu-analytic-geometry
把一道解析几何题解成一个自包含的交互教学网页:左栏题面 + 动态控制台(一个 可变参数滑块驱动实时重算的几何量 + 理论范围/定值指示),中栏 KaTeX 分步解析,右栏 2D Canvas 动态几何画板(椭圆/双曲线/抛物线/圆 + 动直线/动点 + 向量 + 标注 + 画笔涂鸦)。…
Related neighbors and high-traction skills in the same topics — useful to compare before installing.
Track engagement metrics, measure campaign ROI, and analyze content performance across Instagra…
2.6K installsUse to deploy the vss-video-analytics-api REST service standalone (config-source, data-log bind…
1.8K installsUse this skill when reading video-analytics metrics, incidents, alerts, and sensor data via the…
1.8K installsUse to deploy the vss-behavior-analytics service standalone (entrypoint, config-source, optiona…
1.8K installsBuilds and modifies dbt models, writes SQL transformations using ref() and source(), creates te…
902 installsAdd PostHog product analytics events to track user behavior. Use after implementing new feature…
475 installsOther skills from wy51ai/edulab.
npx skills add wy51ai/edulab
Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.
master
Parsed from SKILL.md frontmatter.
Files included with this skill beyond the listing page.
SKILL.md
10,968 B
SUMMARY.md
1,467 B
一个可直接用浏览器打开的单页 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(曲线类型与参数、已知点/条件、所求类型与对象、语言)。
analytickernel.isclean(...) 判答案是否规整,不规整就重抽。
输出语言跟随提示词语言:英文提示 → 英文网页,中文 → 中文。spec 记下
language。
按 references/conventions.md 的解法配方,调用 lib/analytic_kernel.py 与 lib/conics.py:
conics.ellipse/hyperbola/parabola/circle(...) 得曲线对象(精确 a,b,c、焦点、顶点、准线、渐近线、eq_latex、以及给前端引擎的 board dict)。
chord_setup(conic, through) 联立含参直线 x=my+c 得 y 的二次方程 + 韦达量(精确)。dotproductexpr / chordlensqexpr / triangleareaexpr / slopeproduct_central …rangeoverm(expr, horizontal_valid=?) —— 含开闭端点判定(关键正确性点,见下)。isconstantin_m(expr)。可命令行自检 kernel:
python3 lib/analytic_kernel.py # 旗舰题内置断言自检
⚠️ 端点开闭 = 正确性命门:过焦点的弦,水平线(x 轴,θ=0)与竖直线(θ=90)都是合法直线,
它们取到的端点要计入。例:椭圆 MA·MB 题,x 轴取到 −3、竖直线取到 7/4,故答案是闭区间[-3, 7/4](很多教辅误写成开的(-3, 7/4])。rangeoverm已据此判定,且这样答案与交互
工具一致——拖滑块到 0° 就读到 −3。抛物线焦点弦的"轴方向"是退化线(只交一点),其极限端点
不计入(horizontal_valid=False或限制 param 范围)。
📍 输出位置 & 唯一产物(最重要):交付给用户的只有一个
.html,写到**当前工作目录
(Path.cwd())(除非用户显式指定路径)。cwd 里不要留任何别的文件**——构建脚本(.py)、pycache、自检截图(.png)、临时文件都不是交付物,一律放/tmp或用完即删。
也绝不要写进技能自身目录(skills/edu-analytic-geometry/output/是技能内部样例)。
把"组装数据 + 注入模板"的构建脚本写到临时目录(如 /tmp/agbuild.py),让它只把 .html 写到 cwd;脚本拼出 lesson / steps / board 数据(schema 见 references/problem-schema.md), 调用 generate.renderhtml(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
steps[*].content 里的数值直接引用 kernel 结果(用 K.tex(...) 输出 LaTeX),模型只负责组织讲解文字(按目标语言)。
board 用 kernel 给的曲线 board dict、精确点坐标、param、derived 构造序列、readouts、rangeBar(范围题)/ constant(定值题)/ answerBand(形状参数题,如离心率范围)。
把曲线 a/b/c、焦点、动点坐标写成 @param 的表达式字符串(引擎每帧重绘曲线/焦点/渐近线), 配 status 读数显示不等式状态、answerBand 在参数轴高亮答案区间。见 conventions「形状参数题」。
scripts/generate.py 里 6 个 build_* 覆盖各类交互范式:ellipsedotrange(范围条)、ellipsechordrange、ellipseareamax、 ellipseslopeprodconst(定值·中心对称)、paraboladotconst(定值·抛物线)、 hyperbolaeccrange(形状参数:滑块=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 # 全部题型
lesson.answer == 末步骤展示值 == JS 标准位/扫段重算值,四者一致(build_* 内已加 assert)。
rangeBar 端点来自 kernel 的 rangeoverm;constant 值来自 kernel 的定值。滑块实时重算正确、范围条/定值/定点/轨迹行为符合、画笔与收起面板可用。 (技能仓库内开发时可用 .claude/launch.json 的 ag-preview,端口 4601;别处运行就对 cwd 起 一个临时静态服务。)
.png 存到 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 核一眼,有就删掉)。
analytickernel.py 加目标量函数(写成 m 的表达式)+ 复用 rangeover_m /isconstantinm;在 generate.py 加一个 build*,选定交互范式(范围条 / 定值 / 定点 / 轨迹 trace / 形状参数 answerBand)。见 references/conventions.md 配方表。
conics.py 已有椭圆/双曲线/抛物线/圆;前端 board.html 引擎已支持四类渲染、渐近线、准线方向。新曲线在两处各加一份即可。
board.html 的 buildScene switch 是构造库(linethroughangle、intersectlineconic、pointonconic、pointreflect、tangentat、foot_perp…), 按需扩充并在 schema 文档登记。
template/board.html — 数据驱动模板(通用 2D 渲染器 + 参数引擎 + 数据岛 __LESSON_DATA__)lib/conics.py — 圆锥曲线 sympy 定义库(特殊点 / LaTeX / board dict)lib/analytic_kernel.py — sympy 精确求解核心(联立·韦达·范围·定值)scripts/generate.py — 注入模板 + 5 个 build_* 范本 + 批量/单题出题references/problem-schema.md — 数据格式(board 引擎 schema)references/conventions.md — 标准式、解法配方表、韦达/换元套路、端点开闭、自检