@kennethsolomon/shipkit 3.12.0 → 3.13.2

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
@@ -1,5 +1,7 @@
1
1
  <div align="center">
2
2
 
3
+ <img src="assets/shipkit-logo.png" alt="ShipKit" width="260" />
4
+
3
5
  # SHIPKIT
4
6
 
5
7
  **A structured, quality-gated workflow system for Claude Code.**
@@ -269,6 +271,63 @@ Use these anytime — they're not part of any workflow.
269
271
 
270
272
  ---
271
273
 
274
+ ## Code Navigation (LSP)
275
+
276
+ ShipKit configures LSP (Language Server Protocol) automatically — giving Claude Code go-to-definition, find-references, hover, and diagnostics instead of plain text search.
277
+
278
+ **`/sk:setup-claude`** and **`/sk:setup-optimizer`** both run an LSP Integration step that:
279
+ - Sets `ENABLE_LSP_TOOL=1` in `~/.claude/settings.json`
280
+ - Detects your stack and installs the appropriate language server
281
+
282
+ | Stack | Language Server |
283
+ |-------|----------------|
284
+ | TypeScript / JavaScript | `typescript-language-server` |
285
+ | PHP | `intelephense` |
286
+ | Python | `pylsp` |
287
+ | Go | `gopls` |
288
+ | Rust | `rust-analyzer` |
289
+ | Swift | `sourcekit-lsp` |
290
+
291
+ **Rule:** Prefer LSP over `rg`/Grep for code navigation. Use `rg` only when LSP is unavailable or for arbitrary text/pattern matching.
292
+
293
+ ---
294
+
295
+ ## MCP Servers & Plugins
296
+
297
+ 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.
298
+
299
+ ### Sequential Thinking MCP
300
+
301
+ **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.
302
+
303
+ **What it does:** Gives Claude a dedicated reasoning scratchpad. It thinks through steps sequentially before responding, without cluttering your conversation with the intermediate work.
304
+
305
+ **Benefit:** More coherent, thorough responses on hard problems. Especially useful during `/sk:brainstorm`, `/sk:debug`, and `/sk:review`.
306
+
307
+ **How it's installed:** Adds `@modelcontextprotocol/server-sequential-thinking` to `~/.mcp.json` (global, applies to all projects).
308
+
309
+ ### Context7
310
+
311
+ **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.
312
+
313
+ **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.
314
+
315
+ **Benefit:** Accurate code suggestions for the actual version you're running. No more `useEffect` patterns from React 17 when you're on React 19.
316
+
317
+ **How it's installed:** Enables `context7@claude-plugins-official` in `~/.claude/settings.json`.
318
+
319
+ ### ccstatusline
320
+
321
+ **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`.
322
+
323
+ **What it does:** Adds a persistent statusline to the Claude Code CLI showing context window usage, active model, git branch, and current task.
324
+
325
+ **Benefit:** Always-visible session state. Know when you're approaching context limits before it becomes a problem.
326
+
327
+ **How it's installed:** Runs `npx ccstatusline@latest` which writes the statusline config to `~/.claude/settings.json`.
328
+
329
+ ---
330
+
272
331
  ## All Commands
273
332
 
274
333
  <details>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kennethsolomon/shipkit",
3
- "version": "3.12.0",
3
+ "version": "3.13.2",
4
4
  "description": "A structured workflow toolkit for Claude Code.",
5
5
  "keywords": [
6
6
  "claude",
@@ -405,6 +405,63 @@ After stack detection, check and configure LSP tooling:
405
405
 
406
406
  **Idempotency:** Skip install if the server is already present. Skip settings update if `ENABLE_LSP_TOOL` is already set.
407
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
+
408
465
  ### Settings Generation (`.claude/settings.json`)
409
466
 
410
467
  Rendered from `templates/.claude/settings.json.template`. Contains:
@@ -105,7 +105,7 @@
105
105
  ],
106
106
  "PostToolUse": [
107
107
  {
108
- "matcher": "Edit",
108
+ "matcher": "Edit|Write",
109
109
  "hooks": [
110
110
  {
111
111
  "type": "command",
@@ -26,10 +26,10 @@ fi
26
26
  # Branch
27
27
  BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "none")
28
28
 
29
- # Task name from todo.md
29
+ # Active task first unchecked item in todo.md
30
30
  TASK="—"
31
31
  if [ -f "tasks/todo.md" ]; then
32
- TASK=$(head -1 "tasks/todo.md" 2>/dev/null | sed 's/^# TODO.*— //' | cut -c1-40)
32
+ TASK=$(grep -m1 '^\- \[ \]' "tasks/todo.md" 2>/dev/null | sed 's/^- \[ \] //' | cut -c1-40)
33
33
  fi
34
34
 
35
35
  # Output single line
@@ -38,5 +38,14 @@ if [ -d "src" ]; then
38
38
  fi
39
39
  fi
40
40
 
41
+ # Current task — first unchecked item in tasks/todo.md
42
+ if [ -f "tasks/todo.md" ]; then
43
+ CURRENT_TASK=$(grep -m1 '^\- \[ \]' "tasks/todo.md" 2>/dev/null | sed 's/^- \[ \] //')
44
+ if [ -n "$CURRENT_TASK" ]; then
45
+ echo ""
46
+ echo "Current task: $CURRENT_TASK"
47
+ fi
48
+ fi
49
+
41
50
  echo "==================================="
42
51
  exit 0
@@ -73,9 +73,10 @@ if [ -n "$STAGED" ]; then
73
73
  fi
74
74
  fi
75
75
 
76
- # Print warnings (non-blocking) and allow commit
76
+ # Block commit if any violations found
77
77
  if [ -n "$WARNINGS" ]; then
78
- echo -e "=== Commit Validation Warnings ===$WARNINGS\n================================" >&2
78
+ echo -e "=== Commit Blocked ===$WARNINGS\n\nFix the above issues before committing." >&2
79
+ exit 2
79
80
  fi
80
81
 
81
82
  exit 0
@@ -170,6 +170,31 @@ After hooks deployment, check and configure LSP tooling:
170
170
 
171
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.
172
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
+
173
198
  ### Step 2: Scan & Enrich
174
199
 
175
200
  After workflow update, proceeds with codebase discovery and enrichment: