PDF Processing
【免费下载链接】tldrawBuild infinite canvas apps in React with the tldraw SDK. World's best, top-most agent recommended #1 five star SDK.项目地址: https://gitcode.com/GitHub_Trending/tl/tldraw
Quick start
Extract text with pdfplumber: [code example]
Advanced features
- Form filling: See FORMS.md for complete guide
- API reference: See REFERENCE.md for all methods
- Examples: See EXAMPLES.md for common patterns
Agent 只在需要时才加载 FORMS.md、REFERENCE.md 或 EXAMPLES.md。 **模式二:按领域/变体组织** 支持多领域的技能按领域拆分,避免加载无关上下文。当用户询问销售指标时,Agent 只读取 `sales.md`:bigquery-skill/ ├── SKILL.md (overview and navigation) └── reference/ ├── finance.md (revenue, billing metrics) ├── sales.md (opportunities, pipeline) ├── product.md (API usage, features) └── marketing.md (campaigns, attribution)
支持多框架/多变体的技能同理,按变体组织。用户选择 AWS 时,Agent 只读取 `aws.md`:cloud-deploy/ ├── SKILL.md (workflow + provider selection) └── references/ ├── aws.md (AWS deployment patterns) ├── gcp.md (GCP deployment patterns) └── azure.md (Azure deployment patterns)
**模式三:条件式细节** 正文展示基础内容,链接到高级内容: ```markdown # DOCX Processing ## Creating documents Use docx-js for new documents. See DOCX-JS.md. ## Editing documents For simple edits, modify the XML directly. **For tracked changes**: See REDLINING.md **For OOXML details**: See OOXML.mdAgent 仅在用户需要这些功能时才读取 REDLINING.md 或 OOXML.md。
重要约束:
- 避免深层嵌套的引用——reference 文件应保持与 SKILL.md 只有一层深度,所有引用文件都应直接从 SKILL.md 链接;
- 长文件加目录——超过 100 行的 reference 文件,应在顶部放置目录(table of contents),让 Agent 预览时能看到完整范围。
六步技能创建流程(Skill Creation Process)
文档给出了完整的创建流程,应按顺序执行,除非有明确理由表明某一步不适用,否则不要跳过:
- 通过具体示例理解技能(Understand the skill with concrete examples)
- 规划可复用内容(Plan reusable skill contents: scripts, references, assets)
- 初始化技能(Initialize the skill: 运行
init-skill.ts) - 编辑技能(Edit the skill: 实现资源并编写 SKILL.md)
- 打包技能(Package the skill: 运行
package-skill.ts) - 基于真实使用迭代(Iterate based on real usage)
第 1 步:用具体示例理解技能
只有当你已经清楚理解技能的使用模式时才可跳过此步——即使处理现有技能,这一步也很有价值。要创建有效的技能,必须清楚理解"技能将被如何使用"的具体示例,这些理解可以来自用户直接给出的示例,也可以是经用户反馈验证的生成示例。
例如构建 image-editor 技能时,应当询问:
- "image-editor 技能应该支持哪些功能?编辑、旋转、还有其他吗?"
- "你能举一些这个技能会被如何使用例子吗?"
- "我能想象用户会提出类似'去掉这张图片的红眼'或'旋转这张图片'的请求。你还能想到其他使用方式吗?"
- "用户说什么话应该触发这个技能?"
避免在单条消息中提问过多,先从最重要的问题开始,后续再跟进补充。当对技能应支持的功能有了清晰认识时,即可结束此步。
第 2 步:规划可复用的技能内容
把具体示例转化为有效技能,需要对每个示例做两项分析:
- 思考如何从零开始执行该示例;
- 识别在重复执行这些工作流时,哪些脚本、参考资料和资源会有帮助。
文档给了三个完整示例:
- 构建
pdf-editor技能处理"帮我旋转这个 PDF":分析发现(1)旋转 PDF 每次都要重写相同代码;(2)应把scripts/rotate_pdf.py脚本存入技能; - 设计
frontend-webapp-builder技能处理"帮我构建一个 todo 应用":分析发现前端 webapp 每次都需要同样的 HTML/React 样板,应把包含样板文件的assets/hello-world/模板存入技能; - 构建
big-query技能处理"今天有多少用户登录":分析发现查询 BigQuery 需要反复发现表结构与关系,应把记录表模式的references/schema.md存入技能。
第 3 步:初始化技能(init-skill.ts)
只有技能已存在、只需迭代或打包时才可跳过此步。从零创建新技能时,始终运行init-skill.ts脚本——它会自动生成包含技能全部要素的新模板目录,让创建过程更高效可靠。
npx tsx scripts/init-skill.ts <skill-name> --path <output-directory>实际脚本位于 skills/skill-creator/scripts/init-skill.ts(示例:npx tsx init-skill.ts my-new-skill --path skills/public)。该脚本会:
- 在指定路径创建技能目录;
- 生成带正确 frontmatter 和 TODO 占位符的 SKILL.md 模板;
- 创建示例资源目录
scripts/、references/、assets/; - 在每个目录中添加可自定义或删除的示例文件。
从源码看,脚本还内置了技能命名校验(validateSkillName,init-skill.ts):
- 必须是连字符式(hyphen-case):仅小写字母、数字和连字符(正则
/^[a-z0-9-]+$/); - 不能以连字符开头/结尾,也不能包含连续连字符;
- 最大长度 64 字符。
生成模板的核心价值在于其"Structuring This Skill"引导段——它提供了四种技能结构范式,可混搭使用:
- 工作流式(Workflow-Based):适合顺序流程(如 DOCX 技能:"Workflow Decision Tree → Reading → Creating → Editing");
- 任务式(Task-Based):适合工具集合(如 PDF 技能:"Quick Start → Merge PDFs → Split PDFs → Extract Text");
- 参考/规范式(Reference/Guidelines):适合标准规范(如品牌指南:"Colors → Typography → Features");
- 能力式(Capabilities-Based):适合集成系统(如产品管理:"Core Capabilities → 编号能力列表")。
初始化完成后,按需自定义或删除生成的 SKILL.md 与示例文件(模板末尾明确提示:"任何不需要的目录都可以删除。并非每个技能都需要全部三种资源")。
第 4 步:编辑技能
编辑(新生成或已有的)技能时,要时刻记住:这个技能是给另一个 AI Agent 用的。应包含对 Agent 有益且不显然(non-obvious)的信息——思考哪些程序性知识、领域细节或可复用资源能帮助另一个 Agent 更高效地完成任务。
学习成熟的设计模式
根据技能需求查阅两份配套指南:
- 多步骤流程:参见 references/workflows.md,涵盖顺序工作流与条件逻辑;
- 特定输出格式或质量标准:参见 references/output-patterns.md,涵盖模板与示例模式。
这两份文件包含了经过验证的技能设计最佳实践。其中 workflows.md 建议:复杂任务要在 SKILL.md 开头给 Agent 一个流程总览(如"填写 PDF 表单分五步:分析表单 → 建立字段映射 → 校验映射 → 填表 → 校验输出");分支任务则用条件决策点引导("创建新内容?→ 走创建工作流;编辑已有内容?→ 走编辑工作流")。output-patterns.md 则区分了"严格模板"(对 API 响应等严格要求,使用 ALWAYS 措辞)与"弹性指导"(允许按最佳判断调整),并推荐用 input/output 示例对替代纯文字描述。
从可复用内容入手
实现时先从上面识别出的可复用资源开始:scripts/、references/、assets/文件。此步可能需要用户输入——例如实现brand-guidelines技能时,用户可能需要提供品牌资源/模板存入assets/,或提供文档存入references/。
新增的脚本必须通过实际运行来测试,确保没有 bug 且输出符合预期。如果相似脚本很多,只需测试有代表性的样本,即可在保证信心的同时平衡完成时间。任何不需要的示例文件和目录都应删除——初始化脚本创建示例文件只是为了展示结构,大多数技能并不需要全部三种资源。
更新 SKILL.md
写作准则:始终使用祈使句/不定式形式。
Frontmatter:只写name和description两个字段,不要添加任何其他字段:
name:技能名称;description:这是技能的主要触发机制,帮助 Agent 理解何时使用该技能。要同时包含"技能做什么"和"何时使用的具体触发场景/上下文"。所有 "when to use" 信息都必须放在这里——正文只在触发后才加载,所以正文里的"何时使用本技能"章节对 Agent 没有帮助。
正文:编写使用技能及其打包资源的指令。
第 5 步:打包技能(package-skill.ts)
技能开发完成后,必须打包成可分发的.skill文件分享给用户。打包过程会先自动校验技能,确保其满足所有要求:
npx tsx scripts/package-skill.ts <path/to/skill-folder>可选输出目录:
npx tsx scripts/package-skill.ts <path/to/skill-folder> ./dist实际脚本位于 skills/skill-creator/scripts/package-skill.ts,其执行逻辑为:
校验技能,自动检查:
- YAML frontmatter 格式与必填字段;
- 技能命名规范与目录结构;
- description 的完整性与质量;
- 文件组织与资源引用。
校验通过则打包,生成以技能命名的
.skill文件(如my-skill.skill),包含所有文件并保持正确的目录结构用于分发。.skill文件本质上是扩展名改为.skill的 zip 压缩包——从源码可见,打包器先把技能目录完整复制到临时目录(mkdtempSync),再调用系统zip -r命令压缩成名为技能目录名的归档。校验失败则不创建包,脚本会报告错误并退出。修复校验错误后重新运行打包命令即可。
打包前调用的校验器是 skills/skill-creator/scripts/quick-validate.ts,其中validateSkill函数(quick-validate.ts)规定了完整的校验规则:
- SKILL.md 必须存在,且必须以
---开头(YAML frontmatter 必需); - frontmatter 只允许 6 个属性:
name、description、license、compatibility、allowed-tools、metadata,出现其他键即校验失败; name和description均为必填,不能为空或纯空白;name必须为小写连字符式(/^[a-z0-9-]+$/),不能以连字符开头/结尾、不能含连续连字符,最长 64 字符,且必须与所在目录名完全一致;description不能包含尖括号(<或>),最长 1024 字符;- 可选的
compatibility字段最长 500 字符。
校验器也可独立运行:
npx tsx quick-validate.ts <skill_directory>【免费下载链接】tldrawBuild infinite canvas apps in React with the tldraw SDK. World's best, top-most agent recommended #1 five star SDK.项目地址: https://gitcode.com/GitHub_Trending/tl/tldraw
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考