opencode-onboard 0.1.10 → 0.1.13
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/package.json +1 -1
- package/src/index.js +0 -1
- package/src/steps/init-openspec.js +53 -35
package/package.json
CHANGED
package/src/index.js
CHANGED
|
@@ -10,7 +10,6 @@ import { chooseSkillsProvider } from './steps/choose-skills-provider.js'
|
|
|
10
10
|
import { cleanAiFiles } from './steps/clean-ai-files.js'
|
|
11
11
|
import { copyContentStep } from './steps/copy-content.js'
|
|
12
12
|
import { initOpenspec } from './steps/init-openspec.js'
|
|
13
|
-
import { installBrowser } from './steps/install-browser.js'
|
|
14
13
|
|
|
15
14
|
if (process.stdout.isTTY) console.clear()
|
|
16
15
|
console.log()
|
|
@@ -8,51 +8,67 @@ const ENSEMBLE_PATCH = `6. **Implement via ensemble team**
|
|
|
8
8
|
NEVER implement tasks directly. Always delegate to specialists via ensemble.
|
|
9
9
|
Do NOT touch any source files before the team is running, not even a single edit.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
Steps MUST be followed in order. Do not skip any step.
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
**Step 6a.** Create feature branch if not already on one: \`feature/{id}-{slug}\`
|
|
14
|
+
|
|
15
|
+
**Step 6b.** Clean up stale state, then create the team:
|
|
14
16
|
\`\`\`
|
|
15
|
-
team_cleanup force:true acknowledge_uncommitted:true
|
|
17
|
+
team_cleanup force:true acknowledge_uncommitted:true
|
|
16
18
|
team_create "<change-name>"
|
|
17
19
|
\`\`\`
|
|
20
|
+
"not in a team" error from team_cleanup is expected, ignore it.
|
|
18
21
|
Announce: "Team running. Monitor at http://localhost:4747/"
|
|
19
22
|
|
|
20
|
-
|
|
21
|
-
|
|
23
|
+
**Step 6c.** Add ALL tasks to the shared board BEFORE spawning anyone.
|
|
24
|
+
Schema: { content: string, priority: "high"|"medium"|"low" }. No other fields.
|
|
22
25
|
\`\`\`
|
|
23
26
|
team_tasks_add tasks:[
|
|
24
|
-
{ content: "1.1 <task
|
|
25
|
-
{ content: "1.2 <task
|
|
26
|
-
...
|
|
27
|
+
{ content: "1.1 <exact task text from tasks.md>", priority: "high" },
|
|
28
|
+
{ content: "1.2 <exact task text>", priority: "high" },
|
|
29
|
+
...every task from tasks.md, one entry each...
|
|
27
30
|
]
|
|
28
31
|
\`\`\`
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
DO NOT proceed to 6d until team_tasks_add succeeds.
|
|
33
|
+
Do NOT call team_claim or interact with tasks further — the board is for visibility only.
|
|
34
|
+
|
|
35
|
+
**Step 6d.** Spawn specialists ONE AT A TIME. Wait for each team_spawn result before calling the next.
|
|
36
|
+
Each team_spawn MUST include agent field (required, causes NOT NULL error if omitted).
|
|
37
|
+
Include: full task list and all context file paths. Tell each agent to:
|
|
38
|
+
- implement their tasks in order
|
|
39
|
+
- send results to lead via team_message when all done or blocked
|
|
35
40
|
\`\`\`
|
|
36
|
-
team_spawn name:back
|
|
37
|
-
|
|
38
|
-
team_spawn name:
|
|
41
|
+
team_spawn name:"back" agent:"back-engineer" prompt:"..."
|
|
42
|
+
(wait for result)
|
|
43
|
+
team_spawn name:"front" agent:"front-engineer" prompt:"..."
|
|
44
|
+
(wait for result)
|
|
45
|
+
team_spawn name:"infra" agent:"infra-engineer" prompt:"..."
|
|
46
|
+
(wait for result)
|
|
39
47
|
\`\`\`
|
|
40
48
|
|
|
41
|
-
|
|
49
|
+
**Step 6e.** After all spawns, tell the user what is running, then STOP and wait.
|
|
50
|
+
Do NOT call team_results, team_status, or team_broadcast in a loop.
|
|
51
|
+
Teammates will message you when done or blocked. Wait for those messages.
|
|
52
|
+
|
|
53
|
+
**Step 6f.** When teammates message back: call team_results to get full output
|
|
54
|
+
(team_message delivery is truncated — always use team_results for the full content).
|
|
55
|
+
Then for each teammate: team_shutdown → team_merge. Fix any blockers reported.
|
|
56
|
+
Do NOT edit any files between spawns and merges — team_merge blocks on overlapping local changes.
|
|
42
57
|
|
|
43
58
|
7. **Quality check**
|
|
44
59
|
|
|
60
|
+
Spawn quality engineer with worktree:false (read-only, no file edits):
|
|
45
61
|
\`\`\`
|
|
46
|
-
team_spawn name:quality agent:quality-engineer prompt:"<task list, context files, run tests + build + lint + verify acceptance criteria,
|
|
62
|
+
team_spawn name:"quality" agent:"quality-engineer" worktree:false prompt:"<task list, context files, run tests + build + lint + verify acceptance criteria, send results to lead when done>"
|
|
47
63
|
\`\`\`
|
|
48
|
-
Wait →
|
|
64
|
+
Wait for message → team_results → fix blockers → team_shutdown (no team_merge needed, worktree:false)
|
|
49
65
|
|
|
50
66
|
8. **Mark tasks complete in openspec**
|
|
51
67
|
|
|
52
|
-
|
|
53
|
-
Run \`openspec status --change "<name>" --json\` to confirm
|
|
68
|
+
Update tasks.md: \`- [ ]\` → \`- [x]\` for each completed task.
|
|
69
|
+
Run \`rtk openspec status --change "<name>" --json\` to confirm.
|
|
54
70
|
|
|
55
|
-
9. **
|
|
71
|
+
9. **Show status, then cleanup**
|
|
56
72
|
|
|
57
73
|
Display:
|
|
58
74
|
- Tasks completed this session
|
|
@@ -63,20 +79,22 @@ const ENSEMBLE_PATCH = `6. **Implement via ensemble team**
|
|
|
63
79
|
Then run \`team_cleanup\`.
|
|
64
80
|
|
|
65
81
|
**Guardrails**
|
|
66
|
-
- NEVER
|
|
67
|
-
- NEVER
|
|
68
|
-
-
|
|
69
|
-
-
|
|
70
|
-
-
|
|
71
|
-
- NEVER
|
|
72
|
-
-
|
|
73
|
-
-
|
|
74
|
-
-
|
|
82
|
+
- NEVER skip or reorder steps 6a-6f
|
|
83
|
+
- NEVER implement tasks directly. Always use team_create + team_spawn, no exceptions
|
|
84
|
+
- NEVER touch source files before team_create is called, not even one edit
|
|
85
|
+
- NEVER call team_spawn without the agent field — it is required and will fail without it
|
|
86
|
+
- NEVER call team_spawn before team_tasks_add — tasks must exist before agents are spawned
|
|
87
|
+
- NEVER poll team_results or team_status in a loop — wait for teammates to message you
|
|
88
|
+
- NEVER call team_claim or team_tasks_complete — the task board is visual only, tasks.md is the source of truth
|
|
89
|
+
- NEVER edit files between team_spawn and team_merge — team_merge blocks on overlapping local changes
|
|
90
|
+
- ALWAYS run team_cleanup force:true before team_create to clear stale state
|
|
91
|
+
- ALWAYS add every task from tasks.md to the board with team_tasks_add before spawning
|
|
92
|
+
- ALWAYS spawn one at a time, waiting for each result before the next (avoids worktree contention)
|
|
93
|
+
- Do NOT instruct agents to call team_claim, team_tasks_complete, or any task board tool — agents only implement and report back via team_message
|
|
94
|
+
- If teammates are stuck, use team_message to resend tasks, then wait — never implement directly
|
|
75
95
|
- Mark tasks complete in openspec AFTER specialists finish, not before
|
|
76
|
-
- If task is ambiguous, pause and ask before spawning
|
|
77
|
-
- If implementation reveals issues, pause and suggest artifact updates
|
|
78
96
|
- Pause on errors, blockers, or unclear requirements. Do not guess
|
|
79
|
-
- Use contextFiles from CLI output, do not assume specific file
|
|
97
|
+
- Use contextFiles from CLI output, do not assume specific file paths
|
|
80
98
|
`
|
|
81
99
|
|
|
82
100
|
// Patterns that identify the solo implementation step in openspec-generated files
|