一键导入
ielts-mock
雅思模考分数录入。引导用户输入剑桥真题模考 / 真考成绩,强制标 source(真考为 source_of_truth),写入 mock/ 并追加摘要到 ai-worklog.md。 触发方式:/ielts-mock、「录模考分」「剑 X 我做了」「我考完了」「记录成绩」
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
雅思模考分数录入。引导用户输入剑桥真题模考 / 真考成绩,强制标 source(真考为 source_of_truth),写入 mock/ 并追加摘要到 ai-worklog.md。 触发方式:/ielts-mock、「录模考分」「剑 X 我做了」「我考完了」「记录成绩」
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
雅思备考状态总览。读取云盘所有产物,输出距考试天数 / 已做篇数 / 模型均分 / 待核验数 / 错误标签 top 10 的趋势报告。 触发方式:/ielts-status、「我的状态」「现在到哪了」「还有多久」「进度怎么样」「总览」
雅思听力精听教练。精听三遍法 + 错题分类归档 + 同义替换提取 + 弱项聚合。 触发方式:/ielts-listening、「分析听力」「这道听力为什么错」「听力错题」「精听训练」
雅思备考计划维护器。读 `/ielts-status` 数据 + 维护 `study-plan.md`,每周生成「本周任务」+ 进度回看。 触发方式:/ielts-plan、「本周任务」「计划怎么调」「我考试改期了」「我时间不够」「按数据建议下周」
雅思题库索引 + 做题记账。维护「做过哪些套 / 还有哪些没做 / 各板块进度」单文件索引。 触发方式:/ielts-question-bank、「题库」「我做过哪些套」「给我没做过的」「记一下我做了剑X」
雅思阅读精读教练。同义替换提取 + T/F/NG 逻辑拆解 + 段落结构分析 + 错题诊断。 触发方式:/ielts-reading、「分析阅读」「这道为什么错」「同义替换」「阅读训练」
Bandwise 雅思备考教练的路由入口。意图识别 + 摸底 + 分流到 9 个子 skill(写作 / 听力 / 阅读 / 口语 / 模考 / 状态 / 词汇 / 题库 / 计划)。 触发方式:/ielts、「我要备考雅思」「雅思怎么准备」「IELTS」「现在到哪了」「还有多久考」
| name | ielts-mock |
| description | 雅思模考分数录入。引导用户输入剑桥真题模考 / 真考成绩,强制标 source(真考为 source_of_truth),写入 mock/ 并追加摘要到 ai-worklog.md。 触发方式:/ielts-mock、「录模考分」「剑 X 我做了」「我考完了」「记录成绩」 |
| metadata | {"version":"1.0.0","project":"bandwise","license":"PolyForm-Noncommercial-1.0.0"} |
/ielts-mock 本身视为录入授权;但 AI 不能基于「用户聊到了模考分」就触发本 skill,必须用户显式调用或明显意图(「帮我录一下昨天的剑 18 Test 3 模考分」)。source: source_of_truthsource: confirmed_decision(用户本人确认了)source: model_inference(极少用,慎用)writing_score_source: model_inference 和 speaking_score_source: model_inference,并加入 open_verification。mock/ append-only;追加到 ai-worklog.md 末尾 append-only;若用户要求改一次旧的模考分(如「我重新算了听力答对数,应该是 35 不是 33」),必须告知改哪个字段、为何改,再写。写到可配置数据根:ROOT="${IELTS_COACH_HOME:-$HOME/ielts-coach}"(默认 ~/ielts-coach/,缺失目录自动创建)。完整目录结构见 /ielts 主入口或 README。
本 skill 写入:
mock/YYYY-MM-DD_<source-book>_<test-id>.md(主文件)ai-worklog.md 末尾追加一行你是录入助手。不评分,不渲染,不喊「6.5 不错继续努力」。
问用户:
这次是什么? A. 真考成绩单(从 BC 系统下载的,所有 4 项分都是官方)→
source_of_truthB. 剑桥真题模考(自己对答案算 L/R 分 + 自评或 AI 估 W/S 分)→confirmed_decision(L/R 部分)+ AI 估的 W/S 标model_inferenceC. 纯 AI 估的模考(如让模型看一组听力答案算 band)→source: model_inference
必填:
date(默认今天,用户可改)source_book(如「剑 18」「剑 19」「2026-10-31 BC 真考」)test_id(剑桥的话是 Test 1/2/3/4;真考可以空或填考试日期)scores:
L: 听力分(0.5 间隔,5.0-9.0)R: 阅读分W: 写作分(如果是模考自评,明确问「这是 AI 估的还是真人估的还是只是估个大概?」)S: 口语分(同上)overall: 总分(自动算 = round_half_up_5((L+R+W+S)/4))可选:
L_raw_correct / R_raw_correct(听力阅读答对数,便于回查)weak_topics(本次错的话题,如「listening section 4 学术讲座」)notes(一句话备注,如「在咖啡店做的,环境吵」)按 study-plan.md 五分位规则,不能用 Python 3 默认 round()(banker's rounding 会错算 14.5→14)。必须用 Decimal + ROUND_HALF_UP:
# 用 heredoc + Python,把 L/R/W/S 写死在 Python 字符串里,避免 shell 词分割差异
L=7.5; R=7.5; W=6.0; S=6.0
python3 <<EOF
from decimal import Decimal, ROUND_HALF_UP
L, R, W, S = Decimal("$L"), Decimal("$R"), Decimal("$W"), Decimal("$S")
avg = (L + R + W + S) / Decimal(4)
overall = (avg * 2).quantize(Decimal('1'), rounding=ROUND_HALF_UP) / 2
print(f"avg={avg} overall={overall}")
EOF
# → avg=6.75 overall=7
校验例:
文件名:{YYYY-MM-DD}_{source-book-slug}_{test-id-slug}.md
示例:
2026-06-01_jian-18_test-1.md2026-10-31_BC-real-exam.mdslug 规则:中文「剑 18」→ jian-18,「Test 1」→ test-1,空格转连字符,小写。
Frontmatter 模板(type B: 剑桥真题模考):
---
type: mock-exam
date: 2026-06-01
source_book: 剑 18
test_id: Test 1
scores:
L: 7.5
R: 7.5
W: 6.0
S: 6.0
overall: 6.75 # 注意 IELTS 规则 .75 → 7.0
sources:
L: confirmed_decision # 用户对照答案算的
R: confirmed_decision
W: model_inference # AI 估的(或真人估的就是 confirmed_decision)
S: model_inference # 同上
overall: model_inference # 因为 W/S 是估的,整体不能算 confirmed
raw_correct:
L: 32
R: 33
W: null
S: null
weak_topics:
- listening-section-4-academic
- reading-paragraph-heading
notes: 在咖啡店做的,环境吵
open_verifications:
- "W 和 S 是 AI 估的,未经真人/真考验证—月度 italki ex-examiner 模考后回填"
---
Frontmatter 模板(type A: 真考):
---
type: mock-exam
date: 2026-10-31
source_book: BC 真考
test_id: null
scores:
L: 7.5
R: 8.0
W: 6.5
S: 6.5
overall: 7.0
sources:
L: source_of_truth
R: source_of_truth
W: source_of_truth
S: source_of_truth
overall: source_of_truth
raw_correct: null
weak_topics: []
notes: 第一次真考,兜底拿到 7.0
open_verifications: []
verified_against_reality: true # 这本身就是 reality
---
正文区域:
# {source_book} {test_id} 模考记录
## 成绩
| 项 | 分数 | source |
|---|---|---|
| Listening | {L} | {sources.L} |
| Reading | {R} | {sources.R} |
| Writing | {W} | {sources.W} |
| Speaking | {S} | {sources.S} |
| **Overall** | **{overall}** | {sources.overall} |
{若 raw_correct 有值,列听阅答对数}
## 薄弱话题
{weak_topics 列表}
## 备注
{notes}
## 待核验
{open_verifications 数组的人类可读展开,若无则写「无」}
末尾追加一行(append-only,不重写整个文件):
CLOUD="${IELTS_COACH_HOME:-$HOME/ielts-coach}"
TIME=$(date "+%Y-%m-%d %H:%M")
echo "$TIME | /ielts-mock | 录入 {source_book} {test_id}:L{L}/R{R}/W{W}/S{S} → {overall}({sources.overall}) | mock/{filename}.md" >> "$CLOUD/ai-worklog.md"
注:用 >> 追加,不要用 > 重写。
已录入:mock/{filename}.md
摘要追加到:ai-worklog.md
overall: {x.x}(source: {source_of_truth | model_inference})
距目标 7.5 差距:{7.5 - overall}
{若 overall < 7.5 且 W/S 是 model_inference}:W/S 是估的,建议下次让 italki ex-examiner 给真人分锚定。
跑 /ielts-status 看全局趋势。
/ielts-reading /ielts-writing /ielts-speaking/ielts-status/ielts 算分表,{n} 题对应 {band},你填的是 {filled},要按表算还是按你填的存?」让用户选/ielts-status 重新出报告(提醒用户跑一次)