@sppg2001/atomize 5.1.0 → 5.1.2

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/README.md CHANGED
@@ -1,11 +1,23 @@
1
1
  # Atomize CLI
2
2
 
3
- Atomize CLI turns stories into consistent child tasks using reusable YAML templates. It supports template validation, safe previews, confirmed task generation, connection profile management, template catalog operations, and CI/CD automation.
3
+ **Break down stories, build up velocity.**
4
4
 
5
- Atomize is designed around platform adapters. Today, connected generation supports Azure DevOps. Mock is available for offline testing.
5
+ Atomize turns Stories into consistent child Tasks using reusable YAML Templates. Capture your team's task breakdown once, then validate, preview, and reuse it from your terminal or CI/CD pipeline.
6
+
7
+ - Try built-in Templates offline with Mock Stories.
8
+ - Customize task titles, descriptions, conditions, dependencies, and estimation rules in YAML.
9
+ - Reuse Templates and Mixins from built-in, user, and project Catalogs.
10
+ - Draft and improve Templates with your GitHub Copilot account.
11
+ - Preview real Azure DevOps Stories before confirming task creation.
12
+
13
+ Connected generation currently supports **Azure DevOps**. Offline Validation and Mock Preview require no platform account or Connection Profile.
14
+
15
+ [Website and documentation](https://atomize-docs.pages.dev/) · [CLI quickstart](https://atomize-docs.pages.dev/getting-started/cli/) · [Source and issues](https://github.com/Simao-Pereira-Gomes/atomize)
6
16
 
7
17
  ## Install
8
18
 
19
+ Requires [Node.js](https://nodejs.org/) **22 or later** and npm.
20
+
9
21
  ```bash
10
22
  npm install -g @sppg2001/atomize
11
23
  ```
@@ -25,21 +37,28 @@ npx @sppg2001/atomize --help
25
37
 
26
38
  ## Quick Start
27
39
 
28
- Try Atomize without credentials:
40
+ ### Try it offline
41
+
42
+ The `backend-api` Template ships with the CLI. Validate it, then preview a task breakdown using a Mock Story:
29
43
 
30
44
  ```bash
31
45
  atomize validate template:backend-api
32
- atomize generate template:backend-api --platform mock
46
+ atomize preview template:backend-api \
47
+ --mock-story '{"id":"123","title":"Add password reset","estimation":8}'
33
48
  ```
34
49
 
35
- Connect Azure DevOps:
50
+ The preview returns three Tasks: define API behavior, implement the change, and verify it. The example Template converts the Story Estimate of 8 into a 32-hour budget and splits it 20% / 50% / 30%. Change the title or estimate and run it again to see the breakdown change. No Work Items are created.
51
+
52
+ ### Connect Azure DevOps
53
+
54
+ Add a Connection Profile using an Azure DevOps PAT with **Work Items read/write** access:
36
55
 
37
56
  ```bash
38
57
  atomize auth add work-ado
39
58
  atomize auth test work-ado
40
59
  ```
41
60
 
42
- Preview and then create tasks:
61
+ Preview real Stories, then create Tasks after reviewing the plan:
43
62
 
44
63
  ```bash
45
64
  # Dry run, no tasks created
@@ -49,6 +68,8 @@ atomize generate template:backend-api --profile work-ado
49
68
  atomize generate template:backend-api --profile work-ado --execute
50
69
  ```
51
70
 
71
+ Use `--story 123 456` to select specific Stories. See the [Auth Guide](https://atomize-docs.pages.dev/connections/profiles/) for PAT permissions, credential storage, and profile setup.
72
+
52
73
  ## Safety Model
53
74
 
54
75
  `atomize generate` is a dry run by default. It calculates the task plan but does not create tasks.
@@ -103,6 +124,20 @@ atomize fields list --type Task
103
124
  atomize queries list
104
125
  ```
105
126
 
127
+ ## AI-Assisted Authoring
128
+
129
+ Use your signed-in GitHub Copilot account to draft a Template from prose or review a proposed improvement to an existing one:
130
+
131
+ ```bash
132
+ atomize template create --ai
133
+ atomize template improve template:backend-api
134
+
135
+ # Draft with your team's written process as reference material
136
+ atomize template create --ai --reference docs/how-we-work.md
137
+ ```
138
+
139
+ AI authoring uses a separate Copilot Session; it does not require an Azure DevOps Connection Profile. You can explicitly add project context with `--ground --profile work-ado`. See [AI authoring](https://atomize-docs.pages.dev/cli/ai/) for sign-in, Reference Documents, and review workflows.
140
+
106
141
  ## CI/CD
107
142
 
108
143
  Validate first, then run live generation with explicit acknowledgement:
@@ -134,22 +169,23 @@ Validate first, then run live generation with explicit acknowledgement:
134
169
  --output report.json
135
170
  ```
136
171
 
137
- ## VS Code Extension
172
+ ## Desktop and Editor Workflows
138
173
 
139
- Prefer an editor workflow? Atomize also has a VS Code extension for YAML authoring, validation, mock/live preview, profile management, catalog browsing, and confirmed generation.
174
+ - **[Atomize Studio](https://github.com/Simao-Pereira-Gomes/atomize/blob/main/docs/Atomize-Studio.md)** is a standalone desktop app for visual Template authoring, Catalog management, and confirmed task generation. Download an installer via [Studio Releases](https://github.com/Simao-Pereira-Gomes/atomize/blob/main/docs/Studio-Releases.md).
175
+ - **[VS Code extension](https://atomize-docs.pages.dev/getting-started/vscode/)** provides YAML completions, schema hovers, diagnostics, Mock and Live Preview, and confirmed generation in your editor.
140
176
 
141
- See the [VS Code Extension Guide](https://github.com/Simao-Pereira-Gomes/atomize/blob/main/docs/VS-Code-Extension.md).
177
+ The CLI and Studio share Connection Profile metadata and compatible OS-keyring-backed tokens. VS Code manages its own profiles. See the [Auth Guide](https://atomize-docs.pages.dev/connections/profiles/#shared-between-the-cli-and-atomize-studio) for details.
142
178
 
143
179
  ## Documentation
144
180
 
145
- - [Product README](https://github.com/Simao-Pereira-Gomes/atomize#readme) - VS Code-first onboarding and product overview
146
- - [Documentation Index](https://github.com/Simao-Pereira-Gomes/atomize/blob/main/docs/README.md)
147
- - [Workflows](https://github.com/Simao-Pereira-Gomes/atomize/blob/main/docs/Workflows.md)
148
- - [CLI Reference](https://github.com/Simao-Pereira-Gomes/atomize/blob/main/docs/Cli-Reference.md)
149
- - [Template Creation](https://github.com/Simao-Pereira-Gomes/atomize/blob/main/docs/Template-Creation.md)
150
- - [Template Reference](https://github.com/Simao-Pereira-Gomes/atomize/blob/main/docs/Template-Reference.md)
151
- - [Auth Guide](https://github.com/Simao-Pereira-Gomes/atomize/blob/main/docs/Auth-Guide.md)
152
- - [Platform Guide](https://github.com/Simao-Pereira-Gomes/atomize/blob/main/docs/Platform-Guide.md)
181
+ - [Website and Documentation](https://atomize-docs.pages.dev/)
182
+ - [Workflows](https://atomize-docs.pages.dev/workflows/)
183
+ - [CLI Reference](https://atomize-docs.pages.dev/cli/reference/)
184
+ - [Template Creation](https://atomize-docs.pages.dev/catalog/create/)
185
+ - [Schema Reference](https://atomize-docs.pages.dev/reference/templates/schema/)
186
+ - [Template Reference](https://atomize-docs.pages.dev/reference/templates/)
187
+ - [Auth Guide](https://atomize-docs.pages.dev/connections/profiles/)
188
+ - [Platform Guide](https://atomize-docs.pages.dev/connections/)
153
189
 
154
190
  ## License
155
191
 
@@ -1,5 +1,7 @@
1
+ formatVersion: "1.0"
1
2
  name: "Documentation Tasks"
2
- description: "Standard documentation tasks. Mix into any template to ensure docs are part of the definition of done."
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: "@ParentAssignee"
18
+ assignTo: "@Unassigned"
@@ -1,16 +1,18 @@
1
+ formatVersion: "1.0"
1
2
  name: "Security Review Tasks"
2
- description: "Common security review tasks. Mix into any feature template to enforce a security gate."
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 the implementation for security vulnerabilities (OWASP Top 10, input validation, auth/authz, secrets handling)."
8
+ description: "Review security concerns relevant to the change, such as access control or handling sensitive data."
7
9
  estimationPercent: 10
8
- activity: "Design"
10
+ activity: "Development"
9
11
  assignTo: "@Unassigned"
10
12
 
11
13
  - id: "dependency-audit"
12
14
  title: "Dependency Audit: ${story.title}"
13
- description: "Audit third-party dependencies for known vulnerabilities (e.g. npm audit, OWASP Dependency-Check)."
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: "Expanded testing tasks. Mix into any template to enforce unit, integration, and E2E test coverage."
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. Aim for ≥80% coverage on changed code."
8
+ description: "Write unit tests covering the core logic and edge cases."
7
9
  estimationPercent: 15
8
10
  activity: "Testing"
9
- assignTo: "@ParentAssignee"
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
- dependsOn: ["unit-tests"]
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: "Agile story breakdown template. Handles dev stories, mixed dev+test stories, and test-only stories in a single template using conditional tasks and conditional estimation."
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
- areaPaths:
15
- - EA-RSP-Platform\Release 2 Team
16
- iterations:
17
- - "@CurrentIteration"
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
- - title: "Analysis & Playback"
21
- estimationPercent: 20
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
- all:
27
- - field: tags
28
- operator: not-contains
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
- - title: "Test Preparation"
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
- any:
143
- - field: tags
144
- operator: contains
145
- value: Testing Only
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
- minimumTaskEstimate: 0
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: "Agile Project"
54
+ category: "Examples"
209
55
  estimationGuidelines: |
210
- Handles three story archetypes in one template:
211
- - Dev and Test story (no special tag): dev tasks + test tasks, base percentages apply.
212
- - Testing Only / Test Only story: dev tasks skipped; Test Preparation gets 59.70%
213
- and Test Execution gets 40.30%.
214
- - Dev Only story: test tasks skipped
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: "Standard backend API development with database integration"
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: ["backend", "api", "database"]
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
- - title: "Design API Endpoints: ${story.title}"
16
- description: "Design REST API endpoints, request/response schemas, and error handling"
17
- estimationPercent: 15
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
- tags: ["design", "api"]
18
+ assignTo: "@ParentAssignee"
20
19
 
21
- - title: "Database Schema: ${story.title}"
22
- description: "Design and create database tables, migrations, and relationships"
23
- estimationPercent: 15
24
- activity: "Design"
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
- tags: ["implementation"]
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
- - title: "Integration Tests & Documentation"
40
- description: "API integration tests and OpenAPI/Swagger documentation"
41
- estimationPercent: 10
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
- tags: ["testing", "documentation"]
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
- minimumTaskEstimate: 0
45
+ ifParentHasNoEstimation: "warn"
46
+
47
+ validation:
48
+ totalEstimationMustBe: 100
55
49
 
56
50
  metadata:
57
- category: "Backend"
58
- estimationGuidelines: "Based on typical backend development workflows"
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: "Foundation for bug-fix templates. Extend this to inherit a standard investigation and fix task set."
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: ["template", "bug"]
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
- estimationPercent: 30
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
- estimationPercent: 40
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
- estimationPercent: 20
30
+ estimationFixed: 1
38
31
  activity: "Testing"
32
+ assignTo: "@Unassigned"
39
33
  dependsOn: ["fix"]
40
34
 
41
35
  - id: "close"
42
- title: "Close & Document: ${story.title}"
43
- description: "Update documentation, close the bug, and notify stakeholders."
44
- estimationPercent: 10
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
- estimation:
49
- strategy: "percentage"
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
- totalEstimationMustBe: 100
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.