@chris1807/claude-kit 2.2.0 → 2.2.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chris1807/claude-kit",
3
- "version": "2.2.0",
3
+ "version": "2.2.1",
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": {
@@ -73,7 +73,7 @@ When asked to promote code from one environment to the next:
73
73
  1. Create a PR from the source branch to the next branch in the chain (`main` → `dev`, `dev` → `test`, `test` → `staging`, `staging` → `prod`)
74
74
  2. Include a summary of all changes being promoted and the work items they carry
75
75
  3. After PR is merged, the CD pipeline for the target environment triggers automatically
76
- 4. Once the user confirms the merge, advance the carried User Stories / Bugs / Hot Fixes to the environment's state (`dev` → `Ready for Testing`, `test` → `Testing`, `staging` → `Staging`, `prod` → `Deployed`) — never backward, never a Feature or Task. The `/promote` command documents the full gate-check and state rules
76
+ 4. Once the user confirms the merge, advance the carried User Stories / Bugs / Hot Fixes to the environment's state (`test` → `Testing`, `staging` → `Staging`, `prod` → `Deployed`; **`dev` sets no state** — items stay at `Code Review` and the developer sets `Ready for Testing` by hand) — never backward, never a Feature or Task. The `/promote` command documents the full gate-check and state rules
77
77
 
78
78
  ### Deploy Release
79
79
 
@@ -11,12 +11,12 @@ Resolve branch names from the project's `CLAUDE.md` **Pipeline Configuration** t
11
11
  | Branch | Environment | Gate — items should already be in… | State set after the PR merges |
12
12
  |---|---|---|---|
13
13
  | `main` | — (compare branch) | — | *(no change)* |
14
- | `dev` | Dev | `Code Review` (merged to `main`) | `Ready for Testing` |
14
+ | `dev` | Dev | `Code Review` (merged to `main`) | *(no change — stays `Code Review`)* |
15
15
  | `test` | Test | `Ready for Testing` | `Testing` |
16
16
  | `staging` | Staging | `Ready for Staging` | `Staging` |
17
17
  | `prod` | Production | `Ready to Deploy` | `Deployed` |
18
18
 
19
- `Ready for Staging` and `Ready to Deploy` are set by QA and stakeholders — **never by this command**.
19
+ `Ready for Testing`, `Ready for Staging` and `Ready to Deploy` are set by the developer, QA, and stakeholders — **never by this command**. A `main → dev` deploy therefore sets **no state**: items stay at `Code Review` until the developer has checked the change on Dev and moves it to `Ready for Testing` by hand.
20
20
 
21
21
  ## Step 1: Read the Work Items and Gate-Check Them
22
22
 
@@ -327,7 +327,8 @@ This step runs **by itself** the moment the pipeline reports success — do not
327
327
 
328
328
  For every cherry-picked work item of type **User Story**, **Bug**, or **Hot Fix**, one `wit_work_item_write` update per item setting both fields:
329
329
 
330
- 1. `System.State` → the target's state (`Ready for Testing` / `Testing` / `Staging` / `Deployed`).
330
+ 1. `System.State` → the target's state (`Testing` / `Staging` / `Deployed`).
331
+ - **A cherry-pick to `dev` sets no state.** Items stay at `Code Review`; the developer sets `Ready for Testing` by hand. Update the assignee only.
331
332
  - **Never move backward** — an item already past the target state keeps it; note it.
332
333
  - Skipped (conflict) or dropped items are not on the branch — leave them alone.
333
334
  - An invalid-state error means this project's template differs — confirm with `get_type`, report the item, continue. Don't silently swallow it.
@@ -11,12 +11,12 @@ Resolve branch names from the project's `CLAUDE.md` **Pipeline Configuration** t
11
11
  | Branch | Environment | Gate — items should already be in… | State set after the PR merges |
12
12
  |---|---|---|---|
13
13
  | `main` | — (compare branch) | — | — |
14
- | `dev` | Dev | `Code Review` (merged to `main`) | `Ready for Testing` |
14
+ | `dev` | Dev | `Code Review` (merged to `main`) | *(no change — stays `Code Review`)* |
15
15
  | `test` | Test | `Ready for Testing` | `Testing` |
16
16
  | `staging` | Staging | `Ready for Staging` | `Staging` |
17
17
  | `prod` | Production | `Ready to Deploy` | `Deployed` |
18
18
 
19
- `Ready for Staging` and `Ready to Deploy` are set by QA and stakeholders — **never by this command**. If the project's table has different environments, confirm the type's states with `mcp__azure-devops__wit_work_item` (`action: get_type`) and map them the same way: a "Ready for X" gate → an "in X" state.
19
+ `Ready for Testing`, `Ready for Staging` and `Ready to Deploy` are set by the developer, QA, and stakeholders — **never by this command**. A `main → dev` deploy therefore sets **no state**: items stay at `Code Review` until the developer has checked the change on Dev and moves it to `Ready for Testing` by hand. If the project's table has different environments, confirm the type's states with `mcp__azure-devops__wit_work_item` (`action: get_type`) and map them the same way: a "Ready for X" gate → an "in X" state.
20
20
 
21
21
  ## Step 1: Read the Release
22
22
 
@@ -387,7 +387,8 @@ This step runs **by itself** the moment the pipeline reports success — do not
387
387
 
388
388
  For every carried work item of type **User Story**, **Bug**, or **Hot Fix**, one `wit_work_item_write` update per item (or the batch variant) setting both fields:
389
389
 
390
- 1. `System.State` → the target environment's state (`Ready for Testing` / `Testing` / `Staging` / `Deployed`).
390
+ 1. `System.State` → the target environment's state (`Testing` / `Staging` / `Deployed`).
391
+ - **A deploy to `dev` sets no state.** Items stay at `Code Review`; the developer sets `Ready for Testing` by hand. Update the assignee only.
391
392
  - **Never move backward.** An item already past the target state (e.g. `Deployed` when deploying to `staging`) keeps its state; note it.
392
393
  - Items skipped in Step 6 (conflict) or dropped in Step 3 are not on the branch — leave them alone.
393
394
  - An invalid-state error means this project's template differs — confirm with `get_type`, report the item, continue with the rest. Don't silently swallow it.
@@ -362,7 +362,7 @@ Wait for the user's response before proceeding. Do NOT create a PR until confirm
362
362
 
363
363
  If the project's process template does not have a `Code Review` state (the update call returns an invalid-state error), fall back in this order: `Resolved` → `In Review` → leave the current state and warn the user that the state could not be advanced automatically. Do not silently swallow the error.
364
364
 
365
- > **Only the Task ever gets closed — never the parent.** The child Task is closed here, at PR creation (step 4 above). When the PR is later completed/merged, do **not** enable Azure DevOps's "Complete associated work items" option: it transitions *every* linked work item, including the parent this PR is linked to. The parent User Story or Bug stays in `Code Review` until it is promoted: merging this PR into `main` deploys nothing, and the item advances to `Ready for Testing` → `Testing` → `Staging` → `Deployed` as `/promote` and `/deploy-release` carry it through `dev → test → staging → prod` (see **Work Item States ↔ Environments** in CLAUDE.md).
365
+ > **Only the Task ever gets closed — never the parent.** The child Task is closed here, at PR creation (step 4 above). When the PR is later completed/merged, do **not** enable Azure DevOps's "Complete associated work items" option: it transitions *every* linked work item, including the parent this PR is linked to. The parent User Story or Bug stays in `Code Review`: merging this PR into `main` deploys nothing, and promoting to `dev` deploys the code but **leaves the state alone** — the developer moves it to `Ready for Testing` once they have checked it on Dev. From there `/promote` and `/deploy-release` advance it to `Testing` → `Staging` → `Deployed` across `test → staging → prod` (see **Work Item States ↔ Environments** in CLAUDE.md).
366
366
 
367
367
  ### Closing Related Tasks
368
368
 
@@ -11,12 +11,12 @@ Resolve branch names from the project's `CLAUDE.md` **Pipeline Configuration** t
11
11
  | Branch | Environment | Gate — items should already be in… | State set after the PR merges |
12
12
  |---|---|---|---|
13
13
  | `main` | — (compare branch) | — | — |
14
- | `dev` | Dev | `Code Review` (merged to `main`) | `Ready for Testing` |
14
+ | `dev` | Dev | `Code Review` (merged to `main`) | *(no change — stays `Code Review`)* |
15
15
  | `test` | Test | `Ready for Testing` | `Testing` |
16
16
  | `staging` | Staging | `Ready for Staging` | `Staging` |
17
17
  | `prod` | Production | `Ready to Deploy` | `Deployed` |
18
18
 
19
- `Ready for Staging` and `Ready to Deploy` are set by QA and stakeholders — **never by this command**.
19
+ `Ready for Testing`, `Ready for Staging` and `Ready to Deploy` are set by the developer, QA, and stakeholders — **never by this command**. A `main → dev` deploy therefore sets **no state**: items stay at `Code Review` until the developer has checked the change on Dev and moves it to `Ready for Testing` by hand.
20
20
 
21
21
  ## Step 1: Determine Source and Target
22
22
 
@@ -321,7 +321,8 @@ This step runs **by itself** the moment the pipeline reports success — do not
321
321
 
322
322
  For every carried work item of type **User Story**, **Bug**, or **Hot Fix**, one `wit_work_item_write` update per item setting both fields:
323
323
 
324
- 1. `System.State` → the target's state (`Ready for Testing` / `Testing` / `Staging` / `Deployed`).
324
+ 1. `System.State` → the target's state (`Testing` / `Staging` / `Deployed`).
325
+ - **`main → dev` sets no state.** Items stay at `Code Review` — the developer sets `Ready for Testing` by hand once they have checked it on Dev. Update the assignee only, and show the state as `Code Review (unchanged — developer sets Ready for Testing)`.
325
326
  - **Never move backward** — an item already past the target state keeps it; note it.
326
327
  - An invalid-state error means this project's template differs — confirm with `get_type`, report the item, continue with the rest. Don't silently swallow it.
327
328
  2. `System.AssignedTo` → the person approved for that item's prefix group. Pass the identity's `uniqueName` / email, not the display name; if the update rejects it, resolve with `core_get_identity_ids` and retry once. A `Leave the current assignee alone` group keeps its assignee — never clear a field the user didn't ask you to clear.
@@ -339,7 +340,7 @@ Report both fields, so a wrong assignment is easy to put back:
339
340
  | AB#1240 | Ready for Staging → Staging | Chris Waters → Pat Ruiz |
340
341
  | AB#1250 | Deployed (unchanged — already ahead) | unchanged |
341
342
 
342
- Next: {the human step — "QA tests on Test and sets Ready for Staging" / "stakeholders verify on Staging and set Ready to Deploy" / "verify in production, then Close"}.
343
+ Next: {the human step — "the developer checks it on Dev and sets Ready for Testing" / "QA tests on Test and sets Ready for Staging" / "stakeholders verify on Staging and set Ready to Deploy" / "verify in production, then Close"}.
343
344
  ```
344
345
 
345
346
  If the user said `stop watching`, or an update fails, leave the rest alone, say exactly which items were and were not updated, and note that `/track` will flag the lag later.
@@ -16,12 +16,12 @@ Work item states track environments. Use this to spot **state lag** — an item
16
16
  | Commits are on… | State should be at least… |
17
17
  |---|---|
18
18
  | `main` | `Code Review` |
19
- | `dev` | `Ready for Testing` |
19
+ | `dev` | `Code Review` |
20
20
  | `test` | `Testing` |
21
21
  | `staging` | `Staging` |
22
22
  | `prod` | `Deployed` |
23
23
 
24
- `Ready for Staging` and `Ready to Deploy` are human sign-offs and are never "lag". Only User Stories, Bugs, and Hot Fixes are checked — Features and Tasks have no environment state.
24
+ `Ready for Testing`, `Ready for Staging` and `Ready to Deploy` are human sign-offs and are never "lag" — an item sitting at `Code Review` with commits on `dev` is waiting on the developer, not behind. Only User Stories, Bugs, and Hot Fixes are checked — Features and Tasks have no environment state.
25
25
 
26
26
  ## If Release (e.g., `/track release 24`):
27
27
 
@@ -88,6 +88,6 @@ Open PRs:
88
88
  - PR #<n> → <target branch> (<status>)
89
89
  ```
90
90
 
91
- Finally, compare the work item's state with its furthest environment (`dev` → `Ready for Testing`, `test` → `Testing`, `staging` → `Staging`, `prod` → `Deployed`). If the state lags — e.g. commits on `staging` but the item is still `Testing` — add one line: `⚠ State lags environment: Testing, expected at least Staging — /track AB#<id> can catch it up.`
91
+ Finally, compare the work item's state with its furthest environment (`dev` → `Code Review`, `test` → `Testing`, `staging` → `Staging`, `prod` → `Deployed`). If the state lags — e.g. commits on `staging` but the item is still `Testing` — add one line: `⚠ State lags environment: Testing, expected at least Staging — /track AB#<id> can catch it up.`
92
92
 
93
93
  That's it — read-only. Do not modify branches, push, create PRs, or change states.
@@ -161,19 +161,19 @@ feature/AB#1234-... ──PR──▸ main ──PR──▸ dev ──PR
161
161
 
162
162
  #### Work Item States ↔ Environments
163
163
 
164
- Every environment in the chain has a work item state, so the board shows where each story physically is. The **"Ready for …" states are human gates** — QA or stakeholders set them when something passes; the slash commands never do. The **environment states** (`Testing`, `Staging`, `Deployed`) are set by the promotion commands once the PR into that branch has merged and its CD pipeline has come back green.
164
+ Every environment in the chain has a work item state, so the board shows where each story physically is. The **"Ready for …" states are human gates** — the developer, QA, or stakeholders set them when something passes; the slash commands never do. The **environment states** (`Testing`, `Staging`, `Deployed`) are set by the promotion commands once the PR into that branch has merged and its CD pipeline has come back green.
165
165
 
166
166
  | Branch | Environment | Gate — items should already be in… | Set once the PR into this branch merges |
167
167
  |---|---|---|---|
168
168
  | `main` | — | `Code Review` (the `/implement` PR is open) | *(no change — nothing deployed)* |
169
- | `dev` | Dev | `Code Review` (merged to `main`) | `Ready for Testing` |
169
+ | `dev` | Dev | `Code Review` (merged to `main`) | *(no change — stays `Code Review`)* |
170
170
  | `test` | Test | `Ready for Testing` | `Testing` |
171
171
  | `staging` | Staging | `Ready for Staging` | `Staging` |
172
172
  | `prod` | Production | `Ready to Deploy` | `Deployed` |
173
173
 
174
174
  `/qa` is the exception that proves the rule: it tests a work item in a browser and posts a pass/fail comment, but it **never writes a state** — not even `Ready for Testing`.
175
175
 
176
- Human-only transitions — no slash command ever makes these: `Testing → Ready for Staging` (QA sign-off), `Staging → Ready to Deploy` (stakeholder / UAT sign-off), `Deployed → Closed` (verified in production).
176
+ Human-only transitions — no slash command ever makes these: `Code Review → Ready for Testing` (the developer confirms the change on Dev), `Testing → Ready for Staging` (QA sign-off), `Staging → Ready to Deploy` (stakeholder / UAT sign-off), `Deployed → Closed` (verified in production).
177
177
 
178
178
  How the commands use this table:
179
179