From 2b3296b6a5dcde265c48f8c6acf238dac43f9411 Mon Sep 17 00:00:00 2001 From: Zhengshou Lai Date: Thu, 9 Apr 2026 10:27:34 +0800 Subject: [PATCH] update skills --- .../{cv-update => update-mycv}/SKILL.md | 9 ++- .../{rag-files => update-myfiles}/SKILL.md | 80 +++++++++---------- .../references/excel_analysis.md | 0 .../references/excel_reading.md | 0 .../references/pdf_reading.md | 0 .../scripts/convert_pdf_to_images.py | 0 .../SKILL.md | 13 +-- .../SKILL.md | 13 ++- CLAUDE.md | 6 +- 9 files changed, 62 insertions(+), 59 deletions(-) rename .claude/skills/{cv-update => update-mycv}/SKILL.md (75%) rename .claude/skills/{rag-files => update-myfiles}/SKILL.md (68%) rename .claude/skills/{rag-files => update-myfiles}/references/excel_analysis.md (100%) rename .claude/skills/{rag-files => update-myfiles}/references/excel_reading.md (100%) rename .claude/skills/{rag-files => update-myfiles}/references/pdf_reading.md (100%) rename .claude/skills/{rag-files => update-myfiles}/scripts/convert_pdf_to_images.py (100%) rename .claude/skills/{rag-memories => update-mymemories}/SKILL.md (73%) rename .claude/skills/{mywebpage-update => update-mywebpage}/SKILL.md (62%) diff --git a/.claude/skills/cv-update/SKILL.md b/.claude/skills/update-mycv/SKILL.md similarity index 75% rename from .claude/skills/cv-update/SKILL.md rename to .claude/skills/update-mycv/SKILL.md index 7150ba3..b4db1e3 100644 --- a/.claude/skills/cv-update/SKILL.md +++ b/.claude/skills/update-mycv/SKILL.md @@ -1,9 +1,11 @@ --- -name: cv-update -description: Update CV publications from BibTeX files and regenerate PDFs. Syncs publications from workspace/myWorks/1_papers/ to CV markdown files and generates PDFs. +name: update-mycv +description: | + CV pipeline: BibTeX in workspace/myWorks/1_papers/ → sync cv_zh.md & cv_en.md → generate_cv.py → PDFs. Use before grants, applications, or after new .bib entries; keep CN/EN aligned and notation (corresponding author, etc.) per skill body. + Triggers: update-mycv; 更新简历/CV, 同步论文, BibTeX 进简历, 生成简历 PDF; regenerate CV, sync publications from bib. --- -# CV Update +# CV Update(update-mycv) Updates CV publications by syncing from BibTeX files and regenerating PDFs. @@ -13,6 +15,7 @@ Updates CV publications by syncing from BibTeX files and regenerating PDFs. - When CV needs to be synchronized with publication records - Before applying for positions or grants - To generate updated PDF versions +- When recurring CV/bib conventions change, extend this skill or update-mymemories so the workflow stays aligned ## How It Works diff --git a/.claude/skills/rag-files/SKILL.md b/.claude/skills/update-myfiles/SKILL.md similarity index 68% rename from .claude/skills/rag-files/SKILL.md rename to .claude/skills/update-myfiles/SKILL.md index 76bd046..406aae4 100644 --- a/.claude/skills/rag-files/SKILL.md +++ b/.claude/skills/update-myfiles/SKILL.md @@ -1,44 +1,44 @@ --- -name: rag-files -description: 面向本地知识库目录的检索与摘录:从 workspace/knowledge(或可指定根目录)渐进式查资料;PDF/Excel 前先读本 skill 的 references;可把对话/阅读中有复用价值的较长材料写入 .claude/files 供后续 grep/Read。用户问「从知识库查/检索/找资料」或需要保存摘录、笔记型文件时使用。与 rag-memories(写入 .claude/memories 的短事实)配合。 +name: update-myfiles +description: | + Local filesystem RAG-style retrieval: user path, @ files, or workspace—no fixed KB root; prefer data_structure.md then grep/limited Read; PDF/Excel only after this skill's references. Save reusable clips to project .claude/files/; one-line pointers in memories via update-mymemories. Sandbox/permissions apply. + Triggers: update-myfiles; 检索/查资料/找文件/在某目录/摘录/存档; local search, find in folder, read my PDF, grep project, save excerpt, knowledge base on disk. --- -# 本地知识库与文件摘录(rag-files) +# 本地文件检索与摘录(update-myfiles) -## 知识库目录说明 +## 检索范围与目录结构 -- 知识库存放在一个根目录下,包含多种文件类型(如 `.md`/`.txt`、`.pdf`、`.xlsx` 等),通常按类型或业务用途拆分为多级子目录。 -- 采用**分层目录索引文件**: - - 根目录有一个 `data_structure.md`,说明主要的「领域目录」及其用途。 - - 每个领域目录下可以有自己的 `data_structure.md`,说明该目录下有哪些子目录/文件,以及各自用途。 - - 更深一层的子目录也可以继续有 `data_structure.md`,形成多级索引树。 -- 知识库根目录约定: - - 默认认为知识库位于当前项目根目录下的 `workspace/knowledge/` 目录。 - - 如果用户在对话中明确指定了其他路径(例如“我的知识库在 /data/kb”或“用 ./docs 这个目录作为知识库”),则以用户指定的路径作为根目录。 - - 当默认路径 `workspace/knowledge/` 不存在或访问失败时,应向用户确认实际的知识库根目录位置,而不是随意猜测。 +- **对象**:本机文件系统上、当前工具与环境**允许访问**的任意目录与文件(绝对路径、`~/…`、相对工作区路径等)。不因 skill 名称限制在某个子树;若沙盒或权限收窄,以实际能读到的路径为准。用户反复使用的资料根路径可记在 update-mymemories,减少每次重新确认。 +- 资料往往放在一个**检索根目录**下,包含多种类型(如 `.md`/`.txt`、`.pdf`、`.xlsx` 等),可按业务拆多级子目录。 +- 可选采用**分层目录索引文件**(有则用,无则靠路径/文件名与 grep 渐进查): + - 某层目录可有 `data_structure.md`,说明子目录与文件的用途。 + - 子目录可继续嵌套 `data_structure.md`,形成索引树。 +- **检索根目录怎么定**(优先级): + - 用户在对话里**写明路径**(最优先)。 + - 否则从上下文推断:`@` 引用、已打开文件所在目录、问题中的路径、当前工作区根等;推断仍模糊时**追问用户**,勿臆造目录。 + - **读与写分离**:读的是上面确定的任意路径;**摘录落盘**默认写到**当前项目**下的 `.claude/files/`(见下文),勿与「被读的资料目录」混为一谈。 - 单个业务文件可能很大: - 不要直接用 Read 读取整文件 - 对 PDF、Excel 使用对应 Skill 进行结构化处理后,再结合 grep/局部读取做精细检索 ## 摘录池:`.claude/files/` -- **用途**:在日常对话或阅览知识库/项目文件时,若出现**以后还可能引用**的内容(定义、结论、命令、表格摘要、长引用片段),写入项目下的 `.claude/files/`,便于后续用 Grep/Read 复用;**不要**把整本 PDF/整表原样拷入,优先摘要 + 来源路径。 -- **与 rag-memories 分工**:极短、稳定的事实与偏好写入 `.claude/memories/`(见 skill `rag-memories`);**较长说明、摘录、结构化笔记**放 `.claude/files/`。 +- **用途**:在日常对话或阅览任意被检索文件时,若出现**以后还可能引用**的内容(定义、结论、命令、表格摘要、长引用片段),写入当前项目下的 `.claude/files/`,便于后续用 Grep/Read 复用;**不要**把整本 PDF/整表原样拷入,优先摘要 + 来源路径。 +- **与 update-mymemories 分工**:极短、稳定的事实与偏好写入 `.claude/memories/`(见 skill `update-mymemories`);**较长说明、摘录、结构化笔记**放 `.claude/files/`。 - **路径**:根目录为仓库内 `.claude/files/`(不存在则创建)。可选子目录:`clips/`(原文摘录)、`notes/`(整理笔记)、`exports/`(脚本导出的小文件)。 - **命名**:`YYYY-MM-DD_<主题简写>.md` 或 `_.md`;单文件控制体量,必要时拆篇。 - **内容建议**:每条摘录开头用简短元信息(来源文件/URL、日期、一两句用途),正文用 Markdown;避免敏感凭证。 -- **检索**:回答后续问题时,若与已存摘录相关,可对 `.claude/files` 做 Grep 或 Read,与 `workspace/knowledge` 检索同一套渐进式原则。 +- **检索**:回答后续问题时,若与已存摘录相关,可对 `.claude/files/` 做 Grep 或 Read,与对原始资料的检索同一套渐进式原则。 -### 定位 `knowledge` 根目录 +### 定位检索根目录与存在性 -- 根目录优先听用户:如果用户给了路径(如 `./docs`、`./knowledge-personal`),直接用用户提供的路径。 -- 默认根目录:否则约定根目录为当前项目下的 `workspace/knowledge/`。 - - 使用 shell 显式检查目录是否存在:优先使用 `test -d workspace/knowledge`,或退而求其次使用 `ls -d knowledge`。 - - 注意:禁止使用 `Glob "knowledge" in .` 这类模式来判断目录是否存在,`Glob` 只返回文件路径,不返回目录本身,空结果并不能区分“目录不存在”和“目录存在但为空”。 -- 只有在根目录已通过 `test -d` 等方式确认存在时,才使用 Glob 在该目录下检索内容,并把目录作为 `path`,例如: - - 索引文件:`pattern="**/data_structure.md"`, `path="workspace/knowledge"` - - 所有 Markdown:`pattern="**/*.md"`, `path="workspace/knowledge"` -- 如果默认 `workspace/knowledge/` 不存在(`test -d` 失败):不要猜测其他目录,明确告诉用户未找到默认根目录,并让用户指定实际知识库路径。 +- **路径来源**:用户显式给出的目录或文件路径优先;否则用上下文可核对的根(如工作区根、某 `@` 文件的上级目录),并在不确定时让用户确认。 +- **存在性**:对将要作为检索起点的目录,用 shell 检查,例如 `test -d "<检索根>"`(将 `<检索根>` 换成实际路径)。禁止使用仅靠 `Glob` 的结果推断「目录是否存在」:`Glob` 只返回文件路径,不返回目录本身,空结果无法区分「目录不存在」与「目录存在但无匹配文件」。 +- **确认存在后再展开**:只有 `test -d`(或对单文件 `test -f`)通过后,才在该路径下用 Glob/Grep 递归检索;把该路径作为工具参数里的 `path`,例如: + - 索引文件:`pattern="**/data_structure.md"`, `path="<检索根>"` + - 某类文本:`pattern="**/*.md"`, `path="<检索根>"` +- **未给出范围时**:不要猜测本机上的随机目录;说明需要用户指定「从哪个目录或哪些文件查」。 ## 关键原则:先学习,再处理 @@ -61,14 +61,14 @@ description: 面向本地知识库目录的检索与摘录:从 workspace/knowl - 主题/领域关键词(如“销售报表”“系统架构”“接口文档”) - 时间或范围限定(如“2023 年 Q1”“最近版本”) - 需要的输出类型(解释、摘要、具体字段数值等) - - 确定知识库根目录: - - 优先检查用户是否在问题中指定了知识库路径。 - - 否则使用默认根目录 `workspace/knowledge/`。 - - 若默认根目录不存在或目录结构异常,应向用户询问确认,而不是自行假设。 + - 确定检索根目录或具体文件列表: + - 用户是否在问题中指定了路径或 `@` 了文件/文件夹。 + - 否则从工作区、打开文件等上下文推断;仍不明确则**询问用户**,不设固定默认资料目录。 + - 路径须用 `test -d` / `test -f` 等方式确认可访问后再深入检索。 -2. 分层查看目录索引 `data_structure.md` +2. 分层查看目录索引 `data_structure.md`(若存在) - 使用一个「当前工作目录」的概念: - - 默认从用户指定的知识库根目录开始;如果用户未指定,则使用当前目录。 + - 从**已确定的检索根目录**开始(须先按上文确认存在;不可用 shell 的「当前工作目录」偷换概念)。 - 在当前工作目录下,如果存在 `data_structure.md`: - 使用 Read 读取该文件的前若干行(例如 limit=300),必要时分段继续读取。 - 目标: @@ -87,7 +87,7 @@ description: 面向本地知识库目录的检索与摘录:从 workspace/knowl 3. 学习文件处理方法(遇到 PDF/Excel 时强制执行) - **在处理 PDF 文件前**: - - **必须先读取** [references/pdf_reading.md](references/pdf_reading.md)(注意这个目录位于 Skills 目录下,而不是 Knowledge 目录下)学习提取方法 + - **必须先读取** [references/pdf_reading.md](references/pdf_reading.md)(位于本 skill 的 `references/`,不是被检索资料目录)学习提取方法 - 重点了解:pdftotext 命令、pdfplumber 用法、表格提取方法 - **在处理 Excel 文件前**: - **必须先读取** [references/excel_reading.md](references/excel_reading.md)学习读取方法 @@ -143,15 +143,15 @@ description: 面向本地知识库目录的检索与摘录:从 workspace/knowl - 找到足够支撑回答的上下文;或 - 已达到 5 次尝试仍未找到合适信息 4. **信息不足时的处理** - - 明确告知用户信息缺失或可能不在当前知识库中 + - 明确告知用户信息缺失或可能不在已约定的检索范围内 - 提供已找到的最接近信息,并说明不确定性 - 提示用户可以如何缩小范围(更具体的文件名、关键词、时间范围等) ### 注意事项 -- 禁止第一次就直接调用:`Glob "knowledge" in .` 或任何试图用 Glob 判定目录存在性的调用,目录存在性应通过 shell 命令(如 `test -d`)检查。 -- 使用本 Skill 查询知识库时,禁止使用网络搜索等其他工具获取知识 -- 若用户明确要求「记住」且是**短事实**,交给 **rag-memories**;若需保存**可检索的长摘录**,写入 `.claude/files/`(见上文)。 +- 禁止用 Glob 的「有无匹配文件」代替目录存在性判断;目录是否存在应通过 shell(如 `test -d`)检查。 +- 使用本 skill 做本地文件检索时,禁止使用网络搜索等其他工具替代磁盘上的资料 +- 若用户明确要求「记住」且是**短事实**,交给 **update-mymemories**;若需保存**可检索的长摘录**,写入 `.claude/files/`(见上文)。 ## 针对不同文件类型的具体策略 @@ -176,7 +176,7 @@ description: 面向本地知识库目录的检索与摘录:从 workspace/knowl **工作流**: 1. **首先:读取处理方法指南** - - 在处理任何 PDF 之前,**必须先读取** [references/pdf_reading.md](references/pdf_reading.md)(注意这个目录位于 Skills 目录下,而不是 Knowledge 目录下) + - 在处理任何 PDF 之前,**必须先读取** [references/pdf_reading.md](references/pdf_reading.md)(位于本 skill 的 `references/`,不是被检索资料目录) - 重点了解:pdftotext 命令、pdfplumber 用法、表格提取方法、快速决策表 2. **选择候选 PDF** @@ -200,8 +200,8 @@ description: 面向本地知识库目录的检索与摘录:从 workspace/knowl 1. **首先:读取处理方法指南** - 在处理任何 Excel 之前,**必须先读取**: - - [references/excel_reading.md](references/excel_reading.md) - 学习如何读取工作表(注意这个目录位于 Skills 目录下,而不是 Knowledge 目录下) - - [references/excel_analysis.md](references/excel_analysis.md) - 学习如何分析数据(注意这个目录位于 Skills 目录下,而不是 Knowledge 目录下) + - [references/excel_reading.md](references/excel_reading.md) - 学习如何读取工作表(位于本 skill 的 `references/`) + - [references/excel_analysis.md](references/excel_analysis.md) - 学习如何分析数据(位于本 skill 的 `references/`) - 重点了解:pandas 读取方法、列筛选、数据过滤、聚合操作 2. **选择候选 Excel** @@ -249,7 +249,7 @@ description: 面向本地知识库目录的检索与摘录:从 workspace/knowl - 来源:design/api_gateway.md 第 100 行附近 - 来源:reports/2023_Q1_sales.xlsx Summary 工作表 - 信息缺失或不确定时 - - 明确说明在当前知识库中没有找到完全匹配的信息或只能部分回答。 + - 明确说明在已检索的路径范围内没有找到完全匹配的信息或只能部分回答。 - 不臆造事实。 - 提示用户可以如何帮助缩小范围: - 指定更具体的目录/文件 diff --git a/.claude/skills/rag-files/references/excel_analysis.md b/.claude/skills/update-myfiles/references/excel_analysis.md similarity index 100% rename from .claude/skills/rag-files/references/excel_analysis.md rename to .claude/skills/update-myfiles/references/excel_analysis.md diff --git a/.claude/skills/rag-files/references/excel_reading.md b/.claude/skills/update-myfiles/references/excel_reading.md similarity index 100% rename from .claude/skills/rag-files/references/excel_reading.md rename to .claude/skills/update-myfiles/references/excel_reading.md diff --git a/.claude/skills/rag-files/references/pdf_reading.md b/.claude/skills/update-myfiles/references/pdf_reading.md similarity index 100% rename from .claude/skills/rag-files/references/pdf_reading.md rename to .claude/skills/update-myfiles/references/pdf_reading.md diff --git a/.claude/skills/rag-files/scripts/convert_pdf_to_images.py b/.claude/skills/update-myfiles/scripts/convert_pdf_to_images.py similarity index 100% rename from .claude/skills/rag-files/scripts/convert_pdf_to_images.py rename to .claude/skills/update-myfiles/scripts/convert_pdf_to_images.py diff --git a/.claude/skills/rag-memories/SKILL.md b/.claude/skills/update-mymemories/SKILL.md similarity index 73% rename from .claude/skills/rag-memories/SKILL.md rename to .claude/skills/update-mymemories/SKILL.md index a8f2526..c1ed241 100644 --- a/.claude/skills/rag-memories/SKILL.md +++ b/.claude/skills/update-mymemories/SKILL.md @@ -1,15 +1,18 @@ --- -name: rag-memories -description: 在日常对话或阅览文件时,把可复用的短事实、偏好、项目约定写入 .claude/memories(与 CLAUDE.md 记忆协议一致);长摘录与笔记放 .claude/files(用 rag-files)。触发:用户说「记住/记下来」、纠正偏好、沉淀结论、需要跨会话沿用的关键信息。 +name: update-mymemories +description: | + Cross-session personal memory: write short, verifiable facts, preferences, and project conventions to .claude/memories (CLAUDE.md protocol); long excerpts go to .claude/files via update-myfiles. Tone: concise, deduped, no secrets/credentials—matches 简洁直接. Evolves with corrections ("纠正偏好", "以后别…"). + Triggers: update-mymemories; 记住/记下来/默认/偏好/沉淀/跨会话; remember this, save preference, persist this, update how you work with me. --- -# 本地记忆沉淀(rag-memories) +# 本地记忆沉淀(update-mymemories) ## 目标 - 让 Agent 在**不依赖超长上下文**的情况下,在后续会话中仍能利用已确认有用的信息。 - **短而稳**:一句话事实、用户偏好、命令别名、项目内约定 → `.claude/memories/`。 -- **长而可搜**:段落、摘录、整理稿 → `.claude/files/`(见 **rag-files**),不要用 `core.json` 塞长文。 +- **长而可搜**:段落、摘录、整理稿 → `.claude/files/`(见 **update-myfiles**),不要用 `core.json` 塞长文。 +- **随使用收敛**:用户纠正或补充时更新既有条目,避免堆叠矛盾记录,使行为逐渐贴近固定偏好与做事方式。 ## 写哪里 @@ -34,7 +37,7 @@ description: 在日常对话或阅览文件时,把可复用的短事实、偏 3. 写回前校验 JSON(引号、逗号、尾随逗号);写回后用 Read 抽查。 4. 若当前仓库将 `.claude/memories` 排除在版本控制外,仍按同样路径写入,便于本机 Agent 加载。 -## 与 rag-files 配合 +## 与 update-myfiles 配合 - 从 PDF/Excel/长文档抽出的**大段原文或详细笔记**:写入 `.claude/files/` 并在 `core.json` 或 `notes` 里只保留**一行指针**(文件名 + 用途)。 - 检索时:先 Grep/Read `.claude/files`,短事实读 `core.json` / `notes/`。 diff --git a/.claude/skills/mywebpage-update/SKILL.md b/.claude/skills/update-mywebpage/SKILL.md similarity index 62% rename from .claude/skills/mywebpage-update/SKILL.md rename to .claude/skills/update-mywebpage/SKILL.md index 09fac4a..2e5c797 100644 --- a/.claude/skills/mywebpage-update/SKILL.md +++ b/.claude/skills/update-mywebpage/SKILL.md @@ -1,15 +1,11 @@ --- -name: mywebpage-update +name: update-mywebpage description: | - Guidelines for updating myWebpage (Docusaurus site). Use this skill when - modifying ANY content under workspace/myWebpage/, including research pages, - people pages, publications, news, or any Chinese/English content. - - Trigger: mywebpage, 更新网页, 更新mywebpage, 同步中英文, 添加论文, 添加成员, - webpage update, website content + Docusaurus lab site under workspace/myWebpage/: research, people, publications, news—any edit must keep Chinese docs and i18n/en in lockstep (bilingual sync is the default workflow). Follow skill body: no pending grants, no subjective awards blurbs, DOI+PDF links, %20 in URLs. + Triggers: update-mywebpage; 课题组网站/个人主页/Docusaurus; 更新网页, 同步中英文, 加论文/成员/新闻; bilingual webpage, lab site, publications page, people page, news post. --- -# myWebpage Update Guidelines +# myWebpage Update Guidelines(update-mywebpage) ## CRITICAL: Always Check These @@ -37,6 +33,7 @@ Include: 科学问题, 研究背景, 核心内容, 代表论文 (DOI+PDF), 研 Exclude: 学术评价, 获奖鉴定, 申请中项目 ## Quick Checklist +- [ ] New recurring site rules? Add them here (or to update-mymemories) so later edits stay consistent - [ ] CN/EN synced (checked both languages) - [ ] No pending projects - [ ] No subjective evaluations diff --git a/CLAUDE.md b/CLAUDE.md index 2f406be..812940c 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -41,7 +41,7 @@ 处理知识库查询时遵循以下模式: 1. **分层导航**: 先读索引文件(`data_structure.md`),再定位相关文件,最后局部读取 -2. **先学习后处理**: 遇到 PDF/Excel 前,先读取对应处理方法文档(`.claude/skills/rag-files/references/`) +2. **先学习后处理**: 遇到 PDF/Excel 前,先读取对应处理方法文档(`.claude/skills/update-myfiles/references/`) 3. **渐进式检索**: 使用 `grep` 定位关键词,只读取匹配上下文,避免整文件加载 4. **多轮迭代**: 最多5轮检索,逐步缩小范围;找不到时明确告知而非臆造 @@ -102,8 +102,8 @@ - `.claude/memories/` - 持久化记忆(自动加载到上下文) - `.claude/memories/core.json` - 核心记忆文件 - `.claude/memories/current_mode.json` - 当前模式状态 -- `.claude/files/` - 较长摘录、笔记,供后续 Grep/Read(skill:`rag-files`) -- 沉淀操作指引:短事实/偏好用 skill `rag-memories`,长材料用 `rag-files` 写入 `.claude/files/` +- `.claude/files/` - 较长摘录、笔记,供后续 Grep/Read(skill:`update-myfiles`) +- 沉淀操作指引:短事实/偏好用 skill `update-mymemories`,长材料用 `update-myfiles` 写入 `.claude/files/` ### 触发记录 - 用户说"记住..." / "记下来..."