@chinhae/atw-cli 0.2.9 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/README.md +29 -5
  2. package/dist/commands/init.d.ts.map +1 -1
  3. package/dist/commands/init.js +243 -123
  4. package/dist/commands/init.js.map +1 -1
  5. package/dist/commands/uninstall.d.ts.map +1 -1
  6. package/dist/commands/uninstall.js +18 -3
  7. package/dist/commands/uninstall.js.map +1 -1
  8. package/dist/commands/update.d.ts +0 -3
  9. package/dist/commands/update.d.ts.map +1 -1
  10. package/dist/commands/update.js +45 -0
  11. package/dist/commands/update.js.map +1 -1
  12. package/dist/configurators/index.d.ts +8 -0
  13. package/dist/configurators/index.d.ts.map +1 -1
  14. package/dist/configurators/index.js +19 -0
  15. package/dist/configurators/index.js.map +1 -1
  16. package/dist/migrations/manifests/0.2.10.json +9 -0
  17. package/dist/migrations/manifests/0.3.0.json +3410 -0
  18. package/dist/templates/atw/config.yaml +4 -3
  19. package/dist/templates/atw/index.d.ts +2 -0
  20. package/dist/templates/atw/index.d.ts.map +1 -1
  21. package/dist/templates/atw/index.js +4 -0
  22. package/dist/templates/atw/index.js.map +1 -1
  23. package/dist/templates/atw/scripts/common/noob_mode.py +102 -0
  24. package/dist/templates/atw/scripts/common/session_context.py +7 -0
  25. package/dist/templates/atw/scripts/noob_mode.py +41 -0
  26. package/dist/templates/atw/scripts/tickets.py +66 -10
  27. package/dist/templates/atw/workflow.md +81 -17
  28. package/dist/templates/common/bundled-skills/atw-code-review/SKILL.md +4 -2
  29. package/dist/templates/common/bundled-skills/atw-codebase-design/DESIGN-IT-TWICE.md +1 -1
  30. package/dist/templates/common/bundled-skills/atw-diagnosing-bugs/SKILL.md +2 -2
  31. package/dist/templates/common/bundled-skills/atw-domain-modeling/{CONTEXT-FORMAT.md → GLOSSARY-FORMAT.md} +10 -10
  32. package/dist/templates/common/bundled-skills/atw-domain-modeling/SKILL.md +12 -12
  33. package/dist/templates/common/bundled-skills/atw-handoff/SKILL.md +1 -1
  34. package/dist/templates/common/bundled-skills/atw-implement/SKILL.md +6 -4
  35. package/dist/templates/common/bundled-skills/atw-implement-spec/SKILL.md +79 -0
  36. package/dist/templates/common/bundled-skills/atw-implement-spec/agents/openai.yaml +5 -0
  37. package/dist/templates/common/bundled-skills/atw-improve-codebase-architecture/SKILL.md +5 -5
  38. package/dist/templates/common/bundled-skills/atw-init-repo/SKILL.md +6 -4
  39. package/dist/templates/common/bundled-skills/atw-init-repo/references/domain.md +8 -8
  40. package/dist/templates/common/bundled-skills/atw-init-repo/references/issue-tracker-atw-local.md +5 -2
  41. package/dist/templates/common/bundled-skills/atw-init-repo/references/issue-tracker-atw.md +5 -2
  42. package/dist/templates/common/bundled-skills/atw-init-repo/references/issue-tracker-github.md +5 -4
  43. package/dist/templates/common/bundled-skills/atw-init-repo/references/issue-tracker-gitlab.md +2 -2
  44. package/dist/templates/common/bundled-skills/atw-init-repo/references/triage-labels.md +1 -1
  45. package/dist/templates/common/bundled-skills/atw-interview/SKILL.md +9 -1
  46. package/dist/templates/common/bundled-skills/atw-map/SKILL.md +5 -5
  47. package/dist/templates/common/bundled-skills/atw-noob-mode/SKILL.md +101 -0
  48. package/dist/templates/common/bundled-skills/atw-noob-mode/agents/openai.yaml +3 -0
  49. package/dist/templates/common/bundled-skills/atw-prototype/scripts/build_explorer.py +15 -9
  50. package/dist/templates/common/bundled-skills/atw-spec/SKILL.md +1 -1
  51. package/dist/templates/common/bundled-skills/atw-tdd/SKILL.md +2 -2
  52. package/dist/templates/common/bundled-skills/atw-tickets/SKILL.md +4 -4
  53. package/dist/templates/common/bundled-skills/atw-triage/SKILL.md +2 -2
  54. package/dist/templates/common/commands/continue.md +1 -1
  55. package/dist/templates/opencode/plugins/inject-workflow-state.js +29 -1
  56. package/dist/templates/shared-hooks/inject-subagent-context.py +29 -3
  57. package/dist/templates/shared-hooks/inject-workflow-state.py +27 -3
  58. package/dist/templates/shared-hooks/session-start.py +23 -0
  59. package/dist/templates/snow/SNOW.md +1 -1
  60. package/dist/utils/file-writer.d.ts.map +1 -1
  61. package/dist/utils/file-writer.js +29 -16
  62. package/dist/utils/file-writer.js.map +1 -1
  63. package/dist/utils/interactive-guard.d.ts +2 -2
  64. package/dist/utils/interactive-guard.js +2 -2
  65. package/dist/utils/lang.d.ts +14 -0
  66. package/dist/utils/lang.d.ts.map +1 -0
  67. package/dist/utils/lang.js +20 -0
  68. package/dist/utils/lang.js.map +1 -0
  69. package/dist/utils/optional-skills.d.ts +90 -0
  70. package/dist/utils/optional-skills.d.ts.map +1 -0
  71. package/dist/utils/optional-skills.js +266 -0
  72. package/dist/utils/optional-skills.js.map +1 -0
  73. package/dist/utils/template-fetcher.d.ts +6 -0
  74. package/dist/utils/template-fetcher.d.ts.map +1 -1
  75. package/dist/utils/template-fetcher.js +1 -1
  76. package/dist/utils/template-fetcher.js.map +1 -1
  77. package/package.json +2 -2
  78. package/dist/templates/common/bundled-skills/atw-merge/SKILL.md +0 -14
  79. package/dist/templates/common/bundled-skills/atw-merge/agents/openai.yaml +0 -3
  80. package/dist/templates/common/bundled-skills/dejargonizer/SKILL.md +0 -133
  81. package/dist/templates/common/bundled-skills/noob-mode/SKILL.md +0 -175
  82. package/dist/templates/common/bundled-skills/noob-mode/references/examples.md +0 -418
  83. package/dist/templates/common/bundled-skills/noob-mode/references/glossary.md +0 -368
  84. package/dist/templates/common/bundled-skills/oxy-explanation/SKILL.md +0 -80
  85. package/dist/templates/common/bundled-skills/oxy-learning-hub/SKILL.md +0 -179
  86. package/dist/templates/common/bundled-skills/oxy-learning-hub/assets/course.css +0 -1044
  87. package/dist/templates/common/bundled-skills/oxy-learning-hub/assets/course.js +0 -184
  88. package/dist/templates/common/bundled-skills/oxy-learning-hub/assets/lesson-template.html +0 -125
  89. package/dist/templates/common/bundled-skills/oxy-learning-hub/assets/summary-template.html +0 -659
  90. package/dist/templates/common/bundled-skills/oxy-learning-hub/references/publishing.md +0 -64
  91. package/dist/templates/common/bundled-skills/oxy-learning-hub/references/summary-mode.md +0 -96
  92. package/dist/templates/common/bundled-skills/oxy-learning-hub/references/teaching/GLOSSARY-FORMAT.md +0 -30
  93. package/dist/templates/common/bundled-skills/oxy-learning-hub/references/teaching/LEARNING-RECORD-FORMAT.md +0 -42
  94. package/dist/templates/common/bundled-skills/oxy-learning-hub/references/teaching/MISSION-FORMAT.md +0 -50
  95. package/dist/templates/common/bundled-skills/oxy-learning-hub/references/teaching/RESOURCES-FORMAT.md +0 -40
  96. package/dist/templates/common/bundled-skills/oxy-learning-hub/references/teaching-mode.md +0 -251
  97. package/dist/templates/common/bundled-skills/oxy-learning-hub/references/workspace.md +0 -112
  98. package/dist/templates/common/bundled-skills/oxy-learning-hub/scripts/validate_html.py +0 -198
  99. package/dist/templates/common/bundled-skills/show-me/SKILL.md +0 -127
@@ -1,96 +0,0 @@
1
- # 总结模式
2
-
3
- ## 目标
4
-
5
- 让用户快速建立对材料的完整认识,并留下可以继续追问或升级为教学的知识地图。
6
- 总结追求高信息密度,不模拟长期课程。
7
-
8
- ## 步骤一:界定范围
9
-
10
- 从用户请求和材料中确定:
11
-
12
- - 本轮总结对象;
13
- - 用户最关心的问题;
14
- - 材料能够支持和不能支持的结论;
15
- - 是否需要外部来源补充。
16
-
17
- 用户没有指定深度时,默认覆盖理解材料所需的核心内容,不扩展成百科全书。
18
-
19
- **完成标准**:总结边界清楚,材料缺口已记录。
20
-
21
- ## 步骤二:建立知识地图
22
-
23
- 识别材料中的核心概念、关系和关键证据。概念数量由材料决定,不强制归纳成
24
- 固定三点。
25
-
26
- 对每个真正重要的概念,尽量回答:
27
-
28
- - 它是什么;
29
- - 为什么存在;
30
- - 如何运作;
31
- - 与其他概念有什么关系;
32
- - 一个具体例子;
33
- - 适用边界或常见误解。
34
-
35
- 代码材料还要覆盖真实入口、关键符号、调用或数据流、外部依赖和失败边界,
36
- 并标明文件路径。文档、论文和文章保留作者原本的论证结构,不强行套用代码模板。
37
-
38
- **完成标准**:每个核心概念和关键关系均有来源支撑或明确标为推导。
39
-
40
- ## 步骤三:生成总结
41
-
42
- 根据材料是否支持,选用下面的章节;没有内容的章节直接省略:
43
-
44
- ```markdown
45
- # 标题
46
-
47
- ## 一句话抓手
48
-
49
- ## 全局地图
50
-
51
- ## 核心内容
52
-
53
- ## 运行机制或论证过程
54
-
55
- ## 示例与应用
56
-
57
- ## 边界、误区与反例
58
-
59
- ## 材料没有回答的问题
60
-
61
- ## 来源
62
-
63
- ## 如果你想继续学习
64
- ```
65
-
66
- “如果你想继续学习”只提供与当前材料相关的入口,例如:
67
-
68
- - 进入教学模式,先学习某个关键前置概念;
69
- - 围绕某个实际目标建立课程;
70
- - 把当前最困惑的部分做成第一课。
71
-
72
- 不要固定生成八个 FAQ、五到八个问题或完整可运行代码。只有它们确实帮助理解时
73
- 才加入。
74
-
75
- **完成标准**:读者能够复述材料主线,区分事实与推导,并知道下一步可以问什么。
76
-
77
- ## 来源与准确性
78
-
79
- - 材料直接表达的内容可以陈述为事实。
80
- - 从多处材料综合出的结论标明“综合判断”或“推导”。
81
- - 类比用于解释,不充当证据。
82
- - 历史、版本、趋势和现实案例只有经来源支持时才写。
83
- - 找不到可靠来源时写明“未验证”,不补造链接、作者或代码行为。
84
-
85
- ## 输出
86
-
87
- 严格按照进入总结模式时确认的多选结果执行:
88
-
89
- - **直接在对话中展示**:在当前回复中返回完整 Markdown;
90
- - **生成 Markdown 文档**:读取 `publishing.md` 并写入 `SUMMARY.md`;
91
- - **生成 HTML 单文件**:读取 `publishing.md` 并生成 `SUMMARY.html`;
92
- - **写入 Outline**:读取 `publishing.md` 并创建或更新 Outline 文档。
93
-
94
- 多个选项同时选择时全部执行,未选择的分支不执行。不要因为已经写入文件就省略用户
95
- 同时选择的对话正文。保存总结时使用教学工作区兼容的 `SUMMARY.md`,便于以后无损
96
- 升级为教学模式。
@@ -1,30 +0,0 @@
1
- # GLOSSARY.md 格式
2
-
3
- `GLOSSARY.md` 是教学工作区的统一语言。只有用户已经理解并能正确使用的术语才进入
4
- 这里;它不是提前灌输给用户的字典。
5
-
6
- ## 模板
7
-
8
- ```markdown
9
- # {主题} Glossary
10
-
11
- {一到两句话说明术语表覆盖的主题范围。}
12
-
13
- ## {自然类别;术语较少时可使用 Terms}
14
-
15
- **术语**:
16
- 一到两句话的紧凑定义。
17
- _避免使用_:容易造成混淆的别名
18
- ```
19
-
20
- ## 规则
21
-
22
- - 只有用户展示理解后才新增术语。
23
- - 多个词表达同一概念时选定一个首选词,其他词列为避免使用或别名。
24
- - 定义说明“它是什么”,控制在一到两句话。
25
- - 定义新术语时优先使用词汇表中已经稳定的术语,让概念在同一语言体系中组合。
26
- - 术语形成自然类别时使用二级标题分组,例如“协议角色”“凭据”“安全机制”;
27
- 数量较少且彼此紧密时可以保持平铺。
28
- - 后续课程、练习和学习记录统一使用术语表中的语言。
29
- - 术语在领域中含义模糊时,明确本工作区采用的定义。
30
- - 用户理解深化后原地修订定义,不保留已经错误的旧定义。
@@ -1,42 +0,0 @@
1
- # 学习记录格式
2
-
3
- 学习记录位于 `learning-records/`,使用连续编号:
4
-
5
- ```text
6
- 0001-topic.md
7
- 0002-next-topic.md
8
- ```
9
-
10
- 它记录会影响后续教学的非平凡理解,而不是课程活动日志。
11
-
12
- ## 模板
13
-
14
- ```markdown
15
- # {已经建立的理解}
16
-
17
- {1~3 句话说明用户掌握了什么、证据是什么,以及它如何改变下一步教学。}
18
- ```
19
-
20
- 可选内容只有在确实需要时加入:
21
-
22
- - YAML frontmatter:`status: active | superseded by LR-NNNN`
23
- - `Evidence`:用户如何展示理解
24
- - `Implications`:它解锁或排除了哪些后续课程
25
-
26
- ## 写入条件
27
-
28
- 只有以下情况才创建:
29
-
30
- 1. 用户正确解释或应用了非平凡概念;
31
- 2. 用户说明已有知识,并提供了足以判断深度的证据;
32
- 3. 一个误解被纠正;
33
- 4. Mission 因学习结果而改变。
34
-
35
- 以下情况不创建:
36
-
37
- - 课程只是讲过某个内容;
38
- - 用户只点击了完成按钮;
39
- - 术语定义已经由 `GLOSSARY.md` 充分记录;
40
- - 单纯的会话或活动日志。
41
-
42
- 后来的理解推翻旧记录时,标记旧记录被新编号取代,不删除学习演变历史。
@@ -1,50 +0,0 @@
1
- # MISSION.md 格式
2
-
3
- `MISSION.md` 位于教学工作区根目录,用来记录用户为什么学习这个主题。每一个课程
4
- 选择、资源推荐和练习设计都应能追溯到这里。
5
-
6
- ## 模板
7
-
8
- ```markdown
9
- # Mission: {主题}
10
-
11
- ## Why
12
-
13
- {1~3 句话描述真实目标。写清学会以后,用户的工作或生活会发生什么变化。}
14
-
15
- ## Success looks like
16
-
17
- - {一个可观察、可验证的能力}
18
- - {另一个可观察能力}
19
-
20
- ## Starting point
21
-
22
- - {当前基础、相关经验和已经掌握的前置知识}
23
-
24
- ## Constraints
25
-
26
- - {时间、预算、截止日期、每次可投入时长或其他限制}
27
-
28
- ## Environment
29
-
30
- - {技术课程的操作系统、工具链、目标版本和项目环境;不适用时省略本节}
31
-
32
- ## Out of scope
33
-
34
- - {当前明确不学习的相邻主题}
35
- ```
36
-
37
- ## 规则
38
-
39
- - 一个工作区只服务一个 Mission;无关目标使用另一个工作区。
40
- - 具体目标优先于“理解某主题”这类抽象表达。
41
- - 先从对话中提取已有答案;对仍缺失且会影响课程方向的信息,每轮只问一个聚焦问题,
42
- 持续访谈直到 Mission 完整,不固定问题数量。
43
- - 用户无法明确回答时提供具体选项帮助选择,不替用户静默补全关键目标、基础或约束。
44
- - 首次创建 Mission 时,信息完整后直接写入;不向用户展示 Mission 或 Notes 草稿、
45
- 访谈总结或执行摘要,
46
- 也不额外要求确认。
47
- - 修改已经存在的 Mission 前,先说明拟变更的目标、成功标准、范围或主要约束,得到
48
- 用户确认后再更新;学习结果导致的方向变化写学习记录,外部计划变化写入 `NOTES.md`,
49
- 未确认时保留原 Mission。
50
- - 保持在一屏以内;它是方向,不是项目计划。
@@ -1,40 +0,0 @@
1
- # RESOURCES.md 格式
2
-
3
- `RESOURCES.md` 保存本主题经过筛选的可信来源,以及用户可以检验真实经验的社区或
4
- 实践环境。
5
-
6
- ## 模板
7
-
8
- ```markdown
9
- # {主题} Resources
10
-
11
- ## Knowledge
12
-
13
- - `R001` [来源名称](URL)
14
- 覆盖:{讲什么}。
15
- 支持:{哪些关键事实或概念}。
16
- 使用于:{已经实际引用该来源的课程或参考资料路径}。
17
- 信任说明:{为何可信或有什么限制}。
18
-
19
- ## Wisdom
20
-
21
- - [社区或实践环境](URL 或地点)
22
- 用于:{适合检验什么真实问题}。
23
-
24
- ## Gaps
25
-
26
- - {当前 Mission 需要、但还没有可靠来源支持的内容}
27
- ```
28
-
29
- ## 规则
30
-
31
- - 优先原始文档、规范、论文、源码、公认专家和严格审核的社区。
32
- - 每条来源使用稳定编号,并说明覆盖范围、支持的结论和实际使用位置。
33
- - 尚未被课程使用的候选来源写 `状态:候选,尚未使用`,不虚构 `使用于` 路径;
34
- 首次实际引用后再替换为真实路径。
35
- - 课程正文使用本课 `[S1]` 锚点就近引用,`RESOURCES.md` 使用 `R001` 等稳定编号
36
- 维护跨课程追踪;两者通过来源标题或 URL 对应。
37
- - 搜索结果只是发现线索,重要事实回到原始来源核对。
38
- - 已证明错误、浅薄或偏离 Mission 的来源直接移除。
39
- - 用户不希望加入社区时在这里或 `NOTES.md` 记录,后续不重复建议。
40
- - 五个高质量来源优于三十个普通来源。
@@ -1,251 +0,0 @@
1
- # 教学模式
2
-
3
- 教学模式是跨多轮、可跨会话的学习过程。目标不是让用户读完一篇长文,而是让他
4
- 逐步形成能够提取、应用和迁移的长期记忆。
5
-
6
- ## 教学闭环
7
-
8
- 每轮遵循同一闭环:
9
-
10
- ```text
11
- Mission → 当前水平 → 单点课程 → 主动练习 → 用户反馈 → 更新状态 → 下一课
12
- ```
13
-
14
- ### Mission 与启动访谈
15
-
16
- 所有教学决策都要追溯到用户的现实目标。已有教学工作区且 Mission 仍然有效时直接
17
- 恢复状态;新建工作区、Mission 不完整或方向变化时,先完成自适应访谈。
18
-
19
- 先从当前对话、用户提供的材料和已有状态中提取信息,不重复询问。然后按缺口逐项确认:
20
-
21
- 1. **Why**:为什么学习,现实中要解决什么问题;
22
- 2. **Success looks like**:学会后能完成哪些可观察、可验证的事情;
23
- 3. **Starting point**:当前基础、相关经验和已经掌握的前置知识;
24
- 4. **Constraints**:时间、截止日期、预算、每次可投入时长和其他限制;
25
- 5. **Environment**:技术课程使用的操作系统、工具链、目标版本和项目环境;
26
- 6. **Learning preferences**:偏好的解释顺序、练习密度、语言和课程长度;
27
- 7. **Out of scope**:当前明确不追逐的相邻主题。
28
-
29
- 每轮只问一个聚焦问题,但持续询问直到缺口补齐。问题数由缺失信息决定:信息完整的
30
- 请求可以直接开始;“我想学习 Java”这类宽泛请求通常需要多轮。用户说“不确定”时
31
- 给出具体选项帮助选择,不替用户静默编造答案。
32
-
33
- 首次创建 Mission 时,信息足够后直接写入 `MISSION.md`,并把学习起点、技术环境和
34
- 教学偏好写入 `NOTES.md`;不向用户展示 Mission 或 Notes 草稿、访谈总结或执行摘要,
35
- 也不增加
36
- 确认轮次,随后建立资源库并生成第一课。
37
-
38
- 只有修改已经存在的 Mission 时才需要确认:先向用户说明拟修改的目标、成功标准、
39
- 范围或主要约束,得到明确确认后再更新 `MISSION.md`。如果变更是学习结果导致的认知
40
- 或目标变化,创建学习记录;如果只是外部计划改变,把变更原因简短记入 `NOTES.md`,
41
- 不伪造掌握证据。用户未确认时保留原 Mission,不改变后续教学方向。确认发生在下一轮
42
- 时,严格使用当前对话中上一轮已说明的拟变更内容;如果上下文中已没有完整提议,重新
43
- 说明具体变更并再次询问,不自行推断缺失字段。
44
-
45
- ### 最近发展区
46
-
47
- 每节课前读取 `MISSION.md`、全部仍有效的学习记录、`GLOSSARY.md` 和
48
- `NOTES.md`,判断用户已经掌握什么、正在卡在哪里,以及下一个“刚好有挑战”的
49
- 内容是什么。
50
-
51
- 用户指定了明确困惑时,优先处理该困惑或它缺失的最小前置知识。不要因为材料很长
52
- 就从第一章机械讲起。
53
-
54
- ### 单点胜利
55
-
56
- 一节课只教授一个紧凑目标,并让用户获得一个可观察的结果,例如:
57
-
58
- - 能用自己的话解释一个机制;
59
- - 能预测一段代码的结果;
60
- - 能完成一个实际步骤;
61
- - 能判断一个方案何时适用;
62
- - 能识别并纠正一个常见误解。
63
-
64
- 课程应短到可以在一次专注中完成。只提供获得该技能所需的知识。
65
-
66
- ## 知识、技能与智慧
67
-
68
- ### 知识
69
-
70
- 知识来自高信任来源。优先使用原始文档、规范、论文、项目源码和公认专家资料,
71
- 不能把模型记忆当作证据。在 `RESOURCES.md` 中记录每个来源讲什么、支持哪些关键
72
- 结论、被哪些课程使用,以及可信度缺口。
73
-
74
- 每个关键事实必须能就近追溯到来源:
75
-
76
- - 网页、论文和规范在事实后使用链接到来源清单的 `[S1]`、`[S2]` 标记;
77
- - 本地文档标明文件路径和章节;
78
- - 代码结论标明文件路径、符号名和可用的行号;
79
- - 多来源综合结论明确标为“综合判断”,并同时引用相关来源;
80
- - 教学类比明确是类比,不把类比当作事实来源;
81
- - 没有可靠来源的结论标为“未验证”或直接省略。
82
-
83
- 理解知识时降低无关难度:先给清晰心智模型,再引入术语和细节。
84
-
85
- ### 技能
86
-
87
- 技能通过有反馈的练习建立。练习使用适度的困难:
88
-
89
- - 主动回忆:先回答,再查看答案;
90
- - 间隔:后续课程重新提取旧知识;
91
- - 交错:掌握基础后,混合相近但不同的场景。
92
-
93
- 每个练习必须有立即可用的检查方法。选项长度、格式和措辞应尽量对称,避免泄露
94
- 答案。
95
-
96
- ### 智慧
97
-
98
- 需要真实经验判断的问题,应给出当前可支持的回答,同时建议用户在高质量社区、
99
- 真实项目、课程或实践环境中检验。用户不希望加入社区时,把偏好记入 `NOTES.md`。
100
-
101
- ## 共享 Assets
102
-
103
- 复用是默认策略。初始化教学工作区时,把本技能的 `assets/course.css` 和
104
- `assets/course.js` 复制到工作区 `assets/`,所有课程通过相对路径加载它们。
105
-
106
- 每次创建课程前先读取工作区 `assets/`:
107
-
108
- - 已有样式、测验、小组件、模拟器和图表辅助代码优先复用;
109
- - 第二节课程也可能使用的组件,第一次出现时就写入 `assets/`;
110
- - 新增可复用组件后,让相关旧课程改用共享组件;
111
- - 课程正文只内联本课独有的内容,不重复内联共享 CSS 或 JavaScript;
112
- - 工作区增长时同步维护组件库,让课程保持统一外观和行为。
113
-
114
- ## 每节互动 HTML 的结构
115
-
116
- 使用 `assets/lesson-template.html`,把占位符全部替换;课程位于 `lessons/` 时,
117
- `{{ASSET_PREFIX}}` 使用 `../assets/`。标题区占位符按以下方式填写:
118
-
119
- - `{{CRUMB}}`:课程路径,例如 `attention / lesson-03`;
120
- - `{{KICKER}}`:课程类型与预计时长,例如 `互动课程 · 12 分钟`;
121
- - `{{FACTS}}`:使用若干 `<span class="chip">…</span>` 展示前置知识、练习数、
122
- 来源数和单点目标;
123
- - `{{ASIDE}}`:使用若干 `<div class="aside-card">…</div>` 放置一句话记忆、
124
- 常见误解或下一课预告;
125
- - `{{CONTINUE}}`:提醒用户把答案和疑问粘贴回当前对话。
126
-
127
- `{{CONTENT}}` 只放正文小节。每个小节使用唯一 `id`,标题统一写成
128
- `<h2><span class="n">01</span>小标题</h2>`,让共享脚本自动生成目录和滚动高亮。
129
- 正文按 01–07 编号,至少包含:
130
-
131
- 1. **本课目标**:完成后能做什么;
132
- 2. **旧知识提取**:一个简短回忆问题,没有前置课时可以省略;
133
- 3. **核心解释**:只包含完成目标所需的知识;
134
- 4. **示例或演示**:把抽象概念落到具体场景;
135
- 5. **先预测再揭晓**:使用 `<details>` 或互动选择题;
136
- 6. **实际练习**:用户必须做出判断、解释或操作,并包含答案、检查步骤或提交格式;
137
- 7. **来源清单**:列出支撑本课关键事实的全部来源,并为每条来源设置稳定锚点。
138
-
139
- 课程导航已由模板固定为 08,只填写 `{{NAVIGATION}}`,不要在 `{{CONTENT}}` 中
140
- 重复创建导航小节。继续对话提示只填写 `{{CONTINUE}}`。
141
-
142
- 每节课都必须通过 `{{NAVIGATION}}` 直接链接:
143
-
144
- - `lessons/` 中所有其他现有课程;
145
- - 至少一个与本课相关的 `reference/*.html`;
146
- - 存在时标明上一课和下一课。
147
-
148
- 创建新课程或参考资料后,更新所有旧课程的导航,使每节课都能到达当前全部课程和
149
- 相关参考资料。链接使用相对路径,交付前确认目标文件存在。第一课没有其他课程时,
150
- 仍需创建并链接一份紧凑的参考资料。
151
-
152
- 正文中的关键事实使用就近引用,例如:
153
-
154
- ```html
155
- <p>
156
- 授权码应是短期且一次性的凭据
157
- <a class="cite" href="#source-s1">S1</a>。
158
- </p>
159
- <section id="s-sources" class="sources">
160
- <h2><span class="n">07</span>来源</h2>
161
- <ol>
162
- <li id="source-s1">
163
- <a href="https://example.com/spec">规范名称</a>,相关章节。
164
- </li>
165
- </ol>
166
- </section>
167
- ```
168
-
169
- 引用必须指向真实访问过的来源。课程末尾只有一份来源清单,正文通过锚点复用,
170
- 不在多个位置复制同一来源说明。
171
-
172
- 互动选择题使用模板支持的结构:
173
-
174
- ```html
175
- <div class="quiz" data-quiz>
176
- <p class="quiz-label">选择题 1 / 1</p>
177
- <p class="quiz-question">问题</p>
178
- <button class="quiz-option" data-correct="false"
179
- data-explanation="为什么不对" type="button">
180
- <span class="opt-key">A</span><span>选项 A</span>
181
- </button>
182
- <button class="quiz-option" data-correct="true"
183
- data-explanation="为什么正确" type="button">
184
- <span class="opt-key">B</span><span>选项 B</span>
185
- </button>
186
- <p class="quiz-feedback" aria-live="polite"></p>
187
- </div>
188
- ```
189
-
190
- 开放题可以使用:
191
-
192
- ```html
193
- <div class="response">
194
- <label for="answer-1">写下你的解释</label>
195
- <p class="hint">写完后复制并粘贴回当前对话。</p>
196
- <textarea id="answer-1"></textarea>
197
- <button class="btn-ghost copy-response" data-target="answer-1" type="button">
198
- 复制我的回答
199
- </button>
200
- </div>
201
- ```
202
-
203
- HTML 负责练习、揭晓和完成状态;AI 对话负责深度纠错和调整下一课。课程可以按需
204
- 使用远程字体、样式、图片、视频、交互库和网络 API;相关依赖在课程或共享 Assets 中
205
- 集中维护,避免每节课重复配置。
206
-
207
- ## 课程交付
208
-
209
- 课程文件通过验证后,尽量立即自动打开:
210
-
211
- 1. 优先使用当前宿主提供的打开文件或浏览器能力;
212
- 2. 没有专用能力时,根据操作系统运行 `open <file>`、`xdg-open <file>` 或
213
- `start "" <file>`;
214
- 3. 使用课程文件的绝对路径,避免工作目录变化导致打开错误;
215
- 4. 无图形界面、命令不可用或打开失败时,不把课程判定为失败;向用户返回绝对路径
216
- 和手动打开方式。
217
-
218
- 自动打开只是交付动作,不构成用户已阅读或掌握的证据。
219
-
220
- ## 学习状态更新
221
-
222
- 生成课程后先等待用户互动。只有出现以下证据时才写学习记录:
223
-
224
- - 用户正确解释或应用了非平凡概念;
225
- - 用户完成练习并展示推理;
226
- - 用户纠正了一个误解;
227
- - 用户明确说明并证明已有前置知识;
228
- - 学习目标因新理解发生变化。
229
-
230
- 仅点击“完成课程”或阅读过内容不构成掌握证据。
231
-
232
- 用户表达教学偏好时更新 `NOTES.md`。术语只有在用户能够正确使用后才进入
233
- `GLOSSARY.md`。
234
-
235
- ## 参考资料
236
-
237
- 课程通常不会频繁重读,压缩后的参考资料会。适合反复查阅的内容写入
238
- `reference/`,例如术语表、流程图、算法、命令速查和课程阶段总结。
239
-
240
- ## 本轮完成标准
241
-
242
- - Mission 信息完整;若修改已有 Mission,变更已得到用户确认;
243
- - 本课处于用户最近发展区;
244
- - HTML 只解决一个紧凑目标;
245
- - 复用了工作区共享 Assets,没有重复内联公共样式或脚本;
246
- - 每节课链接全部其他现有课程和至少一个相关参考资料;
247
- - 练习有可检查反馈;
248
- - 每个关键事实都有就近引用,且来源清单可回溯;
249
- - 课程文件通过验证脚本;
250
- - 已尝试自动打开课程,或明确报告无法打开及绝对路径;
251
- - 学习状态只根据证据更新。
@@ -1,112 +0,0 @@
1
- # 教学工作区
2
-
3
- ## 定位与恢复
4
-
5
- 按以下顺序定位工作区:
6
-
7
- 1. 用户明确指定目录:使用该目录;
8
- 2. 用户提供的一组工作区文件拥有共同父目录,且其中有 `MISSION.md`:使用该父目录;
9
- 3. 当前目录已有 `MISSION.md`:继续该教学工作区;
10
- 4. 当前总结已经保存到含 `SUMMARY.md` 的目录:升级时复用该目录;
11
- 5. 用户要求“继续上次教学”但没有给路径:在当前项目内查找含 `MISSION.md` 的
12
- `atlas-*` 目录;单个结果直接使用,多个结果只询问一次;
13
- 6. 否则在当前项目根目录创建:
14
-
15
- ```text
16
- atlas-{YYYYMMDD}-{safe-topic}/
17
- ```
18
-
19
- 标题保留可读字符;目录名只使用路径安全字符。无法可靠提取主题时使用
20
- `untitled`。不要在技能安装目录里保存用户课程。
21
-
22
- 总结升级教学时,把已生成的总结保存为 `SUMMARY.md`。同一会话中的原材料和概念
23
- 地图直接复用;跨会话恢复时从 `SUMMARY.md`、`RESOURCES.md` 和用户重新指定的材料
24
- 恢复,不重新抓取仍然可用的本地内容。
25
-
26
- ## 目录结构
27
-
28
- 首次教学访谈的信息完整后,直接创建或初始化工作区,不需要额外确认;先创建
29
- `assets/` 并复制基础样式和交互脚本,其他文件和目录继续按需创建。若本轮要修改已有
30
- Mission,必须在用户确认变更后再更新工作区状态:
31
-
32
- ```text
33
- atlas-{date}-{topic}/
34
- ├── SUMMARY.md
35
- ├── MISSION.md
36
- ├── RESOURCES.md
37
- ├── GLOSSARY.md
38
- ├── NOTES.md
39
- ├── lessons/
40
- │ └── 0001-topic.html
41
- ├── reference/
42
- │ └── topic-cheatsheet.html
43
- ├── learning-records/
44
- │ └── 0001-insight.md
45
- └── assets/
46
- ├── course.css
47
- └── course.js
48
- ```
49
-
50
- 文件用途:
51
-
52
- - `SUMMARY.md`:原材料的全局知识地图,也是总结升级教学的桥梁;
53
- - `MISSION.md`:现实目标、成功标准、约束和范围;
54
- - `RESOURCES.md`:可信知识来源和真实实践社区;
55
- - `GLOSSARY.md`:用户已经理解并统一使用的术语;
56
- - `NOTES.md`:教学偏好和不适合放入正式记录的工作备注;
57
- - `lessons/`:每轮一个互动 HTML 课程;
58
- - `reference/`:长期查阅的压缩资料;
59
- - `learning-records/`:有证据支持的学习进展和关键认知变化;
60
- - `assets/`:所有课程共享的样式、测验、模拟器和图表组件。创建课程前必须先读取,
61
- 复用优先;新组件只要可能被第二节课使用,就在第一次出现时沉淀到这里。
62
-
63
- ## 编号
64
-
65
- 创建课程或学习记录前,扫描对应目录的最高四位数字并加一:
66
-
67
- ```text
68
- 0001-topic.html
69
- 0002-next-topic.html
70
- ```
71
-
72
- 没有目录时从 `0001` 开始。不要覆盖已有课程。创建新课程或参考资料后,更新全部
73
- 现有课程中的相对导航链接,确保它们互相可达。
74
-
75
- ## NOTES.md
76
-
77
- 以 `# Notes` 开头,下面使用简单的项目符号列表记录:
78
-
79
- - 用户当前基础、相关经验和自评把握程度;
80
- - 用户偏好的解释顺序、语言、代码语言、练习密度和课程长度;
81
- - 技术课程的操作系统、工具链、版本和项目环境细节;
82
- - 用户明确不喜欢的教学方式;
83
- - 社区参与偏好;
84
- - 尚未达到学习记录标准、但下一课需要考虑的观察。
85
-
86
- 正式知识、资源和掌握证据分别进入对应文件,不在 `NOTES.md` 重复。
87
-
88
- ## 跨会话继续
89
-
90
- 恢复教学时按顺序读取:
91
-
92
- 1. `MISSION.md`;
93
- 2. 全部仍有效的学习记录,按时间从新到旧阅读;
94
- 3. `GLOSSARY.md`;
95
- 4. `NOTES.md`;
96
- 5. 工作区 `assets/` 中的共享组件;
97
- 6. 最近一节课程;
98
- 7. 与下一课相关的 `RESOURCES.md` 条目。
99
-
100
- 然后检查 Mission 是否仍然完整、有效且符合当前方向。有效时用最近发展区选择下一课;
101
- 缺失时重新进入自适应访谈并只补问缺口,信息完整后直接继续。方向发生变化时,先说明
102
- 拟变更内容并取得用户确认,再更新 Mission。用户要求总结课程时生成 `reference/`
103
- 资料,不删除或重置现有状态。
104
-
105
- ## 完成标准
106
-
107
- - 所有课程和状态文件写入用户工作区,而不是技能目录;
108
- - 文件按需创建且编号连续;
109
- - `SUMMARY.md` 能支持总结到教学的升级;
110
- - 跨会话恢复不依赖未保存的聊天上下文;
111
- - 第一课开始前 Mission 信息完整,且起点、主要约束和必要技术环境已记录;
112
- - 修改已有 Mission 时,变更已经得到用户确认。