Skip to content
Back to skills

Project Brainstorm

ASecurity

当学生说"我想做个项目但不知道做什么"、"这个想法可行吗"、"帮我想想能做点什么"、"我有个点子想聊聊"、"这个课题值不值得做"时使用。项目动手之前的全方位判断:先读他的档案、已有经历和写过的东西,把重复的信息合并掉再数还剩几件事,然后直接给出三个具体到能明天开工的方案,每个都摆明代价、需要什么、可能死在哪。定方案之后落成长期事项加前三个里程碑,并存一份构思稿。不吹可行性,不替他选,不为了申请而编项目。

  • 5 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
ai-agentspythongobash

Works with

  • claude code

Security analysis

A100/100

Scanned November 7, 2026

npx -y skills add ChromiteCr/Skills --skill project-brainstorm --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Project Brainstorm?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Project Brainstorm
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/chromitecr-project-brainstorm/badge)](https://www.skillsdirectory.com/skills/chromitecr-project-brainstorm)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: project-brainstorm
description: 当学生说"我想做个项目但不知道做什么"、"这个想法可行吗"、"帮我想想能做点什么"、"我有个点子想聊聊"、"这个课题值不值得做"时使用。项目动手之前的全方位判断:先读他的档案、已有经历和写过的东西,把重复的信息合并掉再数还剩几件事,然后直接给出三个具体到能明天开工的方案,每个都摆明代价、需要什么、可能死在哪。定方案之后落成长期事项加前三个里程碑,并存一份构思稿。不吹可行性,不替他选,不为了申请而编项目。
category: study-planning/growth
version: 0.1.1
status: draft
priority: P0
compatible_agents:
  - claude-code
  - nestudy
  - generic-llm-agent
display_name: 项目头脑风暴
capabilities:
  - get_profile
  - get_events
  - search_artifacts
  - dedupe_findings
  - propose_events
  - propose_artifact
optional_capabilities:
  - ask_user
  - resolve_deadline
outputs:
  - chat
  - document
  - event
max_rounds: 30
suggest_hint: 想做个项目但还没定?用「项目头脑风暴」把想法摊开,看看哪个真做得动
---

# 项目头脑风暴 / Project Brainstorm

在动手之前,把一个项目想法从"听起来不错"推到"明天上午可以做第一件事"。

这个 skill 存在的理由是:**学生卡住的不是没有想法,是没法判断哪个想法真做得动。**
"做个环保相关的项目"这句话里,缺可行性、缺代价、缺"做完之后手里有什么"。
把这些摆出来,他自己就能选。

## 何时使用 / When to use

- 学生想做点什么但方向模糊("想做个项目""想搞个社团")
- 他有一个具体想法,想知道值不值得投入
- 已有的个人项目或课题做不下去了,要判断是转向还是收尾
- 要选研究课题、竞赛选题、EE/IA 题目(要评分的选题只给方向和可行性,见「边界」)

**不适用于** / Not for:

- 已经定了要办读书会、分享、讲座、社群活动这类事(不论办没办过),要判断办多小、
  下一步往哪走、停不停 —— 那是 `program-maturity-navigator`。个人项目、研究课题,
  或者还要在几个方向里挑,才归本 skill
- 项目已经定了,要排时间 —— 那是 `deadline-to-study-plan`
- 整理已经做完的经历 —— 那是 `activity-profile-builder`
- 问"招生官会怎么看我现有的背景" —— 那是 `admissions-reader`
- 深挖某段经历对他的意义 —— 那是 `reflection-interviewer`

## 流程 / Process

### 1. 读三样,一次读齐

| 读什么 | 用来判断 |
|---|---|
| `get_profile` | 年级与课程体系——**决定还剩多少时间**。12 年级上学期启动一个两年期项目,这件事本身就该说出来 |
| `get_events`(`kind: long` 与近期短期都要) | 他已经做过什么(别推荐重复的)、手上压着多少(时间还有没有) |
| `search_artifacts` | 他自己写过的东西里有没有这个方向的影子。**真正的好项目多半藏在他已经在意的事里**,不在"什么背景提升项目热门"里 |

### 2. 去重,再数还剩几件事

把上一步搜到的资料条目一起丢给 `dedupe_findings`。

**这一步不能省。** 学生的反思、复盘、活动记录里同一件事会出现好几遍——
一段机器人社的经历可能有一条长期事项、两篇反思、一次周复盘提到。
不去重就会得出"他在这个方向上已经积累很厚"的错误结论,然后劝他别做。

**去重分两半,工具只做前一半:**

| | 谁做 | 例子 |
|---|---|---|
| 字面重复 | `dedupe_findings` | 同一个链接的不同写法、复制粘贴过的两条记录、转载 |
| 说的是同一件事 | **你自己** | 「区域赛拿了第四」与「名次是第四名」——字面几乎不重合,工具合不了 |

`dedupe_findings` 返回的字段:

| 字段 | 是什么 | 怎么用 |
|---|---|---|
| `received` | 交进去几条 | 就是要报的"原始 M 条" |
| `distinct` | 字面去重后剩几条 | **不是最终答案**,语义那一半还没做 |
| `kept` | 字面去重后留下的条目 | 在它上面自己再并一遍 |
| `mergedGroups` | 被合掉的每一组:留下哪条(`keep`)、合掉哪些(`merged`)、为什么(`reasons`,如"同一个链接""字面重合 72%") | 向学生转述合并依据,不只给数字 |
| `similar` | "差一点就算重复"的成对条目,附重合度(`overlap`) | 只是字面接近,不是语义相关,也没有合并;逐对自己判 |
| `skipped` | 没有标题也没有正文、或超出 100 条上限而没处理的条数(有这种条目时才出现) | 如实说出来 |

所以拿到 `kept` 之后**再自己过一遍标题和片段**,把讲同一件事的并掉,然后才报数字。

如实说出两个数:「原始 8 条,去掉重复后是 3 件事」。**不要把重复计数当成积累厚度**——
这是这个流程最容易犯的错,代价是劝退一个其实还很空的方向。

### 3. 直接给三个方案

**不要先问"你想做哪个领域"。** 拿着第 1 步读到的东西,直接给三个具体方案。
EE、IA、竞赛这类要评分的选题是例外:三个方案写成候选方向和可行性判断,
不替他写出研究问题,见「边界」。
每个方案必须写满这五项,缺一项就是没想清楚:

```markdown
### 方案 <N>:<一句话说清楚做什么>
- **第一件事**:明天/这周能动手的那一件,具体到动作
- **要什么**:时间(每周几小时 × 几个月)、钱、人、设备、许可
- **做完手里有什么**:一份报告 / 一个能跑的东西 / 一场办成的活动 / 一组数据
- **可能死在哪**:最可能让它半途而废的那一个原因,写具体
- **和你已有的关系**:接着 <某段经历> 往下走 / 是个全新方向(两者都行,说清楚就好)
```

三个方案要**在代价上拉开差距**——一个轻的(几周)、一个中的(一学期)、一个重的(一年以上)。
三个都是"一学期的中等项目"等于只给了一个。

**「可能死在哪」是这五项里最有用的一项。** 学生放弃项目的原因通常在开始时就看得见:
需要学校批但没人牵头、需要采访但不认识人、需要连续三个月每周投入但下学期就是大考季。
说出来,比列十个优点有用。

### 4. 只问真正的岔路口

三个方案摆完,用 `ask_user` 一次问完剩下的选择(最多 4 问)。值得占一问的:

| 问什么 | 选项举例 |
|---|---|
| 选哪个方向 | 方案 1 / 2 / 3 / 都不是,我想说说别的 |
| 每周能投入多少 | 2 小时以内 / 2–5 小时 / 5–10 小时 / 更多 |
| 有没有硬约束 | 需要家长出钱就不行 / 不能占用周末 / 必须能写进申请 / 没有 |

**不要问"你对什么感兴趣"。** 这问题他答不好,而且第 1 步读到的东西比他临时想出来的答案准。

### 5. 定下来就落地

- `propose_events` 提案一条 `kind: long` 的长期事项(这个项目本身),
  加**前三个里程碑**的短期事项。只提前三个——再往后排的都是猜的。
  每个里程碑都要有交付物,"推进项目"不是交付物。
- `propose_artifact` 存一份 `kind: plan` 的构思稿,把三个方案、选了哪个、
  为什么选、当时判断的风险都写进去。**没选的那两个也要留着**——
  半年后项目卡住时,这份记录是最有用的东西。

赶某个比赛或申报截止日的,有 `resolve_deadline` 就用它换算;没有时跑「没有这些工具时(降级)」
里的 `python3` 命令,结果标"降级计算"。两种情况都不许口算,也不许凭感觉估。

## 输出格式 / Output

```markdown
## 你现在的位置
<年级 / 体系 / 手上压着什么 / 还剩多少可支配时间>

## 相关的积累
去重后 <N> 件(原始 <M> 条,合并了 <M-N> 条重复):
- <一件事> —— 来自 <哪几条记录>;合并依据:<工具给的 reasons,或你判断是同一件事的理由>

## 三个方案
<按上面那个模板,三段>

## 我的看法
<一段。可以有倾向,但要说清楚倾向的依据,并且明确这是他的决定>
```

## 没有这些工具时(降级)

上面点名的工具只有 nestudy 运行时有。在 Claude Code 或别的宿主里逐个这样替代,
并在输出里如实标"降级":

| 工具 | 没有时怎么做 |
|---|---|
| `get_profile` | 在对话里一次问齐年级、课程体系、目标方向;使用者贴了档案就直接读 |
| `get_events` | 请使用者列出正在做和做过的长期项目、近期压着的事,不替他补 |
| `search_artifacts` | 请使用者贴出或指给你相关的反思、复盘、活动记录;能读文件就读他指定的那几份 |
| `dedupe_findings` | 只合并两种确定的字面重复:链接去掉追踪参数(`utm_` 之类)、`www` 和末尾斜杠后完全相同,或标题完全相同。其余都归到语义那一半,逐对自己判并写出依据;不报目测的重合度。「相关的积累」标"降级:字面去重只核了链接和标题" |
| `ask_user` | 在对话里直接问,同样一次问完、最多 4 问、每问附选项 |
| `propose_events` | 输出一张 Markdown 卡片:长期事项(名称、开始日)加前三个里程碑(名称、到期日 YYYY-MM-DD、交付物),标"降级:未写入日程,请自己录入" |
| `propose_artifact` | 把构思稿整份输出成 Markdown(含没选的两个方案),标"降级:未存档,请自己保存" |
| `resolve_deadline` | 跑下面的命令,结果标"降级计算";不许口算,也不许凭感觉估 |

每行一个截止日:`日期 时间 时区 标签`,时区写 IANA 名(美东 `America/New_York`、美西 `America/Los_Angeles`、英国 `Europe/London`);通知没写具体时间的按 23:59 算并注明。命令按北京时间换算,与 `application-timeline-builder`、`deadline-to-study-plan` 用的是同一段程序,打印出的警告和「夏令时切换」行照样转述。需要 Python 3.9 以上。

```bash
python3 -c 'import sys
from datetime import datetime, timedelta, timezone
from zoneinfo import ZoneInfo
bj, utc = ZoneInfo("Asia/Shanghai"), timezone.utc
today = datetime.fromisoformat(sys.argv[1]).date() if len(sys.argv) > 1 else datetime.now(bj).date()
gap = lambda x: f"北京 = 当地 {(x.astimezone(bj).utcoffset() - x.utcoffset()) / timedelta(hours=1):+g} 小时"
for line in sys.stdin.read().splitlines():
    if not line.strip(): continue
    d, t, z, *label = line.split()
    tz = ZoneInfo(z)
    raw = datetime.fromisoformat(f"{d} {t}").replace(tzinfo=tz)
    loc = raw.astimezone(utc).astimezone(tz)
    b = loc.astimezone(bj)
    n = (b.date() - today).days
    print(" ".join(label) or d, f"| 当地 {loc:%Y-%m-%d %H:%M %Z} | 北京 {b:%Y-%m-%d %H:%M} | {gap(loc)} |", f"还有 {n} 天" if n >= 0 else f"已过 {-n} 天")
    if raw.replace(fold=1).utcoffset() != raw.utcoffset(): print("  警告:这个当地时间落在夏令时切换的那一小时里(不存在或出现两次),先向学校确认")
    u = loc.astimezone(utc).replace(minute=0, second=0, microsecond=0)
    prev = (u - timedelta(hours=505)).astimezone(tz)
    for h in range(-504, 505):
        x = (u + timedelta(hours=h)).astimezone(tz)
        if x.utcoffset() != prev.utcoffset(): print(f"  夏令时切换:{x:%Y-%m-%d %H:%M} 起 {prev.tzname()}→{x.tzname()},在截止之" + ("前" if h <= 0 else "后") + f";切换前 {gap(prev)},切换后 {gap(x)}")
        prev = x' <<'EOF'
2026-11-01 23:59 America/New_York 比赛截止
EOF
```

第 2 步的分工不变:语义上算不算一回事,本来就是你的活。

## 边界 / Boundaries

- **不吹可行性**:三个方案里如果有一个你觉得多半做不成,就写在「可能死在哪」里,
  不要为了凑三个而端上来一个漂亮的空壳。
- **不替他选**:可以有倾向、要给依据,但选择是他的。他的时间、他的兴趣、他要承担后果。
- **要评分的选题只给方向和可行性**:EE、IA、竞赛这类选题,三个方案只作候选方向和可行性判断,
  研究问题由学生自己定,并交导师确认。采用了 AI 建议的,按 IB 或学校的规定注明。
- **不为了申请而编项目**:不说"这个方向招生官会喜欢"。没人知道,说了就是编。
  一个他自己不在乎的项目做不完,做完了也写不出真东西。
- **不编数据支撑可行性**:不引用"这类项目通常需要 X 小时"、"同类竞赛录取率"这种
  你没有来源的数字。要么说清楚是估算及估算依据,要么不说。
- **去重结果如实说**:合并了几条就说几条。把重复计数当成积累厚度是这个流程最容易犯的错。
- **不推荐需要造假才能完成的项目**:需要伪造数据、冒用身份、绕过学校规定的,直接说不做。
- **不承诺结果**:项目做不做得成取决于他,不是取决于这份规划。

## Token 控制 / Token discipline

- 三样一次读齐,不要为每个方案单独回去查
- `search_artifacts` 用 2–3 个关键词一次搜完;去重也是一次调完,不要一条条比
- 三个方案控制在一屏内读得完。每项一两句,写不下说明还没想清楚
- 没被选中的方案不要在后续轮次里反复重贴,构思稿里存过就够了

## 变更记录 / Changelog

| 版本 | 日期 | 变更 | 类型 |
|---|---|---|---|
| 0.1.1 | 2026-09-26 | 第 2 步写明 dedupe_findings 返回的各字段(原先只提 kept、similar,用例却要转述 mergedGroups、不把 distinct 当答案);补要评分选题(EE/IA、竞赛)的诚信边界;新增「没有这些工具时(降级)」,截止日换算改为有工具用工具、没有就跑 zoneinfo 命令并标降级计算;与 program-maturity-navigator 按对象分流 | patch |
| 0.1.0 | 2026-08-05 | 初始草稿。含 `dedupe_findings` 去重环节;网页检索的部分等 S11 的 `web_search` 落地后接入,去重本身不需要改动 | minor |

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.