@kennethsolomon/shipkit 3.11.1 → 3.12.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/package.json +1 -1
- package/skills/sk:setup-claude/SKILL.md +30 -2
- package/skills/sk:setup-claude/templates/.claude/settings.json.template +3 -0
- package/skills/sk:setup-claude/templates/CLAUDE.md.template +6 -0
- package/skills/sk:setup-optimizer/SKILL.md +34 -3
- package/skills/sk:setup-optimizer/templates/CLAUDE.md.template +5 -0
package/package.json
CHANGED
|
@@ -303,8 +303,9 @@ Use `run_in_background: true` for tasks that don't block your next step:
|
|
|
303
303
|
|
|
304
304
|
When a generated CLAUDE.md exists (has `<!-- Generated by /sk:setup-claude -->` marker), perform a section completeness check before reporting "no changes needed":
|
|
305
305
|
|
|
306
|
-
1. Search for `<!-- BEGIN:
|
|
307
|
-
2.
|
|
306
|
+
1. Search for `<!-- BEGIN:code-navigation -->`. If not found, insert the Code Navigation section (with BEGIN/END markers) before `## Workflow`.
|
|
307
|
+
2. Search for `<!-- BEGIN:sub-agent-patterns -->`. If not found, insert the full Sub-Agent Patterns section after the Workflow section and before `## Commands`.
|
|
308
|
+
3. For any future managed sections with BEGIN/END markers, repeat: search for marker, insert if missing, replace content between markers if found.
|
|
308
309
|
|
|
309
310
|
This check runs every time — even if tools are installed and tasks files exist. Never short-circuit before verifying section completeness.
|
|
310
311
|
|
|
@@ -377,6 +378,33 @@ Deployed from `templates/.claude/rules/` based on detected stack:
|
|
|
377
378
|
| `laravel.md.template` | Laravel detected in framework |
|
|
378
379
|
| `react.md.template` | React or Next.js detected in framework |
|
|
379
380
|
|
|
381
|
+
### LSP Integration
|
|
382
|
+
|
|
383
|
+
After stack detection, check and configure LSP tooling:
|
|
384
|
+
|
|
385
|
+
1. **Enable LSP tool** — ensure `"env": { "ENABLE_LSP_TOOL": "1" }` is present in `~/.claude/settings.json` (global settings, not project-level). Add if missing — merge additively, never overwrite existing keys.
|
|
386
|
+
|
|
387
|
+
2. **Detect language server** — based on detected stack:
|
|
388
|
+
|
|
389
|
+
| Stack | Language Server | Install Command |
|
|
390
|
+
|-------|----------------|-----------------|
|
|
391
|
+
| JavaScript / TypeScript | `typescript-language-server` | `npm install -g typescript typescript-language-server` |
|
|
392
|
+
| PHP / Laravel | `intelephense` | `npm install -g intelephense` |
|
|
393
|
+
| Python | `pyright` | `npm install -g pyright` |
|
|
394
|
+
| Go | `gopls` | `go install golang.org/x/tools/gopls@latest` |
|
|
395
|
+
| Rust | `rust-analyzer` | `rustup component add rust-analyzer` |
|
|
396
|
+
| Swift | `sourcekit-lsp` | pre-installed with Xcode — no install needed |
|
|
397
|
+
|
|
398
|
+
3. **Check if installed** — run `which <server>` to verify. If missing, install automatically.
|
|
399
|
+
|
|
400
|
+
4. **Report:**
|
|
401
|
+
```
|
|
402
|
+
LSP: typescript-language-server ✓ installed
|
|
403
|
+
ENABLE_LSP_TOOL=1 in ~/.claude/settings.json ✓
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
**Idempotency:** Skip install if the server is already present. Skip settings update if `ENABLE_LSP_TOOL` is already set.
|
|
407
|
+
|
|
380
408
|
### Settings Generation (`.claude/settings.json`)
|
|
381
409
|
|
|
382
410
|
Rendered from `templates/.claude/settings.json.template`. Contains:
|
|
@@ -31,6 +31,12 @@
|
|
|
31
31
|
[TEST_COMMAND]
|
|
32
32
|
```
|
|
33
33
|
|
|
34
|
+
## Code Navigation
|
|
35
|
+
<!-- BEGIN:code-navigation -->
|
|
36
|
+
- Prefer LSP over Grep for code navigation (go-to-definition, find-references, hover, diagnostics)
|
|
37
|
+
- Use `rg` only when LSP is unavailable or for arbitrary text/pattern matching
|
|
38
|
+
<!-- END:code-navigation -->
|
|
39
|
+
|
|
34
40
|
## Workflow — Follow This Order
|
|
35
41
|
<!-- LOCK -->
|
|
36
42
|
|
|
@@ -40,7 +40,7 @@ The single command to keep your entire ShipKit project infrastructure current. D
|
|
|
40
40
|
|
|
41
41
|
Before making any changes, runs a diagnostic pass on the existing CLAUDE.md:
|
|
42
42
|
|
|
43
|
-
- **Missing sections** — checks for essential sections (Workflow, Sub-Agent Patterns, Cross-Platform Tracking, Project Memory, Lessons Capture, Testing, Commands, etc.)
|
|
43
|
+
- **Missing sections** — checks for essential sections (Code Navigation, Workflow, Sub-Agent Patterns, Cross-Platform Tracking, Project Memory, Lessons Capture, Testing, Commands, etc.)
|
|
44
44
|
- **Stale content** — detects outdated info (stale model/route counts, removed dependencies, old command names like `/laravel-lint` instead of `/sk:lint`)
|
|
45
45
|
- **Inconsistencies** — compares documented vs actual project state (directories, scripts, workflows)
|
|
46
46
|
- **Section completeness** — flags sections that exist but are empty or have only placeholder text
|
|
@@ -88,7 +88,7 @@ Explore → Design → Plan → Branch → Write Tests + Implement → Commit
|
|
|
88
88
|
1. Read the latest workflow template from `~/.claude/skills/sk:setup-claude/templates/CLAUDE.md.template`
|
|
89
89
|
2. Compare with the current CLAUDE.md workflow section
|
|
90
90
|
3. If different, replace the workflow section (between `## Workflow` and the next `##` that isn't a workflow subsection)
|
|
91
|
-
4. Insert missing sections (Sub-Agent Patterns, Project Memory, etc.) in their correct positions
|
|
91
|
+
4. Insert missing sections (Code Navigation, Sub-Agent Patterns, Project Memory, etc.) in their correct positions — Code Navigation (`<!-- BEGIN:code-navigation -->`) goes before `## Workflow`; Sub-Agent Patterns goes after `## Workflow` and before `## Commands`
|
|
92
92
|
5. Preserve all `<!-- LOCK -->` and project-specific sections
|
|
93
93
|
|
|
94
94
|
### Step 1.5: Hooks Deployment
|
|
@@ -135,7 +135,38 @@ After updating the workflow, check and deploy hooks:
|
|
|
135
135
|
~ Updated .claude/settings.json with new hook wiring
|
|
136
136
|
```
|
|
137
137
|
|
|
138
|
-
**If no:** skip hook deployment, continue to Step
|
|
138
|
+
**If no:** skip hook deployment, continue to Step 1.6.
|
|
139
|
+
|
|
140
|
+
### Step 1.6: LSP Integration Check
|
|
141
|
+
|
|
142
|
+
After hooks deployment, check and configure LSP tooling:
|
|
143
|
+
|
|
144
|
+
1. **Check `ENABLE_LSP_TOOL`** — verify `~/.claude/settings.json` has `"env": { "ENABLE_LSP_TOOL": "1" }`. If missing, add it.
|
|
145
|
+
|
|
146
|
+
2. **Detect stack language server** — based on the project's detected language:
|
|
147
|
+
|
|
148
|
+
| Stack | Language Server | Install Command |
|
|
149
|
+
|-------|----------------|-----------------|
|
|
150
|
+
| JavaScript / TypeScript | `typescript-language-server` | `npm install -g typescript typescript-language-server` |
|
|
151
|
+
| PHP / Laravel | `intelephense` | `npm install -g intelephense` |
|
|
152
|
+
| Python | `pyright` | `npm install -g pyright` |
|
|
153
|
+
| Go | `gopls` | `go install golang.org/x/tools/gopls@latest` |
|
|
154
|
+
| Rust | `rust-analyzer` | `rustup component add rust-analyzer` |
|
|
155
|
+
| Swift | `sourcekit-lsp` | pre-installed with Xcode — no install needed |
|
|
156
|
+
|
|
157
|
+
3. **Check if installed** — run `which <server>` or `<server> --version`
|
|
158
|
+
|
|
159
|
+
4. **Install if missing** — run the install command for the detected stack
|
|
160
|
+
|
|
161
|
+
5. **Report status:**
|
|
162
|
+
```
|
|
163
|
+
LSP: typescript-language-server ✓ installed
|
|
164
|
+
ENABLE_LSP_TOOL=1 in ~/.claude/settings.json ✓
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
**If no language server needed** (e.g. Swift with Xcode), skip install — report status only.
|
|
168
|
+
|
|
169
|
+
**Idempotency:** Never overwrite existing `env` keys — merge additively.
|
|
139
170
|
|
|
140
171
|
**Idempotency:** Never overwrite existing hook files — the user may have customized them. Only deploy hooks that don't exist yet. For settings.json, merge additively.
|
|
141
172
|
|
|
@@ -65,6 +65,11 @@
|
|
|
65
65
|
- **Testing**: `[TEST_COMMAND]`
|
|
66
66
|
- **Linting**: `[LINT_COMMAND]`
|
|
67
67
|
|
|
68
|
+
## Code Navigation
|
|
69
|
+
|
|
70
|
+
- Prefer LSP over Grep for code navigation (go-to-definition, find-references, hover, diagnostics)
|
|
71
|
+
- Use `rg` only when LSP is unavailable or for arbitrary text/pattern matching
|
|
72
|
+
|
|
68
73
|
## Important Context
|
|
69
74
|
|
|
70
75
|
- The project uses [LANGUAGE] with [FRAMEWORK]
|