@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.
Files changed (33) hide show
  1. package/README.md +29 -45
  2. package/commands/sk/autopilot.md +2 -2
  3. package/commands/sk/security-check.md +2 -2
  4. package/commands/sk/status.md +4 -9
  5. package/package.json +1 -1
  6. package/skills/sk:accessibility/SKILL.md +10 -1
  7. package/skills/sk:autopilot/SKILL.md +26 -45
  8. package/skills/sk:context/SKILL.md +11 -15
  9. package/skills/sk:dashboard/SKILL.md +3 -4
  10. package/skills/sk:dashboard/server.js +0 -65
  11. package/skills/sk:e2e/SKILL.md +3 -3
  12. package/skills/sk:fast-track/SKILL.md +0 -9
  13. package/skills/sk:frontend-design/SKILL.md +232 -0
  14. package/skills/sk:gates/SKILL.md +2 -3
  15. package/skills/sk:lint/SKILL.md +3 -3
  16. package/skills/sk:perf/SKILL.md +3 -3
  17. package/skills/sk:retro/SKILL.md +1 -2
  18. package/skills/sk:review/SKILL.md +2 -2
  19. package/skills/sk:setup-claude/SKILL.md +1 -2
  20. package/skills/sk:setup-claude/scripts/__pycache__/apply_setup_claude.cpython-314.pyc +0 -0
  21. package/skills/sk:setup-claude/scripts/apply_setup_claude.py +0 -1
  22. package/skills/sk:setup-claude/templates/.claude/statusline.sh +1 -15
  23. package/skills/sk:setup-claude/templates/CLAUDE.md.template +61 -137
  24. package/skills/sk:setup-claude/templates/commands/brainstorm.md.template +2 -13
  25. package/skills/sk:setup-claude/templates/hooks/pre-compact.sh +1 -12
  26. package/skills/sk:setup-claude/templates/hooks/session-start.sh +0 -11
  27. package/skills/sk:setup-claude/templates/hooks/session-stop.sh +0 -7
  28. package/skills/sk:setup-claude/tests/__pycache__/test_apply_setup_claude.cpython-314.pyc +0 -0
  29. package/skills/sk:setup-claude/tests/test_apply_setup_claude.py +2 -33
  30. package/skills/sk:setup-optimizer/SKILL.md +9 -7
  31. package/skills/sk:start/SKILL.md +9 -11
  32. package/skills/sk:test/SKILL.md +3 -3
  33. 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:** Read → Explore → Design → Accessibility → Plan → Branch → Migrate → Write Tests Implement → LintVerify Tests Security → Performance → Review → E2E Tests → Finish → Sync Features
38
-
39
- Progress is tracked in `tasks/workflow-status.md`. This file persists across conversations.
40
-
41
- | # | Step | Command | Type | Loop? |
42
- |---|------|---------|------|-------|
43
- | 1 | Read Todo | read `tasks/todo.md` | required | no |
44
- | 2 | Read Lessons | read `tasks/lessons.md` | required | no |
45
- | 3 | Explore | `/sk:brainstorm` | required | no |
46
- | 4 | Design | `/sk:frontend-design` or `/sk:api-design` | optional (confirm to skip) | no |
47
- | 5 | Accessibility | `/sk:accessibility` | optional (confirm to skip) | no |
48
- | 6 | Plan | `/sk:write-plan` | required | no |
49
- | 7 | Branch | `/sk:branch` | required | no |
50
- | 8 | Migrate | `/sk:schema-migrate` | optional (confirm to skip) | no |
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 → CommitGatesFinalize
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. **Read** `tasks/todo.md` pick the next incomplete task
68
- 2. **Read** `tasks/lessons.md` — review past corrections before writing code
69
- 3. **Explore** — run `/sk:brainstorm` to clarify requirements, constraints, and approach. No code in this step.
70
- 4. **Design** — run `/sk:frontend-design` for UI mockup or `/sk:api-design` for API contracts. No code — design only. Skip if pure backend with no UI and no new API. After the design summary, the skill asks if you want a Pencil visual mockup — answer `y` only if you have the Pencil app open and Pencil MCP connected. Use `/sk:frontend-design --pencil` to jump directly to the Pencil phase.
71
- 5. **Accessibility** — run `/sk:accessibility` to audit the design spec for WCAG 2.1 AA compliance. Produces `tasks/accessibility-findings.md`. Skip if backend-only with no frontend.
72
- 6. **Plan** — run `/sk:write-plan` to write a decision-complete plan into `tasks/todo.md` using brainstorm + design outputs. No code in this step.
73
- 7. **Branch** — run `/sk:branch` to create a feature branch auto-named from the current task.
74
- 8. **Migrate** — run `/sk:schema-migrate` for database changes. Skip if no schema changes needed.
75
- 9. **Write Tests** — run `/sk:write-tests` (TDD red phase). Write failing tests for all planned code. If modifying existing behavior, update existing tests first. Tests SHOULD fail — no implementation yet.
76
- 10. **Implement** — run `/sk:execute-plan` to execute `tasks/todo.md` checkboxes in small batches, making the failing tests pass (TDD green phase). Log progress to `tasks/progress.md`.
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]: [done/skipped/partial] ---
133
- Summary: [1-2 sentence summary of what was done]
69
+ --- Step [#] [Name]: [skipped/partial] ---
70
+ Summary: [1-2 sentence summary]
134
71
  Next step: [#] [Name] — run `[command]`
135
72
  ```
136
73
 
137
- This tells the user exactly what happened and what to do next. Never finish a step silently.
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 steps 12, 13, 14, 15, 16, 17 — any step that can produce code changes.**
91
+ **Applies to all gates — any gate that can produce code changes.**
142
92
 
143
- When any of these steps require a fix, classify the fix before committing:
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 the gate. No test update needed.
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
- When fixing a bug (not building a feature), use `/sk:debug` as the entry point. This sets up a shorter workflow:
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 | Lint | `/sk:lint` |
172
- | 7 | Commit | `/sk:smart-commit` (skip if clean) |
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 that need to ship immediately, use `/sk:hotfix`. Skips brainstorm, design, and write-tests. Quality gates still apply.
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 | Smoke Test | run existing tests |
194
- | 5 | Commit | `/sk:smart-commit` |
195
- | 6 | Lint | `/sk:lint` |
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` to avoid implementing the wrong behavior:
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 9 |
216
- | 3 | Tier 2 (plan revision) | revise plan → re-enter at step 6 |
217
- | 4 | Tier 3 (re-brainstorm) | re-enter at step 3 |
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 9) and verified **after** (step 14).
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 step 12 without 100% coverage on new code.
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 21 steps, auto-skip, auto-advance, auto-commit |
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. **Check workflow tracker:**
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. Update `tasks/workflow-status.md`: set step 1 (`/sk:brainstorm`) to `done`, move `>> next <<` to the next pending step.
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/workflow-status.md to restore current step."
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
@@ -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.assertTrue(wf_path.exists())
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 21-step TDD flow with hard gates
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 (21 steps, TDD with hard gates):**
57
+ **Current workflow (8 steps, TDD with `/sk:gates` as single gate step):**
57
58
  ```
58
- Read → Explore → Design → Accessibility → Plan → Branch → Migrate → Write Tests Implement → LintVerify Tests Security → Performance → Review → E2E Tests → Finish → Sync Features
59
+ Explore → Design → Plan → Branch → Write Tests + Implement → CommitGatesFinalize
59
60
  ```
60
61
 
61
62
  **What gets updated:**
62
- - Workflow table (21 steps with correct commands: `/sk:write-tests`, `/sk:lint`, `/sk:test`, `/sk:accessibility`, `/sk:perf`, `/sk:e2e`, `/sk:start`, `/sk:autopilot`, `/sk:team`)
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
- - Tracker rules (hard gates at 12, 14, 16, 20, 17; optional steps 4, 5, 8, 18, 21)
65
- - Step completion summary rule (NON-NEGOTIABLE)
66
- - Bug fix flow section
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
@@ -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` (11 steps) |
34
- | urgent, prod down, hotfix, emergency, critical, production, incident | `hotfix` (11 steps) |
35
- | config, bump, typo, copy, rename, dependency, upgrade, version, docs | `fast-track` (10 steps) |
36
- | *(default — no special signals)* | `feature` (21 steps) |
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 (21 steps) / debug (11 steps) / hotfix (11 steps) / fast-track (10 steps)]
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. Reset `tasks/workflow-status.md`:
88
- - Set all steps to `not yet`
89
- - Add metadata to the tracker header:
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
 
@@ -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
- - Fix the implementation and auto-commit. If the fix is a logic change (new behavior, changed contract), update the relevant tests to reflect the new behavior before committing.
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
- > Gates own their commits — the fix-commit-rerun loop is fully internal. No manual commit step needed after this gate.
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 |