@chris1807/claude-kit 2.2.1 → 2.2.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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chris1807/claude-kit",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.2",
|
|
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": {
|
|
@@ -82,6 +82,35 @@ Reply with your Ultracode choice (and any added context). Say **ready** once you
|
|
|
82
82
|
|
|
83
83
|
1. **Explore** the codebase to map relevant files
|
|
84
84
|
2. **Plan** the implementation approach
|
|
85
|
+
3. **Re-analyze the plan as an architect** — the pass below, before the user sees anything
|
|
86
|
+
|
|
87
|
+
### Architect Review (runs before the plan is presented)
|
|
88
|
+
|
|
89
|
+
The draft plan is a first answer, not the answer. Re-read it cold — as an experienced architect who did not write it and who cares what this codebase looks like a year from now. This happens on **every** plan, before the user sees anything.
|
|
90
|
+
|
|
91
|
+
> **Ultracode (if opted in):** run this as a separate `Workflow` agent so the review is actually independent. Give it the work item, the acceptance criteria, and the draft plan — but **not** your reasoning for the plan — and have it read the affected files itself. A reviewer who has seen the author's justification anchors to it. Without ultracode, run the pass in the main loop, but answer each question from the code, not from the plan's own prose.
|
|
92
|
+
|
|
93
|
+
Each question below is about a cost that is cheap now and expensive once the code exists:
|
|
94
|
+
|
|
95
|
+
| # | Question | What a bad answer looks like |
|
|
96
|
+
|---|----------|------------------------------|
|
|
97
|
+
| 1 | **Does this already exist?** A service, hook, component, or extension method that already does this, or is one call away. | A new `PaymentExportService` beside the `ExportService` that already handles three other exports |
|
|
98
|
+
| 2 | **Is each piece in the right layer?** Domain / Application / Infrastructure / API boundaries hold — no business rules in a controller, no Mongo or EF types in Domain, no HTTP concepts below API. | An `IMongoCollection<T>` parameter on a Domain method |
|
|
99
|
+
| 3 | **What is the simplest plan that still meets every AC?** State it, then adopt it or say in one line why the heavier one is needed. | An interface with exactly one implementation, added "for testability" |
|
|
100
|
+
| 4 | **What else touches the files being modified?** Name the callers. A change to a shared contract, DTO, or response shape is a breaking change until proven otherwise. | Editing a shared DTO with no note about its other consumers |
|
|
101
|
+
| 5 | **What happens to data that already exists?** New required fields, schema changes, and backfills each need an answer for rows written before this change. | A non-nullable field added with no default and no backfill |
|
|
102
|
+
| 6 | **How does it fail?** Partial failure, concurrent callers, a retried request. Is the operation idempotent, and does it need to be? | A multi-step write with no story for a crash between steps |
|
|
103
|
+
| 7 | **Does it hold at real data volume?** Queries inside loops, unbounded result sets, a missing index, a list endpoint with no paging. | A `foreach` over accounts issuing one query each |
|
|
104
|
+
| 8 | **Is it safe?** Authorization on every new endpoint, and **no sensitive field** (TIN, SSN, EIN, TaxId, BankAccountNumber, RoutingNumber, any `Encrypted*`) read, logged, returned, or projected — see the sensitive-data rule in CLAUDE.md. | A new endpoint returning a whole entity because it was convenient |
|
|
105
|
+
| 9 | **Can it be tested without heavy mocking?** A test needing five mocks is telling you the seams are in the wrong place. | A test plan that starts "mock the repository, the clock, and the HTTP client" |
|
|
106
|
+
| 10 | **Can it be undone?** `/rollback` reverts commits; it does not un-migrate data or un-send an email. Flag anything one-way. | A destructive migration with no reverse path |
|
|
107
|
+
|
|
108
|
+
**Two hard limits on this pass:**
|
|
109
|
+
|
|
110
|
+
- **It may not grow the scope.** It exists to simplify, correct, and de-risk — not to add caching, abstraction layers, or features nobody asked for. Anything outside the acceptance criteria goes in *Risks / Considerations*, or becomes a separate work item you mention. It is never folded into the plan silently.
|
|
111
|
+
- **It may not invent findings.** If the plan survives every question, say so in one line. A manufactured concern to look thorough spends the user's attention at the one gate that is supposed to protect it.
|
|
112
|
+
|
|
113
|
+
Apply what the pass finds, then report it in the plan as the **Architect Review** section below. The pass is never skipped; only its output scales — on a one-file config change most rows answer themselves and the report is two lines.
|
|
85
114
|
|
|
86
115
|
Present the plan to the user:
|
|
87
116
|
|
|
@@ -115,6 +144,10 @@ List every test file you will add or modify and the scenarios each covers (happy
|
|
|
115
144
|
### Risks / Considerations
|
|
116
145
|
- {any potential issues or trade-offs}
|
|
117
146
|
|
|
147
|
+
### Architect Review
|
|
148
|
+
{One line per change the review made: what the draft said → what it says now → why.}
|
|
149
|
+
{If nothing changed: "Reviewed against every question — no changes." plus the one that came closest to a finding and why it is fine.}
|
|
150
|
+
|
|
118
151
|
Approve this plan? (yes / no / suggest changes)
|
|
119
152
|
```
|
|
120
153
|
|
|
@@ -482,7 +515,7 @@ Capture `BASE_BRANCH` and create `feature/AB#{feature-id}-{sanitized-title}` per
|
|
|
482
515
|
|
|
483
516
|
For each wave in ascending order:
|
|
484
517
|
|
|
485
|
-
1. **Explore & plan** each story in the wave (Step 3 rules; Ultracode fan-outs apply per story if opted in). Present **one combined plan** with a section per story — each section covering approach, files, unit tests, and agents — plus a note on any files touched by more than one story in the wave (a conflict warning). **One approval gate per wave**; wait for the user.
|
|
518
|
+
1. **Explore & plan** each story in the wave (Step 3 rules; Ultracode fan-outs apply per story if opted in). Present **one combined plan** with a section per story — each section covering approach, files, unit tests, and agents — plus a note on any files touched by more than one story in the wave (a conflict warning). The **Architect Review** runs on the combined wave plan before you present it, and the shared-file conflicts are exactly what question 4 is for. **One approval gate per wave**; wait for the user.
|
|
486
519
|
2. **Implement:**
|
|
487
520
|
- **Move every story in the wave to `Active`** first (same rules and fallbacks as "Move the Work Item to Active" in Step 4). The Feature's state is never changed.
|
|
488
521
|
- **Ensure each story in the wave has an open child Task** (Step 4's "Ensure an Open Child Task Exists" rules, applied per story — Tasks hang off the stories, never off the Feature). Batch the proposals into **one** table covering the whole wave and take a single approval, so parallel agents never wait on a prompt:
|
|
@@ -107,6 +107,37 @@ Reply with your Ultracode choice (and any reclassifications or context). Say **r
|
|
|
107
107
|
|
|
108
108
|
1. **Explore** the codebase to map relevant files — focus on files changed in the last PR and any new areas needed
|
|
109
109
|
2. **Plan** the rework approach
|
|
110
|
+
3. **Re-analyze the plan as an architect** — the pass below, before the user sees anything
|
|
111
|
+
|
|
112
|
+
### Architect Review (runs before the plan is presented)
|
|
113
|
+
|
|
114
|
+
The draft plan is a first answer, not the answer. Re-read it cold — as an experienced architect who did not write it and who cares what this codebase looks like a year from now. This happens on **every** rework plan, before the user sees anything.
|
|
115
|
+
|
|
116
|
+
> **Ultracode:** run this as a separate `Workflow` agent so the review is actually independent. Give it the work item, the acceptance criteria, the rework feedback, and the draft plan — but **not** your reasoning for the plan — and have it read the affected files itself. A reviewer who has seen the author's justification anchors to it.
|
|
117
|
+
|
|
118
|
+
Each question below is about a cost that is cheap now and expensive once the code exists:
|
|
119
|
+
|
|
120
|
+
| # | Question | What a bad answer looks like |
|
|
121
|
+
|---|----------|------------------------------|
|
|
122
|
+
| 1 | **Does this already exist?** A service, hook, component, or extension method that already does this, or is one call away. | A new `PaymentExportService` beside the `ExportService` that already handles three other exports |
|
|
123
|
+
| 2 | **Is each piece in the right layer?** Domain / Application / Infrastructure / API boundaries hold — no business rules in a controller, no Mongo or EF types in Domain, no HTTP concepts below API. | An `IMongoCollection<T>` parameter on a Domain method |
|
|
124
|
+
| 3 | **What is the simplest plan that still meets every AC?** State it, then adopt it or say in one line why the heavier one is needed. | An interface with exactly one implementation, added "for testability" |
|
|
125
|
+
| 4 | **What else touches the files being modified?** Name the callers. A change to a shared contract, DTO, or response shape is a breaking change until proven otherwise. | Editing a shared DTO with no note about its other consumers |
|
|
126
|
+
| 5 | **What happens to data that already exists?** New required fields, schema changes, and backfills each need an answer for rows written before this change. | A non-nullable field added with no default and no backfill |
|
|
127
|
+
| 6 | **How does it fail?** Partial failure, concurrent callers, a retried request. Is the operation idempotent, and does it need to be? | A multi-step write with no story for a crash between steps |
|
|
128
|
+
| 7 | **Does it hold at real data volume?** Queries inside loops, unbounded result sets, a missing index, a list endpoint with no paging. | A `foreach` over accounts issuing one query each |
|
|
129
|
+
| 8 | **Is it safe?** Authorization on every new endpoint, and **no sensitive field** (TIN, SSN, EIN, TaxId, BankAccountNumber, RoutingNumber, any `Encrypted*`) read, logged, returned, or projected — see the sensitive-data rule in CLAUDE.md. | A new endpoint returning a whole entity because it was convenient |
|
|
130
|
+
| 9 | **Can it be tested without heavy mocking?** A test needing five mocks is telling you the seams are in the wrong place. | A test plan that starts "mock the repository, the clock, and the HTTP client" |
|
|
131
|
+
| 10 | **Can it be undone?** `/rollback` reverts commits; it does not un-migrate data or un-send an email. Flag anything one-way. | A destructive migration with no reverse path |
|
|
132
|
+
| 11 | **Cause or symptom?** Rework feedback reports an instance. Does this plan fix why it happened, or only the case that was reported? | Special-casing the one date the tester tried |
|
|
133
|
+
| 12 | **What did the original PR get right that this could undo?** It passed review once. Name what this change puts back at risk, and the regression test that pins it. | A rewrite of a method whose edge cases were the point of the original review |
|
|
134
|
+
|
|
135
|
+
**Two hard limits on this pass:**
|
|
136
|
+
|
|
137
|
+
- **It may not grow the scope.** It exists to simplify, correct, and de-risk — not to add caching, abstraction layers, or features nobody asked for. Anything outside the acceptance criteria goes in *Risks / Considerations*, or becomes a separate work item you mention. It is never folded into the plan silently.
|
|
138
|
+
- **It may not invent findings.** If the plan survives every question, say so in one line. A manufactured concern to look thorough spends the user's attention at the one gate that is supposed to protect it.
|
|
139
|
+
|
|
140
|
+
Apply what the pass finds, then report it in the plan as the **Architect Review** section below. The pass is never skipped; only its output scales — on a one-file config change most rows answer themselves and the report is two lines.
|
|
110
141
|
|
|
111
142
|
Present the plan to the user:
|
|
112
143
|
|
|
@@ -151,6 +182,10 @@ If any row reads "⚠ Not yet covered," fix the plan before presenting it — do
|
|
|
151
182
|
### Risks / Considerations
|
|
152
183
|
- {any potential issues or trade-offs}
|
|
153
184
|
|
|
185
|
+
### Architect Review
|
|
186
|
+
{One line per change the review made: what the draft said → what it says now → why.}
|
|
187
|
+
{If nothing changed: "Reviewed against every question — no changes." plus the one that came closest to a finding and why it is fine.}
|
|
188
|
+
|
|
154
189
|
Approve this plan? (yes / no / suggest changes)
|
|
155
190
|
```
|
|
156
191
|
|