@kennethsolomon/shipkit 3.10.1 → 3.10.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 +29 -45
- package/commands/sk/autopilot.md +2 -2
- package/commands/sk/security-check.md +2 -2
- package/commands/sk/status.md +4 -9
- package/package.json +1 -1
- package/skills/sk:accessibility/SKILL.md +10 -1
- package/skills/sk:autopilot/SKILL.md +26 -45
- package/skills/sk:context/SKILL.md +11 -15
- package/skills/sk:dashboard/SKILL.md +3 -4
- package/skills/sk:dashboard/server.js +0 -65
- package/skills/sk:e2e/SKILL.md +3 -3
- package/skills/sk:fast-track/SKILL.md +0 -9
- package/skills/sk:frontend-design/SKILL.md +232 -0
- package/skills/sk:gates/SKILL.md +2 -3
- package/skills/sk:lint/SKILL.md +3 -3
- package/skills/sk:perf/SKILL.md +3 -3
- package/skills/sk:retro/SKILL.md +1 -2
- package/skills/sk:review/SKILL.md +2 -2
- package/skills/sk:setup-claude/SKILL.md +1 -2
- package/skills/sk:setup-claude/scripts/__pycache__/apply_setup_claude.cpython-314.pyc +0 -0
- package/skills/sk:setup-claude/scripts/apply_setup_claude.py +0 -1
- package/skills/sk:setup-claude/templates/.claude/statusline.sh +1 -15
- package/skills/sk:setup-claude/templates/CLAUDE.md.template +61 -137
- package/skills/sk:setup-claude/templates/commands/brainstorm.md.template +2 -13
- package/skills/sk:setup-claude/templates/hooks/pre-compact.sh +1 -12
- package/skills/sk:setup-claude/templates/hooks/session-start.sh +0 -11
- package/skills/sk:setup-claude/templates/hooks/session-stop.sh +0 -7
- package/skills/sk:setup-claude/tests/__pycache__/test_apply_setup_claude.cpython-314.pyc +0 -0
- package/skills/sk:setup-claude/tests/test_apply_setup_claude.py +2 -33
- package/skills/sk:setup-optimizer/SKILL.md +9 -7
- package/skills/sk:start/SKILL.md +9 -11
- package/skills/sk:test/SKILL.md +3 -3
- package/skills/sk:setup-claude/templates/tasks/workflow-status.md.template +0 -28
|
@@ -34,115 +34,65 @@
|
|
|
34
34
|
## Workflow — Follow This Order
|
|
35
35
|
<!-- LOCK -->
|
|
36
36
|
|
|
37
|
-
**Flow:**
|
|
38
|
-
|
|
39
|
-
Progress is tracked
|
|
40
|
-
|
|
41
|
-
| # | Step | Command | Type |
|
|
42
|
-
|
|
43
|
-
| 1 |
|
|
44
|
-
| 2 |
|
|
45
|
-
| 3 |
|
|
46
|
-
| 4 |
|
|
47
|
-
| 5 |
|
|
48
|
-
| 6 |
|
|
49
|
-
| 7 |
|
|
50
|
-
| 8 |
|
|
51
|
-
| 9 | Write Tests | `/sk:write-tests` | required | no |
|
|
52
|
-
| 10 | Implement | `/sk:execute-plan` | required | no |
|
|
53
|
-
| 11 | Commit | `/sk:smart-commit` | required | no |
|
|
54
|
-
| 12 | Lint + Dep Audit | `/sk:lint` | required | yes — must be clean |
|
|
55
|
-
| 13 | Verify Tests | `/sk:test` | required | yes — 100% coverage required |
|
|
56
|
-
| 14 | Security | `/sk:security-check` | required | yes — must reach 0 issues |
|
|
57
|
-
| 15 | Performance | `/sk:perf` | optional (confirm to skip) | yes — loop until critical/high = 0 |
|
|
58
|
-
| 16 | Review + Simplify | `/sk:review` | required | yes — must reach 0 issues |
|
|
59
|
-
| 17 | E2E Tests | `/sk:e2e` | required | yes — all scenarios must pass |
|
|
60
|
-
| 18 | Update | `/sk:update-task` | required | no |
|
|
61
|
-
| 19 | Finalize | `/sk:finish-feature` | required | no |
|
|
62
|
-
| 20 | Sync Features | `/sk:features` | required | no |
|
|
63
|
-
| 21 | Release | `/sk:release` | optional (confirm to skip) | no |
|
|
37
|
+
**Flow:** Explore → Design → Plan → Branch → Write Tests + Implement → Commit → Gates → Finalize
|
|
38
|
+
|
|
39
|
+
Progress is tracked via git branch + `tasks/todo.md` checkboxes.
|
|
40
|
+
|
|
41
|
+
| # | Step | Command | Type |
|
|
42
|
+
|---|------|---------|------|
|
|
43
|
+
| 1 | Explore | `/sk:brainstorm` | required |
|
|
44
|
+
| 2 | Design | `/sk:frontend-design` or `/sk:api-design` | optional (auto-skip) |
|
|
45
|
+
| 3 | Plan | `/sk:write-plan` | required |
|
|
46
|
+
| 4 | Branch | `/sk:branch` | required |
|
|
47
|
+
| 5 | Write Tests + Implement | `/sk:write-tests` then `/sk:execute-plan` | required |
|
|
48
|
+
| 6 | Commit | `/sk:smart-commit` | required |
|
|
49
|
+
| 7 | Gates | `/sk:gates` | required (hard gate) |
|
|
50
|
+
| 8 | Finalize | `/sk:finish-feature` | required |
|
|
64
51
|
|
|
65
52
|
### Step Details
|
|
66
53
|
|
|
67
|
-
1. **
|
|
68
|
-
2. **
|
|
69
|
-
3. **
|
|
70
|
-
4. **
|
|
71
|
-
5. **
|
|
72
|
-
6. **
|
|
73
|
-
7. **
|
|
74
|
-
8. **
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
11. **Commit** — run `/sk:smart-commit` to commit tests + implementation
|
|
78
|
-
12. **Lint + Dep Audit** — run `/sk:lint` — auto-detects and runs all project linters plus dependency vulnerability audits. Fix all issues immediately, then re-run until clean. Do not ask to re-run — fix and re-run automatically. Gates own their commits — commit any fixes before moving on.
|
|
79
|
-
13. **Verify Tests** — run `/sk:test` — auto-detects and runs all project test suites. **100% test coverage required.** Fix failures immediately, then re-run. Do not ask to re-run — fix and re-run automatically. Gates own their commits — commit any fixes before moving on.
|
|
80
|
-
14. **Security** — run `/sk:security-check`. Must reach 0 issues across all severities. Fix issues immediately, commit, then re-run. Loop until clean. Gates own their commits — commit any fixes before moving on.
|
|
81
|
-
15. **Performance** — run `/sk:perf` to audit for performance issues. Produces `tasks/perf-findings.md`. Fix critical/high findings, commit, then re-run. Loop until critical/high = 0. Skip if confirmed with user. Gates own their commits — commit any fixes before moving on.
|
|
82
|
-
16. **Review + Simplify** — run `/sk:review`. First runs a simplify pre-pass on changed files, then performs full multi-dimensional review. Must reach 0 issues including nitpicks. Fix issues immediately, commit, then re-run. Loop until clean. Gates own their commits — commit any fixes before moving on.
|
|
83
|
-
17. **E2E Tests** — run `/sk:e2e`. Verifies the complete, reviewed, secure implementation works end-to-end from a user's perspective using agent-browser. All scenarios must pass. Cannot be skipped. Gates own their commits — commit any fixes before moving on.
|
|
84
|
-
18. **Update** — run `/sk:update-task` to mark the task done in `tasks/todo.md` and log completion to `tasks/progress.md`.
|
|
85
|
-
19. **Finalize** — run `/sk:finish-feature` for changelog + PR
|
|
86
|
-
20. **Sync Features** — run `/sk:features` to sync `docs/sk:features/` specs with what was actually shipped.
|
|
87
|
-
21. **Release** — run `/sk:release` if deploying. Skip if not ready.
|
|
88
|
-
|
|
89
|
-
### Workflow Tracker Rules
|
|
90
|
-
|
|
91
|
-
**These rules are mandatory for every step:**
|
|
92
|
-
|
|
93
|
-
1. **Read tracker first.** At the start of every step, read `tasks/workflow-status.md` to verify the current step. If the step being run does not match the `>> next <<` step, STOP and ask the user to confirm skipping the intervening steps.
|
|
94
|
-
|
|
95
|
-
2. **Update tracker after.** At the end of every step, update `tasks/workflow-status.md`:
|
|
96
|
-
- Set the current step's Status to `done`, `skipped`, or `partial`
|
|
97
|
-
- Add relevant Notes (e.g., "clean on attempt 2", "backend-only, no UI")
|
|
98
|
-
- Move `>> next <<` to the next pending step
|
|
99
|
-
|
|
100
|
-
3. **Optional steps** (4, 5, 8, 15, 21): Ask the user "Skip [step]?" and require explicit confirmation. Record the reason in Notes.
|
|
101
|
-
|
|
102
|
-
4. **Auto-skip detection.** Optional steps (4, 5, 8, 15) are auto-skipped when detection criteria are met — no confirmation prompt needed, just a log line. Detection runs after the plan is written (step 6) by scanning `tasks/todo.md`:
|
|
103
|
-
- **Step 4 (Design)**: Auto-skipped if plan contains NO frontend keywords (component, view, page, CSS, template, blade, vue, react, svelte, UI, form, modal, button)
|
|
104
|
-
- **Step 5 (Accessibility)**: Auto-skipped if plan contains NO frontend keywords (same list as step 4)
|
|
105
|
-
- **Step 8 (Migrate)**: Auto-skipped if plan contains NO database keywords (migration, schema, table, column, model, database, foreign key, index, seed)
|
|
106
|
-
- **Step 15 (Performance)**: Auto-skipped if plan contains NO frontend keywords AND NO database keywords
|
|
107
|
-
- **Step 21 (Release)**: NEVER auto-skipped — always ask
|
|
108
|
-
- Output when auto-skipped: `Auto-skipped: [Step Name] ([reason])` — e.g., `Auto-skipped: Design (no frontend keywords detected in plan)`
|
|
109
|
-
|
|
110
|
-
5. **Gates own their commits.** Each hard gate (steps 12–17) is responsible for committing any fixes it produces before passing control to the next step. There are no separate conditional commit steps.
|
|
111
|
-
|
|
112
|
-
6. **Loop steps are HARD GATES** (12, 13, 14, 16, 17): These steps BLOCK all forward progress until they pass clean. Fix issues immediately and re-run. Do NOT ask the user to re-run — fix and re-run automatically. Track attempt number in Notes (e.g., "clean on attempt 3").
|
|
113
|
-
- **Step 12 (Lint)**: All detected linting tools must pass — every single one.
|
|
114
|
-
- **Step 13 (Verify Tests)**: All detected test suites (BE + FE) must pass with 100% coverage on new code.
|
|
115
|
-
- **Step 14 (Security)**: 0 issues across all severities.
|
|
116
|
-
- **Step 16 (Review)**: 0 issues including nitpicks.
|
|
117
|
-
- **Step 17 (E2E Tests)**: All scenarios must pass. 0 failures allowed.
|
|
118
|
-
- **Step 15 (Performance)**: Optional gate — if run, loop until critical/high findings = 0. Can be skipped with explicit confirmation.
|
|
119
|
-
- **DO NOT mark these steps as `done` until every check passes.** If even one tool fails, the step is NOT done. Never proceed to the next step with errors remaining.
|
|
120
|
-
|
|
121
|
-
7. **Never skip steps without confirmation.** Steps cannot run out of order. Hard gate steps (12, 13, 14, 16, 17) can NEVER be skipped. Optional gate step (15) requires explicit confirmation to skip.
|
|
122
|
-
|
|
123
|
-
8. **Requirements change mid-workflow?** Stop the current step and run `/sk: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.
|
|
124
|
-
|
|
125
|
-
8. **Never auto-advance.** When one step completes, stop and tell the user which step is next. Do not proceed automatically.
|
|
126
|
-
|
|
127
|
-
9. **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).
|
|
128
|
-
|
|
129
|
-
10. **Step completion summary is NON-NEGOTIABLE.** After finishing ANY step, you MUST output a summary block in this exact format before stopping:
|
|
54
|
+
1. **Explore** — run `/sk:brainstorm`. Reads `tasks/todo.md`, `tasks/lessons.md`, and `tasks/findings.md` automatically. Clarifies requirements, constraints, and approach. No code in this step.
|
|
55
|
+
2. **Design** — run `/sk:frontend-design` for UI mockup (includes `/sk:accessibility` audit) or `/sk:api-design` for API contracts. No code — design only. Auto-skipped if no frontend/API keywords in the task. Use `--pencil` for Pencil visual mockup.
|
|
56
|
+
3. **Plan** — run `/sk:write-plan` to write a decision-complete plan into `tasks/todo.md`. No code in this step. After the plan is written, auto-skip detection runs for step 2 if not already done.
|
|
57
|
+
4. **Branch** — run `/sk:branch` to create a feature branch auto-named from the current task.
|
|
58
|
+
5. **Write Tests + Implement** — run `/sk:write-tests` (TDD red phase), then `/sk:execute-plan` (TDD green phase). Includes `/sk:schema-migrate` if database keywords detected in the plan. Log progress to `tasks/progress.md`.
|
|
59
|
+
6. **Commit** — run `/sk:smart-commit` to commit tests + implementation.
|
|
60
|
+
7. **Gates** — run `/sk:gates` to execute all quality gates in optimized parallel batches (lint, test, security, perf, review, e2e). This is a **hard gate** — blocks all forward progress until every check passes. Individual gate commands (`/sk:lint`, `/sk:test`, `/sk:security-check`, `/sk:perf`, `/sk:review`, `/sk:e2e`) are still available standalone.
|
|
61
|
+
8. **Finalize** — run `/sk:finish-feature` for changelog, PR creation, `/sk:update-task`, `/sk:features` sync. Ask about `/sk:release` (never auto-skipped).
|
|
62
|
+
|
|
63
|
+
### Workflow Rules
|
|
130
64
|
|
|
65
|
+
1. **Auto-advance by default.** Move to the next step automatically after each step completes. Pause only at: plan approval (step 3), PR push (step 8), and release confirmation.
|
|
66
|
+
|
|
67
|
+
2. **Conditional summary.** Only output the step summary block when the step was `skipped`, `partial`, or required fixes. Clean passes just move on silently.
|
|
131
68
|
```
|
|
132
|
-
--- Step [#] [Name]: [
|
|
133
|
-
Summary: [1-2 sentence summary
|
|
69
|
+
--- Step [#] [Name]: [skipped/partial] ---
|
|
70
|
+
Summary: [1-2 sentence summary]
|
|
134
71
|
Next step: [#] [Name] — run `[command]`
|
|
135
72
|
```
|
|
136
73
|
|
|
137
|
-
|
|
74
|
+
3. **Auto-skip detection.** After the plan is written (step 3), scan `tasks/todo.md` for keywords:
|
|
75
|
+
- **Step 2 (Design)**: Auto-skip if NO frontend keywords (component, view, page, CSS, template, blade, vue, react, svelte, UI, form, modal, button) AND NO API keywords (endpoint, route, controller, API)
|
|
76
|
+
- **Migrate** (inside step 5): Auto-skip if NO database keywords (migration, schema, table, column, model, database, foreign key, index, seed)
|
|
77
|
+
- **Performance** (inside gates): Auto-skip if NO frontend AND NO database keywords
|
|
78
|
+
- **Release** (inside step 8): NEVER auto-skipped — always ask
|
|
79
|
+
- Output: `Auto-skipped: [Name] ([reason])`
|
|
80
|
+
|
|
81
|
+
4. **Gates are a hard gate.** Step 7 BLOCKS all forward progress until every check passes. Gates auto-fix and re-run internally. Do NOT ask the user to re-run — fix and re-run automatically.
|
|
82
|
+
|
|
83
|
+
5. **Squash gate commits.** When a gate requires fixes, collect all fixes for that gate pass, then make ONE commit: `fix(<gate>): resolve <gate> issues`. Do not commit after each individual fix. Each gate produces at most one commit per pass.
|
|
84
|
+
|
|
85
|
+
6. **Never write code during explore, design, or plan phases.** Steps 1-3 are reading/exploring/planning/design only — no code, no file edits (except `tasks/` files).
|
|
86
|
+
|
|
87
|
+
7. **Requirements change mid-workflow?** Stop and run `/sk:change` immediately. It classifies the scope and tells you where to re-enter.
|
|
138
88
|
|
|
139
89
|
### Fix & Retest Protocol
|
|
140
90
|
|
|
141
|
-
**Applies to
|
|
91
|
+
**Applies to all gates — any gate that can produce code changes.**
|
|
142
92
|
|
|
143
|
-
When
|
|
93
|
+
When a gate requires a fix, classify the fix before committing:
|
|
144
94
|
|
|
145
|
-
**a. Format/style/config/wording change** → commit and re-run
|
|
95
|
+
**a. Format/style/config/wording change** (formatter auto-fix, CSS tweak, copy change, config value, comment) → include in the gate's squash commit and re-run. No test update needed.
|
|
146
96
|
|
|
147
97
|
**b. Logic change** (new branch, modified condition, new data path, query change, new function, changed algorithm, API change) → trigger protocol:
|
|
148
98
|
1. Update or add failing unit tests for the new behavior
|
|
@@ -152,14 +102,9 @@ When any of these steps require a fix, classify the fix before committing:
|
|
|
152
102
|
|
|
153
103
|
**Exception:** Lint formatter auto-fixes (Prettier, Pint, gofmt, cargo fmt) are never logic changes — bypass protocol automatically.
|
|
154
104
|
|
|
155
|
-
### Tracker Reset
|
|
156
|
-
|
|
157
|
-
- When starting a new task, check if `tasks/workflow-status.md` has any `done` or `skipped` steps. If yes, ask: "Existing workflow detected. Start fresh and reset tracker?"
|
|
158
|
-
- Reset sets all steps to `not yet` and marks step 1 as `>> next <<`.
|
|
159
|
-
|
|
160
105
|
### Bug Fix Flow
|
|
161
106
|
|
|
162
|
-
|
|
107
|
+
Use `/sk:debug` as the entry point:
|
|
163
108
|
|
|
164
109
|
| # | Step | Command |
|
|
165
110
|
|---|------|---------|
|
|
@@ -168,55 +113,34 @@ When fixing a bug (not building a feature), use `/sk:debug` as the entry point.
|
|
|
168
113
|
| 3 | Write Tests | `/sk:write-tests` (regression test) |
|
|
169
114
|
| 4 | Fix | implement the fix |
|
|
170
115
|
| 5 | Commit | `/sk:smart-commit` |
|
|
171
|
-
| 6 |
|
|
172
|
-
| 7 |
|
|
173
|
-
| 8 | Verify Tests | `/sk:test` |
|
|
174
|
-
| 9 | Commit | `/sk:smart-commit` (skip if clean) |
|
|
175
|
-
| 10 | Security | `/sk:security-check` |
|
|
176
|
-
| 11 | Commit | `/sk:smart-commit` (skip if clean) |
|
|
177
|
-
| 12 | Review | `/sk:review` |
|
|
178
|
-
| 13 | Commit | `/sk:smart-commit` (skip if clean) |
|
|
179
|
-
| 14 | Update | `/sk:update-task` |
|
|
180
|
-
| 15 | Finalize | `/sk:finish-feature` |
|
|
181
|
-
|
|
182
|
-
Start with `/sk:debug` to investigate, then follow the abbreviated flow.
|
|
116
|
+
| 6 | Gates | `/sk:gates` |
|
|
117
|
+
| 7 | Finalize | `/sk:finish-feature` |
|
|
183
118
|
|
|
184
119
|
### Hotfix Flow
|
|
185
120
|
|
|
186
|
-
For production emergencies
|
|
121
|
+
For production emergencies. Skips brainstorm, design, and write-tests. Quality gates still apply.
|
|
187
122
|
|
|
188
123
|
| # | Step | Command |
|
|
189
124
|
|---|------|---------|
|
|
190
125
|
| 1 | Investigate | `/sk:debug` |
|
|
191
126
|
| 2 | Branch | `/sk:branch` |
|
|
192
127
|
| 3 | Fix | implement directly |
|
|
193
|
-
| 4 |
|
|
194
|
-
| 5 |
|
|
195
|
-
| 6 |
|
|
196
|
-
| 7 | Commit | `/sk:smart-commit` (skip if clean) |
|
|
197
|
-
| 8 | Verify Tests | `/sk:test` |
|
|
198
|
-
| 9 | Commit | `/sk:smart-commit` (skip if clean) |
|
|
199
|
-
| 10 | Security | `/sk:security-check` |
|
|
200
|
-
| 11 | Commit | `/sk:smart-commit` (skip if clean) |
|
|
201
|
-
| 12 | Review | `/sk:review` |
|
|
202
|
-
| 13 | Commit | `/sk:smart-commit` (skip if clean) |
|
|
203
|
-
| 14 | Update | `/sk:update-task` |
|
|
204
|
-
| 15 | Finalize | `/sk:finish-feature` |
|
|
128
|
+
| 4 | Commit | `/sk:smart-commit` |
|
|
129
|
+
| 5 | Gates | `/sk:gates` |
|
|
130
|
+
| 6 | Finalize | `/sk:finish-feature` |
|
|
205
131
|
|
|
206
132
|
After merging: add a regression test and a lessons.md entry.
|
|
207
133
|
|
|
208
134
|
### Requirement Change Flow
|
|
209
135
|
|
|
210
|
-
When requirements change mid-workflow, run `/sk:change
|
|
136
|
+
When requirements change mid-workflow, run `/sk:change`:
|
|
211
137
|
|
|
212
138
|
| # | Step | Command |
|
|
213
139
|
|---|------|---------|
|
|
214
140
|
| 1 | Assess | `/sk:change` — classify scope (Tier 1/2/3) |
|
|
215
|
-
| 2 | Tier 1 (test update only) | update tests → re-enter at step
|
|
216
|
-
| 3 | Tier 2 (plan revision) | revise plan → re-enter at step
|
|
217
|
-
| 4 | Tier 3 (re-brainstorm) | re-enter at step
|
|
218
|
-
|
|
219
|
-
Never update tests or implementation based on a changed requirement without going through `/sk:change` first.
|
|
141
|
+
| 2 | Tier 1 (test update only) | update tests → re-enter at step 5 |
|
|
142
|
+
| 3 | Tier 2 (plan revision) | revise plan → re-enter at step 3 |
|
|
143
|
+
| 4 | Tier 3 (re-brainstorm) | re-enter at step 1 |
|
|
220
144
|
|
|
221
145
|
## Sub-Agent Patterns
|
|
222
146
|
<!-- BEGIN:sub-agent-patterns -->
|
|
@@ -327,15 +251,15 @@ Entry format:
|
|
|
327
251
|
|
|
328
252
|
## Testing — TDD, 100% Coverage Required
|
|
329
253
|
|
|
330
|
-
Tests are written **before** implementation (step
|
|
254
|
+
Tests are written **before** implementation (step 5) and verified during gates (step 7).
|
|
331
255
|
|
|
332
256
|
### TDD Flow
|
|
333
257
|
|
|
334
258
|
1. `/sk:write-tests` — write failing tests based on the plan (RED)
|
|
335
259
|
2. `/sk:execute-plan` — implement code to make tests pass (GREEN)
|
|
336
|
-
3. `/sk:test` — verify all tests pass with 100% coverage (VERIFY)
|
|
260
|
+
3. `/sk:test` — verify all tests pass with 100% coverage (VERIFY — runs as part of `/sk:gates`)
|
|
337
261
|
|
|
338
|
-
Every new function, endpoint, component, and module needs tests. No code proceeds past
|
|
262
|
+
Every new function, endpoint, component, and module needs tests. No code proceeds past gates without 100% coverage on new code.
|
|
339
263
|
|
|
340
264
|
## 3-Strike Protocol
|
|
341
265
|
|
|
@@ -356,7 +280,7 @@ Create entries in: `[ARCH_CHANGELOG_DIR]`
|
|
|
356
280
|
|---------|---------|
|
|
357
281
|
| `/sk:accessibility` | WCAG 2.1 AA audit — runs after design, before implementation |
|
|
358
282
|
| `/sk:api-design` | Design API contracts (endpoints, payloads, auth, errors) before implementation |
|
|
359
|
-
| `/sk:autopilot` | Hands-free workflow — all
|
|
283
|
+
| `/sk:autopilot` | Hands-free workflow — all 8 steps, auto-skip, auto-advance, auto-commit |
|
|
360
284
|
| `/sk:brainstorm` | Explore requirements and design |
|
|
361
285
|
| `/sk:branch` | Create feature branch auto-named from current task |
|
|
362
286
|
| `/sk:change` | Handle mid-workflow requirement changes — re-enter at correct step |
|
|
@@ -19,16 +19,7 @@ Explore design and clarify requirements **before** any code is written.
|
|
|
19
19
|
|
|
20
20
|
## Steps
|
|
21
21
|
|
|
22
|
-
0. **
|
|
23
|
-
- Read `tasks/workflow-status.md`. If it doesn't exist, create it using the standard
|
|
24
|
-
14-step template (all steps `not yet`, step 1 `>> next <<`).
|
|
25
|
-
- If any steps show `done`, `skipped`, or `partial`: ask the user —
|
|
26
|
-
"Existing workflow detected. Start fresh and reset tracker?" Wait for confirmation.
|
|
27
|
-
- If yes: reset all steps to `not yet`, mark step 1 as `>> next <<`, and clear all Notes
|
|
28
|
-
(except the default labels: optional, conditional, loop).
|
|
29
|
-
- If no: continue from current state (the user is resuming a prior workflow).
|
|
30
|
-
|
|
31
|
-
1. **Read context files first:**
|
|
22
|
+
0. **Read context files first:**
|
|
32
23
|
- If `tasks/findings.md` exists and has content, read it — summarize prior decisions
|
|
33
24
|
and ask: extend, revise, or start fresh?
|
|
34
25
|
- If `tasks/lessons.md` exists, read it in full. Apply every active lesson as a design
|
|
@@ -65,9 +56,7 @@ Explore design and clarify requirements **before** any code is written.
|
|
|
65
56
|
|
|
66
57
|
## When Done
|
|
67
58
|
|
|
68
|
-
1.
|
|
69
|
-
2. Print the full workflow status dashboard table.
|
|
70
|
-
3. Tell the user:
|
|
59
|
+
1. Tell the user:
|
|
71
60
|
> "Brainstorming complete. Findings saved to `tasks/findings.md`."
|
|
72
61
|
4. If step 2 (`/sk:frontend-design`) is next, ask: "Step 2 is `/sk:frontend-design` (optional). Run it or skip?"
|
|
73
62
|
|
|
@@ -4,17 +4,6 @@
|
|
|
4
4
|
|
|
5
5
|
echo "=== Pre-Compaction State Snapshot ==="
|
|
6
6
|
|
|
7
|
-
# Workflow status
|
|
8
|
-
if [ -f "tasks/workflow-status.md" ]; then
|
|
9
|
-
echo ""
|
|
10
|
-
echo "--- workflow-status.md ---"
|
|
11
|
-
cat "tasks/workflow-status.md" 2>/dev/null | head -30
|
|
12
|
-
TOTAL_LINES=$(wc -l < "tasks/workflow-status.md" 2>/dev/null | tr -d ' ')
|
|
13
|
-
if [ "$TOTAL_LINES" -gt 30 ]; then
|
|
14
|
-
echo " ... ($TOTAL_LINES total lines)"
|
|
15
|
-
fi
|
|
16
|
-
fi
|
|
17
|
-
|
|
18
7
|
# Git status
|
|
19
8
|
echo ""
|
|
20
9
|
echo "--- Uncommitted Changes ---"
|
|
@@ -38,7 +27,7 @@ fi
|
|
|
38
27
|
|
|
39
28
|
echo ""
|
|
40
29
|
echo "--- Recovery ---"
|
|
41
|
-
echo "Read tasks/
|
|
30
|
+
echo "Read tasks/todo.md for current task and progress."
|
|
42
31
|
echo "Read tasks/progress.md for recent work."
|
|
43
32
|
echo "==================================="
|
|
44
33
|
exit 0
|
|
@@ -15,17 +15,6 @@ if [ -n "$BRANCH" ]; then
|
|
|
15
15
|
done
|
|
16
16
|
fi
|
|
17
17
|
|
|
18
|
-
# Current workflow step from workflow-status.md
|
|
19
|
-
if [ -f "tasks/workflow-status.md" ]; then
|
|
20
|
-
echo ""
|
|
21
|
-
NEXT_STEP=$(grep -E ">>\s*next\s*<<" "tasks/workflow-status.md" 2>/dev/null | head -1)
|
|
22
|
-
if [ -n "$NEXT_STEP" ]; then
|
|
23
|
-
echo "Workflow: $NEXT_STEP"
|
|
24
|
-
else
|
|
25
|
-
echo "Workflow: all steps complete or not started"
|
|
26
|
-
fi
|
|
27
|
-
fi
|
|
28
|
-
|
|
29
18
|
# Tech debt count
|
|
30
19
|
if [ -f "tasks/tech-debt.md" ]; then
|
|
31
20
|
TOTAL=$(grep -c "^### \[" "tasks/tech-debt.md" 2>/dev/null || echo 0)
|
|
@@ -15,19 +15,12 @@ BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "unknown")
|
|
|
15
15
|
# Count commits in this session (last hour)
|
|
16
16
|
RECENT_COMMITS=$(git log --since="1 hour ago" --oneline 2>/dev/null | wc -l | tr -d ' ')
|
|
17
17
|
|
|
18
|
-
# Get current workflow step
|
|
19
|
-
CURRENT_STEP=""
|
|
20
|
-
if [ -f "tasks/workflow-status.md" ]; then
|
|
21
|
-
CURRENT_STEP=$(grep -E ">>\s*next\s*<<" "tasks/workflow-status.md" 2>/dev/null | head -1 | sed 's/.*| //' | sed 's/ |.*//')
|
|
22
|
-
fi
|
|
23
|
-
|
|
24
18
|
# Append session end to progress.md
|
|
25
19
|
{
|
|
26
20
|
echo ""
|
|
27
21
|
echo "### [$TIMESTAMP] Session ended"
|
|
28
22
|
echo "- Branch: $BRANCH"
|
|
29
23
|
echo "- Commits this session: $RECENT_COMMITS"
|
|
30
|
-
[ -n "$CURRENT_STEP" ] && echo "- Next step: $CURRENT_STEP"
|
|
31
24
|
} >> "tasks/progress.md" 2>/dev/null
|
|
32
25
|
|
|
33
26
|
exit 0
|
|
Binary file
|
|
@@ -129,40 +129,9 @@ class TestApplySetupClaude(unittest.TestCase):
|
|
|
129
129
|
)
|
|
130
130
|
self.assertEqual(rc, 0)
|
|
131
131
|
|
|
132
|
+
# workflow-status.md should NOT be created (removed from workflow)
|
|
132
133
|
wf_path = repo_root / "tasks" / "workflow-status.md"
|
|
133
|
-
self.
|
|
134
|
-
content = wf_path.read_text(encoding="utf-8")
|
|
135
|
-
self.assertIn(">> next <<", content)
|
|
136
|
-
self.assertIn("/brainstorm", content)
|
|
137
|
-
self.assertIn("/finish-feature", content)
|
|
138
|
-
self.assertIn("/release", content)
|
|
139
|
-
# All 14 steps present
|
|
140
|
-
self.assertIn("| 14 |", content)
|
|
141
|
-
|
|
142
|
-
def test_workflow_status_not_overwritten_on_rerun(self):
|
|
143
|
-
mod = _load_apply_module()
|
|
144
|
-
skill_root = Path(__file__).resolve().parents[1]
|
|
145
|
-
|
|
146
|
-
with tempfile.TemporaryDirectory() as td:
|
|
147
|
-
repo_root = Path(td)
|
|
148
|
-
(repo_root / "package.json").write_text(json.dumps({"name": "demo"}), encoding="utf-8")
|
|
149
|
-
|
|
150
|
-
# First run creates the file
|
|
151
|
-
buf = io.StringIO()
|
|
152
|
-
with contextlib.redirect_stdout(buf):
|
|
153
|
-
mod.apply(repo_root, skill_root, update_generated=False, dry_run=False, detection=mod.detect(repo_root))
|
|
154
|
-
|
|
155
|
-
# Simulate user progress by modifying the file
|
|
156
|
-
wf_path = repo_root / "tasks" / "workflow-status.md"
|
|
157
|
-
custom_content = wf_path.read_text(encoding="utf-8").replace(">> next <<", "done")
|
|
158
|
-
wf_path.write_text(custom_content, encoding="utf-8")
|
|
159
|
-
|
|
160
|
-
# Second run should NOT overwrite
|
|
161
|
-
buf = io.StringIO()
|
|
162
|
-
with contextlib.redirect_stdout(buf):
|
|
163
|
-
mod.apply(repo_root, skill_root, update_generated=False, dry_run=False, detection=mod.detect(repo_root))
|
|
164
|
-
|
|
165
|
-
self.assertEqual(wf_path.read_text(encoding="utf-8"), custom_content)
|
|
134
|
+
self.assertFalse(wf_path.exists())
|
|
166
135
|
|
|
167
136
|
def test_existing_custom_claude_md_writes_sidecar(self):
|
|
168
137
|
mod = _load_apply_module()
|
|
@@ -43,9 +43,10 @@ Before making any changes, runs a diagnostic pass on the existing CLAUDE.md:
|
|
|
43
43
|
- **Stale content** — detects outdated info (stale model/route counts, removed dependencies, old command names like `/laravel-lint` instead of `/sk:lint`)
|
|
44
44
|
- **Inconsistencies** — compares documented vs actual project state (directories, scripts, workflows)
|
|
45
45
|
- **Section completeness** — flags sections that exist but are empty or have only placeholder text
|
|
46
|
-
- **Outdated workflow** — checks if the workflow matches the current
|
|
46
|
+
- **Outdated workflow** — checks if the workflow matches the current 8-step flow with `/sk:gates` as single gate step
|
|
47
47
|
- **Missing commands** — checks for `sk:start`, `sk:autopilot`, `sk:team` in the Commands table
|
|
48
48
|
- **Auto-skip rules** — checks for auto-skip detection rules in the workflow section
|
|
49
|
+
- **Stale tracker references** — checks for `tasks/workflow-status.md` references (removed — progress tracked via git branch + todo.md checkboxes)
|
|
49
50
|
|
|
50
51
|
Reports findings before proceeding. If issues are found, they inform subsequent steps.
|
|
51
52
|
|
|
@@ -53,17 +54,17 @@ Reports findings before proceeding. If issues are found, they inform subsequent
|
|
|
53
54
|
|
|
54
55
|
If the workflow section is outdated or missing, replace it with the latest version:
|
|
55
56
|
|
|
56
|
-
**Current workflow (
|
|
57
|
+
**Current workflow (8 steps, TDD with `/sk:gates` as single gate step):**
|
|
57
58
|
```
|
|
58
|
-
|
|
59
|
+
Explore → Design → Plan → Branch → Write Tests + Implement → Commit → Gates → Finalize
|
|
59
60
|
```
|
|
60
61
|
|
|
61
62
|
**What gets updated:**
|
|
62
|
-
- Workflow table (
|
|
63
|
+
- Workflow table (8 steps — `/sk:brainstorm`, `/sk:frontend-design` or `/sk:api-design`, `/sk:write-plan`, `/sk:branch`, `/sk:write-tests` + `/sk:execute-plan`, `/sk:smart-commit`, `/sk:gates`, `/sk:finish-feature`)
|
|
63
64
|
- Step details (TDD red/green/verify descriptions)
|
|
64
|
-
-
|
|
65
|
-
-
|
|
66
|
-
-
|
|
65
|
+
- Workflow rules (auto-advance, conditional summary, auto-skip, squash gate commits)
|
|
66
|
+
- Bug fix flow section (7 steps)
|
|
67
|
+
- Hotfix flow section (6 steps)
|
|
67
68
|
- Sub-Agent Patterns section (if missing)
|
|
68
69
|
- Cross-Platform Tracking section (if missing)
|
|
69
70
|
- Project Memory section (if missing)
|
|
@@ -73,6 +74,7 @@ Read → Explore → Design → Accessibility → Plan → Branch → Migrate
|
|
|
73
74
|
- Fix & Retest Protocol section (if missing)
|
|
74
75
|
- Requirement Change Flow section (if missing)
|
|
75
76
|
- Auto-skip detection rules (if missing)
|
|
77
|
+
- Remove `tasks/workflow-status.md` references (tracker removed)
|
|
76
78
|
|
|
77
79
|
**What gets preserved:**
|
|
78
80
|
- Everything marked with `<!-- LOCK -->` is never touched
|
package/skills/sk:start/SKILL.md
CHANGED
|
@@ -30,10 +30,10 @@ Read the task description from arguments. Scan for signal keywords to determine
|
|
|
30
30
|
|
|
31
31
|
| Signal Keywords | Detected Flow |
|
|
32
32
|
|----------------|---------------|
|
|
33
|
-
| bug, fix, broken, error, regression, failing, crash, wrong | `debug` (
|
|
34
|
-
| urgent, prod down, hotfix, emergency, critical, production, incident | `hotfix` (
|
|
35
|
-
| config, bump, typo, copy, rename, dependency, upgrade, version, docs | `fast-track` (
|
|
36
|
-
| *(default — no special signals)* | `feature` (
|
|
33
|
+
| bug, fix, broken, error, regression, failing, crash, wrong | `debug` (7 steps) |
|
|
34
|
+
| urgent, prod down, hotfix, emergency, critical, production, incident | `hotfix` (6 steps) |
|
|
35
|
+
| config, bump, typo, copy, rename, dependency, upgrade, version, docs | `fast-track` (5 steps) |
|
|
36
|
+
| *(default — no special signals)* | `feature` (8 steps) |
|
|
37
37
|
|
|
38
38
|
**Scope detection:**
|
|
39
39
|
|
|
@@ -60,7 +60,7 @@ Present the classification and recommendation:
|
|
|
60
60
|
```
|
|
61
61
|
Detected: [Full-stack feature / Backend bug fix / Frontend hotfix / Small config change / etc.]
|
|
62
62
|
Recommended:
|
|
63
|
-
Flow: [feature (
|
|
63
|
+
Flow: [feature (8 steps) / debug (7 steps) / hotfix (6 steps) / fast-track (5 steps)]
|
|
64
64
|
Mode: [autopilot / manual]
|
|
65
65
|
Agents: [team (backend + frontend + QA) / solo]
|
|
66
66
|
|
|
@@ -84,12 +84,10 @@ Wait for user response:
|
|
|
84
84
|
|
|
85
85
|
### Step 3 — Route (enters the chosen flow)
|
|
86
86
|
|
|
87
|
-
1.
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
> Mode: [autopilot/manual] | Agents: [team/solo] | Flow: [feature/debug/hotfix/fast-track]
|
|
92
|
-
```
|
|
87
|
+
1. Log the routing decision to terminal:
|
|
88
|
+
```
|
|
89
|
+
Mode: [autopilot/manual] | Agents: [team/solo] | Flow: [feature/debug/hotfix/fast-track]
|
|
90
|
+
```
|
|
93
91
|
|
|
94
92
|
2. Dispatch to the chosen flow:
|
|
95
93
|
|
package/skills/sk:test/SKILL.md
CHANGED
|
@@ -126,12 +126,12 @@ Sub-agent 3: [FE command]
|
|
|
126
126
|
- Read the failure output carefully — identify the root cause
|
|
127
127
|
- Fix the failing **implementation code** or test setup, not the test assertions (tests define expected behavior)
|
|
128
128
|
- Do NOT skip, mark incomplete, or delete failing tests
|
|
129
|
-
- Auto-commit with message `fix(test): resolve failing tests` — do NOT ask the user
|
|
130
129
|
- Re-run the failing suite
|
|
131
130
|
- Loop until all pass
|
|
132
|
-
-
|
|
131
|
+
- If the fix is a logic change (new behavior, changed contract), update the relevant tests to reflect the new behavior.
|
|
132
|
+
- Once all tests pass, make ONE squash commit: `fix(test): resolve failing tests` — do NOT ask the user
|
|
133
133
|
|
|
134
|
-
>
|
|
134
|
+
> Squash gate commits — collect all fixes for the pass, then one commit. Do not commit after each individual fix.
|
|
135
135
|
|
|
136
136
|
### 5. Verify Coverage
|
|
137
137
|
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
# Workflow Status
|
|
2
|
-
|
|
3
|
-
> Tracks progress through the development workflow. Reset this file when starting a new feature, bug fix, or task.
|
|
4
|
-
> Updated automatically after every slash command. Do not edit manually.
|
|
5
|
-
|
|
6
|
-
| # | Step | Status | Notes |
|
|
7
|
-
|---|------|--------|-------|
|
|
8
|
-
| 1 | Read Todo | >> next << | |
|
|
9
|
-
| 2 | Read Lessons | not yet | |
|
|
10
|
-
| 3 | Explore (`/sk:brainstorm`) | not yet | |
|
|
11
|
-
| 4 | Design (`/sk:frontend-design` or `/sk:api-design`) | not yet | optional |
|
|
12
|
-
| 5 | Accessibility (`/sk:accessibility`) | not yet | optional |
|
|
13
|
-
| 6 | Plan (`/sk:write-plan`) | not yet | |
|
|
14
|
-
| 7 | Branch (`/sk:branch`) | not yet | |
|
|
15
|
-
| 8 | Migrate (`/sk:schema-migrate`) | not yet | optional |
|
|
16
|
-
| 9 | Write Tests (`/sk:write-tests`) | not yet | |
|
|
17
|
-
| 10 | Implement (`/sk:execute-plan`) | not yet | |
|
|
18
|
-
| 11 | Commit (`/sk:smart-commit`) | not yet | |
|
|
19
|
-
| 12 | **Lint + Dep Audit** (`/sk:lint`) | not yet | HARD GATE — loop until clean, gates own their commits |
|
|
20
|
-
| 13 | **Verify Tests** (`/sk:test`) | not yet | HARD GATE — 100% coverage, gates own their commits |
|
|
21
|
-
| 14 | **Security** (`/sk:security-check`) | not yet | HARD GATE — 0 issues, gates own their commits |
|
|
22
|
-
| 15 | Performance (`/sk:perf`) | not yet | optional gate, gates own their commits |
|
|
23
|
-
| 16 | **Review + Simplify** (`/sk:review`) | not yet | HARD GATE — 0 issues, gates own their commits |
|
|
24
|
-
| 17 | **E2E** (`/sk:e2e`) | not yet | HARD GATE — all E2E scenarios must pass, gates own their commits |
|
|
25
|
-
| 18 | Update (`/sk:update-task`) | not yet | |
|
|
26
|
-
| 19 | Finalize (`/sk:finish-feature`) | not yet | |
|
|
27
|
-
| 20 | Sync Features (`/sk:features`) | not yet | required — sync feature specs after ship |
|
|
28
|
-
| 21 | Release (`/sk:release`) | not yet | optional |
|