@chris1807/claude-kit 2.1.3 → 2.1.5
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 +1 -1
- package/templates/commands/quote.md +50 -20
- package/templates/commands/review.md +62 -9
package/package.json
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Fetch a work item and
|
|
1
|
+
Fetch a work item and estimate the effort in story points. Usage: `/quote <work-item-id>`
|
|
2
2
|
|
|
3
3
|
Parse `$ARGUMENTS` to extract the work item ID. Accept formats like `AB#1234`, `#1234`, or just `1234`.
|
|
4
4
|
|
|
@@ -8,32 +8,62 @@ Read the work item from Azure DevOps using the project from the current repo's C
|
|
|
8
8
|
|
|
9
9
|
If the work item is not found, report the error and stop.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
Capture: title, type, description, acceptance criteria, attached child items, any existing `Story Points` / `Effort` field value, and any tags that hint at scope (e.g. `spike`, `research`, `infra`).
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
## Step 2: Size the Work
|
|
14
|
+
|
|
15
|
+
Use the **modified Fibonacci scale** for story points: `1, 2, 3, 5, 8, 13, 21`. Anything that feels larger than 21 should be flagged as "needs to be split" rather than given a number.
|
|
16
|
+
|
|
17
|
+
Rough sizing rubric (calibrate against what you can see in the repo, not abstract complexity):
|
|
18
|
+
|
|
19
|
+
| Points | Looks like |
|
|
20
|
+
|--------|-----------|
|
|
21
|
+
| **1** | Trivial change — copy tweak, single config value, one-line fix. No new tests needed. |
|
|
22
|
+
| **2** | Small, well-understood change in one file or one layer. Existing patterns cover it. |
|
|
23
|
+
| **3** | Touches a couple of files / one feature slice. Some new tests. No architectural questions. |
|
|
24
|
+
| **5** | Crosses layers (e.g. API + UI), or introduces a new component/endpoint following existing patterns. Real test coverage needed. |
|
|
25
|
+
| **8** | Multi-area change with meaningful new logic, migrations, or non-trivial edge cases. Some unknowns the implementer will need to resolve. |
|
|
26
|
+
| **13** | Large feature, several moving parts, or significant unknowns. Likely benefits from being split. |
|
|
27
|
+
| **21** | Very large / high uncertainty. Should almost certainly be split into multiple stories. |
|
|
28
|
+
|
|
29
|
+
Adjust upward for: unclear acceptance criteria, missing UX, data migrations, cross-team coordination, security/compliance review, or anything tagged `spike`/`research`.
|
|
30
|
+
|
|
31
|
+
Adjust downward for: pure config changes, mechanical refactors with good test coverage, or work that mirrors an existing implementation.
|
|
32
|
+
|
|
33
|
+
If the item has child items, size each child as well and present the parent's total as the sum (rounded to the nearest Fibonacci number).
|
|
34
|
+
|
|
35
|
+
## Step 3: Display the Estimate
|
|
36
|
+
|
|
37
|
+
Output a compact estimate — not a quote block. Format:
|
|
14
38
|
|
|
15
39
|
```
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
40
|
+
**AB#{id}: {title}**
|
|
41
|
+
**Estimate:** {points} story points{ — confidence: low/medium/high}
|
|
42
|
+
|
|
43
|
+
**Reasoning:**
|
|
44
|
+
- {bullet on scope / files / layers touched}
|
|
45
|
+
- {bullet on unknowns or risk}
|
|
46
|
+
- {bullet on test/doc burden}
|
|
47
|
+
|
|
48
|
+
**Comparable to:** {one-line analogy to a similar past story, or "no obvious comparable in recent work"}
|
|
23
49
|
```
|
|
24
50
|
|
|
25
|
-
|
|
26
|
-
- If description or acceptance criteria is empty, omit that section
|
|
27
|
-
- If the work item has child items, append:
|
|
51
|
+
If child items were sized, append:
|
|
28
52
|
|
|
29
53
|
```
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
54
|
+
**Child breakdown:**
|
|
55
|
+
| AB# | Title | Points |
|
|
56
|
+
|-----|-------|--------|
|
|
57
|
+
| ... | ... | ... |
|
|
58
|
+
| **Total** | | **{sum}** |
|
|
35
59
|
```
|
|
36
60
|
|
|
37
|
-
|
|
61
|
+
If an existing `Story Points` value is already set on the work item and your estimate differs, call that out explicitly: `**Existing estimate:** {n} (yours differs — {why})`.
|
|
62
|
+
|
|
63
|
+
If the work looks larger than 21 points, do not assign a number — instead report `**Estimate:** needs to be split` and suggest 2–4 candidate split points based on the acceptance criteria.
|
|
64
|
+
|
|
65
|
+
## Step 4: Offer to Persist
|
|
66
|
+
|
|
67
|
+
After displaying the estimate, ask the user: *"Want me to set Story Points = {n} on AB#{id}?"*
|
|
38
68
|
|
|
39
|
-
|
|
69
|
+
Only update the work item if the user explicitly says yes. Do not modify anything otherwise.
|
|
@@ -1,8 +1,30 @@
|
|
|
1
1
|
Review PR #$ARGUMENTS in the current project. Automatically:
|
|
2
2
|
|
|
3
|
-
1. **Read the full diff** — understand every change in the PR
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
1. **Read the full diff** — understand every change in the PR.
|
|
4
|
+
|
|
5
|
+
2. **Read the linked work item** and gather the full acceptance criteria.
|
|
6
|
+
|
|
7
|
+
3. **Detect rework context — do this BEFORE judging acceptance criteria.**
|
|
8
|
+
|
|
9
|
+
A small diff does not mean a small feature. The PR you are reviewing may be a rework that only addresses targeted feedback, while the bulk of the implementation already shipped in earlier PRs. Judging acceptance criteria against the current diff alone will produce false "not met" findings.
|
|
10
|
+
|
|
11
|
+
For each PR linked to the work item (via `relations` / artifact links), fetch its details and classify:
|
|
12
|
+
- **This PR** — the one being reviewed.
|
|
13
|
+
- **Prior merged PRs** — `status: completed` and merged before this PR was created. Their changes are already in the target branch.
|
|
14
|
+
- **Prior abandoned PRs** — ignore for acceptance-criteria coverage; their code is not in the target branch.
|
|
15
|
+
|
|
16
|
+
Also scan the work item comments for rework feedback posted after the most recent prior merged PR. That feedback is what the current PR is expected to address.
|
|
17
|
+
|
|
18
|
+
Treat the PR as a **rework** if any prior merged PR exists for this work item, OR if the work item has rework feedback comments dated after a prior PR. Otherwise treat it as an **initial PR**.
|
|
19
|
+
|
|
20
|
+
4. **Evaluate acceptance criteria against the cumulative work, not just this diff.**
|
|
21
|
+
|
|
22
|
+
- **Initial PR**: evaluate every acceptance criterion against this PR's diff.
|
|
23
|
+
- **Rework PR**: evaluate every acceptance criterion against (prior merged PRs' changes already in the target branch) + (this PR's diff). For criteria already satisfied by prior merged PRs, do not flag them as missing — mark them as **previously delivered** and only re-check them if this PR's diff touches the same area in a way that could regress the prior implementation.
|
|
24
|
+
|
|
25
|
+
When a rework PR's diff is small, the right question is **"does this diff correctly address the rework feedback, and does it avoid regressing the prior implementation?"** — not "does this diff implement every acceptance criterion from scratch?"
|
|
26
|
+
|
|
27
|
+
5. **Review for:**
|
|
6
28
|
- Clean Architecture boundaries (Domain has no infrastructure dependencies)
|
|
7
29
|
- Tenant/organizationId enforcement on all database queries
|
|
8
30
|
- Missing unit or integration tests for new code
|
|
@@ -11,20 +33,51 @@ Review PR #$ARGUMENTS in the current project. Automatically:
|
|
|
11
33
|
- Error handling (are exceptions caught appropriately?)
|
|
12
34
|
- Naming conventions and code style consistency
|
|
13
35
|
- Breaking changes or backwards compatibility issues
|
|
14
|
-
|
|
15
|
-
|
|
36
|
+
- **Rework-specific (if applicable):** does this diff fully address every item in the rework feedback? Does it regress anything that prior merged PRs delivered?
|
|
37
|
+
|
|
38
|
+
6. **Draft (do not post yet) the inline comments** for every finding. For each, capture: file path, line number, severity, and the exact comment body you intend to post.
|
|
39
|
+
|
|
40
|
+
7. **Draft (do not post yet) the PR-level summary comment** with:
|
|
41
|
+
- **PR type**: Initial PR or Rework (and if rework, list the prior merged PR numbers and the rework feedback being addressed)
|
|
16
42
|
- Overall assessment (ready to merge / needs changes)
|
|
17
43
|
- Count of issues by severity (critical / warning / suggestion)
|
|
18
|
-
- Acceptance criteria checklist
|
|
44
|
+
- **Acceptance criteria checklist**, with each item marked as one of:
|
|
45
|
+
- **met (this PR)** — satisfied by changes in this diff
|
|
46
|
+
- **met (prior PR #N)** — already delivered in a prior merged PR; not in this diff
|
|
47
|
+
- **not met** — not satisfied by any merged or pending change
|
|
48
|
+
- **not applicable** — out of scope for this work item
|
|
49
|
+
- **Rework feedback checklist** (rework PRs only) — each feedback item marked addressed / not addressed
|
|
19
50
|
- Test coverage assessment
|
|
20
51
|
|
|
21
|
-
|
|
52
|
+
8. **Preview every comment to me and wait for approval before posting anything to the PR.** Show:
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
Review drafted — nothing has been posted to PR #{id} yet.
|
|
56
|
+
|
|
57
|
+
## Inline comments ({count})
|
|
58
|
+
1. {file}:{line} [{severity}] — {comment body}
|
|
59
|
+
2. ...
|
|
60
|
+
|
|
61
|
+
## PR summary comment
|
|
62
|
+
{full summary body as it will appear on the PR}
|
|
63
|
+
|
|
64
|
+
Reply with one of:
|
|
65
|
+
- "approve" → post all inline comments and the summary exactly as shown above
|
|
66
|
+
- "skip" → post nothing
|
|
67
|
+
- "edit <number>: <new text>" or "skip <numbers>" → revise/drop specific items, then I'll re-preview before posting
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**Wait for my response. Never post any comment to the PR until I reply "approve".** If I edit or skip individual items, apply the changes and re-preview the full set before asking again. "skip" with no numbers means post nothing at all — move directly to step 9 without posting.
|
|
71
|
+
|
|
72
|
+
9. If I approved, post the inline comments and the summary to the PR. If I skipped, post nothing. Either way, then ask me:
|
|
22
73
|
```
|
|
23
|
-
|
|
74
|
+
{Comments posted to PR #{id}. | No comments posted (skipped).}
|
|
75
|
+
- PR type: {Initial | Rework of prior PR(s) #N, #M}
|
|
24
76
|
- X critical issues
|
|
25
77
|
- Y warnings
|
|
26
78
|
- Z suggestions
|
|
27
|
-
- Acceptance criteria: A
|
|
79
|
+
- Acceptance criteria: A met this PR, B met in prior PRs, C not met
|
|
80
|
+
- Rework feedback (if rework): D/E addressed
|
|
28
81
|
|
|
29
82
|
Approve, Request Changes, or skip the vote?
|
|
30
83
|
```
|