Install
openclaw skills install shiny-teaching-dashboard用 R 语言 Shiny 制作课堂讲解 dashboard,替代幻灯片(PPT)。当用户想把课程内容/讲义/某一章做成可交互的网页讲解、用 Shiny 做教学演示、把 PPT 换成能让学生动手调参数看结果的看板,或提到 bslib/shinydashboard/sliderInput/plotly/value_box 等 Shiny 组件用于教学时使用。产出单文件 app.R(R + Shiny),内置 5 套配色方案(bslib bs_theme)、各 Shiny 组件用于展示什么教学内容的经验判断、以及 6 个可复制调用的组件组合 template(章节式讲座/参数探索/分步揭示/概念对比/数据叙事/课堂自测),每个 template 在本 SKILL.md 给出了用法建议。即使用户只说"用 Shiny 做个教学演示/把这章做成交互的/不想用 PPT 了",只要意图是用 R Shiny 做课堂展示,也应使用本 skill。
openclaw skills install shiny-teaching-dashboard把一节课做成单文件 app.R:学生不再被动看播放,而是动手改输入、即时看结果。核心思维转变——幻灯片是单向播放,dashboard 是可操作的学习闭环。
nav_panel)只承载一个能讲清的点,不要把整本书塞进一页。sliderInput/radioButtons 都要值得学生亲手试;只会被你拖到固定值的,应该是静态图。textOutput,把"看到现象"接到"理解原因"。runApp() 跑最稳、按光线选明暗配色。references/layout-patterns.md 选整体骨架(章节式 page_navbar 最常用 / 控制台+舞台 / 侧边栏菜单 / 经典 shinydashboard)。app.R。references/components.md 的经验判断,决定每个点"用什么输入让学生动手、用什么输出呈现结果"。别堆控件,一屏 2–4 个足够。references/color-schemes.md 选一套 bs_theme(),注意课堂投影优先高对比/大字号那套。shiny::runApp("app.R") 跑通 → 检查无报错。plot 里有中文记得用 plotly 或 showtext(见 references/setup-and-run.md),否则中文是方框。sliderInput(参数因果,最有价值)、radioButtons(切视角)、actionButton(推进/揭示/提交)、selectInput(切数据集)。plotlyOutput(交互探索图)、plotOutput(ggplot 概念图)、DTOutput(可翻查的数据表)、value_box(核心数字/结论)、verbatimTextOutput(代码/统计输出)、uiOutput(动态/分步内容)。nav_panel(=一节)、card(=一个知识块)、layout_sidebar(控制台+舞台)、accordion(折叠的深入内容)、navset_card_tab(并置对比)。6 个完整可运行的 app.R 在 templates/(语法均已校验)。复制后把占位内容换成你的,保留结构。挑选指南:
navbar-lecture.R — 章节式讲座(★默认首选,替代整套幻灯片)
何时用:把一整章/一节课做成交互讲解,多个并列主题。顶部每个 tab 是一"节"(引入/原理/应用/小结),跟着点着走。
装:shiny, bslib, bsicons, ggplot2。改造:增删 nav_panel() 调整章节;"原理"节里那个 slider→plot 换成你的可调演示;"小结"节的 value_box 放本章 take-home。大多数"把这章做成交互的"需求从它起步。
param-explorer.R — 参数探索器(讲透一个可调模型)
何时用:聚焦讲清一个含参数的模型/关系(分布、函数、供需、物理定律……),让学生拖参数看曲线怎么变。
装:shiny, bslib, plotly。改造:把"正态分布"换成你的模型,sidebar 放它的关键参数,主区 plotlyOutput 画随参数变化的图,value_box 显示当前关键读数。plotly 中文免处理。
stepwise-reveal.R — 分步揭示(替代幻灯片"逐点出现")
何时用:推导、解题、论证——需要按节奏一步步揭示、留悬念的内容。点"下一步"逐条出现。
装:shiny, bslib。改造:把推导拆进 steps 列表(每步 h 标题 + b 正文,正文可含公式/HTML);可选的深入材料放进 accordion。
concept-compare.R — 概念/案例/学派对比
何时用:讲"两种理论""三种方法""正反观点"等需要对比的内容。前几个 tab 各讲一个视角,最后一页并置三栏按维度对照。
装:shiny, bslib。改造:每个 nav_panel 填一个视角的主张+证据;并置页按你的对比维度(假设/适用/局限……)逐行对齐。纯展示,server 为空。
data-story.R — 数据叙事
何时用:带学生分析一份数据集,讲"从数据里看出了什么"。关键指标 + 自选 X/Y 的交互散点 + 可翻查原始表。
装:shiny, bslib, plotly, DT。改造:把 dat 换成你的数据(read.csv 或随堂数据),value_box 放最该强调的几个数,selectInput 的 choices 跟着你的变量名走。
quiz-checkpoint.R — 课堂自测/投票
何时用:一节讲完做巩固检查点,或课堂即时提问。选答后点"提交"给即时对错+讲解。
装:shiny, bslib。改造:把题目填进 quiz 列表(q 题干 / opts 选项 / ans 正确项序号 / why 讲解)。注意选项文字里别用英文双引号(会断字符串),用中文「」。
app.R(教学分发最省事),文件名或所在文件夹用 kebab-case 反映主题。默认写到当前工作目录,用户指定路径就用用户的。install.packages(...) 一行、shiny::runApp("…") 一行、以及一句说明(这个 app 分几节、关键交互是什么、用了哪个 template 和哪套配色)。Rscript -e "parse('app.R')" 验证语法就先验一下再交付。| 你正要…… | 读 |
|---|---|
| 选整体骨架(章节式/控制台+舞台/侧边栏/经典看板)、处理课堂投影演示 | references/layout-patterns.md |
| 判断某教学内容该用哪个输入/输出/容器组件 | references/components.md |
| 选配色、让图表配色跟随主题、字体设置 | references/color-schemes.md |
| 装包/运行/部署/plot 中文字体/reactive 速记 | references/setup-and-run.md |
| 要现成的组件组合骨架 | templates/ 下对应文件 + 上面的用法建议 |
runApp()。