@kennethsolomon/shipkit 3.9.0 → 3.10.1

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 (42) hide show
  1. package/README.md +10 -2
  2. package/commands/sk/autopilot.md +22 -0
  3. package/commands/sk/set-profile.md +4 -0
  4. package/commands/sk/start.md +30 -0
  5. package/commands/sk/team.md +23 -0
  6. package/package.json +1 -1
  7. package/skills/.claude/settings.local.json +37 -0
  8. package/skills/sk:autopilot/SKILL.md +151 -0
  9. package/skills/sk:brainstorming/SKILL.md +6 -6
  10. package/skills/sk:debug/__pycache__/debug_conductor.cpython-314.pyc +0 -0
  11. package/skills/sk:debug/debug_conductor.py +0 -8
  12. package/skills/sk:debug/lib/__pycache__/findings_writer.cpython-314.pyc +0 -0
  13. package/skills/sk:debug/lib/__pycache__/lessons_writer.cpython-314.pyc +0 -0
  14. package/skills/sk:debug/lib/__pycache__/step_runner.cpython-314.pyc +0 -0
  15. package/skills/sk:debug/lib/findings_writer.py +2 -2
  16. package/skills/sk:debug/lib/lessons_writer.py +2 -2
  17. package/skills/sk:debug/lib/step_runner.py +8 -10
  18. package/skills/sk:lint/SKILL.md +2 -2
  19. package/skills/sk:setup-claude/scripts/__pycache__/apply_setup_claude.cpython-314.pyc +0 -0
  20. package/skills/sk:setup-claude/scripts/apply_setup_claude.py +12 -3
  21. package/skills/sk:setup-claude/templates/.claude/agents/backend-dev.md +63 -0
  22. package/skills/sk:setup-claude/templates/.claude/agents/frontend-dev.md +65 -0
  23. package/skills/sk:setup-claude/templates/.claude/agents/qa-engineer.md +66 -0
  24. package/skills/sk:setup-claude/templates/CLAUDE.md.template +43 -25
  25. package/skills/sk:setup-optimizer/SKILL.md +4 -1
  26. package/skills/sk:setup-optimizer/lib/__pycache__/discover.cpython-314.pyc +0 -0
  27. package/skills/sk:setup-optimizer/lib/discover.py +9 -10
  28. package/skills/sk:skill-creator/scripts/__pycache__/generate_report.cpython-314.pyc +0 -0
  29. package/skills/sk:skill-creator/scripts/__pycache__/improve_description.cpython-314.pyc +0 -0
  30. package/skills/sk:skill-creator/scripts/__pycache__/package_skill.cpython-314.pyc +0 -0
  31. package/skills/sk:skill-creator/scripts/__pycache__/run_eval.cpython-314.pyc +0 -0
  32. package/skills/sk:skill-creator/scripts/__pycache__/run_loop.cpython-314.pyc +0 -0
  33. package/skills/sk:skill-creator/scripts/__pycache__/utils.cpython-314.pyc +0 -0
  34. package/skills/sk:skill-creator/scripts/generate_report.py +2 -0
  35. package/skills/sk:skill-creator/scripts/improve_description.py +2 -0
  36. package/skills/sk:skill-creator/scripts/package_skill.py +4 -0
  37. package/skills/sk:skill-creator/scripts/run_eval.py +3 -1
  38. package/skills/sk:skill-creator/scripts/run_loop.py +2 -0
  39. package/skills/sk:skill-creator/scripts/utils.py +2 -0
  40. package/skills/sk:start/SKILL.md +156 -0
  41. package/skills/sk:team/SKILL.md +141 -0
  42. package/skills/sk:test/SKILL.md +2 -2
@@ -0,0 +1,141 @@
1
+ ---
2
+ name: sk:team
3
+ description: Parallel domain agents for full-stack implementation — spawns Backend, Frontend, and QA agents in isolated worktrees.
4
+ user_invocable: true
5
+ allowed_tools: Read, Write, Bash, Glob, Grep, Agent
6
+ ---
7
+
8
+ # Team Mode
9
+
10
+ Splits implementation across specialized parallel agents when a task spans multiple domains (frontend + backend). Each agent works in an isolated worktree to avoid conflicts. Works in both manual and autopilot modes.
11
+
12
+ ## When to Use
13
+
14
+ - Full-stack features with both backend API and frontend UI work
15
+ - Tasks where frontend and backend have clear boundaries (separate directories)
16
+ - Changes large enough that parallel implementation saves meaningful time
17
+
18
+ ## When NOT to Use
19
+
20
+ - Backend-only or frontend-only tasks — single agent is faster
21
+ - Tasks where frontend and backend share files (e.g., Inertia controllers returning views)
22
+ - Small changes (<100 lines estimated) — worktree overhead exceeds time saved
23
+ - Tasks without a clear API contract boundary
24
+
25
+ ## Agents
26
+
27
+ | Agent | Role | Isolation | Model |
28
+ |-------|------|-----------|-------|
29
+ | **Backend Agent** | Writes backend tests + implements API/services/models | Isolated worktree | sonnet |
30
+ | **Frontend Agent** | Writes frontend tests + implements UI/components/pages | Isolated worktree | sonnet |
31
+ | **QA Agent** | Writes E2E test scenarios while others implement | Background | sonnet |
32
+
33
+ ## Prerequisites
34
+
35
+ The plan in `tasks/todo.md` MUST contain an explicit **API contract** section defining:
36
+ - Endpoint paths and HTTP methods
37
+ - Request payload shapes (with types)
38
+ - Response payload shapes (with types)
39
+ - Authentication requirements
40
+ - Error response formats
41
+
42
+ If no API contract is found, team mode warns and falls back to single-agent sequential mode.
43
+
44
+ ## Steps
45
+
46
+ ### 0. Validate Prerequisites
47
+
48
+ 1. Read `tasks/todo.md` — scan for API contract section
49
+ 2. If no API contract found:
50
+ > "No API contract found in plan. Team mode requires explicit endpoint definitions as the shared boundary between agents. Falling back to single-agent mode."
51
+ - Exit team mode, proceed with normal sequential implementation
52
+ 3. If API contract found, continue
53
+
54
+ ### 1. Prepare Worktrees
55
+
56
+ 1. Get current branch name: `git branch --show-current`
57
+ 2. Verify working directory is clean: `git status --porcelain`
58
+ 3. Note: worktree creation is handled by the Agent tool's `isolation: "worktree"` parameter
59
+
60
+ ### 2. Spawn Agents (parallel)
61
+
62
+ Launch all 3 agents simultaneously using the Agent tool:
63
+
64
+ **Backend Agent** (`isolation: "worktree"`):
65
+ - Task: "Read the API contract in tasks/todo.md. Write backend tests for all endpoints (controller tests, model tests, validation tests). Then implement: migrations, models, services, controllers, routes. Make all tests pass. Commit with `feat(backend): [description]`."
66
+ - Receives: full plan from `tasks/todo.md`, `tasks/lessons.md`
67
+
68
+ **Frontend Agent** (`isolation: "worktree"`):
69
+ - Task: "Read the API contract in tasks/todo.md. Write frontend tests for all components/pages (component tests, interaction tests, form tests). Mock API endpoints using contract shapes. Then implement: API client, composables/hooks, components, pages, routes. Make all tests pass. Commit with `feat(frontend): [description]`."
70
+ - Receives: full plan from `tasks/todo.md`, `tasks/lessons.md`
71
+
72
+ **QA Agent** (`run_in_background: true`):
73
+ - Task: "Read the plan in tasks/todo.md. Write E2E test scenarios covering all user flows. Do NOT run them — they'll be executed after merge. Report scenario count and coverage summary."
74
+ - Receives: full plan from `tasks/todo.md`
75
+
76
+ ### 3. Wait for Completion
77
+
78
+ Wait for Backend Agent and Frontend Agent to complete. The QA Agent runs in the background and will be collected later.
79
+
80
+ For each completed agent, check:
81
+ - Did it succeed or hit 3-strike failure?
82
+ - What files were changed?
83
+ - What tests pass?
84
+
85
+ ### 4. Merge Worktrees
86
+
87
+ If both agents used worktree isolation and made changes:
88
+
89
+ 1. Check if worktree branches exist
90
+ 2. Merge backend worktree branch into feature branch:
91
+ ```bash
92
+ git merge <backend-worktree-branch> --no-edit
93
+ ```
94
+ 3. Merge frontend worktree branch into feature branch:
95
+ ```bash
96
+ git merge <frontend-worktree-branch> --no-edit
97
+ ```
98
+ 4. If merge conflicts occur:
99
+ - Attempt auto-resolution for non-overlapping changes
100
+ - If conflicts are in shared files (routes, config, types), resolve by combining both additions
101
+ - If conflicts are ambiguous, stop and ask user:
102
+ > "Merge conflict in [file]. Backend added [X], Frontend added [Y]. Which to keep, or combine?"
103
+
104
+ ### 5. Collect QA Agent Results
105
+
106
+ Collect the QA Agent's E2E scenarios. These will be used in the E2E gate (step 17).
107
+
108
+ ### 6. Report Results
109
+
110
+ ```
111
+ Team implementation complete:
112
+ Backend Agent: [N] files changed, [M] tests passing
113
+ Frontend Agent: [N] files changed, [M] tests passing
114
+ QA Agent: [N] E2E scenarios written
115
+ Merge: [clean / N conflicts resolved]
116
+
117
+ Ready for commit and quality gates.
118
+ ```
119
+
120
+ ## Fallback
121
+
122
+ If worktree creation fails (git state issues, disk space, etc.):
123
+ > "Worktree creation failed: [error]. Falling back to single-agent sequential mode."
124
+
125
+ Run normal sequential implementation (write-tests → implement) instead.
126
+
127
+ ## Model Routing
128
+
129
+ Read `.shipkit/config.json` from the project root if it exists.
130
+
131
+ - If `model_overrides["sk:team"]` is set, use that model — it takes precedence.
132
+ - Otherwise use the `profile` field. Default: `balanced`.
133
+
134
+ | Profile | Model |
135
+ |---------|-------|
136
+ | `full-sail` | opus (inherit) |
137
+ | `quality` | opus (inherit) |
138
+ | `balanced` | sonnet |
139
+ | `budget` | sonnet |
140
+
141
+ > `opus` = inherit. When spawning sub-agents via the Agent tool, pass `model: "<resolved-model>"`.
@@ -184,8 +184,8 @@ Read `.shipkit/config.json` from the project root if it exists.
184
184
 
185
185
  | Profile | Model |
186
186
  |---------|-------|
187
- | `full-sail` | sonnet |
188
- | `quality` | sonnet |
187
+ | `full-sail` | opus (inherit) |
188
+ | `quality` | opus (inherit) |
189
189
  | `balanced` | haiku |
190
190
  | `budget` | haiku |
191
191