@kennethsolomon/shipkit 3.10.1 → 3.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +121 -49
- package/commands/sk/autopilot.md +2 -2
- package/commands/sk/context-budget.md +5 -0
- package/commands/sk/eval.md +5 -0
- package/commands/sk/health.md +5 -0
- package/commands/sk/help.md +32 -8
- package/commands/sk/learn.md +5 -0
- package/commands/sk/resume-session.md +5 -0
- package/commands/sk/safety-guard.md +5 -0
- package/commands/sk/save-session.md +5 -0
- package/commands/sk/security-check.md +2 -2
- package/commands/sk/set-profile.md +8 -0
- 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:brainstorming/SKILL.md +13 -0
- package/skills/sk:context/SKILL.md +11 -15
- package/skills/sk:context-budget/SKILL.md +126 -0
- 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:eval/SKILL.md +188 -0
- 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:health/SKILL.md +146 -0
- package/skills/sk:learn/SKILL.md +138 -0
- package/skills/sk:lint/SKILL.md +3 -3
- package/skills/sk:perf/SKILL.md +3 -3
- package/skills/sk:resume-session/SKILL.md +95 -0
- package/skills/sk:retro/SKILL.md +1 -2
- package/skills/sk:review/SKILL.md +2 -2
- package/skills/sk:safety-guard/SKILL.md +134 -0
- package/skills/sk:save-session/SKILL.md +84 -0
- package/skills/sk:setup-claude/SKILL.md +40 -4
- 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/settings.json.template +110 -26
- package/skills/sk:setup-claude/templates/.claude/statusline.sh +1 -15
- package/skills/sk:setup-claude/templates/CLAUDE.md.template +69 -138
- package/skills/sk:setup-claude/templates/commands/brainstorm.md.template +2 -13
- package/skills/sk:setup-claude/templates/hooks/config-protection.sh +71 -0
- package/skills/sk:setup-claude/templates/hooks/console-log-warning.sh +42 -0
- package/skills/sk:setup-claude/templates/hooks/cost-tracker.sh +26 -0
- package/skills/sk:setup-claude/templates/hooks/post-edit-format.sh +53 -0
- package/skills/sk:setup-claude/templates/hooks/pre-compact.sh +1 -12
- package/skills/sk:setup-claude/templates/hooks/safety-guard.sh +72 -0
- 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/templates/hooks/suggest-compact.sh +35 -0
- 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 +68 -15
- package/skills/sk:start/SKILL.md +34 -11
- package/skills/sk:test/SKILL.md +3 -3
- package/skills/sk:setup-claude/templates/tasks/workflow-status.md.template +0 -28
|
@@ -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
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# suggest-compact.sh — PreToolUse hook for Edit/Write
|
|
3
|
+
# Tracks tool call count and suggests /compact at threshold.
|
|
4
|
+
|
|
5
|
+
set -uo pipefail
|
|
6
|
+
|
|
7
|
+
THRESHOLD="${SHIPKIT_COMPACT_THRESHOLD:-50}"
|
|
8
|
+
REPEAT_INTERVAL=25
|
|
9
|
+
|
|
10
|
+
# Use a session-scoped counter file
|
|
11
|
+
COUNTER_FILE="/tmp/shipkit-tool-count-${PPID:-$$}"
|
|
12
|
+
|
|
13
|
+
# Read current count
|
|
14
|
+
COUNT=0
|
|
15
|
+
if [[ -f "$COUNTER_FILE" ]]; then
|
|
16
|
+
COUNT=$(cat "$COUNTER_FILE" 2>/dev/null || echo "0")
|
|
17
|
+
fi
|
|
18
|
+
|
|
19
|
+
COUNT=$((COUNT + 1))
|
|
20
|
+
echo "$COUNT" > "$COUNTER_FILE"
|
|
21
|
+
|
|
22
|
+
# Check if we should suggest compaction
|
|
23
|
+
if [[ $COUNT -eq $THRESHOLD ]]; then
|
|
24
|
+
echo ""
|
|
25
|
+
echo "HINT: You've made $COUNT+ tool calls this session."
|
|
26
|
+
echo "Consider running /compact if context feels heavy."
|
|
27
|
+
elif [[ $COUNT -gt $THRESHOLD ]]; then
|
|
28
|
+
PAST_THRESHOLD=$((COUNT - THRESHOLD))
|
|
29
|
+
if [[ $((PAST_THRESHOLD % REPEAT_INTERVAL)) -eq 0 ]]; then
|
|
30
|
+
echo ""
|
|
31
|
+
echo "HINT: $COUNT tool calls this session. Consider /compact."
|
|
32
|
+
fi
|
|
33
|
+
fi
|
|
34
|
+
|
|
35
|
+
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()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: sk:setup-optimizer
|
|
3
|
-
description: "Diagnose, update workflow, enrich, and
|
|
3
|
+
description: "Diagnose, update workflow, deploy hooks, enrich CLAUDE.md, and keep project infrastructure current. The single command for ongoing ShipKit maintenance."
|
|
4
4
|
triggers:
|
|
5
5
|
- optimize claude
|
|
6
6
|
- optimize setup
|
|
@@ -20,14 +20,15 @@ allowed-tools:
|
|
|
20
20
|
|
|
21
21
|
## Overview
|
|
22
22
|
|
|
23
|
-
The single command to keep your
|
|
23
|
+
The single command to keep your entire ShipKit project infrastructure current. Diagnoses problems, updates the workflow, deploys missing hooks, scans your codebase, and enriches CLAUDE.md with project context — all while preserving your customizations.
|
|
24
24
|
|
|
25
25
|
### What It Does
|
|
26
26
|
|
|
27
27
|
1. **Diagnoses** — finds missing sections, stale info, inconsistencies, and gaps
|
|
28
28
|
2. **Updates workflow** — refreshes the workflow section to the latest template version
|
|
29
|
-
3. **
|
|
30
|
-
4. **
|
|
29
|
+
3. **Deploys hooks** — installs missing hooks and updates settings.json wiring
|
|
30
|
+
4. **Discovers** — scans project structure, docs, and workflows
|
|
31
|
+
5. **Enriches** — merges discoveries into CLAUDE.md while preserving your edits
|
|
31
32
|
|
|
32
33
|
## Usage
|
|
33
34
|
|
|
@@ -43,9 +44,11 @@ Before making any changes, runs a diagnostic pass on the existing CLAUDE.md:
|
|
|
43
44
|
- **Stale content** — detects outdated info (stale model/route counts, removed dependencies, old command names like `/laravel-lint` instead of `/sk:lint`)
|
|
44
45
|
- **Inconsistencies** — compares documented vs actual project state (directories, scripts, workflows)
|
|
45
46
|
- **Section completeness** — flags sections that exist but are empty or have only placeholder text
|
|
46
|
-
- **Outdated workflow** — checks if the workflow matches the current
|
|
47
|
-
- **Missing commands** — checks for `sk:start`, `sk:autopilot`, `sk:team` in the Commands table
|
|
47
|
+
- **Outdated workflow** — checks if the workflow matches the current 8-step flow with `/sk:gates` as single gate step
|
|
48
|
+
- **Missing commands** — checks for `sk:start`, `sk:autopilot`, `sk:team`, `sk:learn`, `sk:context-budget`, `sk:health`, `sk:save-session`, `sk:resume-session`, `sk:safety-guard`, `sk:eval` in the Commands table
|
|
48
49
|
- **Auto-skip rules** — checks for auto-skip detection rules in the workflow section
|
|
50
|
+
- **Stale tracker references** — checks for `tasks/workflow-status.md` references (removed — progress tracked via git branch + todo.md checkboxes)
|
|
51
|
+
- **Missing hooks** — checks if `.claude/hooks/` exists and contains both core and enhanced hooks
|
|
49
52
|
|
|
50
53
|
Reports findings before proceeding. If issues are found, they inform subsequent steps.
|
|
51
54
|
|
|
@@ -53,17 +56,17 @@ Reports findings before proceeding. If issues are found, they inform subsequent
|
|
|
53
56
|
|
|
54
57
|
If the workflow section is outdated or missing, replace it with the latest version:
|
|
55
58
|
|
|
56
|
-
**Current workflow (
|
|
59
|
+
**Current workflow (8 steps, TDD with `/sk:gates` as single gate step):**
|
|
57
60
|
```
|
|
58
|
-
|
|
61
|
+
Explore → Design → Plan → Branch → Write Tests + Implement → Commit → Gates → Finalize
|
|
59
62
|
```
|
|
60
63
|
|
|
61
64
|
**What gets updated:**
|
|
62
|
-
- Workflow table (
|
|
65
|
+
- 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
66
|
- Step details (TDD red/green/verify descriptions)
|
|
64
|
-
-
|
|
65
|
-
-
|
|
66
|
-
-
|
|
67
|
+
- Workflow rules (auto-advance, conditional summary, auto-skip, squash gate commits)
|
|
68
|
+
- Bug fix flow section (7 steps)
|
|
69
|
+
- Hotfix flow section (6 steps)
|
|
67
70
|
- Sub-Agent Patterns section (if missing)
|
|
68
71
|
- Cross-Platform Tracking section (if missing)
|
|
69
72
|
- Project Memory section (if missing)
|
|
@@ -73,6 +76,7 @@ Read → Explore → Design → Accessibility → Plan → Branch → Migrate
|
|
|
73
76
|
- Fix & Retest Protocol section (if missing)
|
|
74
77
|
- Requirement Change Flow section (if missing)
|
|
75
78
|
- Auto-skip detection rules (if missing)
|
|
79
|
+
- Remove `tasks/workflow-status.md` references (tracker removed)
|
|
76
80
|
|
|
77
81
|
**What gets preserved:**
|
|
78
82
|
- Everything marked with `<!-- LOCK -->` is never touched
|
|
@@ -87,6 +91,54 @@ Read → Explore → Design → Accessibility → Plan → Branch → Migrate
|
|
|
87
91
|
4. Insert missing sections (Sub-Agent Patterns, Project Memory, etc.) in their correct positions
|
|
88
92
|
5. Preserve all `<!-- LOCK -->` and project-specific sections
|
|
89
93
|
|
|
94
|
+
### Step 1.5: Hooks Deployment
|
|
95
|
+
|
|
96
|
+
After updating the workflow, check and deploy hooks:
|
|
97
|
+
|
|
98
|
+
1. **Check if `.claude/hooks/` exists** — if not, create it
|
|
99
|
+
2. **Check for core hooks** — `session-start.sh`, `session-stop.sh`, `pre-compact.sh`, `validate-commit.sh`, `validate-push.sh`, `log-agent.sh`
|
|
100
|
+
3. **Check for enhanced hooks** — `config-protection.sh`, `post-edit-format.sh`, `console-log-warning.sh`, `cost-tracker.sh`, `suggest-compact.sh`, `safety-guard.sh`
|
|
101
|
+
4. **Check `.claude/settings.json`** — verify hooks are wired correctly
|
|
102
|
+
|
|
103
|
+
**Report status and prompt:**
|
|
104
|
+
|
|
105
|
+
> "Hooks: [X/6 core, Y/6 enhanced] installed
|
|
106
|
+
> Install missing hooks? [y/n]"
|
|
107
|
+
|
|
108
|
+
**If yes:**
|
|
109
|
+
|
|
110
|
+
1. **Locate templates** — resolve the ShipKit templates directory:
|
|
111
|
+
- `~/.claude/skills/sk:setup-claude/templates/hooks/` (symlinked install)
|
|
112
|
+
- Or the npm global path if installed via `npm install -g`
|
|
113
|
+
|
|
114
|
+
2. **Deploy missing hook scripts** (create-if-missing, never overwrite existing):
|
|
115
|
+
```bash
|
|
116
|
+
# For each missing hook file:
|
|
117
|
+
cp "$TEMPLATE_DIR/hooks/<hook>.sh" ".claude/hooks/<hook>.sh"
|
|
118
|
+
chmod +x ".claude/hooks/<hook>.sh"
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
3. **Update `.claude/settings.json`** — read the latest `settings.json.template` and merge new hook entries into the existing settings.json:
|
|
122
|
+
- **Preserve** existing hooks, permissions, statusline config
|
|
123
|
+
- **Add** only missing hook entries (new PreToolUse, PostToolUse, Stop entries)
|
|
124
|
+
- **Never remove** existing entries — additive merge only
|
|
125
|
+
|
|
126
|
+
4. **Report what was deployed:**
|
|
127
|
+
```
|
|
128
|
+
Deployed hooks:
|
|
129
|
+
+ config-protection.sh (PreToolUse — blocks linter config edits)
|
|
130
|
+
+ post-edit-format.sh (PostToolUse — auto-format after edits)
|
|
131
|
+
+ console-log-warning.sh (Stop — warn on debug statements)
|
|
132
|
+
+ cost-tracker.sh (Stop — session metadata logging)
|
|
133
|
+
+ suggest-compact.sh (PreToolUse — compact suggestions)
|
|
134
|
+
+ safety-guard.sh (PreToolUse — freeze/careful mode)
|
|
135
|
+
~ Updated .claude/settings.json with new hook wiring
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
**If no:** skip hook deployment, continue to Step 2.
|
|
139
|
+
|
|
140
|
+
**Idempotency:** Never overwrite existing hook files — the user may have customized them. Only deploy hooks that don't exist yet. For settings.json, merge additively.
|
|
141
|
+
|
|
90
142
|
### Step 2: Scan & Enrich
|
|
91
143
|
|
|
92
144
|
After workflow update, proceeds with codebase discovery and enrichment:
|
|
@@ -181,10 +233,11 @@ This content will never be regenerated.
|
|
|
181
233
|
|
|
182
234
|
## When to Use
|
|
183
235
|
|
|
184
|
-
✅ **Use `/
|
|
236
|
+
✅ **Use `/sk:setup-optimizer` when:**
|
|
237
|
+
- ShipKit was updated and your project needs the latest hooks/commands
|
|
185
238
|
- You've added new directories to your project
|
|
186
239
|
- You've created documentation files
|
|
187
240
|
- You want to refresh project context
|
|
188
|
-
- Monthly maintenance of CLAUDE.md
|
|
241
|
+
- Monthly maintenance of CLAUDE.md and hooks
|
|
189
242
|
|
|
190
|
-
✅ **Safe to run multiple times
|
|
243
|
+
✅ **Safe to run multiple times** — existing customizations and hook files are never overwritten.
|
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
|
|
|
@@ -53,6 +53,31 @@ Read the task description from arguments. Scan for signal keywords to determine
|
|
|
53
53
|
| `backend` only | `solo` |
|
|
54
54
|
| `unknown` | `solo` (default) |
|
|
55
55
|
|
|
56
|
+
### Step 1.5 — Missing Context Detection (automatic, no prompt)
|
|
57
|
+
|
|
58
|
+
After classification, scan the task description for gaps. This is informational only — does NOT block.
|
|
59
|
+
|
|
60
|
+
**Critical context checks:**
|
|
61
|
+
|
|
62
|
+
| Check | How to detect | Auto-resolve |
|
|
63
|
+
|-------|--------------|--------------|
|
|
64
|
+
| Tech stack specified? | Look for framework/language keywords | Auto-detect from package.json, composer.json, go.mod, Cargo.toml |
|
|
65
|
+
| Acceptance criteria present? | Look for "should", "must", "when", "given" | Cannot auto-resolve — flag for user |
|
|
66
|
+
| Scope boundaries stated? | Look for "only", "not", "exclude", "just" | Cannot auto-resolve — flag for user |
|
|
67
|
+
| Security requirements? | Check if task involves auth, user data, payments, tokens | Flag: "This touches auth/user data — consider security requirements" |
|
|
68
|
+
| Testing expectations? | Look for "test", "coverage", "spec" | Default: 100% coverage on new code (per workflow) |
|
|
69
|
+
|
|
70
|
+
**If 3+ critical items are missing**, include in the recommendation output:
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
Missing Context (3 items — consider clarifying):
|
|
74
|
+
- No acceptance criteria detected
|
|
75
|
+
- No scope boundaries stated (what should NOT change?)
|
|
76
|
+
- Task involves user data but no security requirements mentioned
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
This check runs silently. If <3 items missing, no output.
|
|
80
|
+
|
|
56
81
|
### Step 2 — Recommend (one prompt, user confirms or overrides)
|
|
57
82
|
|
|
58
83
|
Present the classification and recommendation:
|
|
@@ -60,7 +85,7 @@ Present the classification and recommendation:
|
|
|
60
85
|
```
|
|
61
86
|
Detected: [Full-stack feature / Backend bug fix / Frontend hotfix / Small config change / etc.]
|
|
62
87
|
Recommended:
|
|
63
|
-
Flow: [feature (
|
|
88
|
+
Flow: [feature (8 steps) / debug (7 steps) / hotfix (6 steps) / fast-track (5 steps)]
|
|
64
89
|
Mode: [autopilot / manual]
|
|
65
90
|
Agents: [team (backend + frontend + QA) / solo]
|
|
66
91
|
|
|
@@ -84,12 +109,10 @@ Wait for user response:
|
|
|
84
109
|
|
|
85
110
|
### Step 3 — Route (enters the chosen flow)
|
|
86
111
|
|
|
87
|
-
1.
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
> Mode: [autopilot/manual] | Agents: [team/solo] | Flow: [feature/debug/hotfix/fast-track]
|
|
92
|
-
```
|
|
112
|
+
1. Log the routing decision to terminal:
|
|
113
|
+
```
|
|
114
|
+
Mode: [autopilot/manual] | Agents: [team/solo] | Flow: [feature/debug/hotfix/fast-track]
|
|
115
|
+
```
|
|
93
116
|
|
|
94
117
|
2. Dispatch to the chosen flow:
|
|
95
118
|
|
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 |
|