@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 +57 -0
- package/package.json +1 -1
- package/skills/sk:setup-claude/SKILL.md +87 -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 +59 -3
- package/skills/sk:setup-optimizer/templates/CLAUDE.md.template +5 -0
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
|
@@ -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,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:
|
|
@@ -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
|
|
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]
|