| name | dojo-assess |
| category | process |
| stage | S1 |
| version | 0.2.0 |
| description | Codojo S1 阶段唯一 skill:能力评估。全面分析目标项目的技术栈与
理论内容,生成 `.codojo/open-questions.md` 评估用户当前水平。
两种状态模式(自动路由):
- start : open-questions.md 不存在 → 扫描项目 → 生成问题清单 → 逐题交互
- resume : open-questions.md 存在但无 ASSESS_DONE 标记 → 题目框架已有,
跳过项目扫描和题目生成,从第一个未填写答案的问题继续问答
触发关键词:评估水平、S1、能力评估、assess、测试我的水平、我会什么、
看看我的基础、开始评估。
前置条件:由 dojo-stage 路由器确认当前应进入 S1(.codojo/ 中无完成标记)。
后置产出:`.codojo/open-questions.md`(末尾含 `<!-- ASSESS_DONE -->` 标记)。
注意:本 skill **只做能力评估**,不生成学习计划(那归 dojo-plan · S2)。
如果 open-questions.md 已存在且末尾包含 `<!-- ASSESS_DONE -->` 标记,
说明 S1 已完成,应转 dojo-plan(S2),不可重复评估(除非用户明确要求重测)。
如果用户直接说"帮我学习这个项目",应由 dojo-stage 路由,不可直接进入本 skill。
|
dojo-assess — S1 能力评估
一句话定位:分析项目技术栈,通过交互式问答评估用户当前水平,产出 open-questions.md。
何时使用
- ✅ 用户第一次进入项目学习流程
- ✅ 用户说"帮我学习这个项目"、"评估我的水平"、"我是新手"
- ✅
.codojo/ 目录不存在或 open-questions.md 不存在
- ❌
open-questions.md 已存在且已填答案 → 转 dojo-plan
- ❌ 用户已有学习计划想直接开始学 → 转
dojo-teach
前置条件
工作流
Step 1:项目全面扫描
扫描 <repo-root>/ 的完整目录结构、代码文件、配置文件,识别:
- 编程语言:Java / Python / Go / JS / TS 等
- 框架:Spring Boot / Django / React / Vue 等
- 构建工具:Maven / Gradle / npm / pip 等
- 中间件:Redis / MySQL / Kafka / MQ 等
- 架构模式:MVC / 微服务 / 分层架构等
- 其他:设计模式、领域概念、第三方 API 等
将分析结果(语言、框架、构建工具等)写入 open-questions.md 的"项目技术栈概览"章节。分析过程本身不单独输出给用户。
Step 2:生成 open-questions.md
根据 Step 1 的分析结果,生成 <repo-root>/.codojo/open-questions.md。
格式要求:
# 能力评估问卷
> 本问卷由 AI 根据项目技术栈自动生成,用于评估你的当前水平,以便制定个性化学习计划。
## 项目技术栈概览
- 语言:xxx
- 框架:xxx
- 构建工具:xxx
- ...
## 评估问题
### Q1: <问题>
- [ ] 完全不了解
- [ ] 听说过但没用过
- [ ] 用过但不熟练
- [ ] 熟练掌握
**你的回答**:<待填>
### Q2: <问题>
...
## 自由补充
<用户自行补充的说明,如学习目标、时间安排、特殊背景等>
问题设计原则:
- 覆盖项目涉及的每个主要技术点
- 从基础到进阶分层(如:Java 基础语法 → Spring IoC → Spring Boot 自动配置)
- 问题数量 8-15 个(不宜过多造成负担)
- 措辞友好,不让用户有压力
Step 3:交互式问答
将 open-questions.md 中的问题逐个向用户提问:
- 展示问题 + 选项
- 等待用户回答
- 立即写入文件
- 进入下一个问题
问题数量限制:最多 15 题,避免评估阶段过长。
注意:
- 每次只问一个问题,不要一次性抛出所有问题
- 用户回答后可以简短回应("好的"、"了解"),不要展开讲解(教学在 S3)
- 如果用户回答模糊,可追问一次澄清
- 用户回答明确后,必须立刻更新
open-questions.md 中对应题目的 **你的回答**
- 如果会话中断,恢复时读取
open-questions.md,从第一个 **你的回答**:<待填> 的问题继续
Step 4:自由补充
所有问题问完后,给用户一次机会:
所有问题已回答完毕!在生成学习计划之前,你还有什么想补充的吗?
比如:
- 你的学习目标是什么?(看懂代码 / 能改 Bug / 能加功能)
- 每天大概能投入多少时间学习?
- 有没有特别想重点学的部分?
- 其他任何你觉得我应该知道的信息
没有补充的话,回复「无」即可。
Step 5:补充自由说明并完成
将 Step 4 收集的自由补充写入 open-questions.md,并在文件末尾追加完成标记(其他 skill 通过此标记判断 S1 是否完成):
## 评估完成
- 完成时间:YYYY-MM-DD HH:mm
<!-- ASSESS_DONE -->
输出完成自检:
## 📋 S1 能力评估 完成
**产出物** ✅
- `.codojo/open-questions.md`(已填写完毕)
**评估概要**
- 已掌握:<列出>
- 需学习:<列出>
- 用户补充:<摘要>
**下一步** → S2 计划生成
是否进入 S2 生成个性化学习计划?
Gotchas
- 不要一次性把所有问题抛给用户——必须逐个提问,否则用户会被吓到
- 不要在评估阶段展开讲解技术知识——评估只负责收集信息,教学在 S3
- 不要生成与项目无关的通用问题(如"你会用 Docker 吗")——问题必须直接源于项目扫描结果
- 不要问超过 15 个问题——过多问题会让用户失去耐心,8-15 个为宜
- 不要忘记写入
<!-- ASSESS_DONE --> 完成标记——其他 skill 依赖此标记判断 S1 是否完成
- 如果用户回答模糊(如"一般般"),可以追问一次澄清,但不要反复追问
- 问答过程中必须逐题增量写入答案,避免会话中断后丢失已回答内容
- 恢复 S1 时不要从 Q1 重新开始,必须读取已填写答案并从第一个
<待填> 继续
产出
| 文件 | 路径 | 说明 |
|---|
open-questions.md | <repo-root>/.codojo/open-questions.md | 能力评估问卷(含答案,末尾有 <!-- ASSESS_DONE --> 标记) |
输出风格约束
详见共用 reference:../_shared/output-style-guide.md
要点:自检 / 报告类输出用 ✅(通过)/ ⚠️(警告)/ ❌(失败)/ ⚪(未开始)四档。