@sppg2001/atomize 5.1.0 → 5.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/catalog/mixins/documentation.atomize.yaml +4 -2
- package/catalog/mixins/security-review.atomize.yaml +6 -4
- package/catalog/mixins/test-coverage.atomize.yaml +7 -4
- package/catalog/templates/agile-story-breakdown.atomize.yaml +38 -189
- package/catalog/templates/backend-api.atomize.yaml +37 -38
- package/catalog/templates/bug-fix.atomize.yaml +25 -21
- package/catalog/templates/feature-development.atomize.yaml +22 -8
- package/dist/cli/index.js +356 -7336
- package/package.json +1 -1
- package/catalog/templates/agile-story-breakdown-saved-query.atomize.yaml +0 -215
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
formatVersion: "1.0"
|
|
1
2
|
name: "Documentation Tasks"
|
|
2
|
-
description: "
|
|
3
|
+
description: "Example documentation tasks. Add the tasks relevant to your change and adapt their estimates."
|
|
4
|
+
# Illustrative percentages add to the consuming Template; rebalance its total.
|
|
3
5
|
tasks:
|
|
4
6
|
- id: "update-docs"
|
|
5
7
|
title: "Update Documentation: ${story.title}"
|
|
@@ -13,4 +15,4 @@ tasks:
|
|
|
13
15
|
description: "Add a clear, user-focused entry to the project changelog describing what changed and why."
|
|
14
16
|
estimationPercent: 5
|
|
15
17
|
activity: "Documentation"
|
|
16
|
-
assignTo: "@
|
|
18
|
+
assignTo: "@Unassigned"
|
|
@@ -1,16 +1,18 @@
|
|
|
1
|
+
formatVersion: "1.0"
|
|
1
2
|
name: "Security Review Tasks"
|
|
2
|
-
description: "
|
|
3
|
+
description: "Example security tasks. Adapt the scope and estimates to the risks relevant to your change."
|
|
4
|
+
# Illustrative percentages add to the consuming Template; rebalance its total.
|
|
3
5
|
tasks:
|
|
4
6
|
- id: "security-review"
|
|
5
7
|
title: "Security Review: ${story.title}"
|
|
6
|
-
description: "Review
|
|
8
|
+
description: "Review security concerns relevant to the change, such as access control or handling sensitive data."
|
|
7
9
|
estimationPercent: 10
|
|
8
|
-
activity: "
|
|
10
|
+
activity: "Development"
|
|
9
11
|
assignTo: "@Unassigned"
|
|
10
12
|
|
|
11
13
|
- id: "dependency-audit"
|
|
12
14
|
title: "Dependency Audit: ${story.title}"
|
|
13
|
-
description: "
|
|
15
|
+
description: "Check changed dependencies for known vulnerabilities using tools appropriate to the project."
|
|
14
16
|
estimationPercent: 5
|
|
15
17
|
activity: "Development"
|
|
16
18
|
assignTo: "@Unassigned"
|
|
@@ -1,19 +1,21 @@
|
|
|
1
|
+
formatVersion: "1.0"
|
|
1
2
|
name: "Test Coverage Tasks"
|
|
2
|
-
description: "
|
|
3
|
+
description: "Example testing tasks, including a conditional task. Choose the test types and estimates relevant to your change."
|
|
4
|
+
# Illustrative percentages add to the consuming Template; rebalance its total.
|
|
3
5
|
tasks:
|
|
4
6
|
- id: "unit-tests"
|
|
5
7
|
title: "Unit Tests: ${story.title}"
|
|
6
|
-
description: "Write unit tests covering the core logic and edge cases.
|
|
8
|
+
description: "Write unit tests covering the core logic and edge cases."
|
|
7
9
|
estimationPercent: 15
|
|
8
10
|
activity: "Testing"
|
|
9
|
-
assignTo: "@
|
|
11
|
+
assignTo: "@Unassigned"
|
|
10
12
|
|
|
11
13
|
- id: "integration-tests"
|
|
12
14
|
title: "Integration Tests: ${story.title}"
|
|
13
15
|
description: "Write integration tests covering interactions between components, APIs, and external dependencies."
|
|
14
16
|
estimationPercent: 10
|
|
15
17
|
activity: "Testing"
|
|
16
|
-
|
|
18
|
+
assignTo: "@Unassigned"
|
|
17
19
|
|
|
18
20
|
- id: "e2e-tests"
|
|
19
21
|
title: "End-to-End Tests: ${story.title}"
|
|
@@ -21,6 +23,7 @@ tasks:
|
|
|
21
23
|
estimationPercent: 10
|
|
22
24
|
activity: "Testing"
|
|
23
25
|
assignTo: "@Unassigned"
|
|
26
|
+
# Example opt-in tag; replace it with your own condition if needed.
|
|
24
27
|
condition:
|
|
25
28
|
field: "tags"
|
|
26
29
|
operator: "contains"
|
|
@@ -1,214 +1,63 @@
|
|
|
1
1
|
formatVersion: "1.0"
|
|
2
2
|
name: "Agile Story Breakdown"
|
|
3
|
-
description: "
|
|
3
|
+
description: "Example of conditional tasks and estimates. Adapt the tasks and illustrative tag to your team's workflow."
|
|
4
4
|
author: "Atomize"
|
|
5
|
-
tags: []
|
|
6
5
|
|
|
7
6
|
filter:
|
|
7
|
+
# Change this to the Work Item type used by your project.
|
|
8
8
|
workItemTypes: ["User Story"]
|
|
9
|
-
states: ["Ready for Sprint"]
|
|
10
|
-
tags:
|
|
11
|
-
exclude:
|
|
12
|
-
- "TestGen"
|
|
13
9
|
excludeIfHasTasks: true
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
10
|
+
# Alternative: let an existing Azure DevOps query select the Stories.
|
|
11
|
+
# Uncomment savedQuery and replace its path with a query in your project.
|
|
12
|
+
# workItemTypes then declares the types returned; it does not filter the query.
|
|
13
|
+
# savedQuery:
|
|
14
|
+
# path: "Shared Queries/Example"
|
|
18
15
|
|
|
19
16
|
tasks:
|
|
20
|
-
-
|
|
21
|
-
|
|
17
|
+
- id: "implement"
|
|
18
|
+
title: "Implement: ${story.title}"
|
|
19
|
+
description: "Make the changes needed to meet the acceptance criteria."
|
|
20
|
+
estimationPercent: 60
|
|
22
21
|
activity: "Development"
|
|
23
|
-
tags: []
|
|
24
22
|
assignTo: "@ParentAssignee"
|
|
23
|
+
# Example convention: this tag selects verification work only.
|
|
25
24
|
condition:
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
value: Testing Only
|
|
30
|
-
- field: tags
|
|
31
|
-
operator: not-contains
|
|
32
|
-
value: Test Only
|
|
33
|
-
|
|
34
|
-
- title: "Build"
|
|
35
|
-
estimationPercent: 50
|
|
36
|
-
activity: "Development"
|
|
37
|
-
tags: []
|
|
38
|
-
assignTo: "@ParentAssignee"
|
|
39
|
-
condition:
|
|
40
|
-
all:
|
|
41
|
-
- field: tags
|
|
42
|
-
operator: not-contains
|
|
43
|
-
value: Testing Only
|
|
44
|
-
- field: tags
|
|
45
|
-
operator: not-contains
|
|
46
|
-
value: Test Only
|
|
47
|
-
|
|
48
|
-
- title: "Developer Test"
|
|
49
|
-
estimationPercent: 25
|
|
50
|
-
activity: "Development"
|
|
51
|
-
tags: []
|
|
52
|
-
assignTo: "@ParentAssignee"
|
|
53
|
-
condition:
|
|
54
|
-
all:
|
|
55
|
-
- field: tags
|
|
56
|
-
operator: not-contains
|
|
57
|
-
value: Testing Only
|
|
58
|
-
- field: tags
|
|
59
|
-
operator: not-contains
|
|
60
|
-
value: Test Only
|
|
61
|
-
|
|
62
|
-
- title: "QA Smoke Test"
|
|
63
|
-
estimationPercent: 0
|
|
64
|
-
activity: "Development"
|
|
65
|
-
tags: []
|
|
66
|
-
assignTo: "@ParentAssignee"
|
|
67
|
-
condition:
|
|
68
|
-
all:
|
|
69
|
-
- field: tags
|
|
70
|
-
operator: not-contains
|
|
71
|
-
value: Testing Only
|
|
72
|
-
- field: tags
|
|
73
|
-
operator: not-contains
|
|
74
|
-
value: Test Only
|
|
75
|
-
|
|
76
|
-
- title: "Wiki"
|
|
77
|
-
estimationPercent: 5
|
|
78
|
-
activity: "Development"
|
|
79
|
-
tags: []
|
|
80
|
-
assignTo: "@ParentAssignee"
|
|
81
|
-
condition:
|
|
82
|
-
all:
|
|
83
|
-
- field: tags
|
|
84
|
-
operator: not-contains
|
|
85
|
-
value: Testing Only
|
|
86
|
-
- field: tags
|
|
87
|
-
operator: not-contains
|
|
88
|
-
value: Test Only
|
|
89
|
-
|
|
90
|
-
- title: "Code Review "
|
|
91
|
-
estimationPercent: 0
|
|
92
|
-
activity: "Development"
|
|
93
|
-
tags: []
|
|
94
|
-
assignTo: "@Unassigned"
|
|
95
|
-
condition:
|
|
96
|
-
all:
|
|
97
|
-
- field: tags
|
|
98
|
-
operator: not-contains
|
|
99
|
-
value: Testing Only
|
|
100
|
-
- field: tags
|
|
101
|
-
operator: not-contains
|
|
102
|
-
value: Test Only
|
|
103
|
-
|
|
104
|
-
- title: "Physical Data Model Updated"
|
|
105
|
-
estimationPercent: 0
|
|
106
|
-
activity: "Development"
|
|
107
|
-
tags: []
|
|
108
|
-
assignTo: "@ParentAssignee"
|
|
109
|
-
condition:
|
|
110
|
-
all:
|
|
111
|
-
- field: tags
|
|
112
|
-
operator: not-contains
|
|
113
|
-
value: Testing Only
|
|
114
|
-
- field: tags
|
|
115
|
-
operator: not-contains
|
|
116
|
-
value: Test Only
|
|
25
|
+
field: tags
|
|
26
|
+
operator: not-contains
|
|
27
|
+
value: verification-only
|
|
117
28
|
|
|
118
|
-
-
|
|
29
|
+
- id: "verify"
|
|
30
|
+
title: "Verify: ${story.title}"
|
|
31
|
+
description: "Check the outcome against the acceptance criteria."
|
|
119
32
|
estimationPercent: 40
|
|
120
|
-
estimationPercentCondition:
|
|
121
|
-
- condition:
|
|
122
|
-
any:
|
|
123
|
-
- field: tags
|
|
124
|
-
operator: contains
|
|
125
|
-
value: Testing Only
|
|
126
|
-
- field: tags
|
|
127
|
-
operator: contains
|
|
128
|
-
value: Test Only
|
|
129
|
-
percent: 59.70
|
|
130
33
|
activity: "Testing"
|
|
131
|
-
tags: []
|
|
132
|
-
condition:
|
|
133
|
-
field: tags
|
|
134
|
-
operator: not-contains
|
|
135
|
-
value: Dev Only
|
|
136
34
|
assignTo: "@Unassigned"
|
|
137
|
-
|
|
138
|
-
- title: "Test Execution"
|
|
139
|
-
estimationPercent: 27
|
|
140
35
|
estimationPercentCondition:
|
|
141
36
|
- condition:
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
- field: tags
|
|
147
|
-
operator: contains
|
|
148
|
-
value: Test Only
|
|
149
|
-
percent: 40.30
|
|
150
|
-
activity: "Testing"
|
|
151
|
-
tags: []
|
|
152
|
-
condition:
|
|
153
|
-
field: tags
|
|
154
|
-
operator: not-contains
|
|
155
|
-
value: Dev Only
|
|
156
|
-
assignTo: "@Unassigned"
|
|
157
|
-
|
|
158
|
-
- title: "Automation Testing"
|
|
159
|
-
estimationPercent: 0
|
|
160
|
-
activity: "Test Automation"
|
|
161
|
-
tags: []
|
|
162
|
-
condition:
|
|
163
|
-
field: tags
|
|
164
|
-
operator: not-contains
|
|
165
|
-
value: Dev Only
|
|
166
|
-
assignTo: "@Unassigned"
|
|
167
|
-
|
|
168
|
-
- title: "Test Review"
|
|
169
|
-
estimationPercent: 0
|
|
170
|
-
activity: "Testing"
|
|
171
|
-
tags: []
|
|
172
|
-
condition:
|
|
173
|
-
field: tags
|
|
174
|
-
operator: not-contains
|
|
175
|
-
value: Dev Only
|
|
176
|
-
assignTo: "@Unassigned"
|
|
177
|
-
|
|
178
|
-
- title: "Release Notes"
|
|
179
|
-
estimationPercent: 0
|
|
180
|
-
activity: "Testing"
|
|
181
|
-
tags: []
|
|
182
|
-
condition:
|
|
183
|
-
field: tags
|
|
184
|
-
operator: not-contains
|
|
185
|
-
value: Dev Only
|
|
186
|
-
assignTo: "@Unassigned"
|
|
187
|
-
|
|
188
|
-
- title: "Merge to Stable"
|
|
189
|
-
estimationPercent: 10
|
|
190
|
-
activity: "Development"
|
|
191
|
-
tags: []
|
|
192
|
-
assignTo: "@ParentAssignee"
|
|
193
|
-
condition:
|
|
194
|
-
all:
|
|
195
|
-
- field: tags
|
|
196
|
-
operator: not-contains
|
|
197
|
-
value: Testing Only
|
|
198
|
-
- field: tags
|
|
199
|
-
operator: not-contains
|
|
200
|
-
value: Test Only
|
|
37
|
+
field: tags
|
|
38
|
+
operator: contains
|
|
39
|
+
value: verification-only
|
|
40
|
+
percent: 100
|
|
201
41
|
|
|
202
42
|
estimation:
|
|
203
43
|
strategy: "percentage"
|
|
204
44
|
rounding: "none"
|
|
205
|
-
|
|
45
|
+
ifParentHasNoEstimation: "warn"
|
|
46
|
+
|
|
47
|
+
# These are authoring checks, not a count of tasks after conditions run.
|
|
48
|
+
validation:
|
|
49
|
+
totalEstimationMustBe: 100
|
|
50
|
+
minTasks: 1
|
|
51
|
+
maxTasks: 5
|
|
206
52
|
|
|
207
53
|
metadata:
|
|
208
|
-
category: "
|
|
54
|
+
category: "Examples"
|
|
209
55
|
estimationGuidelines: |
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
56
|
+
The 60/40 split is illustrative. A Story tagged verification-only generates
|
|
57
|
+
just the verification Task with 100% of the converted Story Estimate.
|
|
58
|
+
Replace the tag and percentages to suit your own work.
|
|
59
|
+
notes: |
|
|
60
|
+
This example demonstrates conditions, not a required delivery process.
|
|
61
|
+
Copy it into your Catalog and adapt the Work Item type, tasks, and estimates.
|
|
62
|
+
Activities and assignment tokens are illustrative; adapt them to your
|
|
63
|
+
project. The commented saved-query alternative demonstrates query selection.
|
|
@@ -1,58 +1,57 @@
|
|
|
1
1
|
formatVersion: "1.0"
|
|
2
2
|
name: "Backend API Development"
|
|
3
|
-
description: "
|
|
3
|
+
description: "Example API task breakdown with Story Estimate conversion. Adapt it to your interface, implementation, and verification needs."
|
|
4
4
|
author: "Atomize"
|
|
5
|
-
tags: ["
|
|
5
|
+
tags: ["example", "api"]
|
|
6
6
|
|
|
7
7
|
filter:
|
|
8
|
+
# Change this to the Work Item type used by your project.
|
|
8
9
|
workItemTypes: ["User Story"]
|
|
9
|
-
states: ["New", "Active", "Approved"]
|
|
10
|
-
tags:
|
|
11
|
-
include: ["backend", "api"]
|
|
12
10
|
excludeIfHasTasks: true
|
|
13
11
|
|
|
14
12
|
tasks:
|
|
15
|
-
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
- id: "design"
|
|
14
|
+
title: "Define API Behavior: ${story.title}"
|
|
15
|
+
description: "Describe the inputs, outputs, and expected behavior relevant to this change."
|
|
16
|
+
estimationPercent: 20
|
|
18
17
|
activity: "Design"
|
|
19
|
-
|
|
18
|
+
assignTo: "@ParentAssignee"
|
|
20
19
|
|
|
21
|
-
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
tags: ["database", "migration"]
|
|
26
|
-
|
|
27
|
-
- title: "Implement Core Logic: ${story.title}"
|
|
28
|
-
description: "Implement business logic, data validation, and error handling"
|
|
29
|
-
estimationPercent: 35
|
|
20
|
+
- id: "implement"
|
|
21
|
+
title: "Implement API Change: ${story.title}"
|
|
22
|
+
description: "Make the changes needed for the agreed behavior."
|
|
23
|
+
estimationPercent: 50
|
|
30
24
|
activity: "Development"
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
- title: "Write Unit Tests"
|
|
34
|
-
description: "Unit tests for services, repositories, and utilities"
|
|
35
|
-
estimationPercent: 15
|
|
36
|
-
activity: "Testing"
|
|
37
|
-
tags: ["testing", "unit-tests"]
|
|
25
|
+
assignTo: "@ParentAssignee"
|
|
26
|
+
dependsOn: ["design"]
|
|
38
27
|
|
|
39
|
-
-
|
|
40
|
-
|
|
41
|
-
|
|
28
|
+
- id: "verify"
|
|
29
|
+
title: "Verify API Behavior: ${story.title}"
|
|
30
|
+
description: "Check expected results, error cases, and compatibility where relevant."
|
|
31
|
+
estimationPercent: 30
|
|
42
32
|
activity: "Testing"
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
- title: "Code Review & Refinement"
|
|
46
|
-
description: "Address code review feedback and refactor as needed"
|
|
47
|
-
estimationPercent: 10
|
|
48
|
-
activity: "Documentation"
|
|
49
|
-
tags: ["review"]
|
|
33
|
+
assignTo: "@Unassigned"
|
|
34
|
+
dependsOn: ["implement"]
|
|
50
35
|
|
|
51
36
|
estimation:
|
|
52
37
|
strategy: "percentage"
|
|
38
|
+
# Example: one Story Estimate unit becomes four Task Estimate units.
|
|
39
|
+
conversion:
|
|
40
|
+
factor: 4
|
|
41
|
+
# Alternative for a discrete or non-linear scale: replace factor with a table.
|
|
42
|
+
# conversion:
|
|
43
|
+
# table: { "1": 2, "2": 5, "3": 8, "5": 16 }
|
|
53
44
|
rounding: "nearest"
|
|
54
|
-
|
|
45
|
+
ifParentHasNoEstimation: "warn"
|
|
46
|
+
|
|
47
|
+
validation:
|
|
48
|
+
totalEstimationMustBe: 100
|
|
55
49
|
|
|
56
50
|
metadata:
|
|
57
|
-
category: "
|
|
58
|
-
estimationGuidelines: "
|
|
51
|
+
category: "Examples"
|
|
52
|
+
estimationGuidelines: "The factor of 4 and 20/50/30 split are illustrative. Convert the Story Estimate first, distribute it, then round to the nearest half Task unit. Use the commented table alternative for a non-linear scale."
|
|
53
|
+
notes: |
|
|
54
|
+
Copy and adapt this example. It assumes no particular API style, database,
|
|
55
|
+
test framework, documentation tool, or workflow state. Activity names and
|
|
56
|
+
assignment choices are illustrative; adapt them to your project.
|
|
57
|
+
Change the Work Item type and add or remove tasks to fit your project.
|
|
@@ -1,32 +1,25 @@
|
|
|
1
1
|
formatVersion: "1.0"
|
|
2
2
|
name: "Bug Fix"
|
|
3
|
-
description: "
|
|
3
|
+
description: "Example fixed Task Estimates for investigation, fix, and verification. Copy or extend it to fit how your team handles bugs."
|
|
4
4
|
author: "Atomize"
|
|
5
|
-
tags: ["
|
|
5
|
+
tags: ["example", "bug"]
|
|
6
6
|
|
|
7
7
|
filter:
|
|
8
8
|
workItemTypes: ["Bug"]
|
|
9
|
-
states: ["New", "Active", "Committed"]
|
|
10
9
|
excludeIfHasTasks: true
|
|
11
10
|
|
|
12
11
|
tasks:
|
|
13
12
|
- id: "investigate"
|
|
14
13
|
title: "Investigate: ${story.title}"
|
|
15
14
|
description: "Reproduce the bug, identify the root cause, and document findings."
|
|
16
|
-
|
|
15
|
+
estimationFixed: 1
|
|
17
16
|
activity: "Requirements"
|
|
18
17
|
assignTo: "@ParentAssignee"
|
|
19
|
-
estimationPercentCondition:
|
|
20
|
-
- condition:
|
|
21
|
-
field: "Priority"
|
|
22
|
-
operator: "lte"
|
|
23
|
-
value: 2
|
|
24
|
-
percent: 40
|
|
25
18
|
|
|
26
19
|
- id: "fix"
|
|
27
20
|
title: "Fix: ${story.title}"
|
|
28
21
|
description: "Implement the fix for the identified root cause."
|
|
29
|
-
|
|
22
|
+
estimationFixed: 2
|
|
30
23
|
activity: "Development"
|
|
31
24
|
assignTo: "@ParentAssignee"
|
|
32
25
|
dependsOn: ["investigate"]
|
|
@@ -34,21 +27,32 @@ tasks:
|
|
|
34
27
|
- id: "verify"
|
|
35
28
|
title: "Verify Fix: ${story.title}"
|
|
36
29
|
description: "Verify the fix resolves the issue and does not introduce regressions."
|
|
37
|
-
|
|
30
|
+
estimationFixed: 1
|
|
38
31
|
activity: "Testing"
|
|
32
|
+
assignTo: "@Unassigned"
|
|
39
33
|
dependsOn: ["fix"]
|
|
40
34
|
|
|
41
35
|
- id: "close"
|
|
42
|
-
title: "
|
|
43
|
-
description: "
|
|
44
|
-
|
|
36
|
+
title: "Record Outcome: ${story.title}"
|
|
37
|
+
description: "Record the outcome and any follow-up information useful to your team."
|
|
38
|
+
estimationFixed: 0.5
|
|
45
39
|
activity: "Documentation"
|
|
40
|
+
assignTo: "@ParentAssignee"
|
|
46
41
|
dependsOn: ["verify"]
|
|
47
42
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
rounding: "none"
|
|
51
|
-
ifParentHasNoEstimation: "warn"
|
|
52
|
-
|
|
43
|
+
# Fixed estimates use the Task's unit and do not depend on a Story Estimate.
|
|
44
|
+
# These example limits check the fixed estimates, rather than a percentage total.
|
|
53
45
|
validation:
|
|
54
|
-
|
|
46
|
+
minTasks: 1
|
|
47
|
+
maxTasks: 10
|
|
48
|
+
taskEstimationRange:
|
|
49
|
+
min: 0.5
|
|
50
|
+
max: 8
|
|
51
|
+
|
|
52
|
+
metadata:
|
|
53
|
+
category: "Examples"
|
|
54
|
+
estimationGuidelines: "Fixed values are illustrative, in the Task unit (typically hours). They are independent of the Story Estimate and bypass percentage rounding."
|
|
55
|
+
notes: |
|
|
56
|
+
Copy and adapt the Work Item type, tasks, dependencies, and estimates.
|
|
57
|
+
Adapt the activity names to your project. Assignment tokens illustrate
|
|
58
|
+
inheriting the Story assignee and leaving verification unassigned.
|
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
formatVersion: "1.0"
|
|
2
2
|
name: "Feature Development"
|
|
3
|
-
description: "
|
|
3
|
+
description: "Example feature task breakdown with dependencies. Copy or extend it and adapt the steps to your work."
|
|
4
4
|
author: "Atomize"
|
|
5
|
-
tags: ["
|
|
5
|
+
tags: ["example", "feature"]
|
|
6
6
|
|
|
7
7
|
filter:
|
|
8
8
|
workItemTypes: ["User Story"]
|
|
9
|
-
states: ["New", "Active", "Approved"]
|
|
10
9
|
excludeIfHasTasks: true
|
|
11
10
|
|
|
12
11
|
tasks:
|
|
13
12
|
- id: "design"
|
|
14
13
|
title: "Design: ${story.title}"
|
|
15
|
-
description: "
|
|
14
|
+
description: "Describe the intended outcome and an approach suited to this change."
|
|
16
15
|
estimationPercent: 15
|
|
17
16
|
activity: "Design"
|
|
18
17
|
assignTo: "@ParentAssignee"
|
|
@@ -26,10 +25,11 @@ tasks:
|
|
|
26
25
|
dependsOn: ["design"]
|
|
27
26
|
|
|
28
27
|
- id: "review"
|
|
29
|
-
title: "
|
|
30
|
-
description: "Review the
|
|
28
|
+
title: "Review: ${story.title}"
|
|
29
|
+
description: "Review the change and address feedback relevant to your project."
|
|
31
30
|
estimationPercent: 10
|
|
32
31
|
activity: "Development"
|
|
32
|
+
assignTo: "@Unassigned"
|
|
33
33
|
dependsOn: ["implement"]
|
|
34
34
|
|
|
35
35
|
- id: "test"
|
|
@@ -37,13 +37,15 @@ tasks:
|
|
|
37
37
|
description: "Write and execute tests to validate the feature against acceptance criteria."
|
|
38
38
|
estimationPercent: 20
|
|
39
39
|
activity: "Testing"
|
|
40
|
+
assignTo: "@Unassigned"
|
|
40
41
|
dependsOn: ["implement"]
|
|
41
42
|
|
|
42
43
|
- id: "deploy"
|
|
43
|
-
title: "
|
|
44
|
-
description: "
|
|
44
|
+
title: "Deliver: ${story.title}"
|
|
45
|
+
description: "Complete the handoff or release steps relevant to this change."
|
|
45
46
|
estimationPercent: 5
|
|
46
47
|
activity: "Development"
|
|
48
|
+
assignTo: "@ParentAssignee"
|
|
47
49
|
dependsOn: ["test", "review"]
|
|
48
50
|
|
|
49
51
|
estimation:
|
|
@@ -51,5 +53,17 @@ estimation:
|
|
|
51
53
|
rounding: "none"
|
|
52
54
|
ifParentHasNoEstimation: "warn"
|
|
53
55
|
|
|
56
|
+
# Example authoring checks; adjust when adding or removing tasks or Mixins.
|
|
54
57
|
validation:
|
|
55
58
|
totalEstimationMustBe: 100
|
|
59
|
+
minTasks: 1
|
|
60
|
+
maxTasks: 10
|
|
61
|
+
|
|
62
|
+
metadata:
|
|
63
|
+
category: "Examples"
|
|
64
|
+
estimationGuidelines: "The percentages are illustrative; adjust them to reflect your work."
|
|
65
|
+
notes: |
|
|
66
|
+
These steps demonstrate task dependencies, not a required delivery process.
|
|
67
|
+
Copy and adapt the Work Item type, tasks, dependencies, and estimates.
|
|
68
|
+
Activities and assignment tokens are examples. Match activities to your
|
|
69
|
+
project and choose which tasks inherit the Story assignee or stay unassigned.
|