teaching-site
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseTeaching Site — Main Entry Point
教学网站 — 主入口
Schema authority: all primitive field names (unit / concept / prompt / task / material / quiz / faq / illustration) and the canonical project layout come from. When dispatching to any sub-skill, expect the agent to consult that file first._shared/domain-primitives.mdFilename convention (English-first): all generated files use English names (,course-package/,day{n}/outline.md, etc.). Trigger phrases users say in chat may stay Chinese, but anything written to disk is English. Seematerials/§0 for the full mapping._shared/domain-primitives.mdReference implementation:is the production reference (4-day workshop, 4125-line index.html, 1728-line course-data.js). Use it as visual + render-pattern reference; do not copy course-specific content from it.d:/GitHub/ai-workshop/
This is the top-level skill for producing an interactive teaching website. It coordinates 10 specialised sub-skills covering every stage from blank-slate outline to delivered PDF ebook.
Schema 权威来源:所有原始字段名称(unit / concept / prompt / task / material / quiz / faq / illustration)以及标准项目布局均来自。调度至任何子技能时,需先让Agent查阅该文件。_shared/domain-primitives.md文件名约定(英文优先):所有生成的文件均使用英文名称(、course-package/、day{n}/outline.md等)。用户在聊天中使用的触发短语可以是中文,但写入磁盘的所有内容必须是英文。详见materials/第0节的完整映射规则。_shared/domain-primitives.md参考实现:是生产环境参考示例(4天工作坊,4125行index.html,1728行course-data.js)。将其用作视觉效果和渲染模式参考;请勿复制其中的课程特定内容。d:/GitHub/ai-workshop/
这是用于生成交互式教学网站的顶层技能。它协调10个专门的子技能,覆盖从空白大纲到交付PDF电子书的每个阶段。
When This Skill vs. a Sub-Skill
何时使用此技能 vs 子技能
-
Use this skill () when:
teaching-site- The user's request is broad ("做一套課程網站", "我想做工作坊").
- You're starting from scratch and don't know where to begin.
- The user is jumping between stages and needs orchestration.
- You need to check cross-artifact consistency after a change.
-
Use a sub-skill directly when:
- The user names the artifact ("做電子書" → ).
course-ebook-publishing - You're already deep into one stage and don't need pipeline overview.
- Another skill is dispatching here for a focused subtask.
- The user names the artifact ("做電子書" →
Both paths converge — sub-skills can be reached either by direct trigger or via this skill's dispatch.
-
使用此技能()的场景:
teaching-site- 用户的请求宽泛(如“做一套課程網站”“我想做工作坊”)。
- 从零开始,不知从何入手。
- 用户在不同阶段间跳转,需要协调调度。
- 修改后需要检查跨工件的一致性。
-
直接使用子技能的场景:
- 用户明确指定了产出物(如“做電子書”→)。
course-ebook-publishing - 已深入某个阶段,无需流程概览。
- 其他技能为完成特定子任务而调度至此。
- 用户明确指定了产出物(如“做電子書”→
两种路径最终会汇合——子技能既可以通过直接触发访问,也可以通过此技能的调度访问。
The Production Pipeline
生产流程
A teaching site is built in five core layers, with two optional derivative layers at the end:
[Stage 1] outline (.md)
↓ produces: meta, day list, unit skeleton, learning goals, shared scenario
[Stage 2] content authoring (.md / .csv / .yaml)
↓ produces: lecture notes, sample materials, quiz items, optional prompt templates
[Stage 3] SPA conversion (.js + .html)
↓ produces: course-data.js (data) + index.html (renderers), local serve setup
[Stage 4] interactions (.js + .css inside index.html)
↓ produces: progress persistence, sidebar/scrollspy, theme, RWD, quiz UX
[Stage 5] visual assets (.png / .svg / scraping scripts)
↓ produces: illustrations, screenshots, QR codes, maps
▼
─── site is now feature-complete ─── (optional derivatives below)
▼
[Stage 5b] Corporate Edition branch ← optional, parallel to ebook
↓ produces: corporate-editions/ folder, condensed units, inlined COURSE, asset fallback chain
[Stage 6] Ebook Publishing ← optional, ALWAYS after site is stable
↓ produces: dist/{name}.pdf + .docx via single composed master.mdStages 1–5 are usually traversed in order, but users often jump back (add a unit → must update outline AND course-data.js AND any related visual). Catching these back-references is this skill's main value-add.
Stages 5b and 6 are downstream consumers of the finished site. They read but never modify the canonical site. Do not invoke them while Stages 1–5 are still in flux — the rework cost is high.
教学网站的构建分为五个核心层,最后还有两个可选的衍生层:
[阶段1] 大纲 (.md)
↓ 产出:元数据、每日列表、单元框架、学习目标、共享场景
[阶段2] 内容创作 (.md / .csv / .yaml)
↓ 产出:讲义、示例素材、测验题目、可选提示词模板
[阶段3] SPA转换 (.js + .html)
↓ 产出:course-data.js(数据)+ index.html(渲染器)、本地服务配置
[阶段4] 交互功能 (.js + .css 内嵌于index.html)
↓ 产出:进度持久化、侧边栏/滚动监听、主题、响应式设计(RWD)、测验用户体验
[阶段5] 视觉资产 (.png / .svg / 爬取脚本)
↓ 产出:插图、截图、二维码、地图
▼
─── 网站功能已完整 ───(以下为可选衍生层)
▼
[阶段5b] 企业版分支 ← 可选,与电子书并行
↓ 产出:corporate-editions/文件夹、精简单元、内嵌COURSE、资产 fallback 链
[阶段6] 电子书发布 ← 可选,必须在网站稳定后进行
↓ 产出:dist/{name}.pdf + .docx(通过组合后的master.md生成)通常按顺序执行阶段1-5,但用户经常会回溯(如添加一个单元→必须更新大纲、course-data.js以及所有相关视觉资产)。捕捉这些回溯关联是此技能的核心价值所在。
阶段5b和6是下游环节,依赖已完成的网站。它们读取但绝不修改标准网站内容。在阶段1-5仍在变动时,请勿调用这两个阶段——返工成本极高。
Sub-Skill Dispatch Table
子技能调度表
Invoke the matching sub-skill via your agent's skill activation mechanism (Claude Code: tool, Codex: tool, Antigravity / Gemini CLI: ) when the matching stage is active:
Skillskillactivate_skill| Stage | Sub-skill | Trigger phrases |
|---|---|---|
| 1 | | "規劃課程", "課程大綱", "幾天怎麼排", "學習目標" |
| 2 | | "寫講義", "補素材", "出測驗題", "提示詞範本" |
| 3 | | "做成網頁", "轉成 SPA", "course-data.js", "render 函式" |
| 4 | | "加進度勾選", "響應式", "暗色模式", "縮放", "scrollspy" |
| 5 | | "插圖", "工具截圖", "QR", "講師卡", "地圖" |
| 5b | | "企業包班", "濃縮版", "客製化", "壓縮成一天" |
| 6 | | "做電子書", "產 PDF", "印給學員", "DOCX 交付" |
| ╳ | | "驗證網頁", "RWD 驗證", "Playwright 測試", "截圖比對" |
| ╳ | | "盤點內容", "稽核資產", "找缺圖", "三處同步檢查" |
| ╳ | | "視覺風格", "設計系統", "色票", "字體", "玻璃卡片" |
The last three (marked ╳) are cross-cutting — not tied to a stage. The first two (verification / audit) are the safety net for runtime behaviour and cross-file references. The third (design-system) is the visual authority every stage reads from.
当对应阶段处于活跃状态时,通过Agent的技能激活机制(Claude Code:工具,Codex:工具,Antigravity / Gemini CLI:)调用匹配的子技能:
Skillskillactivate_skill| 阶段 | 子技能 | 触发短语 |
|---|---|---|
| 1 | | "規劃課程", "課程大綱", "幾天怎麼排", "學習目標" |
| 2 | | "寫講義", "補素材", "出測驗題", "提示詞範本" |
| 3 | | "做成網頁", "轉成 SPA", "course-data.js", "render 函式" |
| 4 | | "加進度勾選", "響應式", "暗色模式", "縮放", "scrollspy" |
| 5 | | "插圖", "工具截圖", "QR", "講師卡", "地圖" |
| 5b | | "企業包班", "濃縮版", "客製化", "壓縮成一天" |
| 6 | | "做電子書", "產 PDF", "印給學員", "DOCX 交付" |
| ╳ | | "驗證網頁", "RWD 驗證", "Playwright 測試", "截圖比對" |
| ╳ | | "盤點內容", "稽核資產", "找缺圖", "三處同步檢查" |
| ╳ | | "視覺風格", "設計系統", "色票", "字體", "玻璃卡片" |
最后三个(标记为╳)是跨阶段技能——不绑定特定阶段。前两个(验证/稽核)是运行时行为和跨文件引用的安全保障。第三个(设计系统)是所有阶段遵循的视觉权威标准。
Stage 1 Gate (Hard Rule — read before any dispatch)
阶段1准入规则(硬规则——调度前必读)
Before dispatching to ANY stage (including 2–6, 5b, and the cross-cutting skills), confirm Stage 1 deliverables exist on disk:
- An overview file (e.g. ) with populated
overview.md/對象/總時數fields — not just a heading.每日主題 - At least one per-day outline file (e.g. ) listing unit IDs and learning goals.
day1/outline.md
Shared scenario () is optional — it's a downstream decision handled byshared-scenario.md's Completion Gate, not an entry requirement here.course-outline-design
If either of the two is missing or only a stub: do NOT dispatch downstream, even if the user explicitly named a later stage ("做電子書", "幫我寫 quiz"). Dispatch to first and tell the user:
course-outline-design「我看到還沒有完整的課程綱要 — 直接跳到 Stage N 會讓後面每改一次 outline 就連動多個檔案重做。先用把 outline 鎖定,大概 10 分鐘決策,省下後續數小時 rework。」course-outline-design
在调度至任何阶段(包括2-6、5b以及跨阶段技能)之前,确认磁盘上存在阶段1的交付物:
- 概述文件(如),其中
overview.md/對象/總時數字段已填充——不能只有标题。每日主題 - 至少一个每日大纲文件(如),列出单元ID和学习目标。
day1/outline.md
共享场景()是可选的——这是shared-scenario.md完成阶段的下游决策,并非此处的准入要求。course-outline-design
如果上述两项中有一项缺失或仅为草稿: 即使用户明确指定了后续阶段(如“做電子書”“幫我寫 quiz”),也不得调度至下游。先调度至并告知用户:
course-outline-design「我看到还没有完整的课程大纲——直接跳到第N阶段会导致后续每次修改大纲都要联动多个文件重做。先用确定大纲,大约10分钟的决策时间,能节省后续数小时的返工。」course-outline-design
Stage 1 Override Policy (3-bullet escape hatch)
阶段1豁免规则(三要点例外)
If the user explicitly insists on skipping the gate ("我知道,先做就好", "skip the outline, just do X"), proceed under these conditions:
- Ask them to paste 3 bullets in chat before any downstream action:
- 對象:一句話描述學員是誰 + 先備知識
- 總時數 + 每日時段:例如「2 天 × 6 小時」
- 每日主題:Day 1 / Day 2 / ... 各一行
- Save those 3 bullets verbatim into a stub (mark it
overview.md) before dispatching to the requested stage.<!-- stub created via Stage 1 Gate override on YYYY-MM-DD --> - If the user refuses even the 3-bullet stub, fall back to the strict path — refuse the override and dispatch to .
course-outline-design
The stub is the audit trail: future sessions reading this site can immediately see Stage 1 was bypassed and recover context.
如果用户明确坚持跳过准入规则(如“我知道,先做就好”“skip the outline, just do X”),需满足以下条件方可继续:
- 要求他们在聊天中粘贴3个要点:
- 對象:一句话描述学员身份+前置知识
- 總時數 + 每日時段:例如「2天×6小时」
- 每日主題:Day 1 / Day 2 / ... 各一行
- 将这3个要点原封不动保存到草稿中(标记为
overview.md),然后再调度至请求的阶段。<!-- stub created via Stage 1 Gate override on YYYY-MM-DD --> - 如果用户连这3个要点的草稿都拒绝提供,则回到严格流程——拒绝豁免,调度至。
course-outline-design
草稿是审计轨迹:未来会话读取此网站时,可立即发现阶段1被跳过,并恢复上下文。
Stage 2 Gate (Hard Rule — read before dispatching to Stage 3+)
阶段2准入规则(硬规则——调度至阶段3+前必读)
After Stage 1 Gate passes, before dispatching to Stage 3 (), Stage 5b, or Stage 6, confirm Stage 2 deliverables exist on disk:
static-spa-conversion- Each exists (one per Day listed in
day{n}/content.md).overview.md - Each contains a
content.mdsection for every unit ID declared in the matching## u-{id}— not just one.day{n}/outline.md - Each unit section has substance: at least one of (a) lecture script ≥ ~10 lines, (b) list, (c)
任務 (tasks)references. Heading-only units fail.素材需求 - Each unit section declares listing 1–3 entries with filename + brief spec — see Stage 5 Image Coverage Floor below.
**圖片需求 (illustrations)**
If any item fails: do NOT dispatch to Stage 3+, even if the user explicitly named a later stage. Dispatch to first and tell the user:
course-content-authoring「outline 在,但 Day {n} 的{缺/空殼/單元 u-{id} 沒寫}。直接做網頁會生出薄薄的殼 — 學員看到的只是標題清單,沒有實質教學內容。先用content.md把每個單元的 lecture / tasks / 圖片需求補完,比之後重做整套網頁省好幾倍時間。」course-content-authoring
阶段1准入规则通过后,在调度至阶段3()、阶段5b或阶段6之前,确认磁盘上存在阶段2的交付物:
static-spa-conversion- 每个都存在(与
day{n}/content.md中列出的每个Day对应)。overview.md - 每个都包含
content.md章节,对应匹配的## u-{id}中声明的每个单元ID——不能只有一个。day{n}/outline.md - 每个单元章节有实质内容:至少包含以下一项(a)≥约10行的讲稿,(b)列表,(c)
任務 (tasks)引用。仅含标题的单元不通过。素材需求 - 每个单元章节声明,列出1-3项,包含文件名+简要规格——见下文阶段5图片覆盖最低要求。
**圖片需求 (illustrations)**
如果任何一项不满足: 即使用户明确指定了后续阶段,也不得调度至阶段3+。先调度至并告知用户:
course-content-authoring「大纲已存在,但Day {n}的{缺失/为空/单元u-{id}未填写}。直接做网页会生成一个空壳——学员看到的只是标题列表,没有实质教学内容。先用content.md补全每个单元的讲稿/任务/图片需求,比之后重做整套网页节省数倍时间。」course-content-authoring
Stage 2 Override Policy (thin-demo escape hatch)
阶段2豁免规则(轻量演示例外)
If the user explicitly insists on a thin demo ("先做殼就好", "我只要 demo 給客戶看版型", "skip content"), proceed under these conditions:
- State explicitly in chat what they're trading away: thin demo will have unit titles only, no lecture body, placeholder instead of illustrations, tasks as empty checkboxes.
<div> - Mark every affected (create as stub if missing) with header comment
day{n}/content.md.<!-- thin-demo stub: Stage 2 bypassed on YYYY-MM-DD — re-enter course-content-authoring before any real student sees this --> - When generating , set
course-data.json each affected unit so the SPA renders a "本單元尚未填內容" badge — students who somehow land on a demo build can see it's not real.__thinDemo: true
Without all three, do not proceed. Refuse and dispatch to .
course-content-authoring如果用户明确要求轻量演示(如“先做壳就好”“我只要demo给客户看版型”“skip content”),需满足以下条件方可继续:
- 在聊天中明确告知他们将放弃的内容:轻量演示仅包含单元标题,无讲稿正文,用占位符代替插图,任务为空复选框。
<div> - 在所有受影响的(缺失则创建草稿)中添加头部注释
day{n}/content.md。<!-- thin-demo stub: Stage 2 bypassed on YYYY-MM-DD — re-enter course-content-authoring before any real student sees this --> - 生成时,在每个受影响的单元上设置
course-data.js,以便SPA渲染“本单元尚未填内容”的标识——若学员意外访问演示版本,可明确知道这不是正式内容。__thinDemo: true
若未满足以上三点,不得继续。拒绝请求并调度至。
course-content-authoringStage 5 Image Coverage Floor (Hard Rule — applies before declaring "site feature-complete")
阶段5图片覆盖最低要求(硬规则——宣布“网站功能完整”前适用)
A site that ships with only a cover image and bare text feels skeletal — learners disengage in the first scroll. Before declaring Stages 1–5 done (and therefore eligible for Stage 5b / 6 dispatch), confirm:
- Every unit in has an
course-data.jsarray with 1–3 entries. (The legacy singleillustrations[]field counts as 1; treat it asillustration: 'foo.png'for this check.)illustrations: [{ name: 'foo.png', kind: 'hero' }] - At least one entry per unit resolves to an existing file under (the others may still be SVG fallback stubs while Stage 5 is mid-flight).
assets/ - If a unit genuinely needs no illustration (rare — e.g. a 5-min administrative slot, a quiz-only unit), record an explicit waiver: . Silence does not pass.
illustrations: [{ kind: 'waived', reason: '...' }] - (or your project's equivalent) contains the cover plus the per-unit images — not just the cover.
assets/illustrations/
If unmet: dispatch to and tell the user:
web-visual-assets「目前有 N 個單元沒插圖(或全站只有封面)。學員一打開會覺得內容很空、像草稿。建議先用跑一輪批次生圖(每單元 1–3 張,搭配 PNG-first / SVG-fallback),再進入電子書/企業包班分支 — 否則 PDF 一印出來就是大片留白。」web-visual-assets
This floor is checked after Stage 4 finishes (interactivity wired) and before dispatching to Stage 5b or 6. Stage 5b / 6 inherit whatever images exist; if you skip the floor, the corporate brochure and the PDF ebook will both ship empty.
仅包含封面图片和纯文本的网站会显得单薄——学员在第一次滚动时就会失去兴趣。在宣布阶段1-5完成(因此有资格调度至阶段5b/6)之前,确认:
- 中的每个单元都有
course-data.js数组,包含1-3项。(旧版单个illustrations[]字段算作1项;在此检查中视为illustration: 'foo.png'。)illustrations: [{ name: 'foo.png', kind: 'hero' }] - 每个单元至少有一项对应下的现有文件(其他项在阶段5进行中时可以是SVG占位草稿)。
assets/ - 如果某个单元确实不需要插图(罕见——如5分钟的行政环节、仅含测验的单元),需记录明确的豁免:。无记录则不通过。
illustrations: [{ kind: 'waived', reason: '...' }] - (或项目的等效目录)包含封面加上每个单元的图片——不能只有封面。
assets/illustrations/
如果未满足: 调度至并告知用户:
web-visual-assets「目前有N个单元没有插图(或全站只有封面)。学员打开后会觉得内容空洞、像草稿。建议先用批量生成图片(每个单元1-3张,优先PNG/SVG占位),再进入电子书/企业包班分支——否则PDF打印出来会有大片留白。」web-visual-assets
此要求在阶段4完成后(交互功能已配置)、调度至阶段5b或6前检查。阶段5b/6会继承现有图片;若跳过此要求,企业手册和PDF电子书都会内容空洞。
How to Detect the Current Stage
如何检测当前阶段
After Stage 1 Gate AND Stage 2 Gate pass, look for these signals to pick the right downstream stage:
- Outline exists, but
.mdis missing or thin → Stage 2 (day{n}/content.md). Skipping to Stage 3 is gated — see Stage 2 Gate above.course-content-authoring - Content complete, but no
.md→ Stage 3 (course-data.js).static-spa-conversion - exists, but
course-data.jshas no renderers / no local serve → Stage 3.index.html - SPA renders, but progress isn't persisted / no responsive / no theme → Stage 4.
- Site works but has placeholder for images / 404 thumbnails / units missing illustrations → Stage 5 (
<div>).web-visual-assets - Site appears feature-complete but Stage 5 Image Coverage Floor not met → Stage 5 first; do NOT dispatch 5b/6 yet.
- Site is feature-complete (all gates + floor pass), user mentions corporate / in-house / shorter version → Stage 5b.
- Site is feature-complete (all gates + floor pass), user wants a printed / archived / shareable file → Stage 6.
Ambiguous? Ask one short question, then dispatch. Don't try to do all stages at once — the cross-stage rework cost is high.
阶段1和阶段2准入规则都通过后,通过以下信号选择合适的下游阶段:
- 大纲存在,但
.md缺失或内容单薄 → 阶段2(day{n}/content.md)。跳过至阶段3受准入规则限制——见上文阶段2准入规则。course-content-authoring - 内容完整,但无
.md→ 阶段3(course-data.js)。static-spa-conversion - 存在,但
course-data.js无渲染器/无本地服务 → 阶段3。index.html - SPA可渲染,但进度未持久化/无响应式设计/无主题 → 阶段4。
- 网站可运行,但图片为占位符/缩略图404/单元缺失插图 → 阶段5(
<div>)。web-visual-assets - 网站看似功能完整,但未满足阶段5图片覆盖最低要求 → 先进入阶段5;不得调度至5b/6。
- 网站功能完整(所有准入规则和最低要求均通过),用户提及企业版/内部版/精简版 → 阶段5b。
- 网站功能完整(所有准入规则和最低要求均通过),用户需要打印/存档/可分享文件 → 阶段6。
若存在歧义?问一个简短的问题,然后调度。不要试图一次性完成所有阶段——跨阶段返工成本极高。
Operating Principles
操作原则
-
Never skip stages forward. Don't generate Stage 3 SPA from a half-baked Stage 1 outline — the structural mismatches multiply. If the user wants to skip, say so explicitly.
-
Always trace back-references. When the user modifies a downstream artifact (e.g. "add unit u-6 to day 2"), update upstream () AND downstream (
outline.md, related visuals) in the same change. Half-updated sites accumulate technical debt very fast.course-data.js -
Course-specific knowledge belongs to the user's content, not to a skill. The sub-skills are intentionally agnostic to the topic of the course (AI workshop / cooking class / accounting training — same pipeline). If a sub-skill seems to be hardcoding domain examples, that's a smell.
-
Verification commands are part of the deliverable. When dispatching to Stage 3+, remind the user how to verify (, then visit
npm run serve). Static sites often fail silently when opened withhttp://localhost:3000(localStorage blocked).file://
-
绝不向前跳过阶段。不要从半成品的阶段1大纲生成阶段3的SPA——结构不匹配会成倍增加。如果用户想要跳过,明确告知后果。
-
始终追踪回溯关联。当用户修改下游工件(如“在Day 2添加单元u-6”)时,在同一变更中更新上游()和下游(
outline.md、相关视觉资产)。半更新的网站会快速积累技术债务。course-data.js -
课程特定知识属于用户内容,而非技能。子技能故意对课程主题保持中立(AI工作坊/烹饪课/会计培训——流程相同)。如果子技能似乎硬编码了领域示例,这是不良信号。
-
验证命令是交付物的一部分。调度至阶段3+时,提醒用户如何验证(,然后访问
npm run serve)。静态网站用http://localhost:3000打开时常会静默失败(localStorage被阻止)。file://
Reference Files (Read When Needed)
参考文件(需要时查阅)
When you need deeper detail than this entry point provides, read the appropriate reference:
-
— Read after every stage transition. Contains the full per-stage cross-artifact checklist (what to verify after Stage 1, 2, 3, ... 6, 5b). Catches "I changed X but forgot to update Y" bugs.
references/consistency-checklists.md -
— Read when the user's intent is ambiguous. Contains a dozen typical user prompts ("我有講義 .md 了", "客戶要濃縮版 + PDF") mapped to the exact sub-skill dispatch flow.
references/scenarios.md -
— Read when something is reported broken. Maps symptoms ("素材連結 404", "進度勾選跑掉", "PDF 沒頁碼") to the most likely sub-skill / audit / verification path.
references/troubleshooting.md -
— Read when explaining the skill architecture itself, or when deciding whether a new feature deserves its own sub-skill vs. fitting into an existing one. Captures why the pipeline is shaped this way.
references/design-rationale.md
当需要比此入口点更详细的信息时,查阅相应的参考文件:
-
— 每次阶段转换后查阅。包含完整的跨阶段工件检查清单(阶段1、2、3……6、5b完成后需验证的内容)。捕捉“我修改了X但忘记更新Y”的错误。
references/consistency-checklists.md -
— 当用户意图不明确时查阅。包含十几个典型用户提示(如“我有講義.md了”“客户要濃縮版+PDF”),映射到精确的子技能调度流程。
references/scenarios.md -
— 当报告问题时查阅。将症状(如“素材链接404”“进度勾选丢失”“PDF无页码”)映射到最可能的子技能/稽核/验证路径。
references/troubleshooting.md -
— 当解释技能架构本身,或决定新功能是否值得拥有独立子技能 vs 融入现有子技能时查阅。记录了流程如此设计的原因。
references/design-rationale.md
What This Skill Does NOT Do
此技能不做的事
- Does not write any code itself — always dispatches to a sub-skill.
- Does not pick a CSS framework or build tool — assumes vanilla HTML/JS by default (see for why).
static-spa-conversion - Does not decide the course topic, audience, or pedagogy — that's the user's domain.
- 不自行编写任何代码——始终调度至子技能。
- 不选择CSS框架或构建工具——默认假设使用原生HTML/JS(详见的说明)。
static-spa-conversion - 不决定课程主题、受众或教学法——这是用户的领域。