关于 data-systems-coding-lens
Data Systems Coding Lens 是为编码工作添加数据系统审查步骤的技能,适用于实现、代码审查和架构规划。它聚焦数据事实来源、可重试写入的幂等性,以及存储、分布式行为和故障恢复风险。
主要功能
- 01识别数据边界与事实来源
- 02检查模型、查询和存储契约
- 03审查重试、重复操作与故障处理
- 04评估分布式一致性与并发
- 05规划迁移、回滚和可观测性
适用场景
- 01实现涉及持久数据的功能
- 02审查队列或外部服务交互
- 03规划数据模型迁移与回滚
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ robsonrung/ rar-skills --skill data-systems-coding-lens安装后在 Claude Code 中输入/data-systems-coding-lens确认已加载。
附带文件evals.json
详细介绍
数据系统编码审查视角
使用此技能,为编码工作增加一轮实用的数据系统审查。目标不是讲解理论,而是在故障模式演变成生产环境 Bug 之前将其发现。
每轮审查都围绕两个关键词展开,并会在下方的检查项中反复出现。事实来源:明确指出每项事实由哪个唯一位置持久保存,这样缓存、索引、读模型等派生副本始终可以从该位置重建。幂等:任何可能重试或重放的写入,第二次执行时都必须产生相同结果——不能重复扣款、发送邮件、创建任务或记录。审查时请明确使用这两个名称。
第一轮审查
首先确定状态边界:
- 哪些数据会被创建、读取、更新、删除、缓存、派生或发出?
- 事实来源是什么?
- 哪些路径是同步、异步、可重试、可重放或对用户可见的?
- 哪个不变量一旦被破坏就会导致功能出错,代码又在哪里断言了它?
- 哪种故障会悄无声息、代价高昂或难以修复?
如果任务很小,简要完成这轮审查,并将其融入实现过程。如果任务涉及共享数据契约或生产记录,请在编辑前写下答案。
不要对纯 UI 文案、样式、一次性脚本、仅涉及文档的编辑或本地临时工具过度复杂化。对于这些情况,只有当改动涉及持久化数据、后台工作或生产运维风险时,才应用此审查视角。
实现审查视角
修改代码时,按以下顺序检查这些方面。
数据模型与契约
检查架构形状、可空性、枚举扩展、标识符稳定性、时区、所有权、唯一性和向后兼容性。
请思考:
- 旧写入方能否与新读取方共存?
- 新写入方能否与旧读取方共存?
- 是否存在回滚路径?
- 迁移默认值对现有数据是否安全?
- API 契约对客户端和任务来说是否足够明确?
查询与存储路径
检查查询基数、索引覆盖情况、分页、排序稳定性、缓存键、缓存失效、事务范围和锁行为。
请思考:
- 哪些因素会随用户数、租户数、行数、事件数或时间增长?
- 代码是否会意外地将一次请求变成多次数据库往返?
- 随着数据增长,查询计划是否可能变得糟糕?
- 写入在重试时是否幂等?
- 同一操作能否与自身发生竞态?
可靠性与故障
检查重试、重复消息、部分写入、超时行为、毒消息、死信处理和面向用户的恢复方式。
检查进程资源:每个文件、句柄、锁、事务、订阅、计时器和套接字都需要明确的所有者,并且在成功、失败和取消时都有清理路径。
请思考:
- 两次写入之间发生崩溃会怎样?
- 外部服务调用成功但本地写入失败时会怎样?
- 本地写入成功但外部服务调用超时时会怎样?
- 重试是否会造成重复扣款、发送邮件、发送通知、创建任务或记录?
- 运维人员如何检测并修复故障?
- 正确性是否依赖隐含的时间顺序?打破这种依赖——通过状态、队列、锁、事务、幂等键或版本检查明确实现顺序。
分布式行为
如果涉及多个进程、工作进程、区域、数据库、队列、缓存或外部系统,请使用本节。拓扑——这些进程组成的 Burns 模式(sidecar、分片、扇出/汇聚、选举还是单例、工作队列)——属于 distributed-systems-patterns。本节关注这些选择在代码层面可能导致的故障模式。
检查顺序假设、陈旧读取、写后读需求、领导者选举、租约、对时钟的依赖、一致性级别、事务边界和协调机制。
请思考:
- 正确性是否要求全局顺序?
- 对于此用户流程,最终一致性是否可以接受?
- 哪些操作需要强一致性,哪些可以稍后协调?
- 两个参与方同时更新同一实体时会发生什么?
- 是否存在可用于重建派生状态的真实数据源?
演进与维护
检查部署顺序、功能标记、带版本的载荷、架构迁移、回填、重建、可观测性和清理计划。
请思考:
- 这项更改能否分多次部署?
- 迁移能否暂停后恢复?
- 能否根据持久化输入重建派生数据?
- 日志、指标和追踪是否足以调试真实的生产路径?
- 发布后需要清理哪些旧代码、数据、标记或作业?
在 design-gate 下,使用调用方的规范门禁结果。此结果会取代独立的输出和编辑机制。将特定视角的结论纳入发现项或 review_focus,并使用稳定的发现项 ID。在访谈中,将决策字段补充到现有决策记录中。
输出模式
对于实现工作,在开始编码前酌情添加简短说明:
Data systems lens:
State touched:
Invariant:
Main risk:
Verification:
对于代码审查,先列出具体发现:
Finding:
Why it matters:
Failure case:
Suggested fix:
Verification:
对于架构或规划,使用以下简洁的决策记录:
Decision:
Source of truth:
Consistency requirement:
Failure handling:
Migration path:
Observability:
Open question:
默认验证方式
优先选择能覆盖真实边界的验证方式:
- 使用单元测试验证不变量和幂等性。
- 使用集成测试验证数据库、队列、缓存和外部 API 边界。
- 使用现有数据形态检查迁移。
- 使用并发测试检查竞态和重复工作。
- 当基数是风险因素时,检查负载或查询计划。
- 检查日志、指标、追踪和修复信号等可观测性。
最终回复约定
如果此技能改变了工作内容,请在最终回复中提及价值最高的检查。保持简短:
I also checked the data systems risk: [state or invariant], [main mitigation], [verification].