@chris1807/claude-kit 2.1.24 → 2.1.25

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.24",
3
+ "version": "2.1.25",
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": {
@@ -1,5 +1,18 @@
1
1
  Rework work item AB#$ARGUMENTS based on feedback received after the last pull request. Follow this workflow:
2
2
 
3
+ ## Always Use Ultracode
4
+
5
+ This command **always orchestrates its analysis-heavy phases with the `Workflow` tool** — you do not wait to be asked, and you do not need the `ultracode` keyword. The slash command runs in the main loop, which has the `Workflow` tool, so fan-out is available throughout.
6
+
7
+ What this means in practice:
8
+
9
+ - **Fan out the read / analyze / verify work** — gathering feedback (Step 2), exploring the codebase (Step 4), and reviewing + verifying the diff and AC coverage (Steps 9–10) are run as `Workflow` scripts with one agent per independent unit (per comment, per subsystem, per review dimension, per acceptance criterion). Each agent returns **structured findings** via a `schema`; you synthesize the results in the main loop.
10
+ - **Never fan out an interactive gate or a write.** Every user prompt (Steps 3, 4-approval, 5, 10-decisions, 11) and every work-item or git mutation (Step 5 create, Step 6 branch, Step 7 implement, Step 12 push/close) stays in the **main loop**. Workflow agents here are **read-only analysts** — they use MCP read tools, `Read`, and `Grep`, and they return data. They do not create or close work items, switch branches, write code, or ask the user anything.
11
+ - **Stay in the loop between phases.** Run one `Workflow` per phase, read its results, present/await the user as the steps require, then launch the next phase's workflow. This is several short workflows in sequence — not one monolithic run that tries to swallow the approval gates.
12
+ - **Review uses the canonical find → adversarially-verify pipeline** (Step 10): fan out per dimension, then spawn skeptic verifiers per finding and drop findings the majority refute, so only confirmed issues reach the user.
13
+
14
+ If the `Workflow` tool is somehow unavailable, fall back to running each phase sequentially in the main loop — the output is identical, just slower.
15
+
3
16
  ## Step 1: Find the Latest Pull Request
4
17
 
5
18
  Handle `$ARGUMENTS` as either `1234` or `AB#1234` — strip the `AB#` prefix when calling the MCP API.
@@ -14,6 +27,8 @@ Save the PR's `creationDate` as `LAST_PR_DATE` — everything after this timesta
14
27
 
15
28
  ## Step 2: Gather Rework Feedback
16
29
 
30
+ > **Ultracode:** Fan out the gathering with `Workflow` — one agent per new comment (parse its text and **download + view every embedded image** via `WebFetch`), plus one agent analyzing the description / acceptance-criteria revisions since `LAST_PR_DATE`. Each agent returns a structured feedback item (`{source, summary, imageObservations, referencedAC?}`). Synthesize them into the Step 3 list in the main loop. Reading and image analysis are independent per comment — this is the fan-out unit.
31
+
17
32
  ### New Comments
18
33
 
19
34
  Read the work item comments via `wit_list_work_item_comments`. Filter to only comments created **after** `LAST_PR_DATE`. These contain the rework feedback.
@@ -63,6 +78,8 @@ Does this capture the rework correctly? Any feedback items that should be flagge
63
78
 
64
79
  ## Step 4: Explore & Plan
65
80
 
81
+ > **Ultracode:** Fan out the exploration with `Workflow` — one read-only agent per subsystem touched by the last PR (and per new area the feedback implies), each returning the relevant files and how they relate to the feedback. In the same pass, fan out **one agent per acceptance criterion** to report whether the current code covers it and what's missing. Synthesize all findings into a single plan in the main loop, then present it. Exploration and per-AC coverage analysis are independent — fan them out; the plan synthesis and the approval gate stay in the main loop.
82
+
66
83
  1. **Explore** the codebase to map relevant files — focus on files changed in the last PR and any new areas needed
67
84
  2. **Plan** the rework approach
68
85
 
@@ -221,7 +238,9 @@ Run a build check **before** any other quality checks. Use the `build-validator`
221
238
  1. **Run the full test suite** — every unit test in the repo, plus integration tests. Not just the tests added in this rework. A failure in an unrelated test means this rework broke something else; treat it as a regression, fix it, and re-run until the entire suite is green
222
239
  2. **Run lint** — ESLint and dotnet format
223
240
  3. **Environment configuration parity** — if the rework added or changed any key in `appsettings.*.json` or `.env*`, verify every parallel environment file (Development/Staging/QA/Production for backend; `.env.development`/`.env.staging`/`.env.production`/`.env.example` for React — whichever exist in the repo) has a corresponding entry. Present a (key × environment) table. Prompt the user to fill in any missing values (real, placeholder, or empty) **before pushing**, or to explicitly confirm the omission is intentional (e.g., supplied via a pipeline variable group, Key Vault, or App Configuration).
224
- 4. **Acceptance Criteria check** — re-read the work item's full Acceptance Criteria (the same list captured in Step 3). For each AC, identify the test or piece of code that proves it's met. If any AC has no covering test or visible code path, flag it before moving on:
241
+ 4. **Acceptance Criteria check** — re-read the work item's full Acceptance Criteria (the same list captured in Step 3). For each AC, identify the test or piece of code that proves it's met. If any AC has no covering test or visible code path, flag it before moving on.
242
+
243
+ > **Ultracode:** Fan out this check with `Workflow` — one read-only agent per acceptance criterion, each returning `{ac, covered: bool, evidence, gap?}`. Collect the results in the main loop and act on any `covered: false`.
225
244
 
226
245
  ```
227
246
  ⚠ AC #{n} ({short form}) has no covering test or clear code path.
@@ -232,9 +251,11 @@ Run a build check **before** any other quality checks. Use the `build-validator`
232
251
 
233
252
  ## Step 10: Code Review
234
253
 
235
- Spawn the `reviewer` agent to review the rework diff for quality, security, Clean Architecture compliance, and CLAUDE.md adherence. Focus the review on the files changed since the last PR call out any regression risk introduced by the rework. The agent is read-only it reports findings, you act on them.
254
+ > **Ultracode:** Run the review as a `Workflow` find verify pipeline. **Find:** fan out one agent per dimension — correctness/quality, security, Clean Architecture compliance, CLAUDE.md adherence, and regression risk from the rework each scoped to the files changed since the last PR and returning structured findings. **Verify:** for each finding, spawn independent skeptic agents prompted to *refute* it, and drop any finding the majority refute. Only confirmed findings reach the user. Use the `reviewer` agent type for the dimension agents (`agentType: 'reviewer'`) so they inherit its review rules. The fix/decision loop below stays in the main loop — workflow agents never edit code.
255
+
256
+ Review the rework diff for quality, security, Clean Architecture compliance, and CLAUDE.md adherence. Focus the review on the files changed since the last PR — call out any regression risk introduced by the rework. Review is read-only — it reports findings, you act on them.
236
257
 
237
- Present the findings to the user grouped by severity:
258
+ Present the confirmed findings to the user grouped by severity:
238
259
 
239
260
  ```
240
261
  ## Code Review Findings
@@ -251,11 +272,11 @@ Present the findings to the user grouped by severity:
251
272
  Address must-fix items? (yes / select / skip)
252
273
  ```
253
274
 
254
- - `yes` → fix every must-fix item, then re-run the reviewer agent on the updated diff
255
- - `select` → ask which items to address; fix only those, then re-run the reviewer agent
275
+ - `yes` → fix every must-fix item, then re-run the review (the Step 10 find → verify workflow) on the updated diff
276
+ - `select` → ask which items to address; fix only those, then re-run the review workflow
256
277
  - `skip` → proceed without fixes (only allowed if there are no must-fix items, or the user explicitly overrides)
257
278
 
258
- Loop until the reviewer reports no must-fix items, or the user explicitly accepts remaining findings. Do not proceed to UAT with unresolved must-fix items unless the user overrides.
279
+ Loop until the review reports no must-fix items, or the user explicitly accepts remaining findings. Do not proceed to UAT with unresolved must-fix items unless the user overrides.
259
280
 
260
281
  ## Step 11: UAT Gate
261
282
 
@@ -48,6 +48,8 @@ Ultracode is **opt-in**. It is on only when a system-reminder confirms it, when
48
48
 
49
49
  Short, single-query operations (`/status`, `/explain`, `/close-orphan-tasks`) do **not** need ultracode — they are already one pass and gain nothing from fan-out. Reach for `Workflow` when the work-list is large and the per-item work is independent.
50
50
 
51
+ **`/rework` always uses ultracode** — it does not wait to be asked. It fans out feedback gathering, codebase exploration, per-acceptance-criterion coverage checks, and the find → adversarially-verify review, while keeping every approval gate and write in the main loop. `/plan-backlog` uses it opt-in (only when ultracode is on).
52
+
51
53
  ### Sensitive Data Policy
52
54
 
53
55
  **NEVER query, display, or expose sensitive PII fields from the database — even if the values are encrypted.** This includes TIN, SSN, EIN, TaxId, BankAccountNumber, RoutingNumber, and any `Encrypted*` variants. Even encrypted/hashed values must not appear in output, logs, or summaries. When querying collections that may contain sensitive fields, always use explicit inclusion projections listing only the non-sensitive fields needed. If a user requests access to sensitive data, direct them to use the application UI.