# https://github.com/isatimur/presentation-md 项目说明书

生成时间：2026-07-30 22:00:17 UTC

## 目录

- [项目概览](#page-overview)
- [Src 模块](#page-packages-studio-src)
- [Src 模块](#page-packages-export-src)
- [Src 模块](#page-packages-create-theme-src)

<a id='page-overview'></a>

## 项目概览

### 相关页面

相关主题：[Src 模块](#page-packages-studio-src)

<details>
<summary>相关源码文件</summary>

以下源码文件用于生成本页说明：

- [README.md](https://github.com/isatimur/presentation-md/blob/main/README.md)
- [adapters/claude-code/README.md](https://github.com/isatimur/presentation-md/blob/main/adapters/claude-code/README.md)
- [adapters/cli/README.md](https://github.com/isatimur/presentation-md/blob/main/adapters/cli/README.md)
- [adapters/codex/README.md](https://github.com/isatimur/presentation-md/blob/main/adapters/codex/README.md)
- [adapters/copilot/README.md](https://github.com/isatimur/presentation-md/blob/main/adapters/copilot/README.md)
- [adapters/cursor/README.md](https://github.com/isatimur/presentation-md/blob/main/adapters/cursor/README.md)
</details>

# 项目概览

## 项目定位与目标

`presentation-md` 是一个面向 AI 编程助手生态的演示文稿制作工具套件，目标是让用户通过 Markdown 文件结合技能包 (skill) 的方式生成、渲染并导出幻灯片。仓库以多适配器 (adapters) 形式分发，针对不同 AI IDE 客户端加载对应的文档与安装入口。资料来源：[README.md]()。

最新发布版本为 `@presentation-md/render@1.1.0`，同时升级了 `@presentation-md/core@1.1.0` 与 `@presentation-md/export@1.1.0`。这表明系统采用 monorepo 分包发布策略，由 `core`（核心能力）、`render`（版式工艺与渲染）、`export`（导出器）三个 npm 包共同组成渲染管线。资料来源：[README.md]()。

## 核心功能与版式工艺

`render` 包在 1.1.0 版本引入了一组制作工艺：

- 新增 `code` 版式，专门适配代码片段展示场景
- 支持非对称双栏 (`two-column`)、对比 (`comparison`)、便当 (`bento`) 等版式手法
- 提供 `preview_themes` 多版式预览模式，便于一次性比对多种主题

这套工艺组合让开发者可以直接从 Markdown 产出风格统一、版式多样的网页幻灯片，而不再受限于单一的居中标题/正文结构。资料来源：[README.md]()。

## 适配器生态

仓库通过 `adapters/` 目录对接各类 AI 编程客户端，每个适配器都自带独立的 README，说明安装方式、触发命令以及与该客户端文件系统的对接方式：

| 适配器 | 目标客户端 | 典型安装命令 |
|---|---|---|
| claude-code | Claude Code | `npx @presentation-skill-pack/install claude-code` |
| cli | 通用命令行 | - |
| codex | Codex | - |
| copilot | GitHub Copilot | - |
| cursor | Cursor | - |

资料来源：[adapters/claude-code/README.md]() ; [adapters/cli/README.md]() ; [adapters/codex/README.md]() ; [adapters/copilot/README.md]() ; [adapters/cursor/README.md]()。

社区讨论指出（Issue #9），README 已将 `deck-design-judge` 列为仓库自带的 skill，但默认安装命令仍只解析 `@presentation-skill-pack/core/skill`，缺少将 `deck-design-judge` 一并纳入安装管道的逻辑。这反映出当前适配器与技能注册之间的耦合尚需补齐，是后续需要关注的方向。资料来源：[adapters/claude-code/README.md]() ; [README.md]()。

## 已知限制与发展方向

渲染脚本侧存在一个待修复问题（Issue #8）：`skills/deck-design-judge/scripts/render_slides.sh:45` 在按页截图时，往 URL 追加 fragment 并不能让 headless Chrome 视口跟随滚动。当演示文稿自身没有实现 `#__shot=N` 哈希监听器时，截图结果会出现错位。这是 render 流程中的一个真实缺陷，建议在编写自定义 deck 时显式实现相应的 hash 监听逻辑。资料来源：[skills/deck-design-judge/scripts/render_slides.sh:45]()。

## 小结

`presentation-md` 以 Markdown 为输入、以 `@presentation-md/core` 为内核、以 `@presentation-md/render` 为版式工艺集、以 `@presentation-md/export` 为导出器，配合多适配器分发到主流 AI 编程客户端。开发者当前重点关注的方向包括：扩展 `deck-design-judge` skill 的安装覆盖（Issue #9）、修复 `render_slides.sh` 中视口截图的滚动逻辑（Issue #8），以及通过 1.1.0 引入的非对称双栏 / 对比 / 便当等新工艺来丰富幻灯片视觉表达。资料来源：[README.md]()。

---

<a id='page-packages-studio-src'></a>

## Src 模块

### 相关页面

相关主题：[项目概览](#page-overview), [Src 模块](#page-packages-export-src)

<details>
<summary>相关源码文件</summary>

以下源码文件用于生成本页说明：

- [packages/studio/src/App.tsx](https://github.com/isatimur/presentation-md/blob/main/packages/studio/src/App.tsx)
- [packages/studio/src/ai/generate.ts](https://github.com/isatimur/presentation-md/blob/main/packages/studio/src/ai/generate.ts)
- [packages/studio/src/components/GenerateModal.tsx](https://github.com/isatimur/presentation-md/blob/main/packages/studio/src/components/GenerateModal.tsx)
- [packages/studio/src/components/PresentMode.tsx](https://github.com/isatimur/presentation-md/blob/main/packages/studio/src/components/PresentMode.tsx)
- [packages/studio/src/components/Preview.tsx](https://github.com/isatimur/presentation-md/blob/main/packages/studio/src/components/Preview.tsx)
- [packages/studio/src/components/SlideForm.tsx](https://github.com/isatimur/presentation-md/blob/main/packages/studio/src/components/SlideForm.tsx)
</details>

# Src 模块

## 概述

`packages/studio/src/` 是 presentation-md 仓库中 **Studio** 前端应用的源码根目录。该模块基于 React + TypeScript 构建，承担可视化编辑器的全部交互职责——包括幻灯片表单编辑、AI 一键生成大纲、实时预览以及全屏演示。它与同仓库内的 `@presentation-md/core`、`@presentation-md/render`、`@presentation-md/export` 三个包协同工作，构成从"原始数据 → 渲染预览 → 导出发布"的完整链路。

资料来源：[packages/studio/src/App.tsx:1-40]()

## 模块组成与职责

`src/` 主要由三类文件组成：**根组件入口**、**AI 生成层**、**UI 组件层**。

### 根组件入口：`App.tsx`

`App.tsx` 是 Studio 的顶层容器，负责编排路由、全局状态（decks/slides）以及子组件的挂载顺序，所有子视图（表单、预览、演示、生成弹窗）都受其状态控制。

资料来源：[packages/studio/src/App.tsx:1-120]()

### AI 生成层：`ai/generate.ts`

`ai/generate.ts` 把大模型调用封装为单一函数，向其传入主题、语气、要点等参数，返回符合核心数据契约的幻灯片 JSON 数组。该模块是 `GenerateModal` 与外部 LLM 之间的唯一适配层。

资料来源：[packages/studio/src/ai/generate.ts:1-80]()

### UI 组件层：`components/`

`components/` 子目录聚合了所有面向用户的视图组件，按职责可划分为：

- **编辑侧**：`SlideForm.tsx` 负责单张幻灯片标题、正文、布局（layout）、主题等字段的增删改查。
- **预览侧**：`Preview.tsx` 调用 `@presentation-md/render` 包在右侧面板即时渲染当前幻灯片，是新布局能力（如 `code`、asymmetric two-column/bento、`preview_themes`）的前端承载点。
- **演示侧**：`PresentMode.tsx` 提供全屏演示模式，接管键盘翻页与聚焦交互。
- **AI 入口**：`GenerateModal.tsx` 以弹窗形式收集生成参数，调用 `ai/generate.ts` 并把结果回填到 `App.tsx` 持有的状态中。

资料来源：
- [packages/studio/src/components/SlideForm.tsx:1-100]()
- [packages/studio/src/components/Preview.tsx:1-90]()
- [packages/studio/src/components/PresentMode.tsx:1-90]()
- [packages/studio/src/components/GenerateModal.tsx:1-60]()

## 数据流与运行时协作

四个主要组件围绕 `App.tsx` 持有的统一状态形成单向数据流：编辑表单或 AI 生成写入状态，预览与演示从状态读取并渲染。

```mermaid
flowchart LR
    SF[SlideForm<br/>手动编辑] --> ST[App 状态<br/>decks/slides]
    GM[GenerateModal<br/>AI 弹窗] --> ST
    GM -->|调用| AI[ai/generate.ts]
    AI -->|回填 JSON| ST
    ST --> PV[Preview<br/>实时渲染]
    ST --> PM[PresentMode<br/>全屏演示]
```

用户在 `SlideForm` 手动维护幻灯片，或在 `GenerateModal` 通过 `ai/generate.ts` 一键生成；两者最终汇入 `App.tsx` 的同一份状态，再分别供给 `Preview` 与 `PresentMode` 进行渲染与播放。

资料来源：[packages/studio/src/App.tsx:40-160]()

## 与发布版本及社区反馈的关联

### 发布版本带来的能力

最新发布的 `@presentation-md/render@1.1.0` 新增了 `code` 布局、非对称双列/对比/bento 工艺以及 `preview_themes` 多布局模式。这些新增能力会在 `Preview.tsx` 加载渲染包时即时生效，使 Studio 的预览面板成为用户最先感知版本升级的位置。

资料来源：[packages/studio/src/components/Preview.tsx:20-80]()

### 安装管线相关讨论

社区反馈指出，README 中已声明仓库携带 `deck-design-judge` 这项 skill，但 `npx @presentation-skill-pack/install claude-code` 这条一键安装命令目前只解析 `@presentation-skill-pack/core/skill`，其 `files` 列表未包含 `deck-design-judge`。该问题涉及安装管线，与 `src/` 模块的运行时代码无直接耦合，但若未来 Studio 增加"内置评审"开关，则需在 `GenerateModal` 或 `Preview` 侧补齐调用入口。

资料来源：[README.md:40-60]()

### 已知截图缺陷（跨模块）

`skills/deck-design-judge/scripts/render_slides.sh` 中存在一个已知问题：当目标 deck 未实现 `#__shot=N` 哈希监听器时，向 URL 追加 fragment 并不能驱动 headless-Chrome 视口下移，从而导致逐页截图错位。该缺陷不在 `src/` 模块内，但与 `Preview` 在演示模式下的真实视口表现相关，是后续接入视觉回归时需要协同修复的点。

资料来源：[skills/deck-design-judge/scripts/render_slides.sh:40-50]()

---

<a id='page-packages-export-src'></a>

## Src 模块

### 相关页面

相关主题：[Src 模块](#page-packages-studio-src), [Src 模块](#page-packages-create-theme-src)

<details>
<summary>相关源码文件</summary>

以下源码文件用于生成本页说明：

- [packages/export/src/color.ts](https://github.com/isatimur/presentation-md/blob/main/packages/export/src/color.ts)
- [packages/export/src/context.ts](https://github.com/isatimur/presentation-md/blob/main/packages/export/src/context.ts)
- [packages/export/src/deck-types.ts](https://github.com/isatimur/presentation-md/blob/main/packages/export/src/deck-types.ts)
- [packages/export/src/font.ts](https://github.com/isatimur/presentation-md/blob/main/packages/export/src/font.ts)
- [packages/export/src/import/extract.ts](https://github.com/isatimur/presentation-md/blob/main/packages/export/src/import/extract.ts)
- [packages/export/src/import/index.ts](https://github.com/isatimur/presentation-md/blob/main/packages/export/src/import/index.ts)
</details>

# Src 模块

## 定位与职责

`packages/export/src` 是 `@presentation-md/export` 包的源码根目录，承担将 Markdown 幻灯片草稿转换为最终可分发格式（HTML/PNG/PDF 等）的核心职责。该模块与 `@presentation-md/core`、`@presentation-md/render` 协同工作：core 负责数据模型与解析、render 负责渲染编排，而 export 负责"出片"链路上的样式、资源抽取与导出上下文管理。`@presentation-md/export@1.1.0` 同步引入 `code` 布局、非对称双栏 / 对比 / bento 等版式，以及 `preview_themes` 多主题预览能力，这些扩展能力的实现均落在 `src` 目录中。资料来源：[packages/export/src/context.ts:1-40]()

## 子模块组成

`src` 目录按职责划分为若干并列子模块，每个子模块聚焦一类导出期关注点：

- **样式与品牌层**：`color.ts` 与 `font.ts` 分别负责配色与字体在导出阶段的归一化处理，保证同一份幻灯片在多主题（`preview_themes`）下表现一致。资料来源：[packages/export/src/color.ts:1-40]()、[packages/export/src/font.ts:1-40]()
- **导出上下文层**：`context.ts` 聚合导出所需的全部运行时上下文（主题、布局、路径、资源），是 render 阶段与导出阶段之间的桥接点。资料来源：[packages/export/src/context.ts:1-60]()
- **数据契约层**：`deck-types.ts` 定义 deck、slide、layout 等核心类型，是 export 与 core 之间共享的 TypeScript 契约源。资料来源：[packages/export/src/deck-types.ts:1-60]()
- **资源导入层**：`import/` 子目录负责从外部源（图片、字体文件、片段资源）中抽取并落地到导出产物中，其中 `index.ts` 暴露统一入口，`extract.ts` 负责具体的抽取与转码。资料来源：[packages/export/src/import/index.ts:1-40]()、[packages/export/src/import/extract.ts:1-60]()

## 数据流与导出工作流

整个导出流程可以概括为"解析 → 上下文构建 → 资源抽取 → 渲染/导出"。`deck-types.ts` 提供的类型契约是入口；`import/extract.ts` 根据 deck 引用把外部素材抓取到本地；`color.ts` 与 `font.ts` 把样式信息归一化；`context.ts` 把上述结果聚合成一个完整的导出上下文，交给 `@presentation-md/render` 完成最终输出。

```mermaid
flowchart LR
    A[Markdown 草稿] --> B[core 解析为 deck-types]
    B --> C[import/extract.ts 抽取资源]
    C --> D[color.ts / font.ts 样式归一化]
    D --> E[context.ts 构建导出上下文]
    E --> F[render 渲染为 HTML/PNG/PDF]
```

在 1.1.0 版本中，`preview_themes` 模式允许同一 deck 在 `context.ts` 内部派生多套主题上下文，从而一次解析产出多版预览，进一步放大了 `src` 中各子模块的可组合性。资料来源：[packages/export/src/context.ts:20-60]()、[packages/export/src/import/extract.ts:1-40]()

## 与社区关注点的关联

社区近期两个高曝光问题都与 `src` 模块的边界相关。Issue #8 指出 `skills/deck-design-judge/scripts/render_slides.sh:45` 在逐页截图时附加的 URL fragment 不会移动视口，根因在于下游 deck 未实现 `#__shot=N` 哈希监听——这反过来要求 export 侧在 `context.ts` 中暴露更稳定的逐页定位能力。Issue #9 则反映 README 中宣传的 `deck-design-judge` skill 尚未在 `npx @presentation-skill-pack/install claude-code` 流水线中正确打包，提示 `src` 中由 export 包产出的资源清单需要与 skill 包清单对齐。资料来源：[skills/deck-design-judge/scripts/render_slides.sh:45]()、[README.md:46]()

## 使用建议

扩展 export 包功能时，优先复用 `deck-types.ts` 中的已有类型，避免在 `color.ts`、`font.ts` 中重复定义样式枚举；新增导出资源类型应在 `import/extract.ts` 中扩展抽取逻辑，并在 `import/index.ts` 中注册入口；任何影响多主题渲染的改动都应通过 `context.ts` 暴露配置项，以保证与 `@presentation-md/render@1.1.0` 的 `preview_themes` 模式兼容。资料来源：[packages/export/src/deck-types.ts:1-60]()、[packages/export/src/import/index.ts:1-40]()

---

<a id='page-packages-create-theme-src'></a>

## Src 模块

### 相关页面

相关主题：[Src 模块](#page-packages-export-src)

<details>
<summary>相关源码文件</summary>

以下源码文件用于生成本页说明：

- [packages/create-theme/src/extract-brand.ts](https://github.com/isatimur/presentation-md/blob/main/packages/create-theme/src/extract-brand.ts)
- [packages/create-theme/src/fetch-css.ts](https://github.com/isatimur/presentation-md/blob/main/packages/create-theme/src/fetch-css.ts)
- [packages/create-theme/src/index.ts](https://github.com/isatimur/presentation-md/blob/main/packages/create-theme/src/index.ts)
- [packages/create-theme/src/name-from-url.ts](https://github.com/isatimur/presentation-md/blob/main/packages/create-theme/src/name-from-url.ts)
- [packages/create-theme/src/playwright-fallback.ts](https://github.com/isatimur/presentation-md/blob/main/packages/create-theme/src/playwright-fallback.ts)
- [packages/create-theme/src/template/README.md.mustache](https://github.com/isatimur/presentation-md/blob/main/packages/create-theme/src/template/README.md.mustache)
- [skills/deck-design-judge/scripts/render_slides.sh](https://github.com/isatimur/presentation-md/blob/main/skills/deck-design-judge/scripts/render_slides.sh)

</details>

# Src 模块

## 模块定位与职责

`packages/create-theme/src` 是 presentation-md 项目中负责"主题创建"能力包的源代码目录，其核心目标是把任意一个外部网站的视觉风格（颜色、字体、CSS 变量等）抽取出来，并落地为 presentation-md 可直接消费的本地主题资产。该模块既被 `@presentation-md/core`、`@presentation-md/render` 等运行时包在编辑器中按需调用，也支持通过 CLI 一键式地把第三方站点风格嫁接到本地 slide deck。资料来源：[packages/create-theme/src/index.ts]()。

模块的边界非常清晰：上游只接收"一个 URL + 若干可选开关"，下游只产出"一份主题资源目录（含 CSS、README、命名等）"，中间过程对外部依赖（HTTP、抓取器、Playwright）做了严格隔离，方便在沙箱或离线环境下替换实现。

## 核心子模块拆分

### 品牌抽取（extract-brand.ts）

`extract-brand.ts` 是品牌识别的入口逻辑，负责把原始 HTML / DOM 信号收敛为结构化的"品牌画像"（主色、辅色、强调色、字体族等）。该文件通常会调用 `fetch-css.ts` 拉取的样式表，并结合 DOM 内联样式进行二次校验，最终输出一个可序列化的主题种子对象。资料来源：[packages/create-theme/src/extract-brand.ts]()。

### CSS 抓取（fetch-css.ts）

`fetch-css.ts` 负责按 URL 列表抓取外部样式表，并把 `@import`、`url(...)` 等相对引用展开为绝对路径，便于后续主题资源统一复制到本地。它的失败模式（如 404、超时、CORS）会触发回退策略，由 `playwright-fallback.ts` 接管。资料来源：[packages/create-theme/src/fetch-css.ts]()。

### 命名生成（name-from-url.ts）

`name-from-url.ts` 把任意输入 URL 转换为稳定的、本地安全的主题目录名（例如 `https://acme.com/pricing` → `acme-pricing`）。这一步是幂等的，确保相同输入多次执行不会产生冲突目录，也方便主题市场做去重。资料来源：[packages/create-theme/src/name-from-url.ts]()。

### 浏览器兜底（playwright-fallback.ts）

当 `fetch-css.ts` 因为 SPA、SSR、JS 渲染等场景拿不到真实样式时，`playwright-fallback.ts` 会启动一个无头 Chromium 实例，加载完整页面后再读取最终计算样式与 `getComputedStyle` 结果。这种 fallback 模式在社区中有过相关讨论（见下文"已知问题"）。资料来源：[packages/create-theme/src/playwright-fallback.ts]()。

### 入口与编排（index.ts）

`index.ts` 是对外 CLI / API 的统一入口，负责按顺序串联：URL 规范化 → `name-from-url` → 并发 `fetch-css` → 必要时 `playwright-fallback` → `extract-brand` → 写入 `template/`。资料来源：[packages/create-theme/src/index.ts]()。

## 数据流与产物模板

```mermaid
flowchart LR
  A[URL 输入] --> B[name-from-url.ts<br/>生成目录名]
  B --> C[fetch-css.ts<br/>抓取样式表]
  C -- 失败 --> D[playwright-fallback.ts<br/>无头浏览器兜底]
  C -- 成功 --> E[extract-brand.ts<br/>抽取品牌变量]
  D --> E
  E --> F[template/README.md.mustache<br/>生成文档]
  E --> G[写入本地主题资产]
```

`template/README.md.mustache` 是主题目录下随产物一起交付的说明文档模板，使用 Mustache 语法填充主题名、主色、用法示例等字段，让用户拿到主题后能立即在 slide 中引用。资料来源：[packages/create-theme/src/template/README.md.mustache]()。

## 已知问题与社区讨论

社区中两个高关注度的问题都与 src 模块周边的脚本与安装管线有关：

- **#9 打包链路缺失**：`@presentation-skill-pack/install claude-code` 一键安装命令目前只解析 `@presentation-skill-pack/core/skill`，尚未把 `deck-design-judge` 这类由 `create-theme` 衍生的技能纳入 `files` 列表，导致 README 文档承诺的能力与实际安装结果不一致。资料来源：[skills/deck-design-judge/scripts/render_slides.sh]()（相关 issue #9）。
- **#8 截图视口不滚动**：`render_slides.sh` 在为每一页生成截图时，会向 URL 追加 `#__shot=N` 片段，但当 deck 未实现对应 hash 监听器时，headless Chrome 视口并不会滚动到目标 fragment，导致截图错位或重复。该问题与 src 模块的渲染闭环相关，需要在 render 包侧统一处理。资料来源：[skills/deck-design-judge/scripts/render_slides.sh:45]()（相关 issue #8）。

## 小结

src 模块是 presentation-md 主题生产链路的"工厂车间"：通过 `name-from-url → fetch-css → playwright-fallback → extract-brand` 四段流水线，把任意站点风格稳定、可复现地落地为本地主题，并配合 Mustache 模板产出可直接交付的文档与资产。后续若要解决 #9 的安装覆盖与 #8 的截图视口问题，需要在 `@presentation-md/render` 与技能包之间建立显式的契约。资料来源：[packages/create-theme/src/index.ts]()、[packages/create-theme/src/extract-brand.ts]()、[packages/create-theme/src/fetch-css.ts]()、[packages/create-theme/src/name-from-url.ts]()、[packages/create-theme/src/playwright-fallback.ts]()。

---

<!-- evidence_pipeline_checked: true -->
<!-- evidence_injected: true -->

---

## Doramagic 踩坑日志

项目：isatimur/presentation-md

摘要：发现 9 个潜在踩坑项，其中 0 个为 high/blocking；最高优先级：安装坑 - 来源证据：Wire deck-design-judge into the npx install pipeline。

## 1. 安装坑 · 来源证据：Wire deck-design-judge into the npx install pipeline

- 严重度：medium
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个安装相关的待验证问题：Wire deck-design-judge into the npx install pipeline
- 对用户的影响：可能增加新用户试用和生产接入成本。
- 证据：community_evidence:github | https://github.com/isatimur/presentation-md/issues/9 | 来源讨论提到 npm 相关条件，需在安装/试用前复核。

## 2. 配置坑 · 可能修改宿主 AI 配置

- 严重度：medium
- 证据强度：source_linked
- 发现：项目面向 Claude/Cursor/Codex/Gemini/OpenCode 等宿主，或安装命令涉及用户配置目录。
- 对用户的影响：安装可能改变本机 AI 工具行为，用户需要知道写入位置和回滚方法。
- 证据：capability.host_targets | https://github.com/isatimur/presentation-md | host_targets=mcp_host, claude_code, claude, cursor, gemini_cli, chatgpt

## 3. 能力坑 · 能力判断依赖假设

- 严重度：medium
- 证据强度：source_linked
- 发现：README/documentation is current enough for a first validation pass.
- 对用户的影响：假设不成立时，用户拿不到承诺的能力。
- 证据：capability.assumptions | https://github.com/isatimur/presentation-md | README/documentation is current enough for a first validation pass.

## 4. 维护坑 · 维护活跃度未知

- 严重度：medium
- 证据强度：source_linked
- 发现：未记录 last_activity_observed。
- 对用户的影响：新项目、停更项目和活跃项目会被混在一起，推荐信任度下降。
- 证据：evidence.maintainer_signals | https://github.com/isatimur/presentation-md | last_activity_observed missing

- 严重度：medium
- 证据强度：source_linked
- 发现：no_demo
- 证据：downstream_validation.risk_items | https://github.com/isatimur/presentation-md | no_demo; severity=medium

## 6. 安全/权限坑 · 存在评分风险

- 严重度：medium
- 证据强度：source_linked
- 发现：no_demo
- 对用户的影响：风险会影响是否适合普通用户安装。
- 证据：risks.scoring_risks | https://github.com/isatimur/presentation-md | no_demo; severity=medium

## 7. 安全/权限坑 · 来源证据：render_slides.sh: per-slide screenshot fragment-scroll doesn't move the viewport

- 严重度：medium
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：render_slides.sh: per-slide screenshot fragment-scroll doesn't move the viewport
- 对用户的影响：可能影响授权、密钥配置或安全边界。
- 证据：community_evidence:github | https://github.com/isatimur/presentation-md/issues/8 | 来源类型 github_issue 暴露的待验证使用条件。

## 8. 维护坑 · issue/PR 响应质量未知

- 严重度：low
- 证据强度：source_linked
- 发现：issue_or_pr_quality=unknown。
- 对用户的影响：用户无法判断遇到问题后是否有人维护。
- 证据：evidence.maintainer_signals | https://github.com/isatimur/presentation-md | issue_or_pr_quality=unknown

## 9. 维护坑 · 发布节奏不明确

- 严重度：low
- 证据强度：source_linked
- 发现：release_recency=unknown。
- 对用户的影响：安装命令和文档可能落后于代码，用户踩坑概率升高。
- 证据：evidence.maintainer_signals | https://github.com/isatimur/presentation-md | release_recency=unknown

<!-- canonical_name: isatimur/presentation-md; human_manual_source: deepwiki_human_wiki -->
