基础
发布说明生成器
从git标签生成格式化的发布说明,包含PR详情、关联问题和贡献者致谢。
使用 Dagu 技能创建一个发布说明生成器工作流。请参考 schema、coding agent 和 pitfalls 参考文档以获取正确语法。 询问用户: - 哪个仓库?(默认:当前仓库,通过 gh repo view --json nameWithOwner 检测) - 比较哪些标签?(默认:最新标签与上一个标签,自动检测) 前置条件:gh CLI 已认证(gh auth login),至少安装了一个 AI 编程代理 CLI。 工作流应: 1. 解析要比较的两个 git 标签。如果未指定,使用 GitHub API 自动检测最新和上一个标签。以 JSON 格式输出,以便下游步骤可以通过 JSON 路径引用各个字段(例如 ${TAGS.to})。 2. 使用 GitHub compare API 配合 --jq(不要使用 jq CLI)从两个标签之间的提交中提取所有 PR 编号。每行输出一个 PR 编号。 3. 对每个 PR,通过 gh api graphql 获取详情:编号、标题、作者登录名、正文摘要(前约 300 个字符)、标签和 closingIssuesReferences(编号、标题、作者登录名)。从结果构建一个 JSON 数组。 - 关键:遍历上一步的输出时,不要使用 "for X in $VAR"——Dagu 将多行输出捕获到单个字符串变量中,因此单词拆分不起作用。请逐行读取上一步的 stdout 文件:`while IFS= read -r line; do ... done < "${prev_step.stdout}"`。在传递给 GraphQL 查询之前,使用 `tr -dc '0-9'` 去除每行中的非数字字符。 - gh GraphQL 查询字符串使用 $ 前缀的变量名($owner、$name、$num)。这些在 Dagu 脚本中是安全的,因为 Dagu 只展开 ${带花括号} 的变量和匹配已定义 Dagu 变量的裸 $varname 模式——未定义的裸 $name 会原样保留给 shell。但是,将整数变量传递给 -F 时不要加引号(例如 -F num=$NUM 而不是 -F num="$NUM"),以便 gh 将它们作为整数而非字符串发送。 4. 使用单个 AI 代理步骤(自动检测可用的 CLI,使用最便宜的模型)来分类每个 PR 并格式化最终的发布说明。将 PR 详情 JSON、changelog 模板和上下文(仓库、标签、日期、要从贡献者中排除的仓库所有者)提供给它。 5. 将输出保存到 DAG_DOCS_DIR。 6. 在 AI 代理步骤上使用 defaults.retry_policy 和 timeout_sec: 300。 changelog 格式模板必须定义为顶层 env 变量,使用 YAML 多行(|)格式,以便用户可以自定义输出而无需编辑步骤逻辑。
开始使用
1. 安装 Dagu
curl -L https://raw.githubusercontent.com/dagu-org/dagu/main/scripts/installer.sh | bash2. 安装 Dagu 技能
claude mcp add dagu -- dagu mcp3. 启动 Dagu
dagu start-all更多详情,请参阅 快速入门指南