archived/dri-text-analysis/SKILL.md
使用 DRI 文本分析法(Data-Rule-Interaction)对自然语言需求描述进行逐词拆解与领域建模。将非结构化的业务需求文本降维为数据(D)、规则(R)、交互(I)三个维度的结构化架构抽象,直接产出可用于系统设计的概念表格。适用于需求分析、领域语言提取、架构设计前的文本解析,以及将长篇需求文档转化为清晰的开发任务拆解。
npx skillsauth add cruldra/skills dri-text-analysisInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
一种将自然语言业务需求降维拆解为系统设计基石的分析标准。本质上是在做需求工程中的领域语言(Ubiquitous Language)提取,对后续的面向对象设计、数据库建模、接口设计乃至代码脚手架生成都极具价值。
当用户有以下行为时使用此技能:
软件系统的核心目的是:接收外部指令,处理信息,并保存状态。 DRI 模型用三个维度完整覆盖:
┌──────────────────────────────────────────────┐
│ │
│ 触发(I) ──→ 执行(R) ──→ 读写(D) │
│ │
│ 反馈(I) ←── 回调(R) ←── 变化(D) │
│ │
└──────────────────────────────────────────────┘
数据是体,规则是法,交互是相。
此模型与经典 ECB 模式(Entity-Control-Boundary)高度契合:
| DRI 概念 | ECB 模式 | 六边形架构 | Clean Architecture | |---------|----------|-----------|-------------------| | 数据 (D) | Entity | Domain Model | Entities | | 规则 (R) | Control | Application Service | Use Cases | | 交互 (I) | Boundary | Port / Adapter | Interface Adapters |
回答 "系统里有什么"。
监控节点、画面帧)温度数值、运行状态)80度、异常)视频流、现场截图)报警通知)回答 "系统如何运作"。
如果...连续3秒超过...)超过、大于、等于)连续3秒、每隔5分钟)火灾智能推理逻辑)更新为异常)提取温度、计算平均值)回答 "系统由谁触发,又影响谁"。
接收视频流、用户点击)发送通知、渲染画面)管理员、玩家)摄像头、企业微信、API 接口)连词、介词、代词等语法结构词(如"的"、"地"、"将"、"和"),在系统建模中无实际抽象价值,标注时忽略。
对原始文本逐词或逐词组进行拆解,在关键短语后紧跟方括号标签。
标注语法:词汇[标签:子分类]
标签取值:
D:实体 D:属性 D:常量 D:流数据 D:消息 D:状态枚举R:条件起点 R:阈值比较 R:时间约束 R:领域服务 R:状态变更 R:处理动作I:输入设备 I:输入动作 I:输出渠道 I:输出动作 I:外部角色 I:接收端将标注结果合并提炼,输出为结构化表格:
| 抽象维度 | 提取出的具体概念 | 系统设计映射 | 备注/设计建议 | |---------|----------------|------------|-------------| | 数据 (Data) | 从标注中提取的所有 D 标签内容 | 领域模型/实体、配置项、持久化表设计 | 瞬态 vs 持久化、可配置 vs 硬编码 | | 规则 (Rule) | 从标注中提取的所有 R 标签内容 | 核心算法、领域服务、状态机 | 需重点编写单元测试的部分 | | 交互 (Interaction) | 从标注中提取的所有 I 标签内容 | 入站网关、出站网关、UI 组件 | 容错、重试、并发处理 |
完成表格后执行 D-R-I 交叉验证:
"监控系统通过摄像头实时接收视频流,提取当前画面帧的温度数值。如果温度连续3秒超过80度,则触发火灾智能推理逻辑,系统自动通过企业微信向管理员发送包含现场截图的报警通知,并在数据库中将该监控节点的运行状态更新为异常。"
监控系统
[I:接收端]通过 摄像头[I:输入设备]实时接收[I:输入动作]视频流[D:流数据],提取[R:处理动作]当前画面帧[D:实体]的 温度数值[D:属性]。如果[R:条件起点]温度[D:属性]连续3秒[R:时间约束]超过[R:阈值比较]80度[D:常量],则触发[R:状态变更]火灾智能推理逻辑[R:领域服务],系统自动通过 企业微信[I:输出渠道]向 管理员[I:外部角色]发送[I:输出动作]包含 现场截图[D:流数据]的 报警通知[D:消息],并在数据库中将该 监控节点[D:实体]的 运行状态[D:属性]更新为[R:状态变更]异常[D:状态枚举]。
| 抽象维度 | 提取出的具体概念 | 系统设计映射 | 备注/设计建议 |
|---------|----------------|------------|-------------|
| 数据 (Data) | 视频流、画面帧、温度数值 | 领域模型:VideoFrame, Temperature | 视频流属于瞬态内存数据,画面帧可能需要缓存 |
| | 80度(阈值常量) | 配置项:ALARM_TEMP_THRESHOLD = 80 | 应设计为可配置参数,而非硬编码 |
| | 报警通知、现场截图 | 消息/资源:AlarmMessage, ImageResource | 截图需持久化至对象存储,通知记入日志 |
| | 监控节点、运行状态、异常 | 持久化实体:MonitorNode (Status: Normal/Error) | 对应数据库中的节点表及状态枚举字段 |
| 规则 (Rule) | 提取(温度) | 数据处理:图像识别/传感器数据解析算法 | 将非结构化数据转化为结构化数据 |
| | 如果...连续3秒超过... | 推理引擎/状态机:时序数据滑动窗口判断 | 核心业务规则,需重点编写单元测试防误报 |
| | 触发火灾智能推理逻辑 | 领域服务:FireReasoningService | 封装复杂的判定链条 |
| | 更新为(异常状态) | 状态变更:Node.setStatus(ERROR) | 确保状态变更的原子性和一致性 |
| 交互 (Interaction) | 摄像头、接收 | 入站网关:视频流接收端口/硬件驱动 | 需考虑高并发与网络延迟的容错边界 |
| | 企业微信、管理员、发送 | 出站网关:企业微信 Webhook API 客户端 | 需处理网络调用失败的重试机制 |
分析完成后,按以下结构组织输出:
## DRI 分析结果
### 一、行内标注
> [在此放置标注后的原始文本]
### 二、概念抽象汇总表
| 抽象维度 | 提取出的具体概念 | 系统设计映射 | 备注/设计建议 |
|---------|----------------|------------|-------------|
| **数据 (Data)** | ... | ... | ... |
| **规则 (Rule)** | ... | ... | ... |
| **交互 (Interaction)** | ... | ... | ... |
### 三、断层检查
- [x] / [ ] 数据覆盖检查
- [x] / [ ] 规则覆盖检查
- [x] / [ ] 交互覆盖检查
- ⚠️ [列出发现的遗漏或冗余]
### 四、设计建议
[基于分析结果给出的架构层面建议]
[D:属性],但"提取温度"中的"提取"是 [R:处理动作]。testing
智能体 UAT 验收测试技能。用于验证智能体在真实场景下的表现是否满足预期。支持任意智能体框架(langchain、langgraph、deepagents、crewai 等)。触发词:测试智能体、验收测试、agent test、UAT
tools
Use when you need to create a Gitea issue, update its spec/plan markers, read or merge an issue's state JSON, or post a PR review comment in a repo that uses the spx CLI (superpowers-vscode workflow).
development
Use when implementing, modifying, refactoring, or reviewing code and the agent must follow explicit coding standards for simplicity, readability, maintainability, testability, project conventions, and minimal safe changes.
development
Use when integrating the deepagents SDK into a Python project — creating agents, configuring backends, adding subagents, middleware, memory, or skills. Also use when debugging deepagents agents or choosing between StateBackend, FilesystemBackend, and LocalShellBackend.