@ngxtm/devkit 3.14.0 → 3.15.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.
package/SKILLS_INDEX.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Skills Index
2
2
 
3
- > Auto-generated index of 768 available skills.
3
+ > Auto-generated index of 769 available skills.
4
4
  > Use this to discover skills without loading all files into context.
5
5
  >
6
6
  > **To use a skill**: Read the full skill at `~/.claude/skills/<skill-name>/SKILL.md`
@@ -17,7 +17,7 @@
17
17
  | Testing | 27 |
18
18
  | Python | 23 |
19
19
  | Security | 21 |
20
- | Frontend Frameworks | 19 |
20
+ | Frontend Frameworks | 20 |
21
21
  | TypeScript/JavaScript | 19 |
22
22
  | Databases | 19 |
23
23
  | API Design | 10 |
@@ -3544,6 +3544,11 @@ Expert integration of Supabase Auth with Next.js App Router Use when: supabase a
3544
3544
 
3545
3545
  React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React...
3546
3546
 
3547
+ ### react-doctor
3548
+ `skills/react-doctor`
3549
+
3550
+ Run react-doctor to scan React codebase for health issues. Diagnose security, performance, correctness, architecture problems with 0-100 score.
3551
+
3547
3552
  ### react-expert
3548
3553
  `skills/react-expert`
3549
3554
 
@@ -0,0 +1,141 @@
1
+ ---
2
+ name: react-doctor
3
+ description: Run react-doctor to scan React codebase for health issues. Diagnose security, performance, correctness, architecture problems with 0-100 score.
4
+ upstream: https://github.com/millionco/react-doctor
5
+ upstream-version: "0.0.0"
6
+ triggers:
7
+ - react-doctor
8
+ - react health
9
+ - react scan
10
+ - react lint
11
+ - code health
12
+ - react audit
13
+ - react score
14
+ role: tool
15
+ scope: diagnostics
16
+ output-format: analysis
17
+ ---
18
+
19
+ # React Doctor
20
+
21
+ Scan React codebase for security, performance, correctness, and architecture issues. Outputs a 0-100 health score with actionable diagnostics.
22
+
23
+ ## When to Use
24
+
25
+ - After making React changes (catch issues early)
26
+ - During code review or PR review
27
+ - Finishing a feature before merge
28
+ - Periodic codebase health check
29
+ - Setting up CI quality gates
30
+
31
+ ## Quick Start
32
+
33
+ ```bash
34
+ # Full scan with file details
35
+ npx -y react-doctor@latest . --verbose
36
+
37
+ # Scan only changed files (vs base branch)
38
+ npx -y react-doctor@latest . --verbose --diff
39
+
40
+ # Score only (for CI)
41
+ npx -y react-doctor@latest . --score
42
+ ```
43
+
44
+ ## How It Works
45
+
46
+ Detects framework (Next.js, Vite, Remix, etc.), React version, and compiler setup, then runs two parallel passes:
47
+
48
+ 1. **Lint** — 60+ rules across 8 categories
49
+ 2. **Dead code** — unused files, exports, types, duplicates
50
+
51
+ ## Rule Categories
52
+
53
+ | Category | Examples |
54
+ |----------|----------|
55
+ | State & Effects | missing deps, stale closures, unnecessary re-renders |
56
+ | Performance | unoptimized renders, missing memoization, large bundles |
57
+ | Architecture | circular deps, prop drilling, god components |
58
+ | Bundle Size | unused imports, heavy dependencies |
59
+ | Security | dangerouslySetInnerHTML, XSS vectors |
60
+ | Correctness | key prop misuse, effect cleanup, race conditions |
61
+ | Accessibility | missing ARIA, no-autofocus, semantic HTML |
62
+ | Framework-specific | Next.js patterns, React Native issues |
63
+
64
+ ## CLI Flags
65
+
66
+ | Flag | Description |
67
+ |------|-------------|
68
+ | `--verbose` | Show file details and line numbers per rule |
69
+ | `--no-lint` | Skip linting |
70
+ | `--no-dead-code` | Skip dead code detection |
71
+ | `--score` | Output only the score |
72
+ | `--diff [base]` | Scan only files changed vs base branch |
73
+ | `--project <name>` | Select workspace project (comma-separated) |
74
+ | `-y, --yes` | Skip prompts, scan all workspace projects |
75
+ | `--fix` | Open Ami to auto-fix all issues |
76
+
77
+ ## Configuration
78
+
79
+ Create `react-doctor.config.json` at project root:
80
+
81
+ ```json
82
+ {
83
+ "ignore": {
84
+ "rules": ["react/no-danger", "knip/exports"],
85
+ "files": ["src/generated/**"]
86
+ }
87
+ }
88
+ ```
89
+
90
+ Or use `"reactDoctor"` key in `package.json`. Config file takes precedence.
91
+
92
+ | Key | Type | Default | Description |
93
+ |-----|------|---------|-------------|
94
+ | `ignore.rules` | `string[]` | `[]` | Rules to suppress (`plugin/rule` format) |
95
+ | `ignore.files` | `string[]` | `[]` | File globs to exclude |
96
+ | `lint` | `boolean` | `true` | Enable/disable lint checks |
97
+ | `deadCode` | `boolean` | `true` | Enable/disable dead code detection |
98
+ | `verbose` | `boolean` | `false` | Show file details per rule |
99
+ | `diff` | `boolean\|string` | — | Force diff mode or pin base branch |
100
+
101
+ ## Node.js API
102
+
103
+ ```js
104
+ import { diagnose } from "react-doctor/api";
105
+ const result = await diagnose(".", { lint: true, deadCode: true });
106
+ // result.score → { score: 82, label: "Good" }
107
+ // result.diagnostics → Array of { filePath, plugin, rule, severity, message, help, line, column, category }
108
+ ```
109
+
110
+ ## Workflow
111
+
112
+ 1. **Run scan** → `npx -y react-doctor@latest . --verbose`
113
+ 2. **Read score** → 75+ Great, 50-74 Needs work, <50 Critical
114
+ 3. **Fix errors first** → errors weigh more than warnings
115
+ 4. **Re-run** → verify score improved
116
+ 5. **Iterate** → address warnings if time permits
117
+
118
+ ## Scoring
119
+
120
+ - **75-100** — Great health
121
+ - **50-74** — Needs work
122
+ - **0-49** — Critical issues
123
+ - Errors weigh more than warnings in score calculation
124
+
125
+ ## GitHub Actions
126
+
127
+ ```yaml
128
+ - uses: millionco/react-doctor@main
129
+ with:
130
+ diff: main
131
+ verbose: true
132
+ github-token: ${{ secrets.GITHUB_TOKEN }}
133
+ ```
134
+
135
+ Posts findings as PR comment when `github-token` is set on `pull_request` events.
136
+
137
+ ## Related Skills
138
+
139
+ - **react-expert** — Fix identified React issues
140
+ - **code-review** — Include react-doctor scan in reviews
141
+ - **test-master** — Dead code findings inform test coverage gaps
@@ -1,108 +1,176 @@
1
1
  ---
2
- description: Sync new skills from upstream repos with AI evaluation
3
- argument-hint: [options]
2
+ description: Sync skills, rules, and external-skills from upstream repos with AI evaluation
3
+ argument-hint: [--auto] [--dry-run]
4
4
  ---
5
5
 
6
- # Sync Skills from Upstream
6
+ # Sync from Upstream
7
7
 
8
- > AI-assisted upstream skill sync: fetch, evaluate, select, build.
8
+ > AI-driven upstream sync: fetch, evaluate new+updated skills/rules/external-skills, apply, build, commit.
9
9
 
10
- ## Workflow
10
+ ## Arguments
11
11
 
12
- ### Step 1: Pre-flight Check
12
+ Parse `$ARGUMENTS` for flags:
13
+ - `--auto`: Fully autonomous — sync all useful new items, accept all updates, no user questions
14
+ - `--dry-run`: Show report only, don't copy or commit anything
13
15
 
14
- Verify clean working directory:
15
- ```bash
16
- git status --porcelain
17
- ```
18
- If not clean → ask user to commit or stash first.
16
+ ## Workflow
19
17
 
20
- ### Step 2: Fetch Upstream
18
+ ### Step 1: Pre-flight
21
19
 
22
- Run the sync script to clone upstream repos and get a report:
20
+ Check git status:
23
21
  ```bash
24
- npm run sync:upstream
22
+ git status --porcelain
25
23
  ```
26
24
 
27
- This creates a sync branch and clones repos to temp directory.
25
+ - If **clean** proceed
26
+ - If **dirty + `--auto`** → run `git stash push -m "devkit-sync-stash"`
27
+ - If **dirty + interactive** → ask user to commit/stash or continue with stash
28
28
 
29
- ### Step 3: Evaluate New Skills
29
+ Remember if stash was created (for restore later).
30
30
 
31
- After the script runs, it shows which skills are new. For each **new** skill:
31
+ ### Step 2: Fetch & Report
32
32
 
33
- 1. Read its `SKILL.md` from the temp directory
34
- 2. Evaluate:
35
- - **Useful**: Skill covers a distinct domain not already well-covered
36
- - **Duplicate**: Similar skill already exists in the local collection
37
- - **Irrelevant**: Too niche or low quality
33
+ Run the sync script with JSON output:
34
+ ```bash
35
+ node scripts/manual-sync.js --no-branch --json
36
+ ```
38
37
 
39
- 3. Present summary to user:
38
+ Parse the JSON output. It contains:
39
+ ```json
40
+ {
41
+ "tempDir": "/tmp/devkit-sync",
42
+ "skills": { "new": [...], "updated": [...], "unchanged": N },
43
+ "rules": { "new": [...], "updated": [...], "unchanged": N },
44
+ "external-skills": [{ "name": "...", "localExists": bool, "upstreamVersion": "...", "localVersion": "...", "checkFiles": [...], "tempPath": "..." }]
45
+ }
40
46
  ```
41
- Upstream sync found N new skills:
42
47
 
43
- Useful (X):
44
- - skill-name: short reason
45
- - skill-name: short reason
48
+ If all categories have 0 new and 0 updated → report "Already up to date" and stop.
46
49
 
47
- ⚠️ Possibly duplicate (Y):
48
- - skill-name: overlaps with existing-skill
50
+ ### Step 3: Evaluate New Skills
49
51
 
50
- Skip (Z):
51
- - skill-name: reason
52
+ For each item in `skills.new`:
53
+ 1. Read its `SKILL.md` from the `path` field in the report
54
+ 2. Classify:
55
+ - **Useful**: Covers a distinct domain, well-structured, actionable content
56
+ - **Duplicate**: Similar skill already exists (check by name/description against skills-compact.json)
57
+ - **Skip**: Too niche, low quality, or just "be a senior X engineer" with no real content
58
+ 3. In `--auto` mode: sync all useful, skip duplicates and low quality
59
+ 4. In interactive mode: present summary and ask user using `AskUserQuestion`
52
60
 
53
- Sync options:
54
- 1. Sync all useful (X skills)
55
- 2. Sync all useful + duplicates (X+Y skills)
56
- 3. Let me choose manually
61
+ Summary format:
57
62
  ```
63
+ Upstream sync found N new skills:
58
64
 
59
- ### Step 4: Copy Selected Skills
60
-
61
- Use `AskUserQuestion` to get user's choice. Then for selected skills:
62
-
63
- ```bash
64
- cp -r /tmp/devkit-sync/{source}/{skill-name} ./skills/{skill-name}
65
+ Useful (X): skill-a, skill-b, ...
66
+ ⚠️ Duplicate (Y): skill-c (overlaps existing-skill), ...
67
+ Skip (Z): skill-d (reason), ...
65
68
  ```
66
69
 
67
- ### Step 5: Rebuild Indexes
70
+ ### Step 3.5: Evaluate Updated Skills
71
+
72
+ For each item in `skills.updated`:
73
+ 1. Read **both** upstream SKILL.md (from tempDir) and local SKILL.md
74
+ 2. Compare and summarize what changed
75
+ 3. Classify:
76
+ - **Accept**: Upstream adds substantial new content (new sections, patterns, commands)
77
+ - **Skip**: Changes are trivial (formatting only) or local version is superior/customized
78
+ 4. In `--auto` mode: accept all non-trivial updates
79
+ 5. In interactive mode: present changes summary and ask user
80
+
81
+ ### Step 4: Evaluate External Skills
82
+
83
+ For each item in `external-skills`:
84
+ 1. Check if local skill exists (`localExists` field)
85
+ 2. If exists:
86
+ a. Read `UPSTREAM.md` from `skills/{name}/UPSTREAM.md` for sync guide
87
+ b. Read the relevant `checkFiles` from `tempPath` in the report
88
+ c. Compare with local `SKILL.md`
89
+ d. Check version: if `upstreamVersion` differs from `localVersion` → needs update
90
+ e. Follow UPSTREAM.md guide: preserve devkit-specific sections, update upstream-derived content
91
+ f. Update `upstream-version` in SKILL.md frontmatter to `upstreamVersion` value
92
+ 3. If not exists: report it as available but don't auto-create (manual setup needed)
93
+ 4. In `--auto` mode: apply all detected changes following UPSTREAM.md rules
94
+ 5. In interactive mode: show what changed and ask user
95
+
96
+ ### Step 5: Evaluate Rules
97
+
98
+ For each item in `rules.new`:
99
+ 1. Read the rule content from `path` field
100
+ 2. Classify: useful (covers new pattern) or skip (duplicate/too generic)
101
+ 3. In `--auto` mode: sync all useful
102
+ 4. In interactive mode: ask user
103
+
104
+ For each item in `rules.updated`:
105
+ 1. Compare upstream and local content
106
+ 2. Accept meaningful updates, skip trivial ones
107
+
108
+ ### Step 6: Apply Changes
109
+
110
+ If `--dry-run` → skip this step, just show what would be done.
111
+
112
+ For selected items:
113
+ - **New skills**: `node scripts/manual-sync.js --copy <name>` for each
114
+ - **Updated skills**: Read upstream SKILL.md, use Write tool to update local SKILL.md (preserve local customizations if any)
115
+ - **New rules**: `node scripts/manual-sync.js --copy <name>` for each
116
+ - **Updated rules**: Use Write tool to update local rule files
117
+ - **External skills**: Use Write tool to edit SKILL.md following UPSTREAM.md guide
118
+
119
+ ### Step 7: Rebuild & Verify
68
120
 
69
121
  ```bash
70
122
  npm run build
71
123
  ```
72
124
 
73
- This regenerates all indexes (merged-commands, rules-index, skills-index, skills-compact).
125
+ - If **success** proceed to commit
126
+ - If **failure** → rollback ALL changes:
127
+ ```bash
128
+ git checkout -- .
129
+ ```
130
+ If stash was created: `git stash pop`
131
+ Report the build error and stop.
74
132
 
75
- ### Step 6: Review & Commit
133
+ ### Step 8: Commit
76
134
 
77
- Show summary of changes:
135
+ Stage and commit the changes:
78
136
  ```bash
79
- git diff --stat
137
+ git add skills/ rules/ merged-commands/ SKILLS_INDEX.md skills-index.json skills-compact.json rules-index.json
80
138
  ```
81
139
 
82
- Ask user if they want to commit:
83
- ```bash
84
- git add skills/ merged-commands/ SKILLS_INDEX.md skills-index.json skills-compact.json rules-index.json
85
- git commit -m "feat(skills): sync N new skills from upstream"
140
+ Commit message format:
141
+ ```
142
+ feat(skills): sync N new, M updated skills from upstream
86
143
  ```
87
144
 
88
- ## Options
145
+ Adjust the message based on what was actually synced (skills, rules, external-skills).
89
146
 
90
- - `$ARGUMENTS` can specify:
91
- - `--auto`: Skip evaluation, sync all new skills automatically
92
- - `--dry-run`: Only show report, don't copy anything
93
- - A specific upstream name to sync from (e.g., `antigravity` or `agent-assistant`)
147
+ If stash was created earlier: `git stash pop` to restore user's changes.
94
148
 
95
149
  ## Evaluation Criteria
96
150
 
97
- When evaluating skills, consider:
98
- - Does it cover a technology the project uses or might use?
99
- - Is there already a similar skill? (check by name and description)
100
- - Is the SKILL.md well-structured with actionable content?
101
- - Is it too generic (just says "be a senior X engineer")?
151
+ ### New Skills
152
+ - **Useful**: Covers distinct domain, well-structured SKILL.md, actionable patterns/commands
153
+ - **Duplicate**: Similar name or description to existing skill in skills-compact.json
154
+ - **Skip**: Too niche, low quality, just "be a senior X engineer" boilerplate
155
+
156
+ ### Updated Skills
157
+ - **Accept**: Upstream adds substantial new content (new sections, patterns, examples)
158
+ - **Skip**: Changes are trivial (whitespace, formatting) or local version is customized and superior
159
+
160
+ ### External Skills
161
+ - Follow UPSTREAM.md guide in each skill directory
162
+ - Always update version tracking
163
+ - Never overwrite devkit-specific frontmatter (`triggers`, `role`, `scope`, `output-format`)
164
+
165
+ ### Rules
166
+ - **Accept**: Rule covers useful pattern not in existing rules
167
+ - **Skip**: Duplicate or too generic
102
168
 
103
169
  ## Important
104
170
 
105
- - **NEVER** auto-sync without user confirmation (unless `--auto` flag)
106
- - **ALWAYS** run `npm run build` after copying skills
107
- - Keep the sync branch for PR review if needed
108
- - The temp directory is at the path shown by the sync script output
171
+ - In interactive mode, **ALWAYS** ask before applying changes
172
+ - In `--auto` mode, proceed fully autonomously
173
+ - **ALWAYS** run `npm run build` after applying changes
174
+ - **ALWAYS** rollback on build failure via `git checkout -- .`
175
+ - Use `node scripts/manual-sync.js --copy` or Write tool for file operations — **NEVER** use `cp -r` (Windows incompatible)
176
+ - The temp directory path is in the JSON report's `tempDir` field
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ngxtm/devkit",
3
- "version": "3.14.0",
3
+ "version": "3.15.0",
4
4
  "description": "Per-project AI skills with smart tech detection - lightweight and context-optimized",
5
5
  "main": "cli/index.js",
6
6
  "bin": {
package/rules-index.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": "1.0.0",
3
- "generatedAt": "2026-02-19T07:09:25.835Z",
3
+ "generatedAt": "2026-02-23T08:59:47.559Z",
4
4
  "templates": {
5
5
  "dart": {
6
6
  "path": "templates/dart/rules",
@@ -0,0 +1,141 @@
1
+ ---
2
+ name: react-doctor
3
+ description: Run react-doctor to scan React codebase for health issues. Diagnose security, performance, correctness, architecture problems with 0-100 score.
4
+ upstream: https://github.com/millionco/react-doctor
5
+ upstream-version: "0.0.0"
6
+ triggers:
7
+ - react-doctor
8
+ - react health
9
+ - react scan
10
+ - react lint
11
+ - code health
12
+ - react audit
13
+ - react score
14
+ role: tool
15
+ scope: diagnostics
16
+ output-format: analysis
17
+ ---
18
+
19
+ # React Doctor
20
+
21
+ Scan React codebase for security, performance, correctness, and architecture issues. Outputs a 0-100 health score with actionable diagnostics.
22
+
23
+ ## When to Use
24
+
25
+ - After making React changes (catch issues early)
26
+ - During code review or PR review
27
+ - Finishing a feature before merge
28
+ - Periodic codebase health check
29
+ - Setting up CI quality gates
30
+
31
+ ## Quick Start
32
+
33
+ ```bash
34
+ # Full scan with file details
35
+ npx -y react-doctor@latest . --verbose
36
+
37
+ # Scan only changed files (vs base branch)
38
+ npx -y react-doctor@latest . --verbose --diff
39
+
40
+ # Score only (for CI)
41
+ npx -y react-doctor@latest . --score
42
+ ```
43
+
44
+ ## How It Works
45
+
46
+ Detects framework (Next.js, Vite, Remix, etc.), React version, and compiler setup, then runs two parallel passes:
47
+
48
+ 1. **Lint** — 60+ rules across 8 categories
49
+ 2. **Dead code** — unused files, exports, types, duplicates
50
+
51
+ ## Rule Categories
52
+
53
+ | Category | Examples |
54
+ |----------|----------|
55
+ | State & Effects | missing deps, stale closures, unnecessary re-renders |
56
+ | Performance | unoptimized renders, missing memoization, large bundles |
57
+ | Architecture | circular deps, prop drilling, god components |
58
+ | Bundle Size | unused imports, heavy dependencies |
59
+ | Security | dangerouslySetInnerHTML, XSS vectors |
60
+ | Correctness | key prop misuse, effect cleanup, race conditions |
61
+ | Accessibility | missing ARIA, no-autofocus, semantic HTML |
62
+ | Framework-specific | Next.js patterns, React Native issues |
63
+
64
+ ## CLI Flags
65
+
66
+ | Flag | Description |
67
+ |------|-------------|
68
+ | `--verbose` | Show file details and line numbers per rule |
69
+ | `--no-lint` | Skip linting |
70
+ | `--no-dead-code` | Skip dead code detection |
71
+ | `--score` | Output only the score |
72
+ | `--diff [base]` | Scan only files changed vs base branch |
73
+ | `--project <name>` | Select workspace project (comma-separated) |
74
+ | `-y, --yes` | Skip prompts, scan all workspace projects |
75
+ | `--fix` | Open Ami to auto-fix all issues |
76
+
77
+ ## Configuration
78
+
79
+ Create `react-doctor.config.json` at project root:
80
+
81
+ ```json
82
+ {
83
+ "ignore": {
84
+ "rules": ["react/no-danger", "knip/exports"],
85
+ "files": ["src/generated/**"]
86
+ }
87
+ }
88
+ ```
89
+
90
+ Or use `"reactDoctor"` key in `package.json`. Config file takes precedence.
91
+
92
+ | Key | Type | Default | Description |
93
+ |-----|------|---------|-------------|
94
+ | `ignore.rules` | `string[]` | `[]` | Rules to suppress (`plugin/rule` format) |
95
+ | `ignore.files` | `string[]` | `[]` | File globs to exclude |
96
+ | `lint` | `boolean` | `true` | Enable/disable lint checks |
97
+ | `deadCode` | `boolean` | `true` | Enable/disable dead code detection |
98
+ | `verbose` | `boolean` | `false` | Show file details per rule |
99
+ | `diff` | `boolean\|string` | — | Force diff mode or pin base branch |
100
+
101
+ ## Node.js API
102
+
103
+ ```js
104
+ import { diagnose } from "react-doctor/api";
105
+ const result = await diagnose(".", { lint: true, deadCode: true });
106
+ // result.score → { score: 82, label: "Good" }
107
+ // result.diagnostics → Array of { filePath, plugin, rule, severity, message, help, line, column, category }
108
+ ```
109
+
110
+ ## Workflow
111
+
112
+ 1. **Run scan** → `npx -y react-doctor@latest . --verbose`
113
+ 2. **Read score** → 75+ Great, 50-74 Needs work, <50 Critical
114
+ 3. **Fix errors first** → errors weigh more than warnings
115
+ 4. **Re-run** → verify score improved
116
+ 5. **Iterate** → address warnings if time permits
117
+
118
+ ## Scoring
119
+
120
+ - **75-100** — Great health
121
+ - **50-74** — Needs work
122
+ - **0-49** — Critical issues
123
+ - Errors weigh more than warnings in score calculation
124
+
125
+ ## GitHub Actions
126
+
127
+ ```yaml
128
+ - uses: millionco/react-doctor@main
129
+ with:
130
+ diff: main
131
+ verbose: true
132
+ github-token: ${{ secrets.GITHUB_TOKEN }}
133
+ ```
134
+
135
+ Posts findings as PR comment when `github-token` is set on `pull_request` events.
136
+
137
+ ## Related Skills
138
+
139
+ - **react-expert** — Fix identified React issues
140
+ - **code-review** — Include react-doctor scan in reviews
141
+ - **test-master** — Dead code findings inform test coverage gaps
@@ -0,0 +1,68 @@
1
+ # React Doctor — Upstream Sync Guide
2
+
3
+ ## Source
4
+
5
+ - Repo: https://github.com/millionco/react-doctor
6
+ - NPM: `react-doctor`
7
+ - Key files: `install-skill.sh`, `README.md`, `package.json`
8
+
9
+ ## What to Check During Sync
10
+
11
+ ### 1. Version bump
12
+ - Check `package.json` → `version` field in cloned repo
13
+ - Compare with `upstream-version` in `SKILL.md` frontmatter
14
+ - If changed → update frontmatter
15
+
16
+ ### 2. Skill content changes
17
+ - Read `install-skill.sh` → find `SKILL_CONTENT` heredoc block
18
+ - Compare with our `SKILL.md` body sections
19
+ - If they added new instructions → integrate into relevant section
20
+
21
+ ### 3. New rules or categories
22
+ - Read `README.md` "How it works" section
23
+ - Check if rule count changed (currently 60+)
24
+ - Check if new categories added beyond current 8
25
+ - Update "Rule Categories" table if changed
26
+
27
+ ### 4. CLI flag changes
28
+ - Read `README.md` "Options" section
29
+ - Compare with "CLI Flags" table in SKILL.md
30
+ - Add/remove/update flags as needed
31
+
32
+ ### 5. Config format changes
33
+ - Read `README.md` "Configuration" section
34
+ - Compare with "Configuration" section in SKILL.md
35
+ - Check for new config keys
36
+
37
+ ### 6. GitHub Actions changes
38
+ - Read `README.md` "GitHub Actions" section
39
+ - Compare with "GitHub Actions" section in SKILL.md
40
+
41
+ ## What to Preserve (Never Overwrite from Upstream)
42
+
43
+ - YAML frontmatter: `triggers`, `role`, `scope`, `output-format`
44
+ - "When to Use" section (devkit-tailored context)
45
+ - "Related Skills" section (devkit-specific references)
46
+ - "Workflow" section (devkit-enhanced steps)
47
+
48
+ ## What to Update (From Upstream)
49
+
50
+ - `upstream-version` in frontmatter
51
+ - CLI flags if changed
52
+ - Rule categories if new ones added
53
+ - Config format if changed
54
+ - Quick Start commands if changed
55
+ - GitHub Actions usage if changed
56
+ - Node.js API if changed
57
+
58
+ ## Update Checklist
59
+
60
+ 1. `npm run sync:upstream` — clones react-doctor repo to temp
61
+ 2. Check report output for react-doctor section
62
+ 3. Read cloned files listed in report
63
+ 4. Compare with current `SKILL.md` using sections above
64
+ 5. Update `SKILL.md` if changes found
65
+ 6. Update `upstream-version` in frontmatter
66
+ 7. `npm run build` — rebuild indexes
67
+ 8. Verify: `react-doctor` still in `skills-compact.json`
68
+ 9. Commit and push
package/skills-index.json CHANGED
@@ -2734,6 +2734,11 @@
2734
2734
  "path": "skills/react-best-practices",
2735
2735
  "description": "React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patter"
2736
2736
  },
2737
+ {
2738
+ "name": "react-doctor",
2739
+ "path": "skills/react-doctor",
2740
+ "description": "Run react-doctor to scan React codebase for health issues. Diagnose security, performance, correctness, architecture problems with 0-100 score."
2741
+ },
2737
2742
  {
2738
2743
  "name": "react-expert",
2739
2744
  "path": "skills/react-expert",