基础
发布说明生成器
从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 路径引用各个字段(例如 ${steps.resolve_tags.outputs.to_tag})。 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 < "${steps.extract_pr_numbers.outputs.pr_numbers_file}"`。在传递给 GraphQL 查询之前,使用 `tr -dc '0-9'` 去除每行中的非数字字符。 - gh GraphQL 查询字符串使用 $ 前缀的变量名($owner、$name、$num)。将这些 GraphQL 变量放在 single-quoted strings 或 quoted heredocs 中,避免 shell 展开它们。使用带作用域的 Dagu 引用,例如 ${params.repo}、${env.REPO} 和 ${steps.resolve_tags.outputs.to_tag};不要依赖 unscoped NAME-style substitution。但是,将整数变量传递给 -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/dagucloud/dagu/main/scripts/installer.sh | bash2. 安装 Dagu 技能
gh skill install dagucloud/dagu dagu3. 启动 Dagu
dagu start-all更多详情,请参阅 快速开始