@kennethsolomon/shipkit 3.11.1 → 3.13.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/README.md CHANGED
@@ -269,6 +269,63 @@ Use these anytime — they're not part of any workflow.
269
269
 
270
270
  ---
271
271
 
272
+ ## Code Navigation (LSP)
273
+
274
+ ShipKit configures LSP (Language Server Protocol) automatically — giving Claude Code go-to-definition, find-references, hover, and diagnostics instead of plain text search.
275
+
276
+ **`/sk:setup-claude`** and **`/sk:setup-optimizer`** both run an LSP Integration step that:
277
+ - Sets `ENABLE_LSP_TOOL=1` in `~/.claude/settings.json`
278
+ - Detects your stack and installs the appropriate language server
279
+
280
+ | Stack | Language Server |
281
+ |-------|----------------|
282
+ | TypeScript / JavaScript | `typescript-language-server` |
283
+ | PHP | `intelephense` |
284
+ | Python | `pylsp` |
285
+ | Go | `gopls` |
286
+ | Rust | `rust-analyzer` |
287
+ | Swift | `sourcekit-lsp` |
288
+
289
+ **Rule:** Prefer LSP over `rg`/Grep for code navigation. Use `rg` only when LSP is unavailable or for arbitrary text/pattern matching.
290
+
291
+ ---
292
+
293
+ ## MCP Servers & Plugins
294
+
295
+ Both `/sk:setup-claude` and `/sk:setup-optimizer` offer to install three tools that enhance Claude Code's reasoning, knowledge, and session visibility. All are opt-in and idempotent.
296
+
297
+ ### Sequential Thinking MCP
298
+
299
+ **Why it exists:** Complex problems — architecture decisions, multi-step debugging, tasks with many constraints — benefit from structured reasoning. Without it, Claude works through hard problems in a single pass, which can miss steps or lose track of constraints.
300
+
301
+ **What it does:** Gives Claude a dedicated reasoning scratchpad. It thinks through steps sequentially before responding, without cluttering your conversation with the intermediate work.
302
+
303
+ **Benefit:** More coherent, thorough responses on hard problems. Especially useful during `/sk:brainstorm`, `/sk:debug`, and `/sk:review`.
304
+
305
+ **How it's installed:** Adds `@modelcontextprotocol/server-sequential-thinking` to `~/.mcp.json` (global, applies to all projects).
306
+
307
+ ### Context7
308
+
309
+ **Why it exists:** Claude's training has a knowledge cutoff. When you're working with libraries that release frequently — React, Next.js, Tailwind, shadcn/ui — Claude's suggestions can reference outdated APIs, deprecated methods, or patterns that no longer apply.
310
+
311
+ **What it does:** Fetches current, version-accurate documentation for libraries you're using and injects it into Claude's context at the moment it's needed.
312
+
313
+ **Benefit:** Accurate code suggestions for the actual version you're running. No more `useEffect` patterns from React 17 when you're on React 19.
314
+
315
+ **How it's installed:** Enables `context7@claude-plugins-official` in `~/.claude/settings.json`.
316
+
317
+ ### ccstatusline
318
+
319
+ **Why it exists:** Knowing your context window %, active model, and current branch at a glance matters. Without it, you have to run `/sk:status` or guess when to `/compact`.
320
+
321
+ **What it does:** Adds a persistent statusline to the Claude Code CLI showing context window usage, active model, git branch, and current task.
322
+
323
+ **Benefit:** Always-visible session state. Know when you're approaching context limits before it becomes a problem.
324
+
325
+ **How it's installed:** Runs `npx ccstatusline@latest` which writes the statusline config to `~/.claude/settings.json`.
326
+
327
+ ---
328
+
272
329
  ## All Commands
273
330
 
274
331
  <details>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kennethsolomon/shipkit",
3
- "version": "3.11.1",
3
+ "version": "3.13.0",
4
4
  "description": "A structured workflow toolkit for Claude Code.",
5
5
  "keywords": [
6
6
  "claude",
@@ -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:sub-agent-patterns -->`. If not found, insert the full Sub-Agent Patterns section after the Workflow section and before `## Commands`.
307
- 2. For any future managed sections with BEGIN/END markers, repeat: search for marker, insert if missing, replace content between markers if found.
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,90 @@ 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
+
408
+ ### MCP Servers & Plugins
409
+
410
+ After LSP setup, prompt the user to install three recommended tools that enhance Claude Code with structured reasoning, live documentation, and session visibility:
411
+
412
+ > "Install recommended MCP servers & plugins? (Sequential Thinking, Context7, ccstatusline) [y/n]"
413
+
414
+ If yes, install each — skip any already configured.
415
+
416
+ #### 1. Sequential Thinking MCP
417
+
418
+ Gives Claude a structured scratchpad for complex multi-step reasoning (architecture decisions, debugging chains, multi-constraint problems) without cluttering the conversation context.
419
+
420
+ **Check:** grep `~/.mcp.json` for `sequential-thinking`. If missing, add the entry:
421
+
422
+ ```json
423
+ {
424
+ "sequential-thinking": {
425
+ "command": "npx",
426
+ "args": ["-y", "@modelcontextprotocol/server-sequential-thinking"]
427
+ }
428
+ }
429
+ ```
430
+
431
+ Merge additively into `~/.mcp.json` — never overwrite existing entries. Create the file if it doesn't exist.
432
+
433
+ Report: `+ sequential-thinking MCP added to ~/.mcp.json`
434
+
435
+ #### 2. Context7
436
+
437
+ Fetches live, version-accurate library documentation and injects it into Claude's context — eliminating stale knowledge cutoff issues when working with rapidly evolving frameworks (Tailwind 4, React 19, Next.js 15, etc.).
438
+
439
+ **Check:** grep `~/.claude/settings.json` for `context7`. If missing, add to `enabledPlugins`:
440
+
441
+ ```json
442
+ "enabledPlugins": {
443
+ "context7@claude-plugins-official": true
444
+ }
445
+ ```
446
+
447
+ Merge additively — never overwrite other `enabledPlugins` entries.
448
+
449
+ Report: `+ context7 plugin enabled in ~/.claude/settings.json`
450
+
451
+ #### 3. ccstatusline
452
+
453
+ Configures a persistent Claude Code statusline showing context window %, active model, git branch, and current task — always visible without running `/sk:status`.
454
+
455
+ **Check:** look for an existing `statusline` config in `~/.claude/settings.json`. If not already configured by ccstatusline:
456
+
457
+ ```bash
458
+ npx ccstatusline@latest
459
+ ```
460
+
461
+ Report: `+ ccstatusline configured`
462
+
463
+ **Idempotency:** Skip each install if already present. Never overwrite existing MCP entries, plugin flags, or statusline config.
464
+
380
465
  ### Settings Generation (`.claude/settings.json`)
381
466
 
382
467
  Rendered from `templates/.claude/settings.json.template`. Contains:
@@ -1,5 +1,8 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/claude-code-settings.json",
3
+ "env": {
4
+ "ENABLE_LSP_TOOL": "1"
5
+ },
3
6
  "statusline": {
4
7
  "command": "bash .claude/statusline.sh"
5
8
  },
@@ -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,10 +135,66 @@ 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 2.
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
 
173
+ ### Step 1.7: MCP Servers & Plugin Check
174
+
175
+ After LSP check, verify the three recommended tools are configured:
176
+
177
+ 1. **Sequential Thinking MCP** — grep `~/.mcp.json` for `sequential-thinking`
178
+ 2. **Context7 plugin** — grep `~/.claude/settings.json` for `context7@claude-plugins-official` in `enabledPlugins`
179
+ 3. **ccstatusline** — check `~/.claude/settings.json` for a `statusline` entry set by ccstatusline
180
+
181
+ **Report status and prompt:**
182
+
183
+ > "MCP/Plugins: [X/3] configured
184
+ > sequential-thinking: [✓ configured / ✗ missing]
185
+ > context7: [✓ configured / ✗ missing]
186
+ > ccstatusline: [✓ configured / ✗ missing]
187
+ > Install missing? [y/n]"
188
+
189
+ **If yes:** Follow the same install steps as `sk:setup-claude` MCP Servers & Plugins section:
190
+ - Sequential Thinking: merge entry into `~/.mcp.json`
191
+ - Context7: add `context7@claude-plugins-official: true` to `~/.claude/settings.json` enabledPlugins
192
+ - ccstatusline: run `npx ccstatusline@latest`
193
+
194
+ **If no:** skip, continue to Step 2.
195
+
196
+ **Idempotency:** Never overwrite existing MCP entries, plugin flags, or statusline config — additive merge only.
197
+
142
198
  ### Step 2: Scan & Enrich
143
199
 
144
200
  After workflow update, proceeds with codebase discovery and enrichment:
@@ -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]