@chris1807/claude-kit 2.1.50 → 2.1.51

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chris1807/claude-kit",
3
- "version": "2.1.50",
3
+ "version": "2.1.51",
4
4
  "description": "Claude Code starter kit for Azure DevOps teams — agents, hooks, MCP servers, slash commands, and end-to-end work item → PR → release → deploy workflow automation",
5
5
  "type": "module",
6
6
  "bin": {
@@ -330,19 +330,43 @@ Apply this pass to every section (Description, Acceptance Criteria, Steps to Rep
330
330
 
331
331
  The Step 3 draft is **one document for the user to read**, not the shape of one field. Before rendering, split it section by section and route each section to its own Azure DevOps field:
332
332
 
333
- | Draft section | Goes to | Notes |
334
- |---|---|---|
335
- | `### Description` | `System.Description` | Plus the mockup `<img>`, user-supplied images, `Production Impact` (Hot Fix), `Out of Scope`, and `Open Questions` |
336
- | `### Acceptance Criteria` | `Microsoft.VSTS.Common.AcceptanceCriteria` | **Never** also in the description |
337
- | `### Steps to Reproduce` | `Microsoft.VSTS.TCM.ReproSteps` (Bug / Hot Fix) | Falls back to the description only if the type doesn't expose the field |
338
- | `### Expected Behavior`, `### Actual Behavior` | `Microsoft.VSTS.TCM.ReproSteps` | Rendered beneath the repro steps |
339
- | `### Out of Scope`, `### Environment / Scope`, `### Open Questions` | `System.Description` | These keep their `<h3>` headings — they have no field of their own |
333
+ **Routing depends on the work item type, and the types do not carry the same fields.** This matters more than it looks: **Azure DevOps accepts a write to a field a type does not have.** The value persists and reads back over the API while no form ever renders it — nothing raises, nothing logs. So a wrong field here is invisible in exactly the way a bug report should never be.
334
+
335
+ Verify with `mcp__azure-devops__wit_work_item` (`action: get_type`) rather than assuming. In the CSI Development process:
336
+
337
+ **User Story** Description and Acceptance Criteria, as you would expect:
338
+
339
+ | Draft section | Goes to |
340
+ |---|---|
341
+ | `### Description` | `System.Description` — plus the mockup `<img>`, user-supplied images, `Out of Scope`, `Open Questions` |
342
+ | `### Acceptance Criteria` | `Microsoft.VSTS.Common.AcceptanceCriteria` — **never** also in the description |
343
+
344
+ **Bug** — its form renders only **Repro Steps** and **System Info**. It has **no Acceptance Criteria field**, and `System.Description` has **no control on the Bug form**, so anything routed there is invisible to a human reader:
345
+
346
+ | Draft section | Goes to |
347
+ |---|---|
348
+ | `### Description`, `### Steps to Reproduce`, `### Expected Behavior`, `### Actual Behavior`, `### Acceptance Criteria`, `### Open Questions` | `Microsoft.VSTS.TCM.ReproSteps` — composed into one document, each under its own `<h3>`, in that order |
349
+ | `### Environment / Scope` | `Microsoft.VSTS.TCM.SystemInfo` |
350
+ | (the same composed body) | `System.Description` — a labelled **duplicate**, for tools that read it without checking the type. Never unique content. |
351
+
352
+ Do **not** send `Microsoft.VSTS.Common.AcceptanceCriteria` on a Bug. Still *write* acceptance criteria — they go into the composed body, so the item is still estimable — just not into a field the type does not have.
353
+
354
+ **Hot Fix** — its form renders **Description** and **Repro Steps**. It has neither an Acceptance Criteria field nor a System Info field:
355
+
356
+ | Draft section | Goes to |
357
+ |---|---|
358
+ | `### Description`, `### Production Impact`, `### Open Questions` | `System.Description` |
359
+ | `### Steps to Reproduce`, `### Expected Behavior`, `### Actual Behavior`, `### Environment / Scope` | `Microsoft.VSTS.TCM.ReproSteps` |
360
+
361
+ **Omit an empty section entirely** — never emit a bare `<h3>` with nothing under it. A heading with no body reads as content that went missing.
340
362
 
341
363
  **The rendered `System.Description` must not contain an "Acceptance Criteria" heading or its criteria** — not as `<h3>`, not as `<strong>`, not as a bolded line, not "for readability", not "so it reads as a complete document". Azure DevOps renders the AC field as its own section on the work item form, so a copy in the description gives the reader two lists that drift apart while leaving the real field empty. It also breaks estimation: an empty AC field is exactly what `/quote`, `/quote-backlog`, and `/plan-backlog` read to decide an item can't be sized, so criteria in the wrong field make a fully-specified story look unestimable and bounce it back to its creator.
342
364
 
343
365
  **Drop the section's own heading when it becomes a field.** `Microsoft.VSTS.Common.AcceptanceCriteria` holds the criteria list alone — an `<ol>` or `<ul>`, not `<h3>Acceptance Criteria</h3>` followed by the list. Same for `ReproSteps`. The field label is already on the form.
344
366
 
345
- **Always write the AC field explicitly — never leave the placeholder.** Some process templates seed a new item's `Microsoft.VSTS.Common.AcceptanceCriteria` with tip text like `💡 Tip: Add "@serena rewrite" to Description for AI suggestions Define acceptance criteria: - [ ] - [ ] - [ ]`. That is a **placeholder, not content**, and it reads as non-empty to every downstream sweep — an item carrying it looks like it has acceptance criteria when it has none. Include the field in the create call for every Bug, Hot Fix, and User Story; writing it is what clears the placeholder.
367
+ **On a type that HAS the AC field, always write it explicitly — never leave the placeholder.** Some process templates seed a new item's `Microsoft.VSTS.Common.AcceptanceCriteria` with tip text like `💡 Tip: Add "@serena rewrite" to Description for AI suggestions Define acceptance criteria: - [ ] - [ ] - [ ]`. That is a **placeholder, not content**, and it reads as non-empty to every downstream sweep — an item carrying it looks like it has acceptance criteria when it has none. Writing the field is what clears the placeholder.
368
+
369
+ This applies to **User Story**. It does **not** apply to Bug or Hot Fix: neither type carries the field, so there is no placeholder to clear and the write would go into a hole. For those two, the criteria live in `ReproSteps` per the routing above — which is also what `/quote` and `/quote-backlog` read to decide a bug is estimable.
346
370
 
347
371
  ### Call the create API
348
372
 
@@ -352,20 +376,24 @@ Call `mcp__azure-devops__wit_create_work_item` with:
352
376
  - **workItemType**: `Feature`, `Bug`, `User Story`, or `Hot Fix` (two words, exact casing)
353
377
  - **title**: the approved title (with prefix)
354
378
  - **fields**: a JSON Patch document setting:
355
- - `System.Description` — the rendered HTML description (with embedded mockup `<img>` and any user-supplied images)
356
- - `Microsoft.VSTS.Common.AcceptanceCriteria` — the rendered criteria list and **only** the criteria (no `<h3>Acceptance Criteria</h3>` wrapper, and no copy of it in `System.Description`). Always include this field for a Bug, Hot Fix, or User Story writing it is what clears the process template's placeholder tip
379
+ - `System.Description` — the rendered HTML description (with embedded mockup `<img>` and any user-supplied images). On a **Bug** this is the labelled duplicate of the composed body, not the description alone
380
+ - `Microsoft.VSTS.Common.AcceptanceCriteria` — **User Story only.** The rendered criteria list and **only** the criteria (no `<h3>Acceptance Criteria</h3>` wrapper, and no copy of it in `System.Description`); writing it is what clears the process template's placeholder tip. **Do not send this field on a Bug or a Hot Fix** — neither type has it
357
381
  - `Microsoft.VSTS.Scheduling.StoryPoints` — the points agreed in Step 4 (omit entirely if the user skipped, and **always** for a Feature)
358
382
  - For Features:
359
383
  - Render `Business Value`, `Scope`, `Out of Scope`, and `Success Criteria` into the description. Put `Success Criteria` in `Microsoft.VSTS.Common.AcceptanceCriteria` **only if** the process template exposes that field on Feature — if the create call rejects it, fold the block into the description and retry rather than dropping it.
360
384
  - `Microsoft.VSTS.Common.BusinessValue` — only if the user supplied a number. Never invent one.
361
385
  - Omit `Microsoft.VSTS.Scheduling.StoryPoints` entirely.
362
- - For Bugs and Hot Fixes:
363
- - `Microsoft.VSTS.TCM.ReproSteps` — the rendered HTML repro steps (Azure DevOps puts repro steps in this field for the Bug template; if the project uses the Agile template instead, fold repro steps into Description). If the `Hot Fix` type in this process template doesn't expose `ReproSteps`, fold the repro steps into `System.Description` rather than dropping them.
364
- - For Hot Fixes, render the `Production Impact` section into the description as an `<h3>` block above the repro steps.
386
+ - For Bugs:
387
+ - `Microsoft.VSTS.TCM.ReproSteps` — the **whole composed body**: description, steps, expected behavior, actual behavior, acceptance criteria and open questions, each under its own `<h3>`. This is the Bug's field of record; its form shows no Description control.
388
+ - `Microsoft.VSTS.TCM.SystemInfo` the `Environment / Scope` section. Omit the field entirely when there is no environment to record, rather than writing an empty value that leaves a blank box on the form.
365
389
  - `Microsoft.VSTS.Common.Priority` — the chosen Priority (1–4)
366
390
  - `Microsoft.VSTS.Common.Severity` — the chosen Severity (`1 - Critical`, `2 - High`, `3 - Medium`, `4 - Low`)
391
+ - For Hot Fixes:
392
+ - `Microsoft.VSTS.TCM.ReproSteps` — steps, expected behavior, actual behavior and `Environment / Scope` (this type has no System Info field). If the `Hot Fix` type in this process template doesn't expose `ReproSteps`, fold them into `System.Description` rather than dropping them.
393
+ - Render the `Production Impact` section into `System.Description` as an `<h3>` block above the description body.
394
+ - No Priority/Severity — a Hot Fix is urgent by definition.
367
395
 
368
- If the `Open Questions` section is non-empty, append it to the description as a clearly-labeled HTML block (`<h3>Open Questions</h3><ul>...</ul>`) so the assignee can address it later.
396
+ If the `Open Questions` section is non-empty, append it as a clearly-labeled HTML block (`<h3>Open Questions</h3><ul>...</ul>`) **to the field that work item type displays** — the composed `ReproSteps` body on a **Bug**, `System.Description` on a **User Story**, **Hot Fix**, or **Feature**. Putting it in the description of a Bug hides it from every reader.
369
397
 
370
398
  ### Move to Dev Ready (pointed items only)
371
399
 
@@ -412,12 +440,22 @@ If a story fails to create or link, report which ones succeeded and which didn't
412
440
 
413
441
  ## Step 10: Confirm
414
442
 
415
- **Read the item back first.** Fetch it with `mcp__azure-devops__wit_work_item` (`action: get`, fields `System.Description` and `Microsoft.VSTS.Common.AcceptanceCriteria`) and check two things:
443
+ **Read the item back first**, and check the fields that type actually renders a write to a field the type lacks *succeeds*, so reading back the wrong field proves nothing.
444
+
445
+ For a **User Story**, fetch `System.Description` and `Microsoft.VSTS.Common.AcceptanceCriteria`:
416
446
 
417
447
  1. The criteria are in `Microsoft.VSTS.Common.AcceptanceCriteria` — not the placeholder tip, not empty.
418
448
  2. `System.Description` contains no "Acceptance Criteria" heading and none of the criteria.
419
449
 
420
- If either check fails the write didn't take — fix it with `wit_update_work_item` before reporting success. Don't report a created item you haven't read back.
450
+ For a **Bug**, fetch `Microsoft.VSTS.TCM.ReproSteps` and `Microsoft.VSTS.TCM.SystemInfo`:
451
+
452
+ 1. `ReproSteps` carries every section — description, steps, expected, actual, acceptance criteria — each under its own heading.
453
+ 2. The environment is in `SystemInfo`.
454
+ 3. No section appears **only** in `System.Description`, which the Bug form does not display.
455
+
456
+ For a **Hot Fix**, fetch `System.Description` and `Microsoft.VSTS.TCM.ReproSteps`, and confirm the narrative is in the former and the reproduction detail in the latter.
457
+
458
+ If a check fails the write didn't take — fix it with `wit_update_work_item` before reporting success. Don't report a created item you haven't read back.
421
459
 
422
460
  After creation, report:
423
461
 
@@ -15,6 +15,7 @@ Read the work item with `expand: Relations` so links and children come back. Col
15
15
  - `System.Description`, `Microsoft.VSTS.Common.AcceptanceCriteria`
16
16
  - `Microsoft.VSTS.Scheduling.StoryPoints`, `Custom.Order`
17
17
  - For Bugs / Hot Fixes: `Microsoft.VSTS.TCM.ReproSteps`, `Microsoft.VSTS.Common.Priority`, `Microsoft.VSTS.Common.Severity`
18
+ - For Bugs: `Microsoft.VSTS.TCM.SystemInfo` — the Bug form's second rendered field, where the environment belongs
18
19
  - Parent, children, and **linked pull requests** (`ArtifactLink` relations)
19
20
  - Comments — recent discussion often explains why a field says what it says
20
21
 
@@ -200,14 +201,20 @@ Default the comment question to **yes** for any item past `New`, and **no** for
200
201
 
201
202
  Render every Markdown section to HTML first — Azure DevOps description and acceptance criteria fields do not render Markdown. Use the conversion table and the **emphasis and code spans** rules from `/create-work-item` Step 8: bold the noun phrase carrying each claim, wrap identifiers in `<code>`, use lists for 2+ parallel items, keep `### Headings` as `<h3>`. Preserve existing `<img>` tags exactly.
202
203
 
203
- **Route each section to its own field**, per the field-routing table in `/create-work-item` Step 8. The rule that matters most here: **acceptance criteria go in `Microsoft.VSTS.Common.AcceptanceCriteria`, never in `System.Description`.** When you rewrite AC, write the criteria list alone into that field no `<h3>Acceptance Criteria</h3>` wrapper and make sure the description you write back carries no copy of them. Editing an item is the moment this gets silently undone: it is easy to render the whole reviewed document into the description and leave the AC field as it was.
204
+ **Route each section to its own field, per work item type** — use the routing tables in `/create-work-item` Step 8. Editing is the moment routing gets silently undone: it is easy to render the whole reviewed document into the description and leave the real fields as they were. And a wrong field does not announce itself **Azure DevOps accepts a write to a field a type does not carry**, so the value persists, reads back over the API, and renders nowhere.
204
205
 
205
- **Repair misfiled criteria when you find them.** If Step 2 found the criteria living in the description (or the AC field holding only placeholder tip text), fix it as part of this edit even when the user didn't ask it is the same content, moved to the field Azure DevOps and every kit sweep actually read:
206
+ **On a User Story:** acceptance criteria go in `Microsoft.VSTS.Common.AcceptanceCriteria`, never in `System.Description`. Write the criteria list alone into that field no `<h3>Acceptance Criteria</h3>` wrapperand make sure the description carries no copy of them.
206
207
 
207
- - Write the criteria into `Microsoft.VSTS.Common.AcceptanceCriteria`, overwriting the placeholder.
208
- - Strip the "Acceptance Criteria" heading and its list out of `System.Description` in the same call, so the two fields don't both hold a copy.
209
- - Say so in the change set and in the Step 8 confirmation: `Acceptance criteria: moved from Description AC field (3 criteria)`. Never move criteria silently; the user needs to see that the description shrank.
210
- - This is a **move, not a rewrite** — the criteria text is unchanged unless the user separately approved a reword.
208
+ **On a Bug:** there is no Acceptance Criteria field and no Description control on the form. The whole write-up — description, steps, expected, actual, criteria belongs in `Microsoft.VSTS.TCM.ReproSteps`, the environment in `Microsoft.VSTS.TCM.SystemInfo`, and `System.Description` holds only a labelled duplicate of the body.
209
+
210
+ **On a Hot Fix:** the narrative stays in `System.Description`; steps, expected, actual and environment go to `Microsoft.VSTS.TCM.ReproSteps`. There is no System Info field on this type.
211
+
212
+ **Repair misfiled content when you find it.** If Step 2 found content in a field its type does not render, fix it as part of this edit even when the user didn't ask — it is the same content, moved to where a reader will actually see it:
213
+
214
+ - **User Story** — criteria living in the description (or an AC field holding only placeholder tip text): write them into `Microsoft.VSTS.Common.AcceptanceCriteria` and strip the heading and list out of `System.Description` in the same call.
215
+ - **Bug** — criteria sitting in `Microsoft.VSTS.Common.AcceptanceCriteria` (a field the type does not have, so nothing displays them) or a description that never appears on the form: fold both into the composed `ReproSteps` body. Leave the phantom AC value where it is rather than patching it — clearing a field the type lacks is one more write into a hole.
216
+ - Say so in the change set and in the Step 8 confirmation: `Acceptance criteria: moved from the AC field → Repro Steps (3 criteria)`. Never move content silently; the user needs to see which field shrank.
217
+ - This is a **move, not a rewrite** — the text is unchanged unless the user separately approved a reword.
211
218
 
212
219
  Apply writes in this order, so a failure partway through leaves the most useful state behind:
213
220