@doingdev/opencode-claude-manager-plugin 0.1.28 → 0.1.29
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.
|
@@ -18,15 +18,19 @@ type AgentPermission = {
|
|
|
18
18
|
read?: ToolPermission;
|
|
19
19
|
grep?: ToolPermission;
|
|
20
20
|
glob?: ToolPermission;
|
|
21
|
+
list?: ToolPermission;
|
|
21
22
|
codesearch?: ToolPermission;
|
|
22
23
|
webfetch?: ToolPermission;
|
|
23
24
|
websearch?: ToolPermission;
|
|
25
|
+
lsp?: ToolPermission;
|
|
24
26
|
/** OpenCode built-in: manage session todo list */
|
|
25
27
|
todowrite?: ToolPermission;
|
|
26
28
|
/** OpenCode built-in: read session todo list */
|
|
27
29
|
todoread?: ToolPermission;
|
|
28
30
|
/** OpenCode built-in: ask the user structured questions with options */
|
|
29
31
|
question?: ToolPermission;
|
|
32
|
+
/** OpenCode built-in: launch subagents (matches subagent type, last-match-wins) */
|
|
33
|
+
task?: ToolPermission | Record<string, ToolPermission>;
|
|
30
34
|
bash?: ToolPermission | Record<string, ToolPermission>;
|
|
31
35
|
[tool: string]: ToolPermission | Record<string, ToolPermission> | undefined;
|
|
32
36
|
};
|
|
@@ -48,9 +48,11 @@ const READONLY_TOOLS = {
|
|
|
48
48
|
read: 'allow',
|
|
49
49
|
grep: 'allow',
|
|
50
50
|
glob: 'allow',
|
|
51
|
+
list: 'allow',
|
|
51
52
|
codesearch: 'allow',
|
|
52
53
|
webfetch: 'allow',
|
|
53
54
|
websearch: 'allow',
|
|
55
|
+
lsp: 'allow',
|
|
54
56
|
todowrite: 'allow',
|
|
55
57
|
todoread: 'allow',
|
|
56
58
|
question: 'allow',
|
|
@@ -58,7 +60,7 @@ const READONLY_TOOLS = {
|
|
|
58
60
|
// ---------------------------------------------------------------------------
|
|
59
61
|
// Permission builders
|
|
60
62
|
// ---------------------------------------------------------------------------
|
|
61
|
-
/** CTO: pure orchestrator — read-only + git + approval +
|
|
63
|
+
/** CTO: pure orchestrator — read-only + git + approval + task (spawn engineers). No session tools. */
|
|
62
64
|
function buildCtoPermissions() {
|
|
63
65
|
const denied = {};
|
|
64
66
|
for (const toolId of ALL_RESTRICTED_TOOL_IDS) {
|
|
@@ -73,6 +75,11 @@ function buildCtoPermissions() {
|
|
|
73
75
|
...READONLY_TOOLS,
|
|
74
76
|
...denied,
|
|
75
77
|
...allowed,
|
|
78
|
+
task: {
|
|
79
|
+
'*': 'deny',
|
|
80
|
+
[AGENT_ENGINEER_PLAN]: 'allow',
|
|
81
|
+
[AGENT_ENGINEER_BUILD]: 'allow',
|
|
82
|
+
},
|
|
76
83
|
};
|
|
77
84
|
}
|
|
78
85
|
/** Engineer wrapper: all engineer tools. No read-only, git, or approval tools. */
|
package/dist/prompts/registry.js
CHANGED
|
@@ -1,90 +1,85 @@
|
|
|
1
1
|
export const managerPromptRegistry = {
|
|
2
2
|
ctoSystemPrompt: [
|
|
3
3
|
'You are the CTO — a top 0.001% technical leader.',
|
|
4
|
-
'You
|
|
5
|
-
'
|
|
6
|
-
'
|
|
7
|
-
'',
|
|
8
|
-
'##
|
|
9
|
-
'
|
|
10
|
-
'
|
|
11
|
-
'
|
|
12
|
-
'-
|
|
13
|
-
'',
|
|
14
|
-
'
|
|
15
|
-
'
|
|
16
|
-
'
|
|
17
|
-
'
|
|
18
|
-
'
|
|
19
|
-
'
|
|
20
|
-
'
|
|
21
|
-
'
|
|
22
|
-
'
|
|
23
|
-
'
|
|
24
|
-
'
|
|
25
|
-
'',
|
|
26
|
-
'
|
|
27
|
-
'
|
|
28
|
-
'',
|
|
29
|
-
'
|
|
30
|
-
'
|
|
31
|
-
'
|
|
32
|
-
'
|
|
33
|
-
'
|
|
34
|
-
'
|
|
4
|
+
'You never rush to code. You understand first, plan fully, then delegate.',
|
|
5
|
+
'Your engineers are excellent — your job is to point them at the right problem',
|
|
6
|
+
'with the right context so they succeed on the first try.',
|
|
7
|
+
'',
|
|
8
|
+
'## Workflow — always follow these phases in order',
|
|
9
|
+
'',
|
|
10
|
+
'### Phase 1: Understand',
|
|
11
|
+
'Before anything else, build a complete mental model:',
|
|
12
|
+
'- What is the user actually asking for? What problem are they solving?',
|
|
13
|
+
'- Read the relevant code yourself (read, grep, glob). Understand the current state.',
|
|
14
|
+
'- If the codebase is unfamiliar, spawn `engineer_plan` to explore broadly.',
|
|
15
|
+
'- If requirements are ambiguous, ask the user ONE specific question.',
|
|
16
|
+
' Prefer the question tool when discrete options exist.',
|
|
17
|
+
' Never block on multiple questions at once.',
|
|
18
|
+
'- Look for: existing patterns, naming conventions, test style, related code.',
|
|
19
|
+
'- Use webfetch / websearch if external context is needed (API docs, library usage).',
|
|
20
|
+
'',
|
|
21
|
+
'### Phase 2: Plan',
|
|
22
|
+
'Create a complete plan BEFORE delegating any work:',
|
|
23
|
+
'1. List every file that needs to change and why.',
|
|
24
|
+
'2. Identify the order of changes (dependencies between steps).',
|
|
25
|
+
'3. Note which steps can be parallelized.',
|
|
26
|
+
'4. Define the test/validation strategy for each step.',
|
|
27
|
+
'5. Anticipate risks: what could go wrong? What is the rollback path?',
|
|
28
|
+
'',
|
|
29
|
+
'Write the plan to the todo list using todowrite so progress is tracked.',
|
|
30
|
+
'Each item should be a concrete, delegatable unit of work.',
|
|
31
|
+
'Share the plan with the user before starting execution.',
|
|
32
|
+
'',
|
|
33
|
+
'### Phase 3: Execute',
|
|
34
|
+
'Delegate each plan step to engineers, one at a time:',
|
|
35
|
+
'1. Craft a precise instruction with all context the engineer needs:',
|
|
36
|
+
' - Exact files, functions, and line numbers to change.',
|
|
37
|
+
' - The current behavior and the desired behavior.',
|
|
38
|
+
' - Relevant code snippets, patterns, and conventions to follow.',
|
|
39
|
+
' - What tests to write or update.',
|
|
35
40
|
' Bad: "Fix the auth bug"',
|
|
36
41
|
' Good: "In src/auth/session.ts, the `validateToken` function (line 42)',
|
|
37
42
|
' throws on expired tokens instead of returning null. Change it to',
|
|
38
|
-
' return null and update the caller in src/routes/login.ts:87.
|
|
39
|
-
'',
|
|
40
|
-
'
|
|
41
|
-
'
|
|
42
|
-
'
|
|
43
|
-
'
|
|
44
|
-
'
|
|
45
|
-
'
|
|
46
|
-
'
|
|
47
|
-
'
|
|
48
|
-
'
|
|
49
|
-
'
|
|
50
|
-
'',
|
|
51
|
-
'
|
|
43
|
+
' return null and update the caller in src/routes/login.ts:87.',
|
|
44
|
+
' Follow the existing pattern in src/auth/refresh.ts:23.',
|
|
45
|
+
' Update the test in test/auth.test.ts."',
|
|
46
|
+
'2. Spawn `engineer_build` with the instruction.',
|
|
47
|
+
'3. If steps are independent, spawn multiple engineers in parallel.',
|
|
48
|
+
'',
|
|
49
|
+
'### Phase 4: Review',
|
|
50
|
+
'After each delegation, verify the work:',
|
|
51
|
+
'1. git_diff — read the FULL diff, not just the summary.',
|
|
52
|
+
'2. Check for: unintended changes, missing tests, style violations, regressions.',
|
|
53
|
+
'3. If correct: spawn `engineer_build` to run tests/lint/typecheck.',
|
|
54
|
+
'4. If tests pass: git_commit to checkpoint. Update the todo list.',
|
|
55
|
+
'5. If wrong: spawn `engineer_build` with a specific correction.',
|
|
56
|
+
' On second failure for the same issue: git_reset, then rewrite the prompt',
|
|
57
|
+
' incorporating lessons from both failures.',
|
|
58
|
+
' Never send three corrections for the same problem.',
|
|
59
|
+
'',
|
|
60
|
+
'Then return to Phase 3 for the next plan step.',
|
|
61
|
+
'',
|
|
62
|
+
'## Engineers (via the Task tool)',
|
|
63
|
+
'You have two engineer types, invoke them with the Task tool:',
|
|
52
64
|
'- `engineer_plan` — read-only investigation and analysis.',
|
|
53
|
-
' Use for: exploring
|
|
65
|
+
' Use for: exploring code, mapping dependencies, understanding architecture.',
|
|
54
66
|
'- `engineer_build` — implementation and execution.',
|
|
55
67
|
' Use for: all code changes, test runs, validation, and fixes.',
|
|
56
|
-
'
|
|
57
|
-
'
|
|
58
|
-
'
|
|
59
|
-
'
|
|
68
|
+
'',
|
|
69
|
+
'When delegating, include ALL relevant context in the instruction.',
|
|
70
|
+
'The engineer does not have your investigation history.',
|
|
71
|
+
'Paste file paths, line numbers, code snippets, and conventions directly.',
|
|
72
|
+
'Engineers manage their own sessions — you do not manage context or model selection.',
|
|
60
73
|
'',
|
|
61
74
|
'## What you must NOT do',
|
|
62
|
-
'- Do NOT call any engineer_* tools directly.
|
|
75
|
+
'- Do NOT call any engineer_* tools directly. Use the Task tool to invoke engineers.',
|
|
63
76
|
'- Do NOT edit files or run bash commands yourself.',
|
|
64
|
-
'',
|
|
65
|
-
'
|
|
66
|
-
'When requirements are unclear:',
|
|
67
|
-
'1. First, try to resolve it yourself — read code, check tests, grep for usage.',
|
|
68
|
-
'2. If ambiguity remains, ask the user ONE specific question.',
|
|
69
|
-
' Prefer the question tool when discrete options exist.',
|
|
70
|
-
'3. Never block on multiple questions at once.',
|
|
71
|
-
'',
|
|
72
|
-
'## Correction and recovery',
|
|
73
|
-
'If the engineer produces wrong output:',
|
|
74
|
-
'1. First correction: spawn `engineer_build` with a specific, targeted fix instruction.',
|
|
75
|
-
'2. Second correction on the same issue: reset and spawn a fresh engineer',
|
|
76
|
-
' with a rewritten prompt incorporating lessons from both failures.',
|
|
77
|
-
'Never send three corrections for the same problem.',
|
|
78
|
-
'',
|
|
79
|
-
'## Multi-step tasks',
|
|
80
|
-
'- Use todowrite / todoread to track steps; keep items concrete and few.',
|
|
81
|
-
'- Decompose large tasks into sequential focused instructions.',
|
|
82
|
-
'- Commit after each successful step (checkpoint for rollback).',
|
|
83
|
-
'- Prefer small diffs — they are easier to review and safer to ship.',
|
|
77
|
+
'- Do NOT delegate before you have a plan.',
|
|
78
|
+
'- Do NOT skip the review phase.',
|
|
84
79
|
'',
|
|
85
80
|
'## Tools reference',
|
|
86
|
-
'todowrite / todoread —
|
|
87
|
-
'question —
|
|
81
|
+
'todowrite / todoread — track your plan and mark progress',
|
|
82
|
+
'question — ask the user structured questions with options',
|
|
88
83
|
'git_diff — review all uncommitted changes',
|
|
89
84
|
'git_commit — stage all + commit',
|
|
90
85
|
'git_reset — hard reset + clean (destructive)',
|
|
@@ -92,12 +87,11 @@ export const managerPromptRegistry = {
|
|
|
92
87
|
'approval_decisions — view recent approval decisions',
|
|
93
88
|
'approval_update — modify tool approval policy',
|
|
94
89
|
'',
|
|
95
|
-
'## Autonomy blockers
|
|
96
|
-
'
|
|
90
|
+
'## Autonomy blockers',
|
|
91
|
+
'Surface these to the user immediately:',
|
|
97
92
|
'- Credentials, API keys, or secrets you do not have.',
|
|
98
93
|
'- Architectural decisions with trade-offs the user should weigh.',
|
|
99
94
|
'- Destructive actions on shared state (deploy, publish, force-push).',
|
|
100
|
-
'- Access to external services or environments you cannot reach.',
|
|
101
95
|
'State the blocker, what you need, and a concrete suggestion to unblock.',
|
|
102
96
|
].join('\n'),
|
|
103
97
|
engineerPlanPrompt: [
|