Back to skills
SKILL.md
Activity List Optimizer
ASecurity当学生说"Common App 活动栏写不下"、"这段活动描述超字数了"、"帮我把这几条压到限制内"时使用。先按官方申请表核对当季字符限额,再逐条检查;一次把所有条目量完并直接给出压缩版,只在需要砍掉实质内容时才用选择题问该保哪部分。每改一版都用工具重新数一遍字符,绝不凭感觉说"这样应该够了"。只压缩,不代写空白。
- 5 stars
- 0 votes
- 0 copies
- 0 views
- Added November 7, 2026
Works with
Security analysis
100/100npx -y skills add ChromiteCr/Skills --skill activity-list-optimizer --agent claude-codeAre you the author of Activity List Optimizer?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/chromitecr-activity-list-optimizer)---
name: activity-list-optimizer
description: 当学生说"Common App 活动栏写不下"、"这段活动描述超字数了"、"帮我把这几条压到限制内"时使用。先按官方申请表核对当季字符限额,再逐条检查;一次把所有条目量完并直接给出压缩版,只在需要砍掉实质内容时才用选择题问该保哪部分。每改一版都用工具重新数一遍字符,绝不凭感觉说"这样应该够了"。只压缩,不代写空白。
category: study-planning/admissions
version: 0.2.2
status: draft
priority: P0
compatible_agents:
- claude-code
- nestudy
- generic-llm-agent
display_name: 活动栏压缩
capabilities:
- get_events
- check_activity_limits
optional_capabilities:
- propose_events
- ask_user
outputs:
- chat
max_rounds: 40
suggest_hint: 要填 Common App 活动栏了,用「活动栏压缩」逐条核字符数并压进限制内
---
# 活动栏压缩 / Activity List Optimizer
把学生写好的活动描述压进 Common App 的字符限额,并保住其中真正有信息量的部分。
两件事必须分清楚:
> **把学生已经写出来的内容压短,是编辑。在空白处替他写,是代写。**
> 这个 skill 做前者,不做后者。
## 何时使用 / When to use
- 学生在填 Common App 活动栏,有内容但超字数
- 学生想知道自己写的这几条在限额上还剩多少空间
- 有一批活动描述要统一过一遍
**不适用于** / Not for:
- 活动经历还没整理过 —— 先用 `activity-profile-builder` 建档
- 想知道这些活动够不够、招生官怎么看 —— 那是 `admissions-reader`
- 写主文书或补充文书 —— 不是本 skill 的范围
## 需要的输入 / Inputs
| 输入 | 必填 | 说明 |
|---|---|---|
| 学生写的原文 | 是 | 职位 / 组织 / 描述三栏中要处理的那些。**没有原文就没有可压缩的东西** |
| 已有长期事项 | 否 | 学生说"就用我系统里那几条"时读出来当原料 |
学生只给了活动名字、没有描述时:**不要替他写第一版。**
让他先用大白话说清楚做了什么,哪怕三百字也行——压缩需要有东西可压。
这是本 skill 唯一必须停下来等的情况,因为缺的不是偏好而是原料。
## 限额 / Limits
| 栏位 | 上限 |
|---|---|
| Position/Leadership description | 50 字符 |
| Organization Name | 100 字符 |
| Please describe this activity | 150 字符 |
| 活动条数 | 10 条 |
> **易变规则**:上表最后核对于 **2026-08-21**。权威来源是 Common App 官方申请表
> <https://apply.commonapp.org/>(需登录;以申请人当季界面显示的 `maxlength` 和条目上限为准)。
> 每个申请季首次使用本 skill 时,以及用户界面与上表不一致时,都要重新核对;不得把这里的历史值当成永久规则。
> 同时确认 `check_activity_limits` 使用的上限与当季表单一致。若工具仍是旧值,明确报告配置过期,
> 在更新工具前不要声称文案已满足当季限制。
>
> **待核实(2026-09-26 记)**:有二手资料称 2026-27 申请季活动栏的栏位是否必填、栏位与版块名称有调整,
> 还没有对照官方表单核实,所以上表没改。下次核对时逐项确认这几点,确认后再改表并更新核对日期;
> 核实之前不要把这些说法当成已确定的事实告诉学生。
**是字符不是词。** 表单按 UTF-16 计(同 HTML 的 `maxlength`),
所以 emoji 一个通常占 2 格——学生肉眼数出来 149,表单可能判 152。
有 `check_activity_limits` 就由它算;没有时跑下文「没有这些工具时(降级)」里的命令,结果标「降级计算」。
哪种情况都不要凭眼睛数。
## 流程 / Process
1. **拿原文**:学生贴进来,或从长期事项里读出来。
2. **一次量完**:把**所有**条目一起传给 `check_activity_limits`,看每条超了多少、哪一栏超。
不要一条一调,也不要量一条改一条再问一句。
3. **直接给出全部压缩版**,按这个优先级砍:
- **先砍虚词**:`Responsible for`、`Worked to`、`Helped to`、`In charge of` 直接删,动词开头
- **再砍形容词**:`very`、`successfully`、`significant` 几乎都不承载信息
- **保住数字**:`18 人`、`从 12 提到 34`、`三所学校` —— 这些是最贵的字符,最后才动
- **保住具体名词**:技术名、赛事名、职位名
砍虚词和形容词**不需要问**,直接做,在"砍掉了"那一行写明。
4. **改完重量**:再调一次 `check_activity_limits`。
**每一版都要重新量。** 你数不准字符数,这不是谨慎是事实。
5. **只有砍到实质内容时才问**:虚词形容词砍完还超,说明装不下的是信息本身。
这时用 `ask_user` 一次问完(每条一问,最多 4 条一批):
> 「机器人社这条砍完虚词还差 22 格,下面哪个可以不要?」
> 拿奖那句 / 带了几个新人那句 / 具体做的技术那句
别自己挑一个砍掉再告诉他。这是他的材料,取舍是他的。
6. **(可选)存回去**:学生要求把压缩版写回长期事项时,用 `propose_events` 出确认卡。
不主动做这一步——活动栏文案和系统里的记录用途不同,多数学生会想分开。
条数超过 10 时,把这件事单独提出来:列出哪几条最弱、为什么,
用 `ask_user` 多选让**学生自己**决定砍哪几条。
## 输出格式 / Output
```markdown
## <活动名>
**描述**(原 <N> 字符 → 现 <M> 字符,限 150)
原文:<原文>
压缩:<压缩版>
砍掉了:<具体砍了什么,一句话>
```
全部处理完给一个总览:几条、几条还超、还差几格。
## 没有这些工具时(降级) / Without these tools (degraded mode)
上面的流程按 nestudy 的工具写。在 Claude Code 或其他没有这些工具的环境里,流程、输出格式和边界都不变,
只把工具换成下表的做法,并在回复开头写明「降级:没有 nestudy 工具,字符数由本地命令计算」。
| 工具 | 没有时怎么做 |
|---|---|
| `check_activity_limits` | 跑下面的命令,每一栏跑一次,同一栏的所有条目一次量完。流程里每一处"调 `check_activity_limits`"都换成它,改完之后的重量也一样;报出的数字标「降级计算」 |
| `get_events` | 请学生把原文直接贴进来,不假装读到了他系统里的记录 |
| `ask_user` | 在对话里直接问:同样攒成一条消息、每问给选项,然后停下等他回答 |
| `propose_events` | 把要存回去的压缩版写成一张 Markdown 卡片(活动名、压缩后的描述),请学生自己保存,不说"已存入" |
一行一条,末尾的参数是这一栏的上限(按上面「限额」表,并先照「易变规则」确认当季值)。
命令先去掉首尾空白,再按 UTF-16 码元计数,与表单同一口径;"码点"是逐个字符数出来的个数,
普通文字和单个 emoji 跟肉眼数一致,两个数不相等就是有占 2 格的字符。
```bash
python3 -c 'import sys
lim = int(sys.argv[1])
rows = [s.strip() for s in sys.stdin.read().splitlines() if s.strip()]
for i, s in enumerate(rows, 1):
n = len(s.encode("utf-16-le")) // 2
print(f"{i}: 表单计 {n} / 码点 {len(s)} / 限 {lim} / " + (f"超 {n - lim}" if n > lim else f"剩 {lim - n}"))
print(f"共 {len(rows)} 条" + (",超过 10 条槽位" if len(rows) > 10 else ""))' 150 <<'EOF'
<第一条原文>
<第二条原文>
EOF
```
一条 149 个字符、结尾带 3 个 emoji 的描述,输出是 `1: 表单计 152 / 码点 149 / 限 150 / 超 2`。
连命令也跑不了时,把这条命令交给学生在自己电脑上跑,或者请他看表单上的计数器。
拿到数字之前不说"已在限制内",也不凭眼睛估一个数给他。
## 边界 / Boundaries
- **不代写**:空白栏位不替学生填。他没说过的经历、成果、数字,一个字都不能出现。
- **不加料**:压缩过程中不许"顺便润色得更有冲击力"。
原文里没有的成果不能加,模糊的表述不能替他变确定("参与"不能改成"主导")。
- **不凭感觉数字符**:每一版都过 `check_activity_limits`(没有这个工具就跑降级命令)。说"这样应该在限制内了"就是失职。
- **砍内容要经确认**:砍虚词和形容词直接做;砍到实质内容时用 `ask_user` 让他选,不要替他决定。
- **不替学生决定留哪十条**:条数超限时给判断依据,让他自己勾。
- **不承诺效果**:不说"这样写招生官会更喜欢"。没人知道,说了就是编。
## Token 控制 / Token discipline
- 一次把所有要处理的条目传给 `check_activity_limits`,不要一条一调
- 每轮只输出改动的那几条,不重复贴全部原文
- 要问就把多条的取舍攒成一张卡问完;运行时对连续追问有硬上限
- 一条改两三版还压不进去,说明信息量确实超了,交回学生取舍,不要自己反复试
## 变更记录 / Changelog
| 版本 | 日期 | 变更 | 类型 |
|---|---|---|---|
| 0.2.2 | 2026-09-26 | 声明兼容 claude-code 却没有降级路径:补「没有这些工具时(降级)」,无 `check_activity_limits` 时用 `python3 -c` 按 UTF-16 码元计数并标「降级计算」,"不要自己数"改为有工具用工具、无工具跑命令;记下 2026-27 季栏位变化待核实;补配置过期与降级两个用例 | patch |
| 0.2.1 | 2026-09-11 | 为 Common App 易变限额补充核对日期、官方来源与每申请季复核要求;上游限额变化时发布 PATCH | patch |
| 0.2.0 | 2026-08-04 | 转向先产出:一次量完所有条目并直接给出全部压缩版;砍实质内容改用 `ask_user` 一批问完,不再逐条来回 | minor |
| 0.1.0 | 2026-08-04 | 初始草稿 | minor |
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.