用途
Jira SAFe 技能用于在 Jira Cloud 中实施 SAFe(Scaled Agile Framework)方法论,帮助团队按照正确的层级结构创建和管理工作项。它适用于以下场景:
- 创建带有业务成果和验收标准的 Epic
- 按 SAFe 格式(“As a... I want... So that...”)编写用户故事
- 将 Feature 拆解为带有验收标准的 Story
- 在 Story 下创建 Subtask
- 按正确层级链接工作项(Epic → Feature → Story → Subtask)
主要能力
SAFe 层级
技能遵循以下层级结构:
Portfolio Level:
└── Epic (Strategic Initiative)
└── Feature (Benefit Hypothesis)
└── Story (User Value)
└── Subtask (Technical Work)
项目类型检测
技能强调必须首先检测项目类型,因为 Next-Gen(团队管理)与 Classic(公司管理)项目存在关键差异:
| 方面 | Classic(公司管理) | Next-Gen(团队管理) |
|---|---|---|
| Epic Link | customfield_10014 | parent: { key: 'EPIC-KEY' } |
| Epic Name | customfield_10011 | 不可用 |
| 子任务类型 | 'Sub-task' | 'Subtask' |
| 项目风格 | classic | next-gen, simplified: true |
检测代码示例:
const projectInfo = await fetch(`${JIRA_URL}/rest/api/3/project/${PROJECT_KEY}`, { headers });
const project = await projectInfo.json();
const isNextGen = project.style === 'next-gen' || project.simplified === true;
模板
技能提供 Epic、Story、Subtask 的模板。
Epic 模板(Next-Gen) 包含业务成果、成功指标、范围等部分,并使用 labels 进行分类(Next-Gen 不使用 customfield_10011)。
Story 模板(SAFe 格式,Next-Gen) 包含用户故事、验收标准(Given-When-Then 场景)、完成定义(Definition of Done),并通过 parent 字段链接到 Epic。
Subtask 模板(Next-Gen) 使用 issuetype 名称 'Subtask'(无连字符),并通过 parent 字段链接到 Story。
API 实现
技能提供以下 API 操作示例:
- 创建 Epic 及其下 Story(Next-Gen)
- 创建 Story 及其下 Subtask(Next-Gen)
- 查找 Epic Link 字段 ID
- 批量删除问题
所有示例均包含速率限制和错误处理。
使用方式
技能通过 Jira REST API v3 与 Jira Cloud 交互。使用前需要配置认证信息(EMAIL、TOKEN、JIRA_URL)。代码示例使用 fetch 发起请求,并设置 Authorization、Content-Type 和 Accept 头。
创建 Epic 及其下 Story 的流程:先创建 Epic,再遍历 Story 定义,使用 parent 字段链接到创建的 Epic,每次创建后加入短暂延迟以进行速率限制。
创建 Story 及其下 Subtask 的流程:先创建 Story 并链接到指定 Epic,再遍历 Subtask 摘要,使用 parent 字段链接到创建的 Story。
适用场景
- 需要在 Jira 中规范实施 SAFe 层级的敏捷团队
- 编写符合 INVEST 原则的用户故事
- 建立 Given-When-Then 格式的验收标准
- 在 Next-Gen 或 Classic 项目中正确链接工作项
- 通过 API 批量创建或删除 Jira 工作项
限制
- 技能主要针对 Jira Cloud,未提供其他 Jira 部署方式的说明
- Next-Gen 项目不支持 Epic Name 字段,需使用 labels 替代
- 子任务类型名称因项目类型而异(Subtask vs Sub-task)
- 代码示例中的字段 ID(如 customfield_10014、customfield_10011、customfield_10016、customfield_10007)为典型值,实际可能因 Jira 实例而异,需通过 API 查找确认
- 未提供关于收费、价格或平台支持的额外信息