@kennethsolomon/shipkit 3.0.1 → 3.0.3
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/LICENSE +21 -0
- package/README.md +86 -66
- package/bin/shipkit.js +2 -1
- package/commands/sk/change.md +135 -0
- package/commands/sk/execute-plan.md +6 -0
- package/commands/sk/help.md +14 -1
- package/package.json +1 -1
- package/skills/sk:setup-claude/templates/CLAUDE.md.template +2 -0
- package/skills/sk:write-tests/SKILL.md +2 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Kenneth Solomon
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
1
3
|
# SHIPKIT
|
|
2
4
|
|
|
3
|
-
A structured, quality-gated workflow system for Claude Code
|
|
5
|
+
**A structured, quality-gated workflow system for Claude Code.**
|
|
6
|
+
|
|
7
|
+
Stop winging it. Ship features with TDD, auto-detecting linters, security audits,<br>
|
|
8
|
+
and AI-powered code review — all wired into a single repeatable workflow.
|
|
4
9
|
|
|
5
|
-
|
|
10
|
+
**Every gate must pass. Quality isn't optional — it's structural.**
|
|
6
11
|
|
|
7
12
|
[](https://www.npmjs.com/package/@kennethsolomon/shipkit)
|
|
8
13
|
[](LICENSE)
|
|
@@ -14,78 +19,54 @@ npm install -g @kennethsolomon/shipkit && shipkit
|
|
|
14
19
|
|
|
15
20
|
Works on Mac, Linux, and Windows.
|
|
16
21
|
|
|
17
|
-
|
|
18
|
-
~ $ shipkit
|
|
19
|
-
|
|
20
|
-
⚑
|
|
21
|
-
|
|
|
22
|
-
/|\
|
|
23
|
-
/ | \
|
|
24
|
-
/ | \
|
|
25
|
-
/ | \
|
|
26
|
-
/ ☠ | ☠ \
|
|
27
|
-
/ | \
|
|
28
|
-
/______|______\
|
|
29
|
-
▄████████████████▄
|
|
30
|
-
█ ◉ ◉ █
|
|
31
|
-
▀██████████████▀
|
|
32
|
-
≋ ≋ ≋ ≋ ≋
|
|
33
|
-
|
|
34
|
-
ShipKit v3.0.1
|
|
35
|
-
A structured workflow toolkit for Claude Code.
|
|
36
|
-
by Kenneth Solomon
|
|
37
|
-
|
|
38
|
-
✓ Installed commands/sk (15 commands)
|
|
39
|
-
✓ Installed skills (19 skills)
|
|
40
|
-
|
|
41
|
-
Done! Run /sk:help to get started.
|
|
42
|
-
|
|
43
|
-
~ $
|
|
44
|
-
```
|
|
22
|
+
</div>
|
|
45
23
|
|
|
46
|
-
|
|
24
|
+
<div align="center">
|
|
47
25
|
|
|
48
|
-
|
|
26
|
+

|
|
27
|
+
|
|
28
|
+
</div>
|
|
49
29
|
|
|
50
30
|
---
|
|
51
31
|
|
|
52
|
-
|
|
32
|
+
<div align="center">
|
|
33
|
+
|
|
34
|
+
*"Ran `/sk:review` on what I thought was done. It found 3 things I would have caught in production. Now it's in every merge."*
|
|
53
35
|
|
|
54
|
-
|
|
36
|
+
*"Every other Claude workflow I tried was either too rigid or too vague. ShipKit is the first one that actually ships."*
|
|
55
37
|
|
|
56
|
-
The
|
|
38
|
+
*"The gates feel annoying until the day they catch something real. Now I don't merge without them."*
|
|
57
39
|
|
|
58
|
-
|
|
40
|
+
</div>
|
|
59
41
|
|
|
60
42
|
---
|
|
61
43
|
|
|
62
|
-
##
|
|
44
|
+
## Quick Start
|
|
63
45
|
|
|
64
46
|
```bash
|
|
47
|
+
# 1. Install ShipKit globally
|
|
65
48
|
npm install -g @kennethsolomon/shipkit && shipkit
|
|
66
|
-
```
|
|
67
49
|
|
|
68
|
-
|
|
50
|
+
# 2. Bootstrap your project (run inside your project directory)
|
|
51
|
+
/sk:setup-claude
|
|
69
52
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
cd shipkit
|
|
73
|
-
./install.sh
|
|
53
|
+
# 3. Start your first feature
|
|
54
|
+
/sk:brainstorm
|
|
74
55
|
```
|
|
75
56
|
|
|
76
|
-
|
|
57
|
+
`/sk:setup-claude` creates `tasks/todo.md`, `tasks/lessons.md`, and a project-specific `CLAUDE.md` with the full workflow baked in. Run it once per project.
|
|
77
58
|
|
|
78
|
-
|
|
79
|
-
npm install -g @kennethsolomon/shipkit && shipkit
|
|
80
|
-
```
|
|
59
|
+
---
|
|
81
60
|
|
|
82
|
-
|
|
61
|
+
## How It Works
|
|
83
62
|
|
|
84
|
-
|
|
63
|
+
ShipKit installs slash commands and skills into `~/.claude/`. Each command is a focused instruction set that Claude follows — no magic, just structured prompts that enforce quality gates.
|
|
85
64
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
65
|
+
The workflow is linear: **Brainstorm → Plan → Branch → Test → Implement → Lint → Security → Review → Ship.**
|
|
66
|
+
|
|
67
|
+
Every gate must pass before the next step. If lint fails, fix it. If tests don't cover new code, write them. Security issues block the PR. This isn't optional — it's the whole point.
|
|
68
|
+
|
|
69
|
+
**Requirements change mid-workflow?** Run `/sk:change`. It assesses the scope and tells you exactly where to re-enter — no guessing, no skipping steps.
|
|
89
70
|
|
|
90
71
|
---
|
|
91
72
|
|
|
@@ -164,6 +145,22 @@ Debug → Branch → Fix → Smoke Test → Lint ✓ → Test ✓ → Security
|
|
|
164
145
|
|
|
165
146
|
After merging: add a regression test and a lesson to `tasks/lessons.md`.
|
|
166
147
|
|
|
148
|
+
### Requirement Change Flow
|
|
149
|
+
|
|
150
|
+
Requirements change mid-workflow all the time. Run `/sk:change` whenever something shifts — it classifies the scope and routes you back to the right step automatically.
|
|
151
|
+
|
|
152
|
+
```
|
|
153
|
+
Requirement changes → /sk:change → re-enter at correct step
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
| Tier | What changed | Re-entry point |
|
|
157
|
+
|------|-------------|----------------|
|
|
158
|
+
| **Tier 1** — Behavior Tweak | Logic changes, scope stays the same *(e.g. delete all → delete users only)* | `/sk:write-tests` |
|
|
159
|
+
| **Tier 2** — New Requirements | New scope, new constraints, new acceptance criteria | `/sk:write-plan` |
|
|
160
|
+
| **Tier 3** — Scope Shift | Fundamental rethinking of approach or architecture | `/sk:brainstorm` |
|
|
161
|
+
|
|
162
|
+
`/sk:change` logs the change to `tasks/todo.md` and `tasks/progress.md`, marks invalidated tasks, and tells you exactly what to carry forward.
|
|
163
|
+
|
|
167
164
|
---
|
|
168
165
|
|
|
169
166
|
## Commands
|
|
@@ -189,6 +186,7 @@ After merging: add a regression test and a lesson to `tasks/lessons.md`.
|
|
|
189
186
|
| `/sk:schema-migrate` | Analyze pending schema changes (Prisma, Drizzle, Eloquent, SQLAlchemy, ActiveRecord) |
|
|
190
187
|
| `/sk:write-tests` | TDD: write failing tests before implementation |
|
|
191
188
|
| `/sk:execute-plan` | Implement the plan in small batches |
|
|
189
|
+
| `/sk:change` | Handle a mid-workflow requirement change — assess scope and re-enter at the right step |
|
|
192
190
|
| `/sk:debug` | Structured bug investigation: reproduce → isolate → fix |
|
|
193
191
|
| `/sk:hotfix` | Emergency fix workflow — skips design and TDD |
|
|
194
192
|
|
|
@@ -238,8 +236,14 @@ After merging: add a regression test and a lesson to `tasks/lessons.md`.
|
|
|
238
236
|
|
|
239
237
|
## Model Routing Profiles
|
|
240
238
|
|
|
241
|
-
ShipKit routes each skill to the right model automatically
|
|
242
|
-
|
|
239
|
+
ShipKit routes each skill to the right model automatically. Set it once per project:
|
|
240
|
+
|
|
241
|
+
```bash
|
|
242
|
+
/sk:set-profile balanced # default
|
|
243
|
+
/sk:set-profile quality # most projects
|
|
244
|
+
/sk:set-profile full-sail # high-stakes / client work
|
|
245
|
+
/sk:set-profile budget # side projects / exploration
|
|
246
|
+
```
|
|
243
247
|
|
|
244
248
|
| Profile | Philosophy | Best for |
|
|
245
249
|
|---------|-----------|---------|
|
|
@@ -252,13 +256,14 @@ Set it once with `/sk:set-profile <name>` — config is saved to `.shipkit/confi
|
|
|
252
256
|
|-------------|-----------|---------|----------|--------|
|
|
253
257
|
| brainstorm, write-plan, debug, execute-plan, review | opus | opus | sonnet | sonnet |
|
|
254
258
|
| write-tests, frontend-design, api-design, security-check | opus | sonnet | sonnet | sonnet |
|
|
259
|
+
| change | opus | sonnet | sonnet | sonnet |
|
|
255
260
|
| perf, schema-migrate, accessibility | opus | sonnet | sonnet | haiku |
|
|
256
261
|
| lint, test | sonnet | sonnet | haiku | haiku |
|
|
257
262
|
| smart-commit, branch, update-task | haiku | haiku | haiku | haiku |
|
|
258
263
|
|
|
259
|
-
`opus` = inherit (uses your current session model).
|
|
264
|
+
`opus` = inherit (uses your current session model). Config lives in `.shipkit/config.json` — per project, gitignored by default.
|
|
260
265
|
|
|
261
|
-
###
|
|
266
|
+
### Config Reference
|
|
262
267
|
|
|
263
268
|
```json
|
|
264
269
|
{
|
|
@@ -296,26 +301,41 @@ ShipKit auto-detects your stack — no configuration needed.
|
|
|
296
301
|
|
|
297
302
|
---
|
|
298
303
|
|
|
299
|
-
##
|
|
304
|
+
## Security
|
|
300
305
|
|
|
301
|
-
|
|
306
|
+
ShipKit instructs Claude to audit your code — but Claude also has access to your filesystem. Protect sensitive files by adding a deny list to `.claude/settings.json` in your project:
|
|
302
307
|
|
|
303
|
-
```
|
|
304
|
-
|
|
308
|
+
```json
|
|
309
|
+
{
|
|
310
|
+
"permissions": {
|
|
311
|
+
"deny": [
|
|
312
|
+
"Read(.env)",
|
|
313
|
+
"Read(.env.*)",
|
|
314
|
+
"Read(**/*.pem)",
|
|
315
|
+
"Read(**/*.key)",
|
|
316
|
+
"Read(**/*.p12)",
|
|
317
|
+
"Read(**/credentials*)"
|
|
318
|
+
]
|
|
319
|
+
}
|
|
320
|
+
}
|
|
305
321
|
```
|
|
306
322
|
|
|
307
|
-
This
|
|
323
|
+
This prevents Claude from reading secrets even if a prompt tries to access them. Pair this with your `.gitignore` — never commit `.env` files.
|
|
324
|
+
|
|
325
|
+
If you discover a security issue in ShipKit itself, please open a [GitHub issue](https://github.com/kennethsolomon/shipkit/issues) or email directly rather than posting publicly.
|
|
308
326
|
|
|
309
327
|
---
|
|
310
328
|
|
|
311
|
-
##
|
|
329
|
+
## License
|
|
312
330
|
|
|
313
|
-
|
|
331
|
+
MIT — see [LICENSE](LICENSE) for details.
|
|
314
332
|
|
|
315
|
-
|
|
333
|
+
Built by [Kenneth Solomon](https://github.com/kennethsolomon).
|
|
316
334
|
|
|
317
335
|
---
|
|
318
336
|
|
|
319
|
-
|
|
337
|
+
<div align="center">
|
|
338
|
+
|
|
339
|
+
**Claude Code is powerful. ShipKit makes it reliable.**
|
|
320
340
|
|
|
321
|
-
|
|
341
|
+
</div>
|
package/bin/shipkit.js
CHANGED
|
@@ -32,7 +32,8 @@ ${cyan} ▀██████████████▀${reset}
|
|
|
32
32
|
${cyan} ≋ ≋ ≋ ≋ ≋${reset}
|
|
33
33
|
|
|
34
34
|
${bold}ShipKit${reset} ${dim}v${pkg.version}${reset}
|
|
35
|
-
|
|
35
|
+
Quality-gated workflow toolkit for Claude Code.
|
|
36
|
+
TDD · Lint · Security · Review · Ship.
|
|
36
37
|
by Kenneth Solomon
|
|
37
38
|
|
|
38
39
|
`;
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Handle a mid-workflow requirement change — assess scope and re-enter at the right step."
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# /sk:change
|
|
6
|
+
|
|
7
|
+
Handle a requirement change that was discovered mid-workflow. Assesses the scope of the change and routes you back to the correct step — no over-restarting, no skipping.
|
|
8
|
+
|
|
9
|
+
## Hard Rules
|
|
10
|
+
|
|
11
|
+
- **DO NOT modify code or tests until this command completes.** The re-entry point must be determined first.
|
|
12
|
+
- **DO NOT guess the scope.** Ask explicitly if unclear.
|
|
13
|
+
- **Always update `tasks/todo.md` and `tasks/progress.md`** to record what changed and why before routing forward.
|
|
14
|
+
|
|
15
|
+
## Steps
|
|
16
|
+
|
|
17
|
+
### 1. Understand the Change
|
|
18
|
+
|
|
19
|
+
Ask the user:
|
|
20
|
+
- What changed? (describe the old behavior and the new behavior)
|
|
21
|
+
- What triggered this change? (review finding, stakeholder feedback, edge case discovered, etc.)
|
|
22
|
+
- Is this change isolated to one area, or does it affect multiple parts of the system?
|
|
23
|
+
|
|
24
|
+
Do not proceed until you have clear answers.
|
|
25
|
+
|
|
26
|
+
### 2. Assess the Scope
|
|
27
|
+
|
|
28
|
+
Based on the answers, classify the change into one of three tiers:
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
**Tier 1 — Behavior Tweak**
|
|
33
|
+
|
|
34
|
+
The logic changes but the scope and plan stay the same. Examples:
|
|
35
|
+
- Delete all tables → delete only users table
|
|
36
|
+
- Return 404 → return 403 on unauthorized access
|
|
37
|
+
- Sort ascending → sort descending
|
|
38
|
+
|
|
39
|
+
Re-entry point: **`/sk:write-tests`**
|
|
40
|
+
|
|
41
|
+
Action: Update or replace the affected tests to reflect the new behavior. The existing plan is still valid — only the test assertions and implementation need to change.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
**Tier 2 — New Requirements**
|
|
46
|
+
|
|
47
|
+
New scope, new constraints, or new acceptance criteria that the current plan doesn't cover. Examples:
|
|
48
|
+
- Simple delete → soft-delete with audit log
|
|
49
|
+
- Basic auth → role-based permissions
|
|
50
|
+
- Single endpoint → paginated + filterable endpoint
|
|
51
|
+
|
|
52
|
+
Re-entry point: **`/sk:write-plan`**
|
|
53
|
+
|
|
54
|
+
Action: Update `tasks/todo.md` with revised tasks. The brainstorm findings are still valid but the plan needs new steps. After plan approval, proceed to `/sk:write-tests`.
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
**Tier 3 — Scope Shift**
|
|
59
|
+
|
|
60
|
+
Fundamental rethinking of the approach, user flow, or architecture. Examples:
|
|
61
|
+
- Rethinking the entire delete flow and who can trigger it
|
|
62
|
+
- Changing the data model the feature is built on
|
|
63
|
+
- New understanding of the problem that invalidates prior decisions
|
|
64
|
+
|
|
65
|
+
Re-entry point: **`/sk:brainstorm`**
|
|
66
|
+
|
|
67
|
+
Action: The existing findings and plan may be partially or fully invalid. Start fresh from brainstorm, record new decisions in `tasks/findings.md`, then proceed through write-plan → write-tests → execute-plan.
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
### 3. Confirm the Tier
|
|
72
|
+
|
|
73
|
+
Present your classification to the user:
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
Change detected: <1-line summary of what changed>
|
|
77
|
+
Scope tier: Tier <1|2|3> — <Behavior Tweak|New Requirements|Scope Shift>
|
|
78
|
+
Re-entry point: /sk:<command>
|
|
79
|
+
|
|
80
|
+
Reason: <1-2 sentences explaining why this tier was chosen>
|
|
81
|
+
|
|
82
|
+
Proceed? (yes / no / different tier)
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Wait for explicit confirmation before logging or routing.
|
|
86
|
+
|
|
87
|
+
### 4. Log the Change
|
|
88
|
+
|
|
89
|
+
Once confirmed, update the planning files:
|
|
90
|
+
|
|
91
|
+
**`tasks/todo.md`** — Add a `## Change Log` section at the top (or append to existing):
|
|
92
|
+
```
|
|
93
|
+
## Change Log
|
|
94
|
+
- [<date>] <summary of change> — re-entered at /sk:<command>
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Mark any tasks that are now invalidated with `~~strikethrough~~` and a note: `(invalidated by requirement change — see change log)`.
|
|
98
|
+
|
|
99
|
+
**`tasks/progress.md`** — Append:
|
|
100
|
+
```
|
|
101
|
+
## Requirement Change — <date>
|
|
102
|
+
- What changed: <description>
|
|
103
|
+
- Trigger: <what caused the change>
|
|
104
|
+
- Scope tier: <1|2|3>
|
|
105
|
+
- Re-entry point: /sk:<command>
|
|
106
|
+
- Invalidated tasks: <list or "none">
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### 5. Route Forward
|
|
110
|
+
|
|
111
|
+
Tell the user exactly where to go next:
|
|
112
|
+
|
|
113
|
+
> "Change logged. Re-enter the workflow at `/sk:<command>`.
|
|
114
|
+
> Carry forward: <what's still valid — plan steps, findings, etc.>
|
|
115
|
+
> Discard: <what's no longer valid>"
|
|
116
|
+
|
|
117
|
+
**Do not proceed to the next step yourself.** The user must explicitly invoke it.
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Model Routing
|
|
122
|
+
|
|
123
|
+
Read `.shipkit/config.json` from the project root if it exists.
|
|
124
|
+
|
|
125
|
+
- If `model_overrides["sk:change"]` is set, use that model — it takes precedence.
|
|
126
|
+
- Otherwise use the `profile` field. Default: `balanced`.
|
|
127
|
+
|
|
128
|
+
| Profile | Model |
|
|
129
|
+
|---------|-------|
|
|
130
|
+
| `full-sail` | opus (inherit) |
|
|
131
|
+
| `quality` | opus (inherit) |
|
|
132
|
+
| `balanced` | sonnet |
|
|
133
|
+
| `budget` | sonnet |
|
|
134
|
+
|
|
135
|
+
> `opus` = inherit. When spawning sub-agents via the Agent tool, pass `model: "<resolved-model>"`.
|
|
@@ -52,6 +52,12 @@ Execute the plan in `tasks/todo.md` in small batches with clear checkpoints.
|
|
|
52
52
|
- Do not repeat the same failing action; change approach.
|
|
53
53
|
- After 3 failed attempts, stop and ask the user with details.
|
|
54
54
|
|
|
55
|
+
## Requirement Changes Mid-Execution
|
|
56
|
+
|
|
57
|
+
If the user indicates that requirements have changed during execution, **stop immediately** — do not continue implementing the old behavior.
|
|
58
|
+
|
|
59
|
+
Run `/sk:change` to assess the scope and re-enter at the correct step.
|
|
60
|
+
|
|
55
61
|
## On User Correction
|
|
56
62
|
|
|
57
63
|
If the user corrects your approach during execution, immediately append to
|
package/commands/sk/help.md
CHANGED
|
@@ -19,6 +19,7 @@ Run these commands in order for a complete, quality-gated feature build.
|
|
|
19
19
|
| `/sk:schema-migrate` | Analyze schema changes *(skip if no DB changes)* |
|
|
20
20
|
| `/sk:write-tests` | TDD red: write failing tests first |
|
|
21
21
|
| `/sk:execute-plan` | TDD green: implement until tests pass |
|
|
22
|
+
| `/sk:change` | Requirements changed? Re-enter at the right step |
|
|
22
23
|
| `/sk:smart-commit` | Conventional commit with approval |
|
|
23
24
|
| `/sk:lint` | **GATE** — all linters must pass |
|
|
24
25
|
| `/sk:test` | **GATE** — 100% coverage on new code |
|
|
@@ -27,6 +28,16 @@ Run these commands in order for a complete, quality-gated feature build.
|
|
|
27
28
|
| `/sk:update-task` | Mark task done, log completion |
|
|
28
29
|
| `/sk:finish-feature` | Changelog + PR creation |
|
|
29
30
|
|
|
31
|
+
## Requirement Change Flow
|
|
32
|
+
|
|
33
|
+
Requirements change mid-workflow? Run `/sk:change` — it classifies the scope and routes you back to the right step.
|
|
34
|
+
|
|
35
|
+
| Tier | Scope | Re-entry |
|
|
36
|
+
|------|-------|---------|
|
|
37
|
+
| Tier 1 | Behavior tweak *(logic changes, plan stays)* | `/sk:write-tests` |
|
|
38
|
+
| Tier 2 | New requirements *(new scope or constraints)* | `/sk:write-plan` |
|
|
39
|
+
| Tier 3 | Scope shift *(rethinking the approach)* | `/sk:brainstorm` |
|
|
40
|
+
|
|
30
41
|
## Bug Fix Workflow
|
|
31
42
|
|
|
32
43
|
| Command | Purpose |
|
|
@@ -47,6 +58,7 @@ Run these commands in order for a complete, quality-gated feature build.
|
|
|
47
58
|
| `/sk:api-design` | Design REST/GraphQL contracts before implementation |
|
|
48
59
|
| `/sk:brainstorm` | Explore requirements, no code |
|
|
49
60
|
| `/sk:branch` | Create branch from current task |
|
|
61
|
+
| `/sk:change` | Handle mid-workflow requirement change — re-enter at the right step |
|
|
50
62
|
| `/sk:debug` | Structured bug investigation |
|
|
51
63
|
| `/sk:execute-plan` | Implement plan in batches |
|
|
52
64
|
| `/sk:features` | Sync docs/sk:features/ specs with codebase |
|
|
@@ -91,6 +103,7 @@ ShipKit routes each skill to the right model automatically. Set once per project
|
|
|
91
103
|
|-------------|-----------|---------|----------|--------|
|
|
92
104
|
| brainstorm, write-plan, debug, execute-plan, review | opus | opus | sonnet | sonnet |
|
|
93
105
|
| write-tests, frontend-design, api-design, security-check | opus | sonnet | sonnet | sonnet |
|
|
106
|
+
| change | opus | sonnet | sonnet | sonnet |
|
|
94
107
|
| perf, schema-migrate, accessibility | opus | sonnet | sonnet | haiku |
|
|
95
108
|
| lint, test | sonnet | sonnet | haiku | haiku |
|
|
96
109
|
| smart-commit, branch, update-task | haiku | haiku | haiku | haiku |
|
|
@@ -100,4 +113,4 @@ Config lives in `.shipkit/config.json` — per project, gitignored by default.
|
|
|
100
113
|
|
|
101
114
|
---
|
|
102
115
|
|
|
103
|
-
**ShipKit** by Kenneth Solomon · `
|
|
116
|
+
**ShipKit** by Kenneth Solomon · `npm install -g @kennethsolomon/shipkit` to install/update
|
package/package.json
CHANGED
|
@@ -117,6 +117,8 @@ Progress is tracked in `tasks/workflow-status.md`. This file persists across con
|
|
|
117
117
|
|
|
118
118
|
6. **Never skip steps without confirmation.** Steps cannot run out of order. Hard gate steps (12, 14, 16, 20) can NEVER be skipped. Optional gate step (18) requires explicit confirmation to skip.
|
|
119
119
|
|
|
120
|
+
7. **Requirements change mid-workflow?** Stop the current step and run `/change` immediately. It will classify the scope (behavior tweak / new requirements / scope shift) and tell you exactly where to re-enter the workflow. Never continue implementing stale requirements.
|
|
121
|
+
|
|
120
122
|
7. **Never auto-advance.** When one step completes, stop and tell the user which step is next. Do not proceed automatically.
|
|
121
123
|
|
|
122
124
|
8. **Never write code during design or plan phases.** Steps 1-6 are reading/exploring/planning/design only — no code, no file edits (except `tasks/` files).
|
|
@@ -9,6 +9,8 @@ description: "TDD: Auto-detect BE + FE testing stacks, write failing tests befor
|
|
|
9
9
|
|
|
10
10
|
Auto-detect the project's backend AND frontend testing frameworks, read the plan from `tasks/todo.md`, and write comprehensive failing tests BEFORE implementation. Tests define the expected behavior — implementation makes them pass.
|
|
11
11
|
|
|
12
|
+
> **Requirements changed mid-workflow?** Run `/sk:change` first. It will classify the scope and tell you whether to update tests (Tier 1), revise the plan (Tier 2), or re-brainstorm (Tier 3). Never update tests based on a changed requirement without going through `/sk:change` first.
|
|
13
|
+
|
|
12
14
|
## Allowed Tools
|
|
13
15
|
|
|
14
16
|
Bash, Read, Write, Edit, Glob, Grep
|