Community生产力与协作github.com

leostera/riot

用于修改、审查、调试、测试、部署或记录 Riot 仓库中 `sites/` 下的服务,包括 Cloudflare Workers、Wrangler 配置、Astro/Starlight 站点、pkgs.ml 注册表/CDN/文档/Play 流程、Cloudflare D1/R2/Queues/Durable Objects/Workflows 绑定、服务的 Bun lockfiles 以及服务本地 TypeScript 测试。

riot 是什么?

该技能旨在指导 AI 代理高效且安全地操作 Riot 仓库中位于 `sites/` 目录下的多个服务。它定义了一个标准化的服务循环流程,要求代理首先使用 `riot-contributor` 了解库工作流,然后从具体服务目录(如 `sites/api.pkgs.ml`)出发,并使用 `bun run <script>` 运行预定义命令。技能提供了详细的服务映射,涵盖注册表控制平面 Worker、CDN Worker、文档生成服务、基于 Astro 的 Web 应用和静态网站。它还规范了 Cloudflare 工具的使用,强调使用 Wrangler 进行部署、开发和迁移,同时保持 `cf` CLI 仅用于只读检查或经过验证的操作。在配置和绑定方面,技能要求保持 `wrangler.toml`、TypeScript `Env` 接口和测试模拟环境之间的同步,并规定了 D1 数据迁移、R2 存储键和注册表事件的更新流程。安全方面,技能将生产端点视为真实环境,将对远程 D1 操作、DNS 更改、部署等视为需要用户明确批准的操作。它支持多个平台(Claude Code、Codex、Cursor 等),适用于需要对复杂多服务云基础设施进行精确和自动化操作的 AI 代理。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/leostera/riot/tree/HEAD/.agents/skills/riot-services

Installed? Explore more 生产力与协作 skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Riot 服务

服务循环

  1. 首先使用 riot-contributor 了解库工作流、脏工作树处理和验证预期。
  2. 从特定的站点/服务目录开始工作;每个服务拥有自己的 package.json、bun.lock、tsconfig.json,通常还有 wrangler.toml。
  3. 如果脚本存在,使用 bun run <script> 而不是直接调用工具。
  4. 保留每个服务的 lockfile。除非明确要求,否则不要在仓库根目录添加 JS 工作空间。
  5. 将部署、远程迁移、实时 e2e 测试、令牌更改、DNS 更改和生产数据更改视为需要用户明确批准的操作。
  6. 优先使用本地检查和模拟;实时测试通过服务特定的环境变量选择加入。

服务映射

  • sites/api.pkgs.ml:包注册表控制平面 Worker。拥有发布/认证/搜索/视图/事件、D1 迁移、Drizzle 模式、R2 存储键、队列、Durable Object 发布协调以及 D1 备份工作流。
  • sites/cdn.pkgs.ml:CDN Worker,处理包制品、稀疏索引文档、Riot/OCaml 二进制元数据和访问分析。从 ../api.pkgs.ml/src 复用注册表类型/存储帮助函数。
  • sites/docs.pkgs.ml:生成的包文档服务。从 R2 提供文档,消费包发布/处理队列,在注册表 D1 中记录管道运行/事件,并使用 Cloudflare Sandbox 容器进行文档/构建验证。
  • sites/pkgs.ml:公共包注册表 Web 应用,Astro + Cloudflare 适配器 + React 岛屿。读取注册表视图 API 和稀疏索引文档。
  • sites/riot.ml:主要的静态 Riot 网站,Astro + Tailwind,Pages 风格部署。
  • sites/get.riot.ml:安装脚本重定向/代理 Worker。

Cloudflare 工具

  • 使用 Wrangler 管理 Worker/Astro 服务生命周期:wrangler dev、wrangler deploy、wrangler d1 migrations apply、wrangler pages deploy、wrangler types 以及配置驱动的本地开发。
  • 保持服务本地的 wrangler 依赖项为最新版本,并通过 lockfile 固定,而不是依赖全局安装。
  • 仅将统一的 cf CLI 用于 API/资源检查或它当前暴露的操作,特别是账户、区域、DNS、D1 API、R2 API、队列 API、workers API 元数据和模式发现。
  • 在将 cf 用于真实的 Cloudflare 修改之前,运行 npx cf auth whoami 并使用 npx cf agent-context <product> 或 npx cf schema <command...> 检查命令形状。
  • 不要用 cf 替换 Wrangler 的部署/开发/迁移脚本,除非该服务特定的命令已在本地验证过,并且支持相同的配置驱动行为。

配置和绑定

  • 保持 wrangler.toml、导出的 Env TypeScript 接口和测试模拟环境同步。
  • 优先在 Worker 入口点和共享模块中使用显式 Env 接口。
  • 将非机密默认值放入 [vars];将机密信息保存在 .env、Wrangler secrets 或 Cloudflare 管理的 secrets 中。
  • 对于 api.pkgs.ml 中的 D1 模式更改,在 sites/api.pkgs.ml/migrations/ 下添加 SQL 迁移,并一起更新 src/schema.ts/DB 帮助函数。
  • 运行时 D1 访问通过 api.pkgs.ml/src/db.ts、metadata-db.ts、pipeline-db.ts、access-db.ts 或一个命名相似的兄弟文件中的 Drizzle 帮助函数进行。
  • R2 对象键契约位于 api.pkgs.ml/src/storage.ts;更改键时,一起更新 CDN/API/Web 消费者和测试。
  • 注册表事件有效负载形状是面向用户的服务历史记录。将新事件类型添加到 api.pkgs.ml/src/types.ts、DB 序列化、视图和测试。

测试

  • 在完成之前,运行已更改服务的 bun run check。
  • 如果服务定义了本地测试,则运行 bun run test。
  • 除非明确要求,否则不要运行 bun run deploy、bun run migrate:remote 或实时 test:e2e。
  • 对于 api.pkgs.ml,本地测试使用 tests/helpers.ts 中的 FakeR2Bucket、FakeD1Database、FakeQueue 和 FakeExecutionContext。
  • 对于 cdn.pkgs.ml,复用注册表测试模拟,而不是发明 Cloudflare SDK 模拟。
  • 对于 docs.pkgs.ml,优先使用模拟管道执行器和队列清空帮助函数;当测试事件流时,通过数据库序列号断言持久排序。
  • 对于 Astro 服务,运行 bun run check;期望 Astro 在检查过程中重新生成 .astro 类型文件。

Web 工作

  • 匹配每个服务现有的 UI 栈。pkgs.ml 使用 Astro 服务器输出、React 岛屿、Tailwind 和 Cloudflare 适配器;docs*.ml 在适用时使用 Starlight;riot.ml 是一个静态 Astro 站点。
  • 将首页作为实际的产品/服务界面,而不是营销占位符。
  • 在添加抽象层之前,优先使用现有的组件、布局、CSS token、字体和路由约定。
  • 对于注册表 Web 更改,优先使用 sites/pkgs.ml/src/lib/web-views.ts 中的注册表视图 API 和 package-index.ts 中的稀疏索引帮助函数。

操作安全

  • 将生产端点视为真实环境:api.pkgs.ml、registry.pkgs.ml、cdn.pkgs.ml、pkgs.ml、docs.pkgs.ml、docs.riot.ml、play.riot.ml、riot.ml 和 get.riot.ml。
  • 没有用户的明确指示,绝不要运行远程 D1 恢复/导出/导入、DNS 写入、路由/域写入、部署或令牌操作。
  • 如果要求进行实时冒烟测试,请先阅读该服务的 README/环境门控,并说明哪些环境变量使测试具有破坏性或需要认证。

相关技能