activity-profile-builder
当学生说"我参加过一些活动但没整理过"、"帮我把经历录进去"、"我的活动档案是空的"时使用。让学生一口气把记得的活动说出来,直接把这段话拆成结构化的长期事项(角色、组织、起止时间、做了什么、结果、级别),说不清的字段留空标"待补"而不是编,再用一张选择题卡把级别判定与是否重复这类关键项一次问完,然后提案入库。只记录学生真正说出口的内容,级别按事实判定,绝不往高了写。
SKILL.mdskills/study-planning/activity-profile-builder/SKILL.md
GitHub活动经历建档 / Activity Profile Builder
把学生记在脑子里的活动经历,整理成结构化的长期事项并存下来。
难点不在存,在于信息是零碎的。学生说"我在机器人社待过两年", 这句话里缺角色、缺时间、缺具体做了什么、缺结果。
以前的做法是一条一条追问到齐。那样问一段经历要来回七八轮, 多数学生问到第三条就走了。现在的做法是:先把他说的一次性拆成表格, 缺的字段明写「待补」,让他对着表格补——看着空格填,比凭空回想容易得多。
拆解不等于补全。留空是这个 skill 的核心动作,不是失败。
何时使用 / When to use
- 学生的长期事项是空的或只有零星几条
- 学生刚结束一段经历,想趁记得清楚录下来:这段经历还没进长期事项,要存的是角色、时间、成果这些事实。
已经录过、想聊它对自己的影响,转
reflection-interviewer - 学生说"我好像做过挺多事但说不上来"
不适用于 / Not for:
- 点评这些经历够不够、招生官怎么看 —— 那是
admissions-reader - 把活动描述压到 Common App 的字符限制内 —— 那是
activity-list-optimizer - 深挖某一段经历对人的影响 —— 那是
reflection-interviewer
需要的输入 / Inputs
| 输入 | 必填 | 说明 |
|---|---|---|
| 已有长期事项 | 是 | 先读。避免把同一段经历录两遍 |
| 学生的口述 | 是 | 全部内容都来自这里。一段话就行,不必按字段说 |
| 学生档案 | 否 | 年级用来校验时间跨度是否说得通(10 年级学生说的"三年前"要问清楚) |
流程 / Process
读已有:取回现有的长期事项,避免重复录入。
让他一次说完:请他把记得的活动一口气说出来,想到什么说什么, 不用管顺序也不用管完整度。不要给他一张字段清单让他照着填——那是表格不是对话。
直接拆成表格:把他那段话拆进下面六个字段,有什么填什么,没有的写「待补」:
- 角色:具体职位。"成员"也是有效答案,不要引导他说成"负责人"
- 组织:哪个社团、学校、机构、公司
- 起止时间:到月份即可;还在进行的就留空结束时间
- 做了什么:具体动作,不是职责描述
- 结果:拿了什么奖、做出什么东西、影响了多少人。没有就写没有
- 级别:校级 / 地区级 / 国家级 / 国际级 —— 按下一节的规则先判一个并写出依据
一次问完关键项:调
ask_user(最多 4 问),只问会改变入库结果的:什么时候问 怎么问 级别拿不准 「机器人社那个比赛是哪一级?」校内 / 市级或省级 / 全国 / 国际 疑似与已有记录重复 「这段和你已有的『X』是同一件事吗?」是同一件 / 是两件 时间跨度对不上年级 「说的三年前,是 8 年级那会儿吗?」给具体年份选项 「待补」的描述与成果不用问。 那些留空入库就行,学生日后想起来再补, 或者交给
reflection-interviewer慢慢挖。逼他现在编一个出来才是真的损失。提案:
propose_events逐条提案为kind: long的长期事项。 多条一起提,不要每整理完一条就出一张卡。
输出格式 / Output
拆完直接给表格,同一轮附上问题卡:
按你说的整理成这样,空着的是我不知道的,你有空再补:
**<活动名>**
角色:<role> · 组织:<organization> · <startDate> 至 <endDate 或"至今">
做了什么:<description 或「待补」>
成果:<achievements 或「暂无」>
级别:<level>(依据:<一句话>)
级别的判定依据要写出来,学生才有机会纠正。
级别判定 / Level
这是最容易虚高的一项,按事实判定:
- 只在本校范围内 → 校级
- 参加了市/省/赛区层面的比赛或活动 → 地区级
- 全国性赛事、全国性组织 → 国家级
- 跨国赛事、国际组织 → 国际级
学生说"我们那个比赛挺大的"不构成升级依据。拿不准就按低的记,并在问题卡里问清楚。
没有这些工具时(降级) / Without these tools (degraded mode)
上面的流程按 nestudy 的工具写。在 Claude Code 或其他没有这些工具的环境里,流程、输出格式和边界都不变, 只把工具换成下表的做法,并在回复开头写明「降级:没有 nestudy 工具,整理好的档案要你自己保存」。
| 工具 | 没有时怎么做 |
|---|---|
get_events |
读不到已有记录:照常拆,同一轮的问题里加一问"这些里有没有你已经录过的",卡片上注明「未核对是否与已有记录重复」 |
get_profile |
从对话里取年级;没有就跳过时间跨度的校验,不为此追问 |
ask_user |
在对话里直接问:同样最多 4 问、每问给选项,一次问完,然后停下等他回答 |
propose_events |
把拆好的条目按上面的输出格式写成一张 Markdown 卡片(多条放在同一张),请学生自己保存;不说"已录入" |
边界 / Boundaries
- 只记录学生说出口的内容。不推断、不补全、不"根据经验通常还会包括……"。 主动的是整理,不是发明:把他一段话拆成六个字段是整理,往空字段里填内容是发明。
- 留空就是留空:
description和achievements拆不出来就写「待补」/「暂无」入库。 空着比编一个"提升了团队协作能力"诚实,也更有用——admissions-reader正是靠这些空白判断该补什么。 - 不美化:不把"成员"写成"核心成员",不把"参加了"写成"主导了"。 这份数据日后要进申请材料,注水的部分学生自己会忘,招生官不会。
- 级别不往高了写:拿不准就按低的记,并说明理由让学生自己修。
- 不代写活动描述:这里的
description是给自己看的记录,不是 Common App 的 150 字文案。 学生要那个,转activity-list-optimizer。 - 不评价:不说"这段经历很有含金量"或"这个可能帮助不大"。建档就是建档。
Token 控制 / Token discipline
- 已有长期事项一次读齐(
kind: "long"),之后不再重复取 - 多条活动攒到一起在最后一次性
propose_events,不要每问完一条就出一张卡 - 问题一次问完。运行时对连续追问有硬上限,一条活动问一轮会把额度用在半路上
变更记录 / Changelog
| 版本 | 日期 | 变更 | 类型 |
|---|---|---|---|
| 0.2.1 | 2026-09-26 | 「何时使用」与 reflection-interviewer 几乎同句:补判别句(还没进长期事项、要存事实 → 本 skill;已录过、想聊影响 → 反思);声明兼容 claude-code 却没有降级路径,补「没有这些工具时(降级)」,已有记录改为问学生、提案改为 Markdown 卡片 |
patch |
| 0.2.0 | 2026-08-04 | 转向先产出:改为一次听完口述直接拆成表格、缺项标「待补」,再用 ask_user 只问会改变入库结果的几项;取消"一次一条活动逐项追问" |
minor |
| 0.1.0 | 2026-08-04 | 初始草稿 | minor |