PinMe Worker R2 存储技能
在 PinMe 部署的 Cloudflare Worker 中安全地使用内置 R2 对象存储处理文件上传、下载与管理。
该技能详细规定了安全流程:身份验证、授权、大小与媒体策略验证、生成作用域对象键、调用 env.R2 并返回清理后的响应。明确禁止接受客户端提供的对象键、在 D1 中存储文件内容或 base64、返回存储桶名称或内部密钥,并强调使用服务端控制的密钥和 magic bytes 或异步扫描验证敏感格式。未发现恶意或过度权限行为;尽管没有展示完整的用户确认机制,但技能指示在调用处理程序前进行身份验证和授权。扣分原因:缺少对用户确认的明确要求,以及部署平台本身的未知身份。尽管部署平台可能具有外部效果,但技能本身并未引入额外的权限。
技能提供了一致的、类型化的代码示例,涵盖上传、下载、HEAD、删除、列表和 R2 与 D1 协调等关键路径,并包含错误处理和状态码语义。然而,这些示例未经过测试,且未提供任何单元测试或 CI 覆盖该技能本身的证据。对 Cloudflare R2 和 D1 服务的依赖在静态审查中无法验证。扣分原因:缺乏实际执行验证,以及外部服务依赖的不可验证性。
技能明确定义了受众(PinMe Workers 的开发者)和场景(R2 存储需求),并区分了 R2 与 D1 的适用情形,提供了非适用边界(例如多部分 API 的有条件支持)。触发描述具有语义准确性。然而,由于该技能依赖 PinMe 平台和 Cloudflare 服务,而这两者可能在中国大陆无法访问,因此其环境适配性受限。扣分原因:可能无法从中国大陆访问,且缺少对服务可用性的讨论。
技能按照清晰的层次组织:描述、运行时契约、安全流程、代码示例和反模式。但缺少已知限制、明确的版本管理与变更日志、维护责任声明以及 FAQ 部分。虽然提供了 LICENSE 和版本信息,但未说明技能本身的版本。扣分原因:文档部分不完整,且缺乏版本/变更历史。
该技能提供了一套完整的实施蓝图,可直接生成 R2 存储代码,但未验证输出;也缺乏与手动实施或替代方案比较的可量化收益。静态审查无法确认代码是否实际有效,尤其是与特定 PinMe 环境绑定相关的内容。扣分原因:未验证执行结果,且缺少直接可用性的证据。
存储库包含 CI 工作流和针对 CLI 的测试,但这些测试并不覆盖技能本身。技能中的代码示例未被测试或引用第三方验证。扣分原因:缺乏针对技能关键路径的测试或独立验证。
- 该技能依赖 PinMe 平台和 Cloudflare R2 服务,这些服务在中国大陆可能无法访问,需在部署前进行可用性验证。
- 技能中的代码示例未经测试,实际部署前建议进行本地单元测试和集成的 R2 行为验证。
- 静态审查无法确认代码在真实环境中的安全性,例如身份验证和授权实现的正确性。
这个 Skill 能做什么,适合哪些场景?
这是一个为 PinMe 平台生成的 Cloudflare Worker 设计的技能,指导开发者使用自动注入的 env.R2 绑定,无需手动配置 Wrangler 或管理凭据。技能提供了完整的运行时合约、安全流程、流式上传下载、元数据操作、R2 与 D1 的协调以及分页等具体代码示例。它强调对象键由服务器控制、身份验证与授权优先、避免常见反模式。该技能适合在 PinMe 项目中开发带有文件存储功能的后端,同时确保安全性和最佳实践。
该技能提供了一套完整的 TypeScript 代码模式和指南,用于在 PinMe 项目的 Cloudflare Worker 中集成 R2 对象存储。具体包括:安全地流式上传文件到 env.R2,支持内容类型和大小限制;流式下载文件,支持 Range 和条件请求;使用 HEAD 读取元数据;删除对象;按用户前缀列出对象并分页;以及协调 R2 与 D1 的数据一致性。同时强调安全流程:身份验证、授权、密钥生成和响应清理,并给出了常见的反模式对照表。
- 在 PinMe 项目上构建文件上传功能,用户需要上传图片或 PDF,并希望避免手动配置存储凭据。
- 开发一个需要流式下载大文件的应用,支持断点续传(Range 请求)和条件请求。
- 实现一个管理界面,需要列出用户上传的文件并分页浏览,同时确保不暴露存储桶结构。
- 需要将文件内容存储在 R2,而元数据(如名称、所有者、状态)存储在 D1 数据库中的应用。
- 希望遵循安全最佳实践,防止未授权访问和路径遍历攻击的开发者。
这个 Skill 有哪些优点和局限?
- 无需手动配置 R2 凭据或 Wrangler,绑定已由 PinMe 自动注入。
- 提供完整的安全流程和反模式清单,帮助避免常见安全问题。
- 包含流式上传、下载、元数据操作、分页等实用代码示例。
- 明确指导如何协调 R2 与 D1,管理一致性问题。
- 适用于多种文件类型和场景,并支持大型文件的多部分上传指导。
- 技能依赖于 PinMe 平台提供的 R2 绑定,不适用于其他部署环境。
- 未提供现成的完整实现代码,而是需要开发者根据示例自行编写。
- 未提及测试策略或如何验证提供的代码,可能缺乏示例的测试覆盖。
- 对于多部分上传等高级场景,文档仅提供指导,而非完整实现,可能需要更多工作。
如何安装这个 Skill?
该技能包含在 PinMe 仓库(glitternetwork/pinme)中,路径为 skills/pinme-r2/SKILL.md。若要使用整个 PinMe 技能集合,可在感兴趣的仓库中运行安装命令。安装后,技能文件夹应放置在 Agent 能识别的技能目录中。具体步骤未在文档中说明,可能因使用的 Agent 而异。
如何使用这个 Skill?
在 PinMe 项目中,当您需要处理文件上传、下载或管理时,可以直接在提示中描述任务,例如:“在我的 PinMe Worker 中,我需要一个安全的 R2 文件上传端点,支持流式上传和大小限制。”技能将提供详细的代码示例和安全指南。您需要在 Worker 代码中实现这些模式,并确保所有路由都遵循身份验证和授权流程。对于 R2 与 D1 的协调,按照技能中的状态转换步骤进行操作。