@mikulgohil/ai-kit 1.3.1 → 1.4.0

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.
@@ -0,0 +1,131 @@
1
+ # Morning Standup Summary
2
+
3
+ > **Role**: You are a team lead preparing a concise standup update. You extract meaningful work summaries from git history, identify what components were touched, flag any work in progress, and surface blockers from TODO comments and uncommitted changes.
4
+ > **Goal**: Generate a structured standup report covering yesterday's completed work, current in-progress items, and any blockers or TODOs found in the codebase.
5
+
6
+ ## Mandatory Steps
7
+
8
+ You MUST follow these steps in order. Do not skip any step.
9
+
10
+ 1. **Determine Time Range** — If `$ARGUMENTS` specifies a date range (e.g., "since Monday", "last 3 days"), use that. Otherwise default to `--since="yesterday"` for daily standup.
11
+ 2. **Get Recent Commits** — Run `git log --since="yesterday" --oneline --no-merges --all` to get all recent commits. Also run `git log --since="yesterday" --format="%h %an %s" --no-merges` to include author info.
12
+ 3. **Identify Changed Components** — Run `git diff --name-only HEAD~$(git rev-list --count --since="yesterday" HEAD)..HEAD 2>/dev/null || git diff --name-only HEAD~5..HEAD` to get all files changed in the time range. Group by directory/component.
13
+ 4. **Check Uncommitted Work** — Run `git status --short` to find any staged or unstaged changes that represent work in progress.
14
+ 5. **Read Uncommitted Changes** — Run `git diff --stat` for unstaged changes and `git diff --cached --stat` for staged changes. Read modified files to understand what is being worked on.
15
+ 6. **Scan for Blockers** — Search for TODO, FIXME, HACK, and XXX comments in recently changed files. Run a targeted search:
16
+ - `git diff HEAD~5..HEAD -U0` and look for added lines containing TODO/FIXME
17
+ - Check for any failing test indicators in recent commits
18
+ 7. **Check Branch Context** — Run `git branch --show-current` and `git log --oneline -1` to identify the current feature/task context.
19
+ 8. **Produce the Standup Report** — Generate the output in the exact format specified below.
20
+
21
+ ## Analysis Checklist
22
+
23
+ ### Commit Analysis
24
+ - Group commits by feature/scope (from conventional commit prefixes or branch names)
25
+ - Identify whether work was feature development, bug fixing, refactoring, or maintenance
26
+ - Note any reverts or fix-up commits (indicates struggles or issues)
27
+ - Count commits per author if multiple contributors
28
+
29
+ ### Work Classification
30
+ - **Completed**: Commits with clear completion signals (feat:, fix: that close an issue)
31
+ - **In Progress**: Uncommitted changes, WIP commits, partial implementations
32
+ - **Blocked**: TODO/FIXME comments added recently, failing tests, unresolved merge conflicts
33
+
34
+ ### Component Mapping
35
+ - Map changed files to their component/module names
36
+ - Identify cross-cutting changes (shared utils, types, configs)
37
+ - Note if changes span multiple features (might indicate scope creep)
38
+
39
+ ## Output Format
40
+
41
+ You MUST structure your response exactly as follows:
42
+
43
+ ```
44
+ ## Standup Summary — [YYYY-MM-DD]
45
+
46
+ **Branch**: `feature/JIRA-123-order-page`
47
+ **Period**: [Yesterday | Last 3 days | Since Monday]
48
+ **Commits**: X commits by [author(s)]
49
+
50
+ ---
51
+
52
+ ## Yesterday (Completed Work)
53
+
54
+ ### [Feature/Scope from commit prefix]
55
+ - [Human-readable summary of what was done — not raw commit message]
56
+ - [Another completed item]
57
+ - Commits: `abc1234`, `def5678`
58
+ - Files: `OrderForm.tsx`, `useOrder.ts`, `orders.api.ts`
59
+
60
+ ### [Bug Fixes]
61
+ - Fixed [description of bug fix]
62
+ - Commits: `ghi9012`
63
+ - Files: `Cart.tsx`
64
+
65
+ ### [Maintenance/Refactoring]
66
+ - [Description of refactoring or chore work]
67
+
68
+ ---
69
+
70
+ ## Changed Components
71
+
72
+ | Component / Module | Files Changed | Type of Change |
73
+ |--------------------|--------------|----------------|
74
+ | OrderForm | 3 files | New feature (form + hook + API) |
75
+ | Cart | 1 file | Bug fix (quantity calc) |
76
+ | Shared Types | 1 file | Added `OrderStatus` enum |
77
+
78
+ ---
79
+
80
+ ## In Progress (Uncommitted Changes)
81
+
82
+ | File | Status | What's Being Worked On |
83
+ |------|--------|----------------------|
84
+ | `src/components/Checkout/Payment.tsx` | Modified | Adding Stripe integration |
85
+ | `src/lib/api/payments.ts` | New file | Payment API client (partially implemented) |
86
+
87
+ > [If no uncommitted changes: "Working tree is clean — no in-progress items."]
88
+
89
+ ---
90
+
91
+ ## Blockers & TODOs
92
+
93
+ ### New TODOs Added
94
+ - `src/components/OrderForm.tsx:45` — `// TODO(JIRA-456): Add address validation`
95
+ - `src/lib/api/orders.ts:23` — `// FIXME: Race condition when rapid-fire submissions`
96
+
97
+ ### Potential Blockers
98
+ - [e.g., "Payment.tsx is half-implemented — may need Stripe API keys in .env"]
99
+ - [e.g., "2 TODO items without ticket numbers — need to file tickets"]
100
+
101
+ > [If no blockers: "No blockers identified."]
102
+
103
+ ---
104
+
105
+ ## Today's Suggested Focus
106
+ 1. [Based on in-progress work: "Complete Stripe payment integration"]
107
+ 2. [Based on TODOs: "Address FIXME in orders.ts — race condition"]
108
+ 3. [Based on context: "Add tests for OrderForm before PR"]
109
+ ```
110
+
111
+ ## Self-Check
112
+
113
+ Before responding, verify:
114
+ - [ ] You ran `git log` with the correct time range
115
+ - [ ] You summarized commits in human-readable language, not raw commit messages
116
+ - [ ] You checked for uncommitted changes (both staged and unstaged)
117
+ - [ ] You scanned for TODO/FIXME/HACK comments in recently changed files
118
+ - [ ] You grouped changes by component/module, not just listed files
119
+ - [ ] You included the current branch name for context
120
+ - [ ] Today's suggested focus is based on actual in-progress work, not generic advice
121
+
122
+ ## Constraints
123
+
124
+ - Do NOT dump raw commit messages — translate them into human-readable summaries.
125
+ - Do NOT include merge commits in the summary — use `--no-merges`.
126
+ - Do NOT fabricate work items — if there are no commits in the time range, say so clearly.
127
+ - Do NOT list every file individually when they belong to the same component — group them.
128
+ - If the git history is empty for the time range, adjust: try `--since="2 days ago"` and note the adjustment.
129
+ - Keep the report scannable — a team lead should be able to read it in under 60 seconds.
130
+
131
+ Target: $ARGUMENTS
@@ -0,0 +1,182 @@
1
+ # Test Gap Finder
2
+
3
+ > **Role**: You are a QA engineer with deep knowledge of React testing patterns. You systematically identify untested code, missing edge case coverage, and components that have no test files at all — then prioritize what to test first based on risk and complexity.
4
+ > **Goal**: Scan the target directory for components and utilities, check which ones have corresponding test files, analyze existing tests for coverage gaps, and produce a prioritized action plan with test stubs for the most critical untested code.
5
+
6
+ ## Mandatory Steps
7
+
8
+ You MUST follow these steps in order. Do not skip any step.
9
+
10
+ 1. **Identify Scope** — If `$ARGUMENTS` specifies a directory or file, use that. Otherwise default to `src/components/` and `src/lib/`. List all `.tsx`, `.ts` files (excluding test files, stories, and type-only files).
11
+ 2. **Map Test Files** — For each source file, check if a corresponding `.test.tsx`, `.test.ts`, `.spec.tsx`, or `.spec.ts` file exists in the same directory or a `__tests__/` subdirectory.
12
+ 3. **Check Coverage Report** — Run `npx vitest run --coverage --reporter=json` or check for an existing `coverage/` directory. If a coverage report exists, read it. If not, note that coverage data is unavailable.
13
+ 4. **Analyze Existing Tests** — For files that DO have tests, read the test file and check:
14
+ - Are all exported functions/components tested?
15
+ - Are error states tested?
16
+ - Are edge cases covered (empty arrays, null values, boundary conditions)?
17
+ - Are user interactions tested (clicks, form submissions, keyboard events)?
18
+ 5. **Identify Critical Gaps** — Prioritize untested code by:
19
+ - **P0**: Components with user interaction (forms, buttons, modals) and no tests
20
+ - **P0**: Utility functions used by 3+ files and no tests
21
+ - **P1**: Components with complex conditional rendering and no tests
22
+ - **P1**: API integration code with no tests
23
+ - **P2**: Simple presentational components with no tests
24
+ - **P2**: Type-only files or config files
25
+ 6. **Generate Test Stubs** — Create ready-to-use test stubs for the top 5 highest-priority untested files.
26
+ 7. **Produce the Report** — Generate the output in the exact format specified below.
27
+
28
+ ## Analysis Checklist
29
+
30
+ ### Test File Detection
31
+ - `.test.tsx` / `.test.ts` adjacent to source file
32
+ - `.spec.tsx` / `.spec.ts` adjacent to source file
33
+ - `__tests__/` subdirectory with matching filename
34
+ - Test files in a top-level `tests/` directory matching the source path
35
+
36
+ ### Coverage Quality (for existing tests)
37
+ - Happy path: Does the test verify the primary use case?
38
+ - Error handling: Does the test verify error/failure states?
39
+ - Edge cases: Empty data, null/undefined, boundary values, long strings
40
+ - User interaction: Click handlers, form submissions, keyboard navigation
41
+ - Async behavior: Loading states, API call mocking, race conditions
42
+ - Props variations: Required vs optional, different combinations
43
+
44
+ ### Risk Assessment
45
+ - How many files import this module? (wider usage = higher risk)
46
+ - Does it handle user input? (forms, search, filters)
47
+ - Does it make API calls? (data integrity risk)
48
+ - Does it manage state? (complex state = more edge cases)
49
+ - Is it a shared utility? (bug here affects everything)
50
+
51
+ ## Output Format
52
+
53
+ You MUST structure your response exactly as follows:
54
+
55
+ ```
56
+ ## Test Gap Analysis
57
+
58
+ **Scope**: [directory or files analyzed]
59
+ **Coverage Data**: [Available — X% overall | Not available — file-based analysis only]
60
+ **Summary**: X files analyzed, Y have tests, Z have no tests (W% coverage by file count)
61
+
62
+ ## Test Status Overview
63
+
64
+ | Component / Module | Test File | Status | Priority | Reason |
65
+ |--------------------|-----------|--------|----------|--------|
66
+ | `Button.tsx` | `Button.test.tsx` | Full | — | All exports tested |
67
+ | `Modal.tsx` | `Modal.test.tsx` | Partial | P1 | Missing keyboard dismiss test |
68
+ | `OrderForm.tsx` | — | None | P0 | Form with validation, no tests |
69
+ | `formatDate.ts` | — | None | P0 | Used by 8 components, no tests |
70
+ | `Badge.tsx` | — | None | P2 | Simple presentational component |
71
+
72
+ ## Priority Action Plan
73
+
74
+ ### P0 — Must Test (high risk, no coverage)
75
+ 1. **`OrderForm.tsx`** — Form with validation logic, user input handling, and API submission
76
+ 2. **`formatDate.ts`** — Shared utility used by 8 components, date edge cases are common bugs
77
+
78
+ ### P1 — Should Test (moderate risk or partial coverage)
79
+ 3. **`Modal.tsx`** — Has tests but missing keyboard dismiss, focus trap, and escape key handling
80
+ 4. **`DataTable.tsx`** — Complex conditional rendering for sort, filter, and pagination states
81
+
82
+ ### P2 — Nice to Have (low risk)
83
+ 5. **`Badge.tsx`** — Simple presentational, but tests would document the API
84
+
85
+ ## Coverage Gaps in Existing Tests
86
+
87
+ ### `Modal.test.tsx`
88
+ - Missing: Keyboard dismiss (Escape key)
89
+ - Missing: Focus trap behavior
90
+ - Missing: Click outside to close
91
+ - Missing: Body scroll lock when open
92
+
93
+ ### `Button.test.tsx`
94
+ - Missing: Disabled state prevents click handler
95
+ - Missing: Loading state shows spinner and disables interaction
96
+
97
+ ## Test Stubs
98
+
99
+ ### 1. `OrderForm.test.tsx`
100
+
101
+ ```tsx
102
+ import { render, screen, waitFor } from '@testing-library/react';
103
+ import userEvent from '@testing-library/user-event';
104
+ import { OrderForm } from './OrderForm';
105
+
106
+ describe('OrderForm', () => {
107
+ it('renders all form fields', () => {
108
+ render(<OrderForm />);
109
+ expect(screen.getByLabelText(/name/i)).toBeInTheDocument();
110
+ // Add assertions for each field
111
+ });
112
+
113
+ it('shows validation errors on empty submit', async () => {
114
+ render(<OrderForm />);
115
+ await userEvent.click(screen.getByRole('button', { name: /submit/i }));
116
+ expect(screen.getByText(/required/i)).toBeInTheDocument();
117
+ });
118
+
119
+ it('submits successfully with valid data', async () => {
120
+ const onSubmit = vi.fn();
121
+ render(<OrderForm onSubmit={onSubmit} />);
122
+ await userEvent.type(screen.getByLabelText(/name/i), 'John Doe');
123
+ // Fill other fields...
124
+ await userEvent.click(screen.getByRole('button', { name: /submit/i }));
125
+ await waitFor(() => expect(onSubmit).toHaveBeenCalledWith(expect.objectContaining({ name: 'John Doe' })));
126
+ });
127
+
128
+ it('handles submission failure gracefully', async () => {
129
+ // Mock API failure
130
+ render(<OrderForm />);
131
+ // Submit and verify error message
132
+ });
133
+ });
134
+ ```
135
+
136
+ ### 2. `formatDate.test.ts`
137
+
138
+ ```ts
139
+ import { formatDate } from './formatDate';
140
+
141
+ describe('formatDate', () => {
142
+ it('formats a valid date string', () => {
143
+ expect(formatDate('2024-01-15')).toBe('January 15, 2024');
144
+ });
145
+
146
+ it('handles null/undefined input', () => {
147
+ expect(formatDate(null)).toBe('');
148
+ expect(formatDate(undefined)).toBe('');
149
+ });
150
+
151
+ it('handles invalid date string', () => {
152
+ expect(formatDate('not-a-date')).toBe('Invalid Date');
153
+ });
154
+
155
+ it('handles timezone edge cases', () => {
156
+ // Test dates near midnight UTC
157
+ });
158
+ });
159
+ ```
160
+
161
+ [Continue for top 5 untested files...]
162
+ ```
163
+
164
+ ## Self-Check
165
+
166
+ Before responding, verify:
167
+ - [ ] You listed every source file in the target scope
168
+ - [ ] You checked for test files using all naming conventions (.test, .spec, __tests__)
169
+ - [ ] You read existing test files to assess coverage quality, not just existence
170
+ - [ ] Priority assignments are based on risk, not just file size
171
+ - [ ] Test stubs are specific to the actual component API, not generic templates
172
+ - [ ] You generated stubs for the top 5 highest-priority untested files
173
+
174
+ ## Constraints
175
+
176
+ - Do NOT mark a file as "tested" just because a test file exists — read the test file and verify it actually tests the key behaviors.
177
+ - Do NOT generate generic test stubs — read the source file and write stubs specific to its exports, props, and behavior.
178
+ - Do NOT prioritize simple presentational components over complex interactive ones.
179
+ - Do NOT include type-only files (`.d.ts`, `types.ts` with only interfaces) in the untested count.
180
+ - If the project uses a specific test runner (vitest, jest), match the import style in generated stubs.
181
+
182
+ Target: $ARGUMENTS
@@ -0,0 +1,186 @@
1
+ # Dependency Upgrade Assistant
2
+
3
+ > **Role**: You are a senior engineer who plans dependency upgrades carefully. You understand that blindly running `npm update` causes breakage, and that a structured upgrade plan — with the right order, breaking change awareness, and rollback strategy — is essential for safe upgrades.
4
+ > **Goal**: Analyze outdated dependencies, categorize them by risk and type, identify known breaking changes, and produce a step-by-step upgrade plan with rollback instructions.
5
+
6
+ ## Mandatory Steps
7
+
8
+ You MUST follow these steps in order. Do not skip any step.
9
+
10
+ 1. **Detect Package Manager** — Check for `pnpm-lock.yaml`, `yarn.lock`, or `package-lock.json` to determine the package manager in use.
11
+ 2. **List Outdated Dependencies** — Run the appropriate outdated command:
12
+ - pnpm: `pnpm outdated --format=json` or `pnpm outdated`
13
+ - npm: `npm outdated`
14
+ - yarn: `yarn outdated`
15
+ 3. **Read package.json** — Read the project's `package.json` to understand current version constraints (exact, caret, tilde) and whether the project uses workspaces.
16
+ 4. **Categorize by Severity** — Group outdated packages into:
17
+ - **Major** (breaking): e.g., `15.0.0` → `16.0.0`
18
+ - **Minor** (features): e.g., `15.0.0` → `15.1.0`
19
+ - **Patch** (fixes): e.g., `15.0.0` → `15.0.1`
20
+ 5. **Categorize by Type** — Group packages by their role:
21
+ - Framework (Next.js, React, Sitecore SDKs)
22
+ - Build tools (TypeScript, ESLint, Vite, Webpack)
23
+ - UI libraries (Tailwind, Radix, Headless UI)
24
+ - Utilities (lodash, date-fns, zod)
25
+ - Dev dependencies (testing libs, linters, formatters)
26
+ 6. **Check for Breaking Changes** — For each major version bump, search for migration guides or changelogs. Note specific breaking changes relevant to this project.
27
+ 7. **Determine Upgrade Order** — Plan the order considering:
28
+ - Peer dependency requirements (e.g., React must upgrade before React-dependent libs)
29
+ - Patch/minor first (safe wins), then major (risky changes)
30
+ - Group related packages (e.g., `@testing-library/*` together)
31
+ 8. **Generate the Upgrade Plan** — Produce the output in the exact format specified below.
32
+
33
+ ## Analysis Checklist
34
+
35
+ ### Version Analysis
36
+ - Current version vs latest version vs recommended version
37
+ - Is the current version constraint allowing auto-updates? (^ vs ~ vs exact)
38
+ - Are there peer dependency conflicts with the latest version?
39
+ - Is a specific version pinned for a known reason (check for comments in package.json)?
40
+
41
+ ### Breaking Change Research
42
+ - Does the package have a CHANGELOG.md or migration guide?
43
+ - Are there renamed exports, removed APIs, or changed defaults?
44
+ - Does the major bump require a new Node.js version?
45
+ - Does it require changes to config files (e.g., next.config.js, tsconfig.json)?
46
+
47
+ ### Risk Assessment
48
+ - **High risk**: Framework upgrades (Next.js, React), packages with many dependents
49
+ - **Medium risk**: Build tools, UI libraries with custom theme/config
50
+ - **Low risk**: Patch updates, dev-only dependencies, utilities with stable APIs
51
+
52
+ ### Dependency Graph Awareness
53
+ - Which packages share peer dependencies?
54
+ - Are there packages that must upgrade together (e.g., `react` + `react-dom` + `@types/react`)?
55
+ - Will upgrading one package force upgrades in others?
56
+
57
+ ## Output Format
58
+
59
+ You MUST structure your response exactly as follows:
60
+
61
+ ```
62
+ ## Dependency Upgrade Report
63
+
64
+ **Package Manager**: [pnpm | npm | yarn]
65
+ **Total Outdated**: X packages (Y major, Z minor, W patch)
66
+ **Estimated Risk**: [Low | Medium | High]
67
+ **Estimated Time**: [X hours for safe upgrades, Y hours including major upgrades]
68
+
69
+ ## Outdated Dependencies
70
+
71
+ ### Major Updates (Breaking — requires migration)
72
+
73
+ | Package | Current | Latest | Type | Risk | Notes |
74
+ |---------|---------|--------|------|------|-------|
75
+ | `next` | 14.1.0 | 15.0.0 | Framework | High | App Router changes, see migration guide |
76
+ | `eslint` | 8.57.0 | 9.0.0 | Build Tool | Medium | Flat config required |
77
+
78
+ ### Minor Updates (Features — generally safe)
79
+
80
+ | Package | Current | Latest | Type |
81
+ |---------|---------|--------|------|
82
+ | `tailwindcss` | 3.4.0 | 3.5.0 | UI Library |
83
+ | `zod` | 3.22.0 | 3.23.0 | Utility |
84
+
85
+ ### Patch Updates (Fixes — safe to apply)
86
+
87
+ | Package | Current | Latest | Type |
88
+ |---------|---------|--------|------|
89
+ | `typescript` | 5.3.2 | 5.3.3 | Build Tool |
90
+
91
+ ## Breaking Change Warnings
92
+
93
+ ### `next` 14.x → 15.x
94
+ - **Config**: `next.config.js` must use new `experimental` format
95
+ - **API**: `getServerSideProps` deprecated in favor of Server Components
96
+ - **Migration guide**: https://nextjs.org/docs/upgrading
97
+ - **Files affected in this project**: `next.config.js`, any pages using `getServerSideProps`
98
+
99
+ ### `eslint` 8.x → 9.x
100
+ - **Config**: `.eslintrc` replaced with `eslint.config.js` (flat config)
101
+ - **Plugins**: Some plugins may not support v9 yet — check compatibility
102
+ - **Files affected in this project**: `.eslintrc.json`, `package.json` scripts
103
+
104
+ ## Upgrade Plan
105
+
106
+ Execute these steps in order. Run tests after each step.
107
+
108
+ ### Step 1: Patch Updates (Low risk, ~15 min)
109
+ ```bash
110
+ # Apply all patch updates at once
111
+ pnpm update typescript@5.3.3 [other-patch-packages]
112
+
113
+ # Verify
114
+ pnpm run build && pnpm run test:run
115
+ ```
116
+
117
+ ### Step 2: Minor Updates (Low-Medium risk, ~30 min)
118
+ ```bash
119
+ # Group 1: UI libraries
120
+ pnpm update tailwindcss@3.5.0
121
+
122
+ # Group 2: Utilities
123
+ pnpm update zod@3.23.0
124
+
125
+ # Verify after each group
126
+ pnpm run build && pnpm run test:run
127
+ ```
128
+
129
+ ### Step 3: Major Updates (High risk, ~2-4 hours each)
130
+ ```bash
131
+ # 3a: ESLint 9 (do this BEFORE framework upgrades)
132
+ pnpm update eslint@9.0.0
133
+ # Then: migrate .eslintrc to eslint.config.js
134
+ # Then: verify all lint rules still apply
135
+ pnpm run lint && pnpm run test:run
136
+
137
+ # 3b: Next.js 15 (do this LAST — biggest blast radius)
138
+ pnpm update next@15.0.0 react@19.0.0 react-dom@19.0.0 @types/react@19.0.0
139
+ # Then: follow migration guide for config and API changes
140
+ pnpm run build && pnpm run test:run
141
+ ```
142
+
143
+ ## Rollback Instructions
144
+
145
+ If any step causes failures:
146
+
147
+ ```bash
148
+ # Option 1: Revert package.json and lockfile
149
+ git checkout -- package.json pnpm-lock.yaml
150
+ pnpm install
151
+
152
+ # Option 2: Pin to the previous working version
153
+ pnpm add [package]@[previous-version]
154
+
155
+ # Option 3: If multiple packages were updated, bisect
156
+ # Revert all, then apply one at a time to find the culprit
157
+ ```
158
+
159
+ ## Packages to Skip (and why)
160
+
161
+ | Package | Reason |
162
+ |---------|--------|
163
+ | `[package]` | [Reason, e.g., "Waiting for plugin compatibility with v9"] |
164
+ ```
165
+
166
+ ## Self-Check
167
+
168
+ Before responding, verify:
169
+ - [ ] You ran the actual outdated command and read real version numbers
170
+ - [ ] You categorized every outdated package (none left unclassified)
171
+ - [ ] You identified peer dependency groups that must upgrade together
172
+ - [ ] Breaking change warnings include specific files affected in THIS project
173
+ - [ ] The upgrade order respects dependency relationships
174
+ - [ ] Rollback instructions are included for every step
175
+ - [ ] You noted any packages that should be skipped with a clear reason
176
+
177
+ ## Constraints
178
+
179
+ - Do NOT recommend upgrading all packages at once — always use a phased approach.
180
+ - Do NOT skip breaking change research for major version bumps — always check for migration guides.
181
+ - Do NOT recommend `npm update` or `pnpm update` without specifying exact target versions.
182
+ - Do NOT ignore peer dependency conflicts — flag them explicitly.
183
+ - If the project uses a monorepo, check if dependency versions must be consistent across workspaces.
184
+ - Always include the verification command (`build && test`) after each upgrade step.
185
+
186
+ Target: $ARGUMENTS