@sppg2001/atomize 2.0.0-alpha.0 → 2.0.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/README.md +94 -555
- package/{templates/mixins/docs.yaml → catalog/mixins/documentation.atomize.yaml} +1 -1
- package/{templates/mixins/security.yaml → catalog/mixins/security-review.atomize.yaml} +1 -1
- package/{templates/mixins/testing.yaml → catalog/mixins/test-coverage.atomize.yaml} +1 -1
- package/{templates/templates/custom-saved-query.yaml → catalog/templates/agile-story-breakdown-saved-query.atomize.yaml} +2 -2
- package/{templates/templates/custom.yaml → catalog/templates/agile-story-breakdown.atomize.yaml} +2 -2
- package/{templates/templates/bug.yaml → catalog/templates/bug-fix.atomize.yaml} +1 -1
- package/{templates/templates/feature.yaml → catalog/templates/feature-development.atomize.yaml} +1 -1
- package/dist/cli/index.js +89700 -88084
- package/package.json +13 -13
- package/LICENSE +0 -21
- package/docs/Auth-Guide.md +0 -257
- package/docs/Cli-Reference.md +0 -962
- package/docs/Common-Validation-Errors.md +0 -556
- package/docs/Getting-Started.md +0 -540
- package/docs/Platform-Guide.md +0 -662
- package/docs/Story-Learner.md +0 -324
- package/docs/Template-Reference.md +0 -743
- package/docs/Validation-Modes.md +0 -252
- package/docs/template-wizard-guide.md +0 -738
- package/examples/README.md +0 -220
- package/examples/advanced-filtering.yaml +0 -113
- package/examples/backend.yaml +0 -124
- package/examples/conditional-dependencies-template.yaml +0 -145
- package/examples/conditional-percentage-template.yaml +0 -167
- package/examples/frontend.yaml +0 -123
- package/examples/fullstack.yaml +0 -167
- /package/{templates/templates/backend-api.yaml → catalog/templates/backend-api.atomize.yaml} +0 -0
|
@@ -1,738 +0,0 @@
|
|
|
1
|
-
# Template Creation Wizard - User Guide
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
The Template Creation Wizard is an interactive command-line tool that helps you create production-ready task templates for Atomize. It guides you through a step-by-step process to configure all aspects of your template without requiring any prior knowledge of YAML structure.
|
|
6
|
-
|
|
7
|
-
## Features
|
|
8
|
-
|
|
9
|
-
✅ **Interactive Step-by-Step Wizard** - Six clear steps guide you through template creation
|
|
10
|
-
✅ **Input Validation** - All inputs are validated in real-time with helpful error messages
|
|
11
|
-
✅ **Preview Before Saving** - Review and edit your template before committing
|
|
12
|
-
✅ **Error Recovery** - Cancel at any step or retry on errors
|
|
13
|
-
|
|
14
|
-
## Creation Modes
|
|
15
|
-
|
|
16
|
-
`template create` supports four modes. If you run it without flags, you are prompted to pick one:
|
|
17
|
-
|
|
18
|
-
| Mode | Flag | Best for |
|
|
19
|
-
|------|------|----------|
|
|
20
|
-
| From existing template | `--from <name>` | Customizing a built-in or team template |
|
|
21
|
-
| AI-assisted | `--ai` | Generating a first draft from a plain-language description |
|
|
22
|
-
| Story Learner | `--from-stories <ids>` | Capturing proven patterns from real work items |
|
|
23
|
-
| From scratch | `--scratch` | Full control via the interactive wizard |
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## From an Existing Template
|
|
28
|
-
|
|
29
|
-
Start from a built-in or previously installed catalog template and customise it. This is the quickest way to create a team-specific variant of a standard template.
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
# See what's available
|
|
33
|
-
atomize template list
|
|
34
|
-
|
|
35
|
-
# Copy backend-api as a starting point
|
|
36
|
-
atomize template create --from backend-api
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
The wizard opens pre-populated with the source template's tasks, filter, and estimation settings. Edit what you need and save under a new name.
|
|
40
|
-
|
|
41
|
-
```bash
|
|
42
|
-
# Skip the mode prompt and go straight to the wizard with a pre-filled template
|
|
43
|
-
atomize template create --from backend-api --save-as my-backend-api
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
> **Migrating from v1?** The `--preset` flag was replaced by `--from` in v2. `--from backend-api` is the direct equivalent of the old `--preset backend-api`.
|
|
47
|
-
|
|
48
|
-
---
|
|
49
|
-
|
|
50
|
-
## AI-Assisted Generation
|
|
51
|
-
|
|
52
|
-
Describe the template you need in plain language and let the AI generate a first draft. You review, validate, and refine the result — the AI handles the structural boilerplate.
|
|
53
|
-
|
|
54
|
-
### Prerequisites
|
|
55
|
-
|
|
56
|
-
You need a **GitHub Models** connection profile:
|
|
57
|
-
|
|
58
|
-
```bash
|
|
59
|
-
atomize auth add my-ai
|
|
60
|
-
# When prompted for profile type, select: GitHub Models
|
|
61
|
-
# Enter your GitHub personal access token (models:read scope required)
|
|
62
|
-
atomize auth test my-ai
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
### Basic AI generation
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
atomize template create --ai
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
You will be prompted to describe the template you want. Example prompt:
|
|
72
|
-
|
|
73
|
-
```
|
|
74
|
-
Describe the template:
|
|
75
|
-
› A template for backend API stories. Tasks should cover API design,
|
|
76
|
-
database schema, core implementation, unit tests, integration tests,
|
|
77
|
-
and a code review. Estimation split should reflect that implementation
|
|
78
|
-
takes roughly twice the time of testing.
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
Atomize sends your description to GitHub Models and returns a ready-to-review YAML template. You can accept it, edit it in the wizard, or regenerate with a refined prompt.
|
|
82
|
-
|
|
83
|
-
### Grounded generation
|
|
84
|
-
|
|
85
|
-
Pass `--ground` to give the AI additional context from your actual Azure DevOps workspace — field names, common tags, work item types, and past story patterns. This produces output that fits your team's conventions without manual editing.
|
|
86
|
-
|
|
87
|
-
```bash
|
|
88
|
-
atomize template create --ai --ground --profile work-ado
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
Use `--ground` when:
|
|
92
|
-
- Your ADO project uses custom fields or non-standard work item types
|
|
93
|
-
- You want task titles and activity types to match your team's existing naming
|
|
94
|
-
- You are generating a template that will run against real stories (not mock)
|
|
95
|
-
|
|
96
|
-
Skip `--ground` when:
|
|
97
|
-
- You are prototyping a generic template for testing
|
|
98
|
-
- You do not have an ADO profile configured yet
|
|
99
|
-
|
|
100
|
-
### Specifying an AI profile
|
|
101
|
-
|
|
102
|
-
If you have more than one GitHub Models profile, pass `--ai-profile` to select one:
|
|
103
|
-
|
|
104
|
-
```bash
|
|
105
|
-
atomize template create --ai --ai-profile my-ai
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
You can also set `ATOMIZE_AI_PROFILE` to avoid passing the flag every time.
|
|
109
|
-
|
|
110
|
-
### Post-generation workflow
|
|
111
|
-
|
|
112
|
-
AI-generated templates are a starting point, not a finished product. Always:
|
|
113
|
-
|
|
114
|
-
1. **Review the generated YAML** — the wizard shows a full preview before saving.
|
|
115
|
-
2. **Validate:**
|
|
116
|
-
```bash
|
|
117
|
-
atomize validate template:<name> --strict
|
|
118
|
-
```
|
|
119
|
-
3. **Test with mock data:**
|
|
120
|
-
```bash
|
|
121
|
-
atomize generate template:<name> --platform mock
|
|
122
|
-
```
|
|
123
|
-
4. **Refine** — common things to adjust: estimation splits, task titles, filter criteria, `condition` fields.
|
|
124
|
-
|
|
125
|
-
### Troubleshooting
|
|
126
|
-
|
|
127
|
-
**"No GitHub Models profile found"**
|
|
128
|
-
|
|
129
|
-
You have not yet added a GitHub Models profile. Run `atomize auth add` and select GitHub Models as the profile type.
|
|
130
|
-
|
|
131
|
-
**"AI generation failed"**
|
|
132
|
-
|
|
133
|
-
- Run `atomize auth test <profile>` to verify the token is valid.
|
|
134
|
-
- GitHub Models may be rate-limiting your token — wait a moment and retry.
|
|
135
|
-
- If the error persists, try without `--ground` to rule out an ADO connectivity issue.
|
|
136
|
-
|
|
137
|
-
**"Generated template does not validate"**
|
|
138
|
-
|
|
139
|
-
The AI occasionally produces YAML that fails strict validation (e.g. estimation not summing to 100%). Open the template for editing from the preview screen and fix the flagged fields.
|
|
140
|
-
|
|
141
|
-
---
|
|
142
|
-
|
|
143
|
-
## Getting Started
|
|
144
|
-
|
|
145
|
-
### Basic Usage
|
|
146
|
-
|
|
147
|
-
```bash
|
|
148
|
-
# Start the template creation wizard
|
|
149
|
-
atomize template create --scratch
|
|
150
|
-
|
|
151
|
-
# Or use the interactive mode selector
|
|
152
|
-
atomize template create
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
## Wizard Steps
|
|
156
|
-
|
|
157
|
-
### Step 1: Basic Information
|
|
158
|
-
|
|
159
|
-
Configure the fundamental properties of your template:
|
|
160
|
-
|
|
161
|
-
- **Template Name** (required, max 200 chars)
|
|
162
|
-
- Choose a clear, descriptive name
|
|
163
|
-
- Example: "Backend API Development"
|
|
164
|
-
|
|
165
|
-
- **Description** (optional, max 500 chars)
|
|
166
|
-
- Detailed explanation of what this template is for
|
|
167
|
-
- Example: "Template for developing RESTful API endpoints with tests"
|
|
168
|
-
|
|
169
|
-
- **Author** (optional)
|
|
170
|
-
- Your name or team name
|
|
171
|
-
- Default: "Atomize"
|
|
172
|
-
|
|
173
|
-
- **Tags** (optional)
|
|
174
|
-
- Comma-separated tags for categorization
|
|
175
|
-
- Example: "backend, api, development"
|
|
176
|
-
|
|
177
|
-
**Validation:**
|
|
178
|
-
- Template name cannot be empty
|
|
179
|
-
- All fields respect maximum character limits
|
|
180
|
-
|
|
181
|
-
### Step 2: Filter Configuration
|
|
182
|
-
|
|
183
|
-
Define which work items this template applies to.
|
|
184
|
-
|
|
185
|
-
The wizard first asks **how you want to select work items**:
|
|
186
|
-
|
|
187
|
-
```
|
|
188
|
-
How do you want to select work items?
|
|
189
|
-
› Build a filter — choose types, states, tags, etc.
|
|
190
|
-
Use a saved query — reference an existing Azure DevOps query by ID or path
|
|
191
|
-
```
|
|
192
|
-
|
|
193
|
-
---
|
|
194
|
-
|
|
195
|
-
#### Option A: Build a filter (structured)
|
|
196
|
-
|
|
197
|
-
**Basic Filters:**
|
|
198
|
-
- **Work Item Types** - Select from common types or add custom ones
|
|
199
|
-
- User Story, Bug, Task, Epic, Feature, Issue
|
|
200
|
-
|
|
201
|
-
- **States** - Select which work item states should match
|
|
202
|
-
- New, Active, Removed, Resolved, Closed
|
|
203
|
-
|
|
204
|
-
- **Exclude if has tasks** - Prevent applying to items that already have tasks
|
|
205
|
-
|
|
206
|
-
**Advanced Filters:**
|
|
207
|
-
- Area paths
|
|
208
|
-
- Iterations
|
|
209
|
-
- Assigned to (email addresses)
|
|
210
|
-
- Priority range (1-4)
|
|
211
|
-
- Tags (include/exclude)
|
|
212
|
-
- Custom fields
|
|
213
|
-
- Custom WIQL query
|
|
214
|
-
|
|
215
|
-
---
|
|
216
|
-
|
|
217
|
-
#### Option B: Use a saved query
|
|
218
|
-
|
|
219
|
-
Reference an existing flat query saved in your Azure DevOps project. Atomize fetches the query's WIQL at run time and applies any supported post-filters on top of it.
|
|
220
|
-
|
|
221
|
-
**Prompts:**
|
|
222
|
-
|
|
223
|
-
1. **Reference by path or ID?**
|
|
224
|
-
```
|
|
225
|
-
How do you want to reference the saved query?
|
|
226
|
-
› By path — e.g. Shared Queries/My Team/Open Stories
|
|
227
|
-
By ID — paste the query's UUID
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
2. **Query path** (if path selected)
|
|
231
|
-
```
|
|
232
|
-
Saved query path:
|
|
233
|
-
› Shared Queries/My Team/Open Stories
|
|
234
|
-
```
|
|
235
|
-
Run `atomize queries list` beforehand to discover available paths.
|
|
236
|
-
|
|
237
|
-
3. **Query ID** (if ID selected)
|
|
238
|
-
```
|
|
239
|
-
Saved query ID (UUID):
|
|
240
|
-
› xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
|
|
241
|
-
```
|
|
242
|
-
Must be a valid UUID v4 (format: `xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx`).
|
|
243
|
-
Run `atomize queries list` to copy the exact ID from the table.
|
|
244
|
-
|
|
245
|
-
4. **Exclude if has tasks** - Prevent applying to items that already have tasks
|
|
246
|
-
(Available even when using a saved query.)
|
|
247
|
-
|
|
248
|
-
> **Tip:** Run `atomize queries list` to see all saved queries with their paths and IDs before creating a template.
|
|
249
|
-
> ```bash
|
|
250
|
-
> atomize queries list
|
|
251
|
-
> atomize queries list --folder "Shared Queries/My Team"
|
|
252
|
-
> ```
|
|
253
|
-
|
|
254
|
-
**Rules:**
|
|
255
|
-
- The referenced query must be a **flat list** query (not a tree or direct-links query).
|
|
256
|
-
- The query must already exist in Azure DevOps — it is not created by Atomize.
|
|
257
|
-
- You cannot specify both a path and an ID; the wizard enforces this automatically.
|
|
258
|
-
|
|
259
|
-
---
|
|
260
|
-
|
|
261
|
-
**Validation:**
|
|
262
|
-
- Warning shown if no filters are configured
|
|
263
|
-
- Can continue with empty filter (will match all work items)
|
|
264
|
-
- Mixed use of a saved query and structured filter fields produces a warning at generate time
|
|
265
|
-
|
|
266
|
-
### Step 3: Task Configuration
|
|
267
|
-
|
|
268
|
-
Create the tasks that will be added to matching work items:
|
|
269
|
-
|
|
270
|
-
**For Each Task:**
|
|
271
|
-
- **Task ID** (optional, max 30 chars)
|
|
272
|
-
- Unique identifier for dependencies
|
|
273
|
-
- Example: "design-api"
|
|
274
|
-
|
|
275
|
-
- **Title** (required, max 500 chars)
|
|
276
|
-
- Clear, actionable task name
|
|
277
|
-
- Example: "Design RESTful API endpoints"
|
|
278
|
-
|
|
279
|
-
- **Description** (optional, max 2000 chars)
|
|
280
|
-
- Detailed task description
|
|
281
|
-
|
|
282
|
-
- **Estimation Percentage** (0-100)
|
|
283
|
-
- What percentage of the story this task represents
|
|
284
|
-
- Will be normalized to 100% total
|
|
285
|
-
|
|
286
|
-
**Advanced Options** (optional):
|
|
287
|
-
- Assignment (@ParentAssignee or specific email)
|
|
288
|
-
- Activity type (Development, Testing, Design, etc.)
|
|
289
|
-
- Acceptance criteria (with optional checklist format)
|
|
290
|
-
- Tags
|
|
291
|
-
- Dependencies (task IDs this task depends on)
|
|
292
|
-
- Condition (structured task condition)
|
|
293
|
-
- Custom fields (browse ADO task fields and store them by reference name)
|
|
294
|
-
- Priority (1-4)
|
|
295
|
-
|
|
296
|
-
**Validation:**
|
|
297
|
-
- At least one task is required
|
|
298
|
-
- All tasks must have titles
|
|
299
|
-
- Estimation percentages validated (0-100)
|
|
300
|
-
- Dependencies must reference valid task IDs
|
|
301
|
-
|
|
302
|
-
**Custom field authoring:**
|
|
303
|
-
- The wizard can fetch available task fields from ADO and present them by display name
|
|
304
|
-
- Picklist fields use a constrained select prompt instead of free-form entry
|
|
305
|
-
- When the same field exists on the parent story, the wizard can insert `{{ story.customFields['Reference.Name'] }}` as the task value
|
|
306
|
-
- The saved template always stores the field reference name internally
|
|
307
|
-
|
|
308
|
-
**Normalization:**
|
|
309
|
-
If total estimation ≠ 100%, you'll be prompted to normalize:
|
|
310
|
-
```
|
|
311
|
-
Total estimation is 80% (should be 100%)
|
|
312
|
-
Normalize estimations to sum to 100%? (Y/n)
|
|
313
|
-
```
|
|
314
|
-
|
|
315
|
-
**Edge Cases Handled:**
|
|
316
|
-
- Single task → Automatically set to 100%
|
|
317
|
-
- All tasks at 0% → Distributed equally
|
|
318
|
-
- Decimal percentages → Rounded to integers
|
|
319
|
-
- Remainder → Added to last task to ensure exactly 100%
|
|
320
|
-
|
|
321
|
-
### Step 4: Estimation Settings
|
|
322
|
-
|
|
323
|
-
Configure how story points are calculated:
|
|
324
|
-
|
|
325
|
-
- **Estimation Strategy**: percentage (default)
|
|
326
|
-
- **Rounding**: nearest | up | down | none
|
|
327
|
-
- **Minimum Task Points**: Minimum points per task (0 for no minimum)
|
|
328
|
-
|
|
329
|
-
### Step 5: Validation Rules (Optional)
|
|
330
|
-
|
|
331
|
-
Add constraints to ensure template correctness:
|
|
332
|
-
|
|
333
|
-
**Total Estimation Validation:**
|
|
334
|
-
- Must equal 100%
|
|
335
|
-
- Range (e.g., 95-105%)
|
|
336
|
-
- No validation
|
|
337
|
-
|
|
338
|
-
**Task Count Limits:**
|
|
339
|
-
- Minimum number of tasks
|
|
340
|
-
- Maximum number of tasks
|
|
341
|
-
|
|
342
|
-
### Step 6: Metadata (Optional)
|
|
343
|
-
|
|
344
|
-
Add metadata to help others understand your template:
|
|
345
|
-
|
|
346
|
-
- **Category** - e.g., "Backend Development"
|
|
347
|
-
- **Difficulty** - beginner | intermediate | advanced
|
|
348
|
-
- **Recommended For** - Comma-separated list
|
|
349
|
-
- **Estimation Guidelines** - Free text guidance
|
|
350
|
-
|
|
351
|
-
## Preview and Save
|
|
352
|
-
|
|
353
|
-
After completing all steps, you'll see a formatted preview:
|
|
354
|
-
|
|
355
|
-
```
|
|
356
|
-
Template Preview
|
|
357
|
-
==================================================
|
|
358
|
-
|
|
359
|
-
Basic Information:
|
|
360
|
-
Name: Backend API Development
|
|
361
|
-
Description: Template for RESTful API development
|
|
362
|
-
Author: Development Team
|
|
363
|
-
Tags: backend, api
|
|
364
|
-
|
|
365
|
-
Filter Configuration:
|
|
366
|
-
Work Item Types: User Story
|
|
367
|
-
States: New, Active
|
|
368
|
-
Excludes items that already have tasks
|
|
369
|
-
|
|
370
|
-
Tasks (4):
|
|
371
|
-
1. Design API endpoints [20%] ████
|
|
372
|
-
Design RESTful API endpoints
|
|
373
|
-
2. Implement endpoints [40%] ████████
|
|
374
|
-
Implement API endpoints with validation
|
|
375
|
-
3. Write tests [25%] █████
|
|
376
|
-
Write unit and integration tests
|
|
377
|
-
4. Documentation [15%] ███
|
|
378
|
-
Document API endpoints and usage
|
|
379
|
-
|
|
380
|
-
Total Estimation: 100% ✓
|
|
381
|
-
|
|
382
|
-
Estimation Settings:
|
|
383
|
-
Rounding: nearest
|
|
384
|
-
|
|
385
|
-
What would you like to do?
|
|
386
|
-
› Save template
|
|
387
|
-
View full YAML
|
|
388
|
-
Edit template
|
|
389
|
-
Cancel
|
|
390
|
-
```
|
|
391
|
-
|
|
392
|
-
### Preview Actions
|
|
393
|
-
|
|
394
|
-
1. **Save template** - Proceed to final save confirmation
|
|
395
|
-
2. **View full YAML** - See the complete YAML representation
|
|
396
|
-
3. **Edit template** - Modify any section before saving
|
|
397
|
-
4. **Cancel** - Abort template creation
|
|
398
|
-
|
|
399
|
-
### Edit Mode
|
|
400
|
-
|
|
401
|
-
If you choose "Edit template", you can modify:
|
|
402
|
-
- Basic Information
|
|
403
|
-
- Filter Configuration
|
|
404
|
-
- Tasks (replaces all tasks)
|
|
405
|
-
- Estimation Settings
|
|
406
|
-
- Validation Rules
|
|
407
|
-
- Metadata
|
|
408
|
-
|
|
409
|
-
After editing, you'll return to the preview.
|
|
410
|
-
|
|
411
|
-
### Final Confirmation
|
|
412
|
-
|
|
413
|
-
Before saving, one final prompt:
|
|
414
|
-
|
|
415
|
-
```
|
|
416
|
-
📋 Final confirmation before saving...
|
|
417
|
-
|
|
418
|
-
Save this template? (Y/n)
|
|
419
|
-
```
|
|
420
|
-
|
|
421
|
-
## Edge Cases and Limits
|
|
422
|
-
|
|
423
|
-
### Character Limits
|
|
424
|
-
- Template name: 200 characters
|
|
425
|
-
- Template description: 500 characters
|
|
426
|
-
- Task title: 500 characters
|
|
427
|
-
- Task description: 2000 characters
|
|
428
|
-
- Task ID: 30 characters
|
|
429
|
-
|
|
430
|
-
### Special Characters
|
|
431
|
-
All special characters are supported:
|
|
432
|
-
- Unicode characters (你好, emoji)
|
|
433
|
-
- HTML-like content (escaped automatically)
|
|
434
|
-
- Quotes (single and double)
|
|
435
|
-
- Special symbols (!@#$%^&*)
|
|
436
|
-
|
|
437
|
-
### Maximum Limits
|
|
438
|
-
- Tasks: No hard limit, but warning shown after 20 tasks
|
|
439
|
-
- Tags: No limit
|
|
440
|
-
- Acceptance criteria: No limit
|
|
441
|
-
- Dependencies: No limit (must be valid task IDs)
|
|
442
|
-
|
|
443
|
-
### Estimation Edge Cases
|
|
444
|
-
|
|
445
|
-
#### Single Task with 100%
|
|
446
|
-
```
|
|
447
|
-
Input: 1 task with 50%
|
|
448
|
-
Output: 1 task with 100%
|
|
449
|
-
```
|
|
450
|
-
|
|
451
|
-
#### Multiple Tasks with 0%
|
|
452
|
-
```
|
|
453
|
-
Input: 3 tasks with 0% each
|
|
454
|
-
Output: Tasks with 34%, 33%, 33%
|
|
455
|
-
```
|
|
456
|
-
|
|
457
|
-
#### Decimal Percentages
|
|
458
|
-
```
|
|
459
|
-
Input: 3 tasks with 33.33% each
|
|
460
|
-
Output: Tasks with 33%, 33%, 34% (totaling 100%)
|
|
461
|
-
```
|
|
462
|
-
|
|
463
|
-
#### Very Small Values
|
|
464
|
-
```
|
|
465
|
-
Input: 3 tasks with 0.1%, 0.2%, 0.3%
|
|
466
|
-
Output: Tasks scaled proportionally to 100%
|
|
467
|
-
```
|
|
468
|
-
|
|
469
|
-
## Error Handling
|
|
470
|
-
|
|
471
|
-
### Validation Errors
|
|
472
|
-
|
|
473
|
-
Clear error messages for all validation failures:
|
|
474
|
-
|
|
475
|
-
```
|
|
476
|
-
✗ Configuration error: At least one task is required.
|
|
477
|
-
Please add tasks to your template.
|
|
478
|
-
```
|
|
479
|
-
|
|
480
|
-
```
|
|
481
|
-
✗ Configuration error: Template name is required
|
|
482
|
-
```
|
|
483
|
-
|
|
484
|
-
```
|
|
485
|
-
✗ Configuration error: 2 task(s) are missing titles.
|
|
486
|
-
All tasks must have a title.
|
|
487
|
-
```
|
|
488
|
-
|
|
489
|
-
### Cancellation
|
|
490
|
-
|
|
491
|
-
You can cancel at any step:
|
|
492
|
-
|
|
493
|
-
```
|
|
494
|
-
⚠ Template creation cancelled
|
|
495
|
-
```
|
|
496
|
-
|
|
497
|
-
No files are created or modified when you cancel.
|
|
498
|
-
|
|
499
|
-
### Retry on Error
|
|
500
|
-
|
|
501
|
-
If an error occurs during task configuration, you'll be prompted:
|
|
502
|
-
|
|
503
|
-
```
|
|
504
|
-
Error configuring tasks: [error message]
|
|
505
|
-
|
|
506
|
-
Try again? (Y/n)
|
|
507
|
-
```
|
|
508
|
-
|
|
509
|
-
## Examples
|
|
510
|
-
|
|
511
|
-
### Example 1: Simple Backend Template
|
|
512
|
-
|
|
513
|
-
```bash
|
|
514
|
-
atomize template create --scratch
|
|
515
|
-
|
|
516
|
-
# Step 1: Basic Information
|
|
517
|
-
Template name: Backend API
|
|
518
|
-
Description: Simple backend API development
|
|
519
|
-
Author: Dev Team
|
|
520
|
-
Tags: backend, api
|
|
521
|
-
|
|
522
|
-
# Step 2: Filter
|
|
523
|
-
Work Item Types: [User Story]
|
|
524
|
-
States: [New, Active]
|
|
525
|
-
Exclude if has tasks: Yes
|
|
526
|
-
|
|
527
|
-
# Step 3: Tasks
|
|
528
|
-
Task 1:
|
|
529
|
-
Title: Design API
|
|
530
|
-
Estimation: 30%
|
|
531
|
-
|
|
532
|
-
Task 2:
|
|
533
|
-
Title: Implement API
|
|
534
|
-
Estimation: 50%
|
|
535
|
-
|
|
536
|
-
Task 3:
|
|
537
|
-
Title: Write Tests
|
|
538
|
-
Estimation: 20%
|
|
539
|
-
|
|
540
|
-
# Normalize? Yes
|
|
541
|
-
# → Tasks normalized to 30%, 50%, 20% (already 100%)
|
|
542
|
-
|
|
543
|
-
# Step 4: Estimation
|
|
544
|
-
Rounding: nearest
|
|
545
|
-
Minimum points: 0
|
|
546
|
-
|
|
547
|
-
# Step 5: Validation
|
|
548
|
-
Add validation? No
|
|
549
|
-
|
|
550
|
-
# Step 6: Metadata
|
|
551
|
-
Add metadata? No
|
|
552
|
-
|
|
553
|
-
# Preview → Save → Confirm
|
|
554
|
-
```
|
|
555
|
-
|
|
556
|
-
### Example 2: Saved Query Filter
|
|
557
|
-
|
|
558
|
-
```bash
|
|
559
|
-
atomize queries list --folder "Shared Queries"
|
|
560
|
-
|
|
561
|
-
atomize template create --scratch
|
|
562
|
-
|
|
563
|
-
# Step 2: Filter Configuration
|
|
564
|
-
How do you want to select work items?
|
|
565
|
-
› Use a saved query
|
|
566
|
-
|
|
567
|
-
Reference by path or ID?
|
|
568
|
-
› By path
|
|
569
|
-
|
|
570
|
-
Saved query path:
|
|
571
|
-
› Shared Queries/My Team/Open Stories
|
|
572
|
-
|
|
573
|
-
Exclude if has tasks: Yes
|
|
574
|
-
|
|
575
|
-
# Continue with Steps 3–6 as normal
|
|
576
|
-
```
|
|
577
|
-
|
|
578
|
-
The generated YAML will include:
|
|
579
|
-
|
|
580
|
-
```yaml
|
|
581
|
-
filter:
|
|
582
|
-
savedQuery:
|
|
583
|
-
path: "Shared Queries/My Team/Open Stories"
|
|
584
|
-
excludeIfHasTasks: true
|
|
585
|
-
```
|
|
586
|
-
|
|
587
|
-
---
|
|
588
|
-
|
|
589
|
-
### Example 3: Complex Template with Dependencies
|
|
590
|
-
|
|
591
|
-
```bash
|
|
592
|
-
atomize template create --scratch
|
|
593
|
-
|
|
594
|
-
# Step 3: Tasks with dependencies
|
|
595
|
-
Task 1:
|
|
596
|
-
ID: design
|
|
597
|
-
Title: API Design
|
|
598
|
-
Estimation: 20%
|
|
599
|
-
Advanced: Yes
|
|
600
|
-
Activity: Design
|
|
601
|
-
|
|
602
|
-
Task 2:
|
|
603
|
-
ID: implement
|
|
604
|
-
Title: Implementation
|
|
605
|
-
Estimation: 40%
|
|
606
|
-
Advanced: Yes
|
|
607
|
-
Depends on: design
|
|
608
|
-
Activity: Development
|
|
609
|
-
|
|
610
|
-
Task 3:
|
|
611
|
-
ID: test
|
|
612
|
-
Title: Testing
|
|
613
|
-
Estimation: 30%
|
|
614
|
-
Advanced: Yes
|
|
615
|
-
Depends on: implement
|
|
616
|
-
Activity: Testing
|
|
617
|
-
Acceptance criteria:
|
|
618
|
-
- All endpoints return correct status codes
|
|
619
|
-
- All edge cases are covered
|
|
620
|
-
Display as checklist: Yes
|
|
621
|
-
|
|
622
|
-
Task 4:
|
|
623
|
-
ID: docs
|
|
624
|
-
Title: Documentation
|
|
625
|
-
Estimation: 10%
|
|
626
|
-
Advanced: Yes
|
|
627
|
-
Depends on: implement
|
|
628
|
-
Activity: Documentation
|
|
629
|
-
```
|
|
630
|
-
|
|
631
|
-
## Best Practices
|
|
632
|
-
|
|
633
|
-
### Naming
|
|
634
|
-
- Use descriptive, specific names
|
|
635
|
-
- Include the domain/area (e.g., "Backend", "Frontend", "DevOps")
|
|
636
|
-
- Keep names concise but meaningful
|
|
637
|
-
|
|
638
|
-
### Task Breakdown
|
|
639
|
-
- Break work into 3-8 tasks typically
|
|
640
|
-
- Each task should be independently testable
|
|
641
|
-
- Use task IDs for dependencies
|
|
642
|
-
- Set realistic estimation percentages
|
|
643
|
-
|
|
644
|
-
### Filters
|
|
645
|
-
- Be specific to avoid accidental matches
|
|
646
|
-
- Use "excludeIfHasTasks" to prevent duplicate applications
|
|
647
|
-
- Test filters with your actual work items
|
|
648
|
-
- Prefer **saved queries** when your team already maintains a query in Azure DevOps — it keeps filter logic in one place
|
|
649
|
-
- Run `atomize queries list` to explore available queries before creating a template
|
|
650
|
-
|
|
651
|
-
### Estimation
|
|
652
|
-
- Use percentage-based for flexibility
|
|
653
|
-
- Choose rounding strategy based on your workflow
|
|
654
|
-
- Consider setting minimum task points to avoid 0-point tasks
|
|
655
|
-
|
|
656
|
-
### Validation
|
|
657
|
-
- Use validation rules for critical templates
|
|
658
|
-
- Set task count limits for consistency
|
|
659
|
-
- Require 100% estimation for production templates
|
|
660
|
-
|
|
661
|
-
## Troubleshooting
|
|
662
|
-
|
|
663
|
-
### Template won't save
|
|
664
|
-
- Check for validation errors in preview
|
|
665
|
-
- Ensure at least one task exists
|
|
666
|
-
- Verify all required fields are filled
|
|
667
|
-
|
|
668
|
-
### Estimation doesn't sum to 100%
|
|
669
|
-
- Use the normalization feature when prompted
|
|
670
|
-
- Check for decimal values that may round incorrectly
|
|
671
|
-
- Verify all tasks have estimation percentages
|
|
672
|
-
|
|
673
|
-
### Dependencies not working
|
|
674
|
-
- Ensure task IDs are unique
|
|
675
|
-
- Check that dependent task IDs exist
|
|
676
|
-
- Dependencies must reference tasks in the same template
|
|
677
|
-
|
|
678
|
-
### Special characters causing issues
|
|
679
|
-
- All unicode and special characters are supported
|
|
680
|
-
- If issues persist, check your terminal encoding
|
|
681
|
-
|
|
682
|
-
## Command-Line Options
|
|
683
|
-
|
|
684
|
-
| Flag | Description |
|
|
685
|
-
|------|-------------|
|
|
686
|
-
| `--from <name>` | Start from an existing catalog template |
|
|
687
|
-
| `--from-stories <ids>` | Learn from existing stories (comma-separated IDs) |
|
|
688
|
-
| `--ai` | AI-assisted generation |
|
|
689
|
-
| `--ground` | Ground AI generation with ADO workspace context (requires `--ai`) |
|
|
690
|
-
| `--ai-profile <name>` | GitHub Models profile to use for AI (uses default if omitted) |
|
|
691
|
-
| `--scratch` | Go directly to the interactive wizard |
|
|
692
|
-
| `--type <type>` | Create a `template` or `mixin` |
|
|
693
|
-
| `--save-as <name>` | Catalog name for the saved result |
|
|
694
|
-
| `--profile <name>` | ADO profile for `--from-stories` and field suggestions |
|
|
695
|
-
|
|
696
|
-
## Related Commands
|
|
697
|
-
|
|
698
|
-
```bash
|
|
699
|
-
# List available catalog templates and mixins
|
|
700
|
-
atomize template list
|
|
701
|
-
|
|
702
|
-
# Validate a template before using it
|
|
703
|
-
atomize validate template:<name> --strict
|
|
704
|
-
|
|
705
|
-
# Test with mock data (no ADO connection needed)
|
|
706
|
-
atomize generate template:<name> --platform mock
|
|
707
|
-
|
|
708
|
-
# Generate for real
|
|
709
|
-
atomize generate template:<name> --execute
|
|
710
|
-
|
|
711
|
-
# Discover saved queries (useful before configuring a savedQuery filter)
|
|
712
|
-
atomize queries list
|
|
713
|
-
atomize queries list --folder "Shared Queries/My Team"
|
|
714
|
-
```
|
|
715
|
-
|
|
716
|
-
After creating your template:
|
|
717
|
-
|
|
718
|
-
1. **Validate it:**
|
|
719
|
-
```bash
|
|
720
|
-
atomize validate template:<name> --strict
|
|
721
|
-
```
|
|
722
|
-
|
|
723
|
-
2. **Test with mock data:**
|
|
724
|
-
```bash
|
|
725
|
-
atomize generate template:<name> --platform mock
|
|
726
|
-
```
|
|
727
|
-
|
|
728
|
-
3. **Review generated tasks** before applying to production:
|
|
729
|
-
```bash
|
|
730
|
-
atomize generate template:<name> --verbose
|
|
731
|
-
```
|
|
732
|
-
|
|
733
|
-
## Support
|
|
734
|
-
|
|
735
|
-
For issues or questions:
|
|
736
|
-
- GitHub: https://github.com/Simao-Pereira-Gomes/Atomize/issues
|
|
737
|
-
- Check validation output for detailed error messages
|
|
738
|
-
- Review the template YAML for syntax issues
|