Ziptax Tool Free
支持按地址、邮编或经纬度查询美国销售税率,含CLI封装与API调用说明。
自动从对话中提取并生成符合标准的架构决策记录(ADRs)。
openclaw skills install @anderskev/write-adr命令、参数、文件名以原文为准
从当前会话中生成架构决策记录(ADRs)。
仅当满足通过条件时才可进入下一步。这些条件应可独立验证,无需依赖“内部已验证”。
| 步骤 | 通过条件 |
|---|---|
| 第2步(提取) | 子代理返回结果为有效 JSON,顶层包含 decisions 数组(空数组也可接受)。每个非空条目必须包含 id、title,以及至少一个非空字符串或非空数组字段:context、decision、alternatives 或 rationale。若解析失败或结构错误,需重新执行提取或修复载荷后再进入第3步。 |
| 第4步(预分配编号) | 从仓库根目录运行 python plugins/beagle-analysis/skills/adr-writing/scripts/next_adr_number.py --count N,输出恰好 N 行(每行一个数字)。在启动任何 ADR 编写单元前,必须在回复草稿或笔记中建立每个选定决策与这些编号之一的映射关系。 |
| 第5步(报告) | 汇总表中的每个文件路径均来自子代理的完成输出(不得虚构)。可选地进行抽查:对每个路径执行 test -f <path> 确保文件存在后再标记为成功。 |
| 第6步(验证) | 对每个生成的 ADR 文件,打开后检查:第一行为 ---,frontmatter 可被正确解析为 YAML,status 和 date 字段存在,并且正文内容满足以下第6步要求(替代方案数量、好/坏后果)。 |
# 获取当前分支和最近提交
git branch --show-current
git log --oneline -5
# 检查是否存在现有 ADR
ls docs/adrs/ 2>/dev/null || echo "未找到 ADR 目录"
# 统计已有 ADR 数量以确定编号顺序
find docs/adrs -name "*.md" 2>/dev/null | wc -l此上下文有助于 ADR 编写:
分析当前对话内容,识别可能需要撰写 ADR 的架构决策。如果代理支持子代理,则以单个提取子代理方式调用;否则,直接内联执行相同逻辑——输出一致。使用如下提示:
加载 **adr-decision-extraction** 技能 ([../adr-decision-extraction/SKILL.md](../adr-decision-extraction/SKILL.md))。
分析对话内容,识别需记录为 ADR 的决策:
- 技术选型、架构模式、设计权衡
- 被否决的备选方案、重要实现方法
返回 JSON 格式:
{
"decisions": [
{
"id": 1,
"title": "使用 PostgreSQL 作为主数据存储",
"context": "关于该议题的简要背景",
"decision": "最终决定的内容",
"alternatives": ["曾考虑但被拒绝的选项"],
"rationale": "选择该方案的原因"
}
]
}若子代理返回空的 decisions 数组,则跳至第5步,提示:“本次会话中未检测到架构决策。”
门禁条件:在进入第3步前,必须满足第2步的门禁条件。
显示所有提取出的决策及其完整细节,然后请求用户选择:
## 检测到的决策
### 1. 使用 PostgreSQL 作为主数据存储
**置信度:** 高
**问题背景:** 需要对财务记录支持 ACID 事务
**决策内容:** 使用 PostgreSQL 存储用户数据
**讨论过的备选方案:**
- MongoDB
- SQLite
**理由:** 支持 ACID,团队熟悉度高,生态成熟
**来源:** 规划阶段关于数据库选型的讨论
---
### 2. 采用事件溯源实现审计追踪
**置信度:** 中等
**问题背景:** 合规要求完整的审计历史
**决策内容:** 采用事件溯源模式记录状态变更
**讨论过的备选方案:**
- 数据库触发器
- 应用层日志
**理由:** 审计记录不可篡改,支持时间查询,便于调试
**来源:** 合规性要求讨论
---
## 选择
请指定要撰写 ADR 的决策:
- 输入编号(如“1,2”或“1-2”)、“all”表示全部,或“none”跳过重要提示:在询问选择前,必须完整展示每个决策的详细信息(问题、决策、备选方案、理由),不得仅保留标题和上下文。
解析用户输入:
"all" - 处理所有决策"none" 或空输入 - 跳过,提示:“不会创建 ADR。”"1,2" 或 "1-2" - 处理指定的决策在启动子代理前,预先分配 ADR 编号,防止编号冲突:
# 为所有确认的决策预分配编号(从仓库根目录执行)
# 示例:用户选择了3个决策
python plugins/beagle-analysis/skills/adr-writing/scripts/next_adr_number.py --count 3
# 输出:
# 0003
# 0004
# 0005将每个预分配的编号对应到其对应的决策,再启动子代理。
门禁条件:在启动第一个 ADR 编写单元前,必须满足第4步的门禁条件。
针对每个确认的决策,使用其预分配的编号运行 ADR 编写单元。如果代理支持子代理,则并行启动每个决策的编写任务;否则,按顺序逐个生成——输出一致。使用如下提示:
加载 **adr-writing** 技能 ([../adr-writing/SKILL.md](../adr-writing/SKILL.md))。
为以下决策撰写 ADR:{decision JSON}
**重要:使用以下预分配的 ADR 编号:{assigned_number}**
指令:
1. 查阅代码库获取额外上下文
2. 以 MADR 格式生成 ADR 至 docs/adrs/
3. 使用预分配编号 {assigned_number} —— **切勿调用 next_adr_number.py**
4. 文件名格式:{assigned_number}-slugified-title.md
5. 返回生成的文件路径关键提醒:必须将预分配编号传递给每个编写单元。编写者**不得自行调用 next_adr_number.py**,否则在并行运行时会导致编号重复。
等待所有编写单元完成后,方可继续。
门禁条件:构建摘要时,必须满足第5步的门禁条件(路径来自子代理输出;可选 test -f 检查)。
收集所有子代理的输出,生成总结:
## ADR 生成完成
| 文件 | 决策 | 状态 |
|------|------|------|
| docs/adrs/0003-use-postgresql.md | 使用 PostgreSQL 作为主数据存储 | 草稿 |
### 下一步
- 审查生成的 ADR 是否准确
- 最终确认后,将状态从“草稿”更新为“已接受”
### 需进一步调查的缺口
- [列出子代理指出缺少上下文的决策]若无决策被处理:
未创建任何 ADR。请在做出架构决策后再次运行此命令。对每个生成的 ADR 进行完成标准验证:
## 验证检查清单
| ADR | E | C | A | D | R | 状态 |
|-----|---|---|---|---|---|------|
| 0003-use-postgresql.md | ✓ | ✓ | ✓ | ⚠ | ✗ | 不完整 |
说明:E=证据,C=标准,A=共识,D=文档,R=实现门禁条件:每个生成的 ADR 必须满足第6步的门禁条件。
验证步骤:
NNNN-slugified-title.md 格式 - 文件必须以 --- 开头
- 包含 status: draft(或有效状态值)
- 包含 date: YYYY-MM-DD(实际日期)
- 在标题前以 --- 结束
- 若缺失 frontmatter,立即补全
[INVESTIGATE] 提示——这些需后续跟进若存在遗漏:
draft,直至问题解决[INVESTIGATE] 提示引导后续会话accepted 前,安排与相关方评审ADRs 保存在 docs/adrs/ 目录下(与 [adr-writing](../adr-writing/SKILL.md) 保持一致的命名规范)。若该目录不存在,需创建,并添加初始模板文件 0000-use-madr.md。
---
status: draft
date: YYYY-MM-DD
---
# {标题}
## 上下文与问题陈述
{引发此决策的问题是什么?}
## 决策驱动因素
* {驱动因素1}
* {驱动因素2}
## 决策结果
选择项:"{选项}",因为 {原因}。
### 后果
* 优点:因为 {积极影响}
* 缺点:因为 {消极影响}已收录 7 个 Skill