Back to skills
Frago Previewable Content
可预览内容设计指南。当需要创建可通过 `frago view` 预览的内容时使用此 skill。支持两种模式:Markdown 文档和 reveal.js 演示文稿。
4 stars
0 votes
0 copies
0 views
Added 12/19/2025
toolsjavascripttypescriptpythonrustgojavabashsqlgit
Install via CLI
$
openskills install tsaijamey/fragoFiles
SKILL.md
---
name: frago-previewable-content
description: 可预览内容设计指南。当需要创建可通过 `frago view` 预览的内容时使用此 skill。支持两种模式:Markdown 文档和 reveal.js 演示文稿。
---
# 可预览内容设计指南
创建可通过 `frago view` 预览的高质量内容。
**核心概念**:可预览内容 = 可通过 `frago view` 命令直接渲染展示的内容
---
## 两种内容类型
| 类型 | 文件格式 | 展示模式 | 适用场景 |
|------|---------|---------|---------|
| **文档** | `.md` | 可滚动文档 | 报告、文档、数据展示 |
| **演示** | `.html`(reveal.js) | 幻灯片演示 | 汇报、演讲、培训 |
**选择建议**:
- 需要详细阅读 → Markdown 文档
- 需要演示汇报 → reveal.js 演示文稿
---
## 技术架构
| 组件 | 技术方案 |
|------|---------|
| Markdown 渲染 | Python `markdown` 库(服务端) |
| 演示框架 | reveal.js(客户端) |
| 代码高亮 | highlight.js(客户端) |
| 图表渲染 | mermaid.js v10(客户端) |
| 样式主题 | GitHub Dark / reveal.js 主题 |
| 窗口容器 | pywebview |
---
# Part 1: Markdown 文档
## 支持的 Markdown 元素
### 完整支持
| 元素 | 语法 | 渲染效果 |
|------|------|---------|
| 标题 | `# H1` ~ `###### H6` | 带底部边框的层级标题 |
| 段落 | 空行分隔 | 16px 下边距 |
| 粗体 | `**text**` | 加粗文本 |
| 斜体 | `*text*` | 斜体文本 |
| 链接 | `[text](url)` | 蓝色链接(#58a6ff) |
| 图片 | `` | 自适应宽度 |
| 代码块 | ` ```lang ` | 语法高亮 |
| 行内代码 | `` `code` `` | 灰色背景圆角 |
| 表格 | `\| col \|` | 边框表格 |
| 列表 | `- item` / `1. item` | 缩进列表 |
| 引用 | `> quote` | 左侧蓝色边框 |
| 水平线 | `---` | 灰色分隔线 |
| 脚注 | `[^1]` | 底部脚注 |
| 定义列表 | `term\n: definition` | 定义格式 |
| 缩写 | `*[abbr]: full` | 悬停显示全称 |
### 扩展支持
| 扩展 | 功能 | 示例 |
|------|------|------|
| `fenced_code` | 围栏代码块 | ` ```python ` |
| `tables` | GFM 表格 | `\| A \| B \|` |
| `toc` | 目录生成 | `[TOC]` |
| `footnotes` | 脚注 | `[^note]` |
| `def_list` | 定义列表 | `term\n: def` |
| `abbr` | 缩写 | `*[HTML]: ...` |
| `attr_list` | 属性列表 | `{#id .class}` |
| `md_in_html` | HTML 内嵌 MD | `<div markdown>` |
---
## Mermaid 图表
### 支持的图表类型
```
flowchart - 流程图
sequenceDiagram - 时序图
classDiagram - 类图
stateDiagram - 状态图
erDiagram - ER 图
gantt - 甘特图
pie - 饼图
mindmap - 思维导图
timeline - 时间线
xychart-beta - XY 图表(柱状图/折线图)
```
### 正确写法
````markdown
```mermaid
flowchart LR
A[开始] --> B{判断}
B -->|是| C[执行]
B -->|否| D[跳过]
```
````
### XY 图表示例
````markdown
```mermaid
xychart-beta
title "月度数据"
x-axis ["1月", "2月", "3月", "4月"]
y-axis "数量" 0 --> 100
bar [30, 45, 60, 80]
line [25, 40, 55, 75]
```
````
### Mermaid 主题
当前配置为 `dark` 主题,与 GitHub Dark 样式协调。
---
## 代码块最佳实践
### 语言标记
**必须标记语言**,否则无高亮:
````markdown
```python
def hello():
print("Hello, World!")
```
````
### 支持的语言(部分)
| 语言 | 标记 |
|------|------|
| Python | `python` |
| JavaScript | `javascript` / `js` |
| TypeScript | `typescript` / `ts` |
| Bash | `bash` / `sh` |
| JSON | `json` |
| YAML | `yaml` |
| SQL | `sql` |
| Go | `go` |
| Rust | `rust` |
| HTML | `html` |
| CSS | `css` |
---
## 内容结构最佳实践
### 1. 标题层次
```markdown
# 文档标题(仅一个)
## 一级章节
### 二级章节
#### 三级章节(尽量避免更深层次)
```
**原则**:最多使用 4 级标题,层次过深影响阅读。
### 2. 段落长度
- 每段 **3-5 句话**
- 单句不超过 **80 字符**
- 使用空行分隔段落
### 3. 列表使用
```markdown
适合用列表的场景:
- 并列要点
- 步骤说明
- 特性列举
不适合用列表的场景:
- 连续叙述的内容
- 需要上下文关联的说明
```
### 4. 表格设计
```markdown
| 列1 | 列2 | 列3 |
|-----|-----|-----|
| 简短 | 简短 | 简短 |
```
**原则**:
- 列数不超过 **5 列**
- 单元格内容 **简短**
- 复杂内容用列表或段落替代
---
## 图片处理
### 相对路径(推荐)
```markdown

```
**优势**:view 容器会自动复制同目录下的 `images/`、`assets/`、`img/`、`media/`、`figures/` 目录。
### 支持的图片格式
- PNG(推荐,无损)
- JPG(照片)
- SVG(矢量图)
- GIF(简单动画)
### 图片尺寸
- 最大宽度自动限制为容器宽度
- 建议源图宽度 **800-1200px**
---
## 回避事项
### 1. 不支持的 Markdown 语法
| 语法 | 问题 | 替代方案 |
|------|------|---------|
| `[TOC]` 锚点跳转 | 不生成可点击锚点 | 手动添加 `{#id}` |
| LaTeX 数学公式 | 不支持 | 使用图片或 Mermaid |
| HTML `<script>` | 安全限制 | 不可用 |
| 嵌入 iframe | 安全限制 | 使用截图 |
### 2. 性能考量
| 问题 | 影响 | 建议 |
|------|------|------|
| 超大 Mermaid 图 | 渲染慢 | 拆分为多个小图 |
| 过多代码块 | highlight.js 压力 | 合并相关代码 |
| 大图片 | 加载慢 | 压缩至 500KB 以内 |
| 超长文档 | 滚动卡顿 | 拆分为多文件 |
### 3. 编码问题
- **必须使用 UTF-8 编码**
- 避免 BOM 头
- 中文标点正常支持
---
## 样式参考
### 颜色方案(GitHub Dark)
| 元素 | 颜色 |
|------|------|
| 背景 | `#0d1117` |
| 文字 | `#c9d1d9` |
| 链接 | `#58a6ff` |
| 代码背景 | `#161b22` |
| 边框 | `#30363d` |
| 引用文字 | `#8b949e` |
### 字体
- 正文:系统默认无衬线字体
- 代码:`SF Mono, Consolas, Menlo, monospace`
---
## 内容模板
### 技术文档
```markdown
# 功能名称
简短描述功能用途。
## 概述
2-3 句话说明核心价值。
## 使用方法
### 基本用法
代码示例 + 说明
### 高级用法
进阶示例
## 配置选项
| 选项 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
## 注意事项
- 要点 1
- 要点 2
```
### 报告文档
```markdown
# 报告标题
**日期**:YYYY-MM-DD
## 摘要
关键发现的 3-5 点总结。
## 数据概览
```mermaid
xychart-beta
title "关键指标"
...
```
## 详细分析
### 维度 1
分析内容...
### 维度 2
分析内容...
## 结论与建议
1. 结论 1
2. 建议 1
```
---
## 调试技巧
### 检查渲染效果
```bash
# 快速预览
frago view document.md
# 指定主题
frago view document.md --theme monokai
```
### 常见问题排查
| 问题 | 原因 | 解决 |
|------|------|------|
| 代码无高亮 | 未标记语言 | 添加 ` ```python ` |
| Mermaid 不渲染 | 语法错误 | 检查 mermaid 语法 |
| 图片不显示 | 路径错误 | 使用相对路径 |
| 表格错乱 | 列不对齐 | 检查 `\|` 数量 |
---
# Part 2: reveal.js 演示文稿
## 概述
reveal.js 演示文稿是 HTML 文件,通过 `frago view` 以幻灯片模式展示。
**触发条件**:HTML 文件中包含 `class="reveal"` 或 `class="slides"`
## 基础结构
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>演示标题</title>
</head>
<body>
<div class="reveal">
<div class="slides">
<section>
<h1>第一页标题</h1>
<p>内容</p>
</section>
<section>
<h2>第二页</h2>
<ul>
<li>要点 1</li>
<li>要点 2</li>
</ul>
</section>
</div>
</div>
</body>
</html>
```
**说明**:`frago view` 会自动注入 reveal.js 库和样式,无需手动引入。
## 幻灯片组织
### 水平幻灯片
每个 `<section>` 是一页:
```html
<section>第 1 页</section>
<section>第 2 页</section>
<section>第 3 页</section>
```
### 垂直幻灯片(嵌套)
嵌套 `<section>` 创建垂直导航:
```html
<section>
<section>主题 A - 概述</section>
<section>主题 A - 详情 1</section>
<section>主题 A - 详情 2</section>
</section>
<section>
<section>主题 B - 概述</section>
</section>
```
## 常用元素
### 标题和文本
```html
<section>
<h1>大标题</h1>
<h2>副标题</h2>
<p>正文段落</p>
<p class="fragment">渐显文本</p>
</section>
```
### 列表
```html
<section>
<h2>要点</h2>
<ul>
<li class="fragment">逐条显示 1</li>
<li class="fragment">逐条显示 2</li>
<li class="fragment">逐条显示 3</li>
</ul>
</section>
```
### 代码块
```html
<section>
<h2>代码示例</h2>
<pre><code class="language-python">
def hello():
print("Hello, World!")
</code></pre>
</section>
```
### 图片
```html
<section>
<h2>架构图</h2>
<img src="./images/architecture.png" alt="架构图">
</section>
```
## Fragment 动画
`class="fragment"` 让元素逐步显示:
```html
<p class="fragment">第一步显示</p>
<p class="fragment">第二步显示</p>
<p class="fragment fade-in">淡入效果</p>
<p class="fragment highlight-red">高亮效果</p>
```
**动画类型**:
- `fade-in`:淡入
- `fade-out`:淡出
- `highlight-red/green/blue`:高亮
- `grow`:放大
- `shrink`:缩小
## 可用主题
通过 `--theme` 参数指定:
| 主题 | 说明 |
|------|------|
| `black` | 黑色背景(默认) |
| `white` | 白色背景 |
| `league` | 灰色渐变 |
| `beige` | 米色 |
| `sky` | 蓝色 |
| `night` | 深蓝 |
| `serif` | 衬线字体 |
| `simple` | 简约白 |
| `solarized` | Solarized 配色 |
| `blood` | 深红 |
| `moon` | 深蓝 |
| `dracula` | Dracula 配色 |
```bash
frago view slides.html --theme dracula
```
## 演示文稿模板
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>项目汇报</title>
</head>
<body>
<div class="reveal">
<div class="slides">
<!-- 封面 -->
<section>
<h1>项目名称</h1>
<h3>汇报人:xxx</h3>
<p>2025-01-01</p>
</section>
<!-- 目录 -->
<section>
<h2>目录</h2>
<ul>
<li>背景与目标</li>
<li>实现方案</li>
<li>成果展示</li>
<li>总结与展望</li>
</ul>
</section>
<!-- 章节 1 -->
<section>
<section>
<h2>1. 背景与目标</h2>
</section>
<section>
<h3>背景</h3>
<p class="fragment">问题描述...</p>
<p class="fragment">现状分析...</p>
</section>
<section>
<h3>目标</h3>
<ul>
<li class="fragment">目标 1</li>
<li class="fragment">目标 2</li>
</ul>
</section>
</section>
<!-- 章节 2 -->
<section>
<h2>2. 实现方案</h2>
<pre><code class="language-python">
# 核心代码
def main():
pass
</code></pre>
</section>
<!-- 总结 -->
<section>
<h2>总结</h2>
<ul>
<li class="fragment">成果 1</li>
<li class="fragment">成果 2</li>
</ul>
<p class="fragment"><strong>谢谢!</strong></p>
</section>
</div>
</div>
</body>
</html>
```
## 预览命令
```bash
# 预览演示文稿
frago view slides.html
# 指定主题
frago view slides.html --theme moon
# 全屏模式
frago view slides.html --fullscreen
```
## 键盘快捷键
| 快捷键 | 功能 |
|--------|------|
| `→` / `Space` | 下一页 |
| `←` | 上一页 |
| `↑` / `↓` | 垂直导航 |
| `F` | 全屏 |
| `Esc` | 退出全屏 / 总览 |
| `O` | 幻灯片总览 |
| `S` | 演讲者笔记 |
---
## 参考
- [Python Markdown Extensions](https://python-markdown.github.io/extensions/)
- [Mermaid 官方文档](https://mermaid.js.org/)
- [highlight.js 支持语言](https://highlightjs.org/static/demo/)
- [reveal.js 官方文档](https://revealjs.com/)
Attribution
Comments (0)
No comments yet. Be the first to comment!
