用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/johnson7788/skill-ppt-agents --skill dashi-ppt命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
图片型 PPT/PPTX 生成技能。把资料(论文、报告、笔记、提纲,或用户上传的文件)做成一套视觉统一的演示文稿——每页是一整张 16:9 生成图,最后组装成可下载的 .pptx。当用户想"生成 PPT / 做一份幻灯片 / 出一套演示",或指定/上传模版风格时,先 `load_skill("ppt-deck")` 获取本指导,然后按流程用 `generate_ppt` 工具出图组装。不适用于需要每个文本框/图表单独可编辑的场景。
Bing 网络搜索技能。⚠️ 注意:Bing 有强反爬机制,直接 curl 或 urllib 抓取必定被拦截、返回空结果。本技能脚本内置了完整反爬方案(Cookie 管理、多浏览器 UA、aiohttp + BeautifulSoup 结构化解析、结果缓存)。当需要联网搜索时时必须 `load_skill("bingsearch")` 加载本技能获取调用指导,然后按指导使用 `terminal` 运行脚本,**不得直接 curl 抓取**。支持关键词搜索、站点限定、多站点组合、排除/文件类型过滤、网页正文抓取。
arXiv 学术论文检索技能,通过 arXiv 官方公开 API 进行关键词检索,支持按相关性/最新提交并行检索、按分类(cs.CL、cs.LG 等)检索、按作者检索,以及自由检索表达式。支持字段标签和排序方式。适合查找特定主题的论文、追踪某方向最新进展、定位某作者工作,或使用高级检索表达式时触发此技能。
基于 SOC 职业分类
正在显示 SKILL.md
| name | dashi-ppt |
| description | 制作 PPT、演示文稿、幻灯片、汇报材料时使用。Dashi PPT 基于预置视觉主题组合页面,生成可离线打开、可在浏览器编辑的 HTML 演示,支持导出 PPTX / PDF 文件。 |
Dashi PPT 生成静态 HTML 横向翻页 PPT。使用本 skill 时,先把用户的自然语言需求整理成 JSON 计划,再调用本地项目生成器输出 index.html 和 assets/。
当前版本: 0.4.5
服务端 Agent 不运行版本检查。dashi_script 仅允许只读 layout-query.mjs;不得调用它执行 check_latest_version.mjs 或其他维护脚本。版本检查由部署维护者在 Agent 链路外完成,用户内容生成结束后直接交付。
当前 SKILL.md 所在目录就是 Skill 根目录,下文记为 <skill-root>。
内置生成器目录:
<skill-root>/project
底层渲染脚本(由 dashi_render 内部调用,Agent 不直接执行):
<skill-root>/scripts/render_goal_deck.sh<skill-root>/scripts/render_goal_deck.ps1维护侧版本检查脚本(服务端 Agent 不调用):
<skill-root>/scripts/check_latest_version.mjs
本 Skill 是模板编排器。默认目标是快速、稳定地把用户需求套入已登记页面组件,输出可离线打开的 HTML PPT。
默认模式是“锁模板填文案”:保留所选页面组件的原始视觉、结构、数量、显隐、强调、配色、图表类型和图片槽位,只替换可见文字内容。除非用户明确要求调整页面属性,不要改任何非文案 props。
成果验收是默认流程。每次生成后都要判断最终产物是否达到用户目标;默认检查目标、内容、结构、明显可见问题和交付完整性,不做截图审美精修,不因普通断行反复返工。用户明确要求“视觉精修”“100% 检查”“帮我调到满意”时,再扩展为视觉 QA。
project/ 目录管理依赖。Agent 只可通过 dashi_script 运行只读 layout-query.mjs;其他底层脚本不直接执行。<skill-root>/assets/skill/theme-style-grid.png 的 Markdown 图片,先展开绝对路径;这是回复展示用内置风格图,不可写入 goal.json 或任何 media 字段;列出当前可选风格和极简“适合/人群”,不能只在内部进度提示中提到风格图。goal.json 顶层加 "language": "en";全部文案字段用目标语言撰写,页面自带的默认中文文案(含结尾页“感谢阅读”类装饰字段)一律覆盖,不得残留中文。编辑器界面语言自动跟随打开者的系统语言,右上角可手动切换,无需在生成时处理。PPTX、PowerPoint、可编辑 PPTX、导出 PPTX、PPT 格式 或“格式/文件类型为 PPT/PPTX”时才交付 PPTX 文件。dashi_render 先生成 HTML 再完成导出;最终原样使用其同源相对 download_url,不得交付内部预览地址或本机文件路径。theme01 轻拟态风、theme02 炫光紫绿风、theme03 深浅代码风、theme04 玻璃糖果风、theme05 色谱图表风、theme06 深色图谱风、theme07 冷白调研风、theme08 黑金实验风、theme09 深蓝杂志风、theme10 金色指数风、theme11 高能增长风、theme12 声波霓虹风。theme10;只有用户明确指定,或金融/投资指数内容强相关且 dashi_scaffold 返回的契约确认可填时才用。theme01 轻拟态风 | 适合: 产品介绍 / 企业汇报 | 人群: 创业团队 / 产品经理theme02 炫光紫绿风 | 适合: 科技发布会 / AI/自动驾驶/机器人主题 | 人群: 科技公司创始人 / 技术负责人theme03 深浅代码风 | 适合: 技术方案 / 开发者大会 | 人群: 工程师 / 技术管理者theme04 玻璃糖果风 | 适合: 年轻化品牌 / 消费产品 | 人群: 品牌团队 / 设计师theme05 色谱图表风 | 适合: 数据报告 / 市场分析 | 人群: 数据分析师 / 咨询顾问theme06 深色图谱风 | 适合: 高密度数据展示 / 战略分析 | 人群: 战略团队 / 投资人theme07 冷白调研风 | 适合: 调研报告 / 白皮书 | 人群: 研究机构 / 咨询团队theme08 黑金实验风 | 适合: 高端发布 / 品牌提案 | 人群: 高端品牌 / 创意总监theme09 深蓝杂志风 | 适合: 品牌故事 / 人物访谈 | 人群: 公关团队 / 媒体编辑theme10 金色指数风 | 适合: 金融数据 / 投资报告 | 人群: 投资机构 / 金融分析师theme11 高能增长风 | 适合: 增长复盘 / 商业计划 | 人群: 创业者 / 增长团队theme12 声波霓虹风 | 适合: 音乐娱乐 / 潮流活动 | 人群: 娱乐品牌 / 活动策划dashi_script(layout-query.mjs) → dashi_scaffold(layouts=[...]) → (有素材时 dashi_stage_media) → dashi_write_goal → dashi_render。查询只读候选;不得直接运行其他底层 CLI 来手写或发布 goal.json。dashi_scaffold。layouts 必填;scaffold 内部用 inspect-layout 取得类型契约。dashi_scaffold 返回的 goal_json 是唯一内容起点;按每页 slides_spec / fill_plan 填写全部文案、数组、count 和媒体字段。带点路径表示嵌套对象层级,例如 copy.quote 必须写为 props.copy.quote。layout-query.mjs 是唯一允许 Agent 调用的底层脚本,且只能只读选候选。inspect-layout.mjs、props:safe 和其他项目脚本仅供服务工具内部实现或维护诊断,不得成为替代生成工作流。dashi_scaffold(..., layouts=[...]) 生成唯一类型骨架,按返回信息补齐内容并通过 dashi_write_goal 原子发布。fill_plan.text[].recommendedMaxChars(存在时优先)、fill_plan.text[].maxChars、fill_plan.arrays[].visibleCount、fill_plan.arrays[].nestedArrays 写;maxChars 是硬上限而非写满目标。中文或中英混排的 lead / sub / intro / conclusion 默认使用推荐值,给实际渲染留出换行余量;短英文标签不超过 10 个拉丁字符,必要时使用通用缩写。display / metric 字段只写短词、短句或数字。headlineHtml / quoteHtml)写文案只用 <br> 换行加 <b> / <em> 行内强调,禁止 <span> 等自由 HTML;主题默认值里的 <span class> 依赖主题 CSS,只是占位,不要照抄。validate:goal-spec 会拦截自由 HTML。preview: {"themeSwitcher": true}。layout + props。role 只允许在草稿阶段辅助选页,渲染前必须换成具体 layout。themeXX_page001 到 themeXX_page005 都是封面候选。一个 deck 只能从前 5 页中选择 1 页作为封面,不要同时使用多个封面页;正文页从第 6 页以后选择。dashi_scaffold.slides_spec[].fill_plan.media 已只包含可写媒体槽;按每项的 write 路径写入 deck 内相对媒体路径,用 key 识别字段并同步 countKey。不可引用临时目录、外部绝对路径、file:// 或远程 URL。--planned-images <n> / --needs-media,用户给素材用 --provided-images <n> / --provided-media,用户明确要求原创视觉图/生图时,Codex 环境用 image-gen 生成图片并加 --image-gen;未明确生图时先询问用户。plannedImages / needsVisual / imageGen 只表示选页意图,除非用户明确选择预留空槽,交付前必须写入真实媒体路径,不能交付空媒体槽或伪造路径。dashi_stage_media(output_dir="output/<deck-name>", media_paths=[...]),使用返回的 items[].relative 路径;AVIF 会转成浏览器可用格式。不得直接运行底层 staging 脚本。ppt/<relative> 存在且 HTML 包含文件名;缺失时只补最终 ppt/assets 并重跑校验。图片/视频素材每个最多使用一次;素材用完后,媒体插槽留空或改选无媒体插槽页面;除非用户明确要求,不要重复填充同一素材。title、goal、audience、owner、页数、内容重点和最终产物格式;同时形成验收清单,记录用户显式要求、已确认选项和必要假设。用户未指定页数时默认 10 页左右,不少于 8 页。themePack。用户未指定时先询问风格;用户选定后生成 randomSeed,例如 <主题>-<日期>-<3位随机词>,保证随机选页可复现。dashi_stage_media;明确生图时用 image-gen。dashi_script(script_name="layout-query.mjs", ...) 查询封面和正文候选,结合每页语义选择足量、同主题、互不重复的 layout ID;随后调用 dashi_scaffold(..., layouts=[...]),由其内嵌 inspect-layout 取得类型骨架、slides_spec 和 fill_plan。goal_json 上补齐内容,再调用 dashi_write_goal(goal_path="output/<deck-name>/goal.json", goal_data=...);只有校验成功时才会原子替换有效文件。dashi_render(goal_path="output/<deck-name>/goal.json") 完成预校验、HTML 渲染和所需导出。ppt/assets。validate:swiss 和 validate:goal-copy 校验。python -m http.server、npx serve 等静态服务器替代。服务端最终预览和下载地址只使用 dashi_render 返回值。dashi_render.preview_url 和存在时的 dashi_render.download_url;两者必须保持同源相对 /preview、/download 形式。机器校验通过只是技术基线,不等于成果达标。最终验收以用户原始需求、已确认选项、明示假设和最终渲染产物为准:
有浏览器能力时,最终一轮必须逐页打开预览,检查内容可见、媒体正常,无明显溢出、遮挡或裁切;不创建专用 Chrome profile,不默认做截图审美精修。无浏览器能力的脚本/批处理环境至少复核 goal.json、校验结果和输出文件,并不得声称已完成视觉验收。
验收状态只有“通过”“待修正”“阻塞”。发现任一不合格项就标记“待修正”:文案、数据、insight 或媒体错误时改对应 props;页面信息角色或容量不匹配时重新 layout-query 并调用 dashi_scaffold 更换 layout;内容缺失时补写或重新生成对应页。修正后从 dashi_write_goal、dashi_render、素材核对到成果验收全部重跑。
默认最多修正 2 轮。验收通过后才能交付;两轮后仍不通过则标记“阻塞”,说明未达标项和阻塞原因,不得将其表述为已完成成果。
服务端示例:
dashi_script(script_name="layout-query.mjs", args="--theme theme07 --role cover --limit 5")
dashi_script(script_name="layout-query.mjs", args="--theme theme07 --role content --limit 15")
dashi_scaffold(title="客户复盘", goal="总结关键成果并明确下一阶段行动", theme="theme07", pages=8, layouts=[<1 个封面和 7 个正文 layout ID>], out="output/client-review/goal.json")
dashi_write_goal(goal_path="output/client-review/goal.json", goal_data=<填充后的 goal_json>)
dashi_render(goal_path="output/client-review/goal.json")
{
"title": "美国 AI 融资调研",
"goal": "面向投资团队汇报 2024-2026 年美国 AI 大额融资结构、资本流向和后续判断",
"audience": "投资团队 / 产业研究团队",
"owner": "研究团队",
"randomSeed": "ai-funding-20260609-a7k",
"pageCount": 8,
"themePack": "theme01",
"slides": [
{"layout": "theme01_page001", "props": {"kicker": "融资调研 · VOL.01", "titleTop": "美国 AI", "titleBottom": "融资调研", "lead": "从资本体量、赛道结构和典型公司拆解本轮 AI 融资周期。"}},
如果 slides 为空,pageCount 只适合临时草稿预览。面向用户交付前,必须改成具体 layout + 对应 props。
role 只用于 layout-query 筛选候选,最终 JSON 必须落成具体 layout。角色说明见 references/layout-roles.md;真实候选以 layout-query 返回结果为准。
cover 只能从当前主题前 5 页选择。image / media 候选基于真实媒体槽,不是页面标题关键词。动态背景页可用 ambient 作为氛围页或章节页。
用户明确指定页面时,只能把完整 layout ID 传给 scaffold,例如:
dashi_scaffold(..., pages=1, layouts=["theme01_page030"])
不得据此直接手写 slides 或 goal.json;页面 props 仍以 scaffold 返回的类型骨架为准。
生成后的预览页支持翻页、打开侧边栏编辑文本、调整页面 props、替换组件暴露的图片/视频媒体槽、切换页面切换动画、导出 HTML/PDF/PPTX。面向用户交付的页面底部不显示页码标识、翻页引导、圆点导航或索引提示。
普通生成不要读 layout-manifest.json,也不要直接调用 inspect-layout。layout-query 只负责返回候选摘要;字段契约以 dashi_scaffold.slides_spec / fill_plan 为准:
text_props: 可安全改写的文案/数据字段及长度预算;display / metric 超长会被校验拦截。fill_plan: 对象与数组字段的内部形状;写 copy、cells、items、rows 等对象字段时只使用这里列出的 key。fill_plan.arrays[].itemFields[].enum: 该字段为结构枚举,只能从列出的值中选,不是自由文案。fill_plan.media: 图片/视频写入 key、countKey、默认数量、最大数量和接受的媒体类型。fill_plan 里数值字段看 numericBounds 填数:enforced:false 是提示、真实数据可超出,enforced:true 必须遵守,semantics:'normalized' 填 0-1 比例;定长嵌套数组看 fixedLength/fixedLengths 按下标填,不试错。allowed_keys: 仅用于拒绝未知字段,不是普通内容填充清单。默认只填 text_props、可见数组、必需 countKey 和真实媒体槽。dashi_write_goal 必须返回校验成功且 slides_empty 为 0。dashi_render 必须通过 goal spec、HTML、Swiss 及 goal-copy 校验后才可交付。npm run showcase:update。slides[].layout 必须唯一。选页时记录已用 layout,不同内容页要换同主题其它候选,不要通过改文案复用同一个 layout。role 后依赖页面默认文案。除非用户明确要默认 demo,每一页可见内容都必须写和用户主题对应的 props 文案。copyKeys 以及 scaffold 的 text_props / fill_plan.text 列出的文案槽必须全部覆写,不允许遗漏任何一项(封面的口径、日期、页脚元信息等小字段同样必填);漏填的槽会以模板演示文案交付,属于交付失败。dashi_scaffold.slides_spec 暴露的文案字段。字段是对象或数组时按 fill_plan 的 shape 填内部 key。字段路径可能展开嵌套层级(如 copy.quote、items[].label),必须按对象层级填入(props.copy.quote),禁止把 "copy.quote" 当作顶层 prop key。text_props 若没有承载该页核心内容所需的可写字段,就重新 layout-query 并 scaffold 换页。数组按 fill_plan.arrays[].visibleCount 填满可见项;装饰位不要填。props 内填写内容和用户明确要求的页面属性。text 覆盖可见文字槽位,但只用于替换文字内容。不要在普通生成中启动浏览器批量抽取全页面文本槽位;只有用户明确要求“彻底清除所有模板默认文案/逐页校对可见文案”时才做运行时槽位抽取。output/ 里已有的旧 goal.json 或旧 HTML。每次请求都新建本次输出目录和本次 JSON 计划。output/<deck-name>/goal.json;不得传绝对路径、.. 或 output/ 之外的路径。dashi_render 后,把其返回的 preview_url / download_url 原样用于最终 Markdown 链接。它们分别是同源相对 /preview?... 和 /download?...;不得自行拼接、改写或添加协议、主机名、IP、端口。不要把渲染器内部预览地址、本地文件路径或 file:// 地址交给前端用户。dashi_render.preview_url;不要返回 theme-preview。dashi_render.download_url;无该 URL 时不得虚构下载链接。dashi_render 的结构化错误修正输入后重试,最多两轮;仍失败则如实报告阻塞,不得绕过正式链路直接运行底层导出命令。