@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.
- package/README.md +10 -2
- package/commands/sk/autopilot.md +22 -0
- package/commands/sk/set-profile.md +4 -0
- package/commands/sk/start.md +30 -0
- package/commands/sk/team.md +23 -0
- package/package.json +1 -1
- package/skills/.claude/settings.local.json +37 -0
- package/skills/sk:autopilot/SKILL.md +151 -0
- package/skills/sk:brainstorming/SKILL.md +6 -6
- package/skills/sk:debug/__pycache__/debug_conductor.cpython-314.pyc +0 -0
- package/skills/sk:debug/debug_conductor.py +0 -8
- package/skills/sk:debug/lib/__pycache__/findings_writer.cpython-314.pyc +0 -0
- package/skills/sk:debug/lib/__pycache__/lessons_writer.cpython-314.pyc +0 -0
- package/skills/sk:debug/lib/__pycache__/step_runner.cpython-314.pyc +0 -0
- package/skills/sk:debug/lib/findings_writer.py +2 -2
- package/skills/sk:debug/lib/lessons_writer.py +2 -2
- package/skills/sk:debug/lib/step_runner.py +8 -10
- package/skills/sk:lint/SKILL.md +2 -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 +12 -3
- package/skills/sk:setup-claude/templates/.claude/agents/backend-dev.md +63 -0
- package/skills/sk:setup-claude/templates/.claude/agents/frontend-dev.md +65 -0
- package/skills/sk:setup-claude/templates/.claude/agents/qa-engineer.md +66 -0
- package/skills/sk:setup-claude/templates/CLAUDE.md.template +43 -25
- package/skills/sk:setup-optimizer/SKILL.md +4 -1
- package/skills/sk:setup-optimizer/lib/__pycache__/discover.cpython-314.pyc +0 -0
- package/skills/sk:setup-optimizer/lib/discover.py +9 -10
- package/skills/sk:skill-creator/scripts/__pycache__/generate_report.cpython-314.pyc +0 -0
- package/skills/sk:skill-creator/scripts/__pycache__/improve_description.cpython-314.pyc +0 -0
- package/skills/sk:skill-creator/scripts/__pycache__/package_skill.cpython-314.pyc +0 -0
- package/skills/sk:skill-creator/scripts/__pycache__/run_eval.cpython-314.pyc +0 -0
- package/skills/sk:skill-creator/scripts/__pycache__/run_loop.cpython-314.pyc +0 -0
- package/skills/sk:skill-creator/scripts/__pycache__/utils.cpython-314.pyc +0 -0
- package/skills/sk:skill-creator/scripts/generate_report.py +2 -0
- package/skills/sk:skill-creator/scripts/improve_description.py +2 -0
- package/skills/sk:skill-creator/scripts/package_skill.py +4 -0
- package/skills/sk:skill-creator/scripts/run_eval.py +3 -1
- package/skills/sk:skill-creator/scripts/run_loop.py +2 -0
- package/skills/sk:skill-creator/scripts/utils.py +2 -0
- package/skills/sk:start/SKILL.md +156 -0
- package/skills/sk:team/SKILL.md +141 -0
- 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>"`.
|
package/skills/sk:test/SKILL.md
CHANGED
|
@@ -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` |
|
|
188
|
-
| `quality` |
|
|
187
|
+
| `full-sail` | opus (inherit) |
|
|
188
|
+
| `quality` | opus (inherit) |
|
|
189
189
|
| `balanced` | haiku |
|
|
190
190
|
| `budget` | haiku |
|
|
191
191
|
|