Compare commits
2 Commits
5cc347589b
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| d3fd6de965 | |||
| 277c14d2e8 |
14
SKILL.md
14
SKILL.md
@@ -2,27 +2,19 @@
|
||||
name: lyxy-document-reader
|
||||
description: 统一文档解析工具 - 将 DOC、DOCX、XLS、XLSX、PPT、PPTX、PDF、HTML/URL 转换为 Markdown。支持全文输出、字数统计、行数统计、标题提取、章节提取、正则搜索。当用户要求"读取/解析/打开文档"、上传 .doc/.docx/.xls/.xlsx/.ppt/.pptx/.pdf/.html 文件、或提供 URL 时使用。
|
||||
license: MIT
|
||||
compatibility: Requires Python 3.11+。优先使用 lyxy-runner-python skill,次选 uv run --with,降级到主机 Python。
|
||||
compatibility: Requires Python 3.11+。脚本自启动,自动检测依赖并使用 uv 执行。
|
||||
---
|
||||
|
||||
# 统一文档解析 Skill
|
||||
|
||||
## 🔴 重要:执行路径优先级(必须遵守)
|
||||
## 推荐用法
|
||||
|
||||
### 执行路径选择(按优先级顺序)
|
||||
1. **lyxy-runner-python skill(首选)** - 自动管理依赖
|
||||
2. **python scripts/lyxy_document_reader.py** - 自启动,自动检测依赖
|
||||
3. **uv run --with** - 手动指定依赖
|
||||
4. **主机 Python + pip install** - 手动安装依赖
|
||||
直接运行脚本即可,它会自动检测文件类型、当前平台,并用正确的 uv 命令执行:
|
||||
|
||||
### 推荐用法
|
||||
```bash
|
||||
# 直接运行(自动检测依赖并执行)
|
||||
python scripts/lyxy_document_reader.py <文件路径或URL>
|
||||
```
|
||||
|
||||
脚本会自动检测文件类型、当前平台,并用正确的 uv 命令执行。
|
||||
|
||||
## Purpose
|
||||
|
||||
**支持格式**
|
||||
|
||||
@@ -59,6 +59,27 @@ def get_latest_version(package):
|
||||
return f'error: {e}'
|
||||
```
|
||||
|
||||
## Windows 平台验证结果(2026-03-19)
|
||||
|
||||
### 验证状态:✓ 通过
|
||||
|
||||
**测试结果:**
|
||||
- 所有文件类型的依赖安装测试通过
|
||||
- 功能测试:295/303 测试通过
|
||||
- 8 个已知失败(中文字符 PDF 解析、LibreOffice DOCX)
|
||||
|
||||
**验证通过的依赖:**
|
||||
- PDF: docling 2.80.0, unstructured[pdf] 0.21.5, markitdown[pdf] 0.1.5, pypdf 6.9.0, markdownify 1.2.2
|
||||
- DOCX: docling 2.80.0, unstructured[docx] 0.21.5, markitdown[docx] 0.1.5, pypandoc-binary 1.17, python-docx 1.2.0
|
||||
- XLSX: docling 2.80.0, unstructured[xlsx] 0.21.5, markitdown[xlsx] 0.1.5, pandas 3.0.1, openpyxl 3.1.5
|
||||
- PPTX: docling 2.80.0, unstructured[pptx] 0.21.5, markitdown[pptx] 0.1.5, python-pptx 1.0.2
|
||||
- HTML: trafilatura 2.0.0, domscribe 0.1.3, markitdown 0.1.5, html2text 2025.4.15, beautifulsoup4 4.14.3
|
||||
- XLS: unstructured[xlsx] 0.21.5, markitdown[xls] 0.1.5, pandas 3.0.1, xlrd 2.0.2, olefile 0.47
|
||||
- PPT: docling 2.80.0, unstructured[pptx] 0.21.5, markitdown[pptx] 0.1.5, python-pptx 1.0.2, olefile 0.47
|
||||
|
||||
**已知问题:**
|
||||
1. 中文字符在临时 PDF 生成中显示为 `<!-- image -->`(测试环境字体问题,不影响实际使用)
|
||||
|
||||
## 本次(2026-03-17)的经验总结
|
||||
|
||||
### Darwin-x86_64 平台的已知问题
|
||||
@@ -72,7 +93,7 @@ def get_latest_version(package):
|
||||
4. **pandas 3.0.1 与 fixtures 依赖 pandas<3.0.0 冲突**
|
||||
- 解决:特定平台使用 pandas<3.0.0
|
||||
|
||||
### 本次更新的依赖版本(截止 2026-03-17)
|
||||
### 当前依赖版本列表(截止 2026-03-19,Windows 验证通过)
|
||||
|
||||
| 依赖 | 版本 |
|
||||
|------|------|
|
||||
|
||||
@@ -4,7 +4,6 @@ context: |
|
||||
# 项目规范
|
||||
- 语言: 仅中文(交流/注释/文档/代码)
|
||||
- Python: 当前项目始终用uv运行(脚本/临时命令uv run python -c); 禁用主机python/禁主机安装包
|
||||
- 依赖: pyproject.toml声明,使用uv安装
|
||||
- 主机环境: 禁止污染配置,需操作须请求用户
|
||||
- 开发文档: README.md,每次迭代按需更新开发文档; 禁emoji/特殊字符
|
||||
- skill文档: SKILL.md,每次迭代按需更新skill文档
|
||||
@@ -15,12 +14,11 @@ context: |
|
||||
- Git提交: 仅中文; 格式为"类型: 简短描述",类型可选: feat(新功能)/fix(修复)/refactor(重构)/docs(文档)/style(格式)/test(测试)/chore(构建/工具); 多行描述空行后加详细说明
|
||||
- 提问: 对用户的提问优先使用提问工具而不是文字选项
|
||||
# 项目概述
|
||||
- 目标:统一文档解析工具,将DOCX/XLSX/PPTX/PDF/HTML/URL 转换为 Markdown,面向AI skill使用
|
||||
- 目标:统一文档解析工具,将各种格式的文档转换为 Markdown,面向AI skill使用
|
||||
# 项目目录结构
|
||||
- scripts/: 核心代码目录
|
||||
- tests/: 测试目录
|
||||
- openspec/: 规范文档目录
|
||||
- temp/: 开发临时文件目录
|
||||
- pyproject.toml: 项目配置
|
||||
- README.md: 项目开发文档
|
||||
- SKILL.md: skill文档
|
||||
|
||||
@@ -43,13 +43,13 @@ config.py 中的 DEPENDENCIES 配置使用字典结构,保持简单直接以
|
||||
- **AND** Darwin-x86_64 配置中不包含 unstructured 相关依赖
|
||||
|
||||
### Requirement: 依赖版本管理
|
||||
所有依赖必须指定版本号;default 平台使用截止 2026-03-17 的最新版本作为标杆;default 配置在当前平台测试失败时,在特定平台配置中探索可运行的最新版本;default 配置的 python 版本必须为 None(使用默认 python 版本),仅在特定平台配置中可指定 python 版本。
|
||||
所有依赖必须指定版本号;default 平台使用最新版本作为标杆;default 配置在当前平台测试失败时,在特定平台配置中探索可运行的最新版本;default 配置的 python 版本必须为 None(使用默认 python 版本),仅在特定平台配置中可指定 python 版本;当前版本截止时间为 2026-03-18。
|
||||
|
||||
#### Scenario: default 平台使用最新版本且 python 为 None
|
||||
- **WHEN** 查看 config.DEPENDENCIES 中 default 配置
|
||||
- **THEN** python 版本为 None
|
||||
- **AND** 所有依赖都有明确的版本号
|
||||
- **AND** 使用截止 2026-03-17 的最新版本
|
||||
- **AND** 使用截止 2026-03-18 的最新版本
|
||||
|
||||
#### Scenario: 特定平台在 default 失败时探索可运行版本
|
||||
- **WHEN** default 配置在当前平台测试失败
|
||||
@@ -86,3 +86,24 @@ config.py 中的 DEPENDENCIES 配置使用字典结构,保持简单直接以
|
||||
#### Scenario: gitignore 配置(可选)
|
||||
- **WHEN** 用户查看项目的 `.gitignore` 文件
|
||||
- **THEN** 系统可以包含 `uv.lock` 条目以确保不会误提交(如果用户重新创建了 lock 文件)
|
||||
|
||||
### Requirement: 当前平台依赖验证
|
||||
系统必须在当前平台上验证 `config.DEPENDENCIES` 的 default 配置是否可以正常工作。
|
||||
|
||||
#### Scenario: 验证 default 配置可用性
|
||||
- **WHEN** 在当前平台运行测试
|
||||
- **THEN** 必须验证 default 配置的所有依赖都可以正确安装
|
||||
- **AND** 必须验证所有文档类型的解析功能正常工作
|
||||
|
||||
#### Scenario: 记录验证结果
|
||||
- **WHEN** 完成当前平台的依赖验证
|
||||
- **THEN** 必须在 `docs/upgrade-deps-prompt.md` 中记录验证结果
|
||||
- **AND** 必须记录当前平台信息和测试通过日期
|
||||
|
||||
### Requirement: 依赖版本文档化
|
||||
系统必须在 `docs/upgrade-deps-prompt.md` 中记录当前所有依赖的版本号和更新时间戳。
|
||||
|
||||
#### Scenario: 版本记录包含所有依赖
|
||||
- **WHEN** 查看 `docs/upgrade-deps-prompt.md`
|
||||
- **THEN** 文档必须包含所有文件类型(pdf/docx/xlsx/pptx/html/xls/ppt/doc)的所有依赖版本号
|
||||
- **AND** 必须标注版本更新时间戳
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: SKILL.md 遵循 Claude Skill 构建指南
|
||||
SKILL.md 文档必须遵循 Claude 官方 Skill 构建指南的最佳实践,包括渐进式披露的三级系统、清晰的触发词和完整的章节结构。SKILL.md 必须将 --advice 参数作为首选方案放在最前面强调。
|
||||
SKILL.md 文档必须遵循 Claude 官方 Skill 构建指南的最佳实践,包括渐进式披露的三级系统、清晰的触发词和完整的章节结构。
|
||||
|
||||
#### Scenario: Claude 正确加载 skill
|
||||
- **WHEN** 用户询问与文档解析相关的问题
|
||||
@@ -11,61 +11,38 @@ SKILL.md 文档必须遵循 Claude 官方 Skill 构建指南的最佳实践,
|
||||
- **WHEN** skill 被加载
|
||||
- **THEN** AI 应能从 Purpose 和 When to Use 章节了解何时使用此 skill
|
||||
|
||||
#### Scenario: --advice 放在最前面
|
||||
- **WHEN** AI 查看 SKILL.md
|
||||
- **THEN** Purpose 章节第一部分就是 --advice 的使用说明
|
||||
|
||||
### Requirement: YAML frontmatter 包含完整元数据
|
||||
YAML frontmatter 必须包含 name、description(带触发词)、license、metadata 和 compatibility 字段。
|
||||
YAML frontmatter 必须包含 name、description(带触发词)、license 和 compatibility 字段。
|
||||
|
||||
#### Scenario: description 包含触发词
|
||||
- **WHEN** 查看 YAML frontmatter
|
||||
- **THEN** description 应包含功能说明、触发条件和用户可能说的具体任务
|
||||
|
||||
#### Scenario: compatibility 说明依赖和执行路径优先级
|
||||
#### Scenario: compatibility 说明依赖和 Python 版本
|
||||
- **WHEN** 查看 YAML frontmatter
|
||||
- **THEN** compatibility 应说明 Python 版本要求和三种执行路径的优先级(lyxy-runner-python skill → uv → 主机 Python)
|
||||
- **THEN** compatibility 应说明 Python 版本要求和脚本自启动特性
|
||||
|
||||
### Requirement: 三路径执行策略
|
||||
skill 文档必须说明三种执行路径,优先级为:1. lyxy-runner-python skill,2. uv run --with,3. 主机 Python 环境。
|
||||
### Requirement: 推荐用法
|
||||
SKILL.md 必须说明直接运行 `python scripts/lyxy_document_reader.py` 即可,脚本会自动检测文件类型、当前平台,并用正确的 uv 命令执行。
|
||||
|
||||
#### Scenario: lyxy-runner-python 可用
|
||||
- **WHEN** lyxy-runner-python skill 已安装
|
||||
- **THEN** 文档说明使用 lyxy-runner-python 自动管理依赖
|
||||
#### Scenario: 直接运行脚本
|
||||
- **WHEN** AI 需要执行文档解析
|
||||
- **THEN** 运行 `python scripts/lyxy_document_reader.py <文件路径或URL>`
|
||||
|
||||
#### Scenario: 使用 uv run --with
|
||||
- **WHEN** lyxy-runner-python skill 不可用
|
||||
- **THEN** 文档说明使用 --advice 获取 uv run --with 命令
|
||||
|
||||
#### Scenario: 降级到主机 Python
|
||||
- **WHEN** uv 也不可用
|
||||
- **THEN** 文档说明如何手动安装具体依赖包并使用主机 Python
|
||||
|
||||
### Requirement: --advice 是首选方案
|
||||
SKILL.md 必须将 --advice 参数作为获取准确命令的首选方案,移除冗余的手动依赖命令示例块(仅保留简洁参考)。
|
||||
|
||||
#### Scenario: --advice 是第一步
|
||||
- **WHEN** AI 阅读 SKILL.md
|
||||
- **THEN** 首先看到 --advice 的使用说明
|
||||
|
||||
#### Scenario: 依赖命令以 --advice 输出为准
|
||||
- **WHEN** AI 需要了解依赖命令
|
||||
- **THEN** 文档引导 AI 使用 --advice 获取,而非阅读文档中的示例
|
||||
|
||||
#### Scenario: 保留简洁参数示例
|
||||
- **WHEN** AI 需要了解参数用法
|
||||
- **THEN** 文档提供简洁的参数使用示例(不含大段依赖命令)
|
||||
#### Scenario: 脚本自动检测
|
||||
- **WHEN** 运行脚本
|
||||
- **THEN** 脚本自动检测文件类型、当前平台,并用正确的 uv 命令执行
|
||||
|
||||
### Requirement: 文档包含关键章节
|
||||
SKILL.md 必须包含 Purpose、When to Use、Quick Reference、Workflow 等章节,遵循渐进式披露原则。
|
||||
SKILL.md 必须包含 Purpose、When to Use、Quick Reference、参数使用示例等章节,遵循渐进式披露原则。
|
||||
|
||||
#### Scenario: 快速查找用法
|
||||
- **WHEN** AI 需要了解如何使用此 skill
|
||||
- **THEN** Quick Reference 表格提供命令参数概览
|
||||
|
||||
#### Scenario: 了解执行流程
|
||||
- **WHEN** AI 需要理解解析流程
|
||||
- **THEN** Workflow 章节说明 3 步工作流程(获取建议 → 选择执行方式 → 添加参数)
|
||||
#### Scenario: 了解参数用法
|
||||
- **WHEN** AI 需要了解参数用法
|
||||
- **THEN** 参数使用示例章节提供简洁的命令示例
|
||||
|
||||
### Requirement: 触发词覆盖多种表达方式
|
||||
description 和 When to Use 章节必须包含中文和英文的触发词,以及文件扩展名。
|
||||
@@ -83,7 +60,7 @@ description 和 When to Use 章节必须包含中文和英文的触发词,以
|
||||
|
||||
#### Scenario: 依赖缺失错误
|
||||
- **WHEN** 出现 ModuleNotFoundError
|
||||
- **THEN** 错误处理表格说明需要使用 --advice 获取正确的依赖命令
|
||||
- **THEN** 错误处理表格说明脚本会自动检测并安装依赖
|
||||
|
||||
#### Scenario: 文件类型不支持
|
||||
- **WHEN** 出现"不支持的文件类型"错误
|
||||
|
||||
@@ -75,3 +75,29 @@
|
||||
#### Scenario: 所有格式都包含 chardet
|
||||
- **WHEN** 用户查阅任何格式的依赖命令
|
||||
- **THEN** 命令必须包含 `--with chardet`
|
||||
|
||||
### Requirement: 当前平台命令验证
|
||||
系统必须验证当前平台的 `uv run --with` 命令可以正确执行。
|
||||
|
||||
#### Scenario: 验证 default 平台命令
|
||||
- **WHEN** 在当前平台执行 `uv run --with` 命令
|
||||
- **THEN** 必须可以成功安装所有依赖
|
||||
- **AND** 必须可以成功运行文档解析脚本
|
||||
|
||||
#### Scenario: 记录当前平台命令
|
||||
- **WHEN** 更新 SKILL.md 或 README.md
|
||||
- **THEN** 必须包含当前平台的命令示例
|
||||
- **AND** 命令中的依赖版本必须与 `config.DEPENDENCIES` 一致
|
||||
|
||||
### Requirement: 版本一致性
|
||||
SKILL.md 和 README.md 中的依赖版本必须与 `config.DEPENDENCIES` 中指定的版本一致。
|
||||
|
||||
#### Scenario: 文档中的版本与配置一致
|
||||
- **WHEN** 查看 SKILL.md 或 README.md 中的 `uv run --with` 命令示例
|
||||
- **THEN** 命令中指定的依赖版本必须与 `config.DEPENDENCIES` 中 default 配置的版本一致
|
||||
- **AND** 如果配置中指定了特定版本,文档中必须使用相同版本
|
||||
|
||||
#### Scenario: 更新依赖时同步更新文档
|
||||
- **WHEN** 更新 `config.DEPENDENCIES` 中的依赖版本
|
||||
- **THEN** 必须同步更新 SKILL.md 和 README.md 中的相关命令示例
|
||||
- **AND** 必须更新 `docs/upgrade-deps-prompt.md` 中的版本记录
|
||||
|
||||
Reference in New Issue
Block a user