@adamancyzhang/claude-orchestrator 0.3.2 → 0.4.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.
Files changed (78) hide show
  1. package/README.md +198 -280
  2. package/dist/cli/commands.d.ts +0 -10
  3. package/dist/cli/commands.js +1 -184
  4. package/dist/cli/commands.js.map +1 -1
  5. package/dist/config.d.ts +22 -0
  6. package/dist/config.js +23 -0
  7. package/dist/config.js.map +1 -1
  8. package/dist/executor/template.js +21 -3
  9. package/dist/executor/template.js.map +1 -1
  10. package/dist/index.js +9 -34
  11. package/dist/index.js.map +1 -1
  12. package/dist/leader/chain-router.d.ts +5 -1
  13. package/dist/leader/chain-router.js +90 -2
  14. package/dist/leader/chain-router.js.map +1 -1
  15. package/dist/leader/event-bus.d.ts +1 -1
  16. package/dist/leader/event-bus.js +1 -1
  17. package/dist/leader/event-bus.js.map +1 -1
  18. package/dist/leader/index.d.ts +7 -0
  19. package/dist/leader/index.js +5 -2
  20. package/dist/leader/index.js.map +1 -1
  21. package/dist/leader/merge-validator.d.ts +24 -0
  22. package/dist/leader/merge-validator.js +112 -0
  23. package/dist/leader/merge-validator.js.map +1 -0
  24. package/dist/leader/state.d.ts +17 -0
  25. package/dist/leader/state.js +48 -2
  26. package/dist/leader/state.js.map +1 -1
  27. package/dist/leader/tui.d.ts +2 -0
  28. package/dist/leader/tui.js +140 -16
  29. package/dist/leader/tui.js.map +1 -1
  30. package/dist/leader/watcher.js +12 -0
  31. package/dist/leader/watcher.js.map +1 -1
  32. package/dist/models/schemas.d.ts +15 -0
  33. package/dist/models/schemas.js +6 -1
  34. package/dist/models/schemas.js.map +1 -1
  35. package/dist/orchestrator/run.d.ts +6 -0
  36. package/dist/orchestrator/run.js +181 -0
  37. package/dist/orchestrator/run.js.map +1 -0
  38. package/dist/skills/CLAUDE.md +1 -1
  39. package/dist/skills/claude-orchestrator/SKILL.md +75 -217
  40. package/dist/templates/agents/worker-accept.md +48 -0
  41. package/dist/templates/agents/worker-build.md +38 -0
  42. package/dist/templates/agents/worker-decompose.md +40 -0
  43. package/dist/templates/agents/worker-evaluate.md +49 -0
  44. package/dist/templates/agents/worker-plan.md +36 -0
  45. package/dist/templates/agents/worker-review.md +42 -0
  46. package/dist/templates/agents/worker-verify.md +44 -0
  47. package/dist/templates/claude-memory/personal-claude-accepter.md +17 -0
  48. package/dist/templates/claude-memory/personal-claude-builder.md +24 -0
  49. package/dist/templates/claude-memory/personal-claude-planner.md +22 -0
  50. package/dist/templates/claude-memory/personal-claude-reviewer.md +25 -0
  51. package/dist/templates/claude-memory/personal-claude-verifier.md +24 -0
  52. package/dist/templates/claude-memory/team-claude.md +61 -0
  53. package/dist/utils/logger.d.ts +1 -0
  54. package/dist/utils/logger.js +3 -0
  55. package/dist/utils/logger.js.map +1 -1
  56. package/dist/worker/child-runner.d.ts +12 -0
  57. package/dist/worker/child-runner.js +99 -0
  58. package/dist/worker/child-runner.js.map +1 -0
  59. package/dist/worker/child.d.ts +2 -0
  60. package/dist/worker/child.js +8 -0
  61. package/dist/worker/child.js.map +1 -0
  62. package/dist/worker/commit-checker.d.ts +20 -0
  63. package/dist/worker/commit-checker.js +87 -0
  64. package/dist/worker/commit-checker.js.map +1 -0
  65. package/dist/worker/watcher.d.ts +5 -1
  66. package/dist/worker/watcher.js +41 -4
  67. package/dist/worker/watcher.js.map +1 -1
  68. package/dist/worker/worktree-initializer.d.ts +10 -0
  69. package/dist/worker/worktree-initializer.js +235 -0
  70. package/dist/worker/worktree-initializer.js.map +1 -0
  71. package/package.json +2 -2
  72. package/dist/templates/worker-accept.md +0 -46
  73. package/dist/templates/worker-build.md +0 -45
  74. package/dist/templates/worker-decompose.md +0 -67
  75. package/dist/templates/worker-evaluate.md +0 -41
  76. package/dist/templates/worker-plan.md +0 -43
  77. package/dist/templates/worker-review.md +0 -46
  78. package/dist/templates/worker-verify.md +0 -47
@@ -3,6 +3,7 @@ import { HookEngine } from "../hooks/engine.js";
3
3
  import { TemplateEngine } from "../executor/template.js";
4
4
  import { ClaudeRunner } from "../executor/runner.js";
5
5
  import { SelfEvaluator } from "./evaluator.js";
6
+ import { CommitChecker } from "./commit-checker.js";
6
7
  export declare class WorkerWatcher {
7
8
  private zk;
8
9
  private instanceId;
@@ -11,12 +12,15 @@ export declare class WorkerWatcher {
11
12
  private templateEngine;
12
13
  private runner;
13
14
  private evaluator;
15
+ private commitChecker;
16
+ private worktreePath;
17
+ private worktreeBranch;
14
18
  private inFlight;
15
19
  private instanceName;
16
20
  private instanceRole;
17
21
  private logger;
18
22
  stopped: boolean;
19
- constructor(zk: ZkClient, instanceId: string, leaderInstanceId: string, hooks: HookEngine, templateEngine: TemplateEngine, runner: ClaudeRunner, evaluator: SelfEvaluator);
23
+ constructor(zk: ZkClient, instanceId: string, leaderInstanceId: string, hooks: HookEngine, templateEngine: TemplateEngine, runner: ClaudeRunner, evaluator: SelfEvaluator, commitChecker?: CommitChecker | null, worktreePath?: string, worktreeBranch?: string);
20
24
  start(): Promise<void>;
21
25
  private watchLoop;
22
26
  private processMessage;
@@ -11,12 +11,15 @@ export class WorkerWatcher {
11
11
  templateEngine;
12
12
  runner;
13
13
  evaluator;
14
+ commitChecker;
15
+ worktreePath;
16
+ worktreeBranch;
14
17
  inFlight = new Set();
15
18
  instanceName = "";
16
19
  instanceRole = "";
17
20
  logger = new Logger("WorkerWatcher");
18
21
  stopped = false;
19
- constructor(zk, instanceId, leaderInstanceId, hooks, templateEngine, runner, evaluator) {
22
+ constructor(zk, instanceId, leaderInstanceId, hooks, templateEngine, runner, evaluator, commitChecker = null, worktreePath = "", worktreeBranch = "") {
20
23
  this.zk = zk;
21
24
  this.instanceId = instanceId;
22
25
  this.leaderInstanceId = leaderInstanceId;
@@ -24,6 +27,9 @@ export class WorkerWatcher {
24
27
  this.templateEngine = templateEngine;
25
28
  this.runner = runner;
26
29
  this.evaluator = evaluator;
30
+ this.commitChecker = commitChecker;
31
+ this.worktreePath = worktreePath;
32
+ this.worktreeBranch = worktreeBranch;
27
33
  }
28
34
  async start() {
29
35
  const instData = await this.zk.getInstance(this.instanceId);
@@ -77,9 +83,12 @@ export class WorkerWatcher {
77
83
  task_criteria: msg.task_criteria ?? "",
78
84
  task_doc_path: msg.task_doc_path ?? "",
79
85
  result_path: resultPath,
80
- work_dir: "",
86
+ work_dir: this.worktreePath,
81
87
  time: new Date().toISOString(),
82
88
  content: msg.content,
89
+ worktree_path: this.worktreePath,
90
+ worktree_branch: this.worktreeBranch,
91
+ instance_id: this.instanceId,
83
92
  })
84
93
  : msg.content;
85
94
  this.logger.info(`Message from ${fromLabel} (${msg.type}): ${msg.content.slice(0, 200)}`);
@@ -102,8 +111,17 @@ export class WorkerWatcher {
102
111
  this.hooks.fire("worker_message_start", hookCtx);
103
112
  const result = await this.runner.run(prompt, logPath);
104
113
  this.hooks.fire("worker_message_end", { ...hookCtx, logPath, exitCode: result.code });
114
+ // Auto-commit changes for chain-link tasks
115
+ let commitResult = null;
116
+ if (link !== "_generic" && this.commitChecker) {
117
+ commitResult = await this.commitChecker.check({
118
+ link,
119
+ taskTitle: msg.task_title ?? link,
120
+ taskDescription: msg.task_description ?? msg.content,
121
+ });
122
+ }
105
123
  if (link !== "_generic") {
106
- await this.sendCompletionReport(link, msg, resultPath, uniqueKey);
124
+ await this.sendCompletionReport(link, msg, resultPath, uniqueKey, commitResult);
107
125
  }
108
126
  try {
109
127
  msg.read = true;
@@ -115,7 +133,7 @@ export class WorkerWatcher {
115
133
  this.inFlight.delete(msgId);
116
134
  this.logger.info(`Done. Log: ${logPath}`);
117
135
  }
118
- async sendCompletionReport(link, msg, resultPath, uniqueKey) {
136
+ async sendCompletionReport(link, msg, resultPath, uniqueKey, commitResult = null) {
119
137
  try {
120
138
  let reportContent;
121
139
  let reportLink = link;
@@ -141,6 +159,24 @@ export class WorkerWatcher {
141
159
  else {
142
160
  reportContent = `Link: ${link}\nStatus: completed\nResult Path: ${resultPath}\nTask completed.`;
143
161
  }
162
+ // Inject commit info into report content if available
163
+ if (commitResult) {
164
+ try {
165
+ const reportJson = JSON.parse(reportContent);
166
+ reportJson.commit = {
167
+ sha: commitResult.sha,
168
+ message: commitResult.message,
169
+ branch: this.worktreeBranch,
170
+ changed_files: commitResult.changedFiles,
171
+ untracked_files: commitResult.untrackedFiles,
172
+ };
173
+ reportContent = JSON.stringify(reportJson);
174
+ }
175
+ catch {
176
+ // Content is not JSON, append commit info
177
+ reportContent += `\nCommit: ${commitResult.sha.slice(0, 7)} - ${commitResult.message}`;
178
+ }
179
+ }
144
180
  await this.zk.createMessage(this.leaderInstanceId, {
145
181
  type: "direct",
146
182
  from_instance: this.instanceId,
@@ -152,6 +188,7 @@ export class WorkerWatcher {
152
188
  read: false,
153
189
  result_path: resultPath,
154
190
  link: reportLink,
191
+ chain_id: msg.chain_id ?? null,
155
192
  });
156
193
  this.logger.info("Completion report sent.");
157
194
  }
@@ -1 +1 @@
1
- {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/worker/watcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/worker/watcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export interface WorktreeConfig {
2
+ name: string;
3
+ role: string;
4
+ worktreePath: string;
5
+ relativePath: string;
6
+ branch: string;
7
+ instanceId: string;
8
+ }
9
+ export declare function getWorktreeBranch(name: string): string;
10
+ export declare function initializeWorktrees(projectRoot: string, workerCount: number): Promise<WorktreeConfig[]>;
@@ -0,0 +1,235 @@
1
+ import * as fs from "node:fs";
2
+ import * as path from "node:path";
3
+ import { execSync } from "node:child_process";
4
+ import { loadProjectWorktreeConfig, saveProjectWorktreeConfig } from "../config.js";
5
+ import { Logger } from "../utils/logger.js";
6
+ const BUILTIN_NAMES = [
7
+ "Tom", "Jerry", "Lucy", "Thomas", "Jack", "Lisa",
8
+ "Alice", "Bob", "Charlie", "Diana", "Edward", "Fiona",
9
+ "George", "Helen", "Ivan", "Julia", "Kevin", "Linda",
10
+ "Mike", "Nancy",
11
+ ];
12
+ const ROLE_PRIORITY = ["planner", "builder", "verifier", "reviewer", "accepter"];
13
+ const logger = new Logger("WorktreeInit");
14
+ function assignRoles(count) {
15
+ if (count <= ROLE_PRIORITY.length) {
16
+ return ROLE_PRIORITY.slice(0, count);
17
+ }
18
+ const roles = [...ROLE_PRIORITY];
19
+ let remaining = count - ROLE_PRIORITY.length;
20
+ while (remaining > 0) {
21
+ roles.push("builder");
22
+ remaining--;
23
+ }
24
+ return roles;
25
+ }
26
+ export function getWorktreeBranch(name) {
27
+ return `claude-orchestrator/${name}-workspace`;
28
+ }
29
+ function execGit(args, cwd) {
30
+ try {
31
+ return execSync(`git ${args}`, { cwd, encoding: "utf-8", stdio: ["pipe", "pipe", "pipe"] }).trim();
32
+ }
33
+ catch {
34
+ return "";
35
+ }
36
+ }
37
+ async function scanExistingNames(projectRoot) {
38
+ const used = new Set();
39
+ const wtDir = path.join(projectRoot, ".claude-orchestrator", "worktree");
40
+ // 1. Scan existing worktree directories
41
+ if (fs.existsSync(wtDir)) {
42
+ for (const entry of await fs.promises.readdir(wtDir)) {
43
+ used.add(entry);
44
+ }
45
+ }
46
+ // 2. Scan existing worktree branches
47
+ const branches = execGit("branch -a", projectRoot);
48
+ const wtBranchPattern = /claude-orchestrator\/(.+)-workspace/;
49
+ for (const line of branches.split("\n")) {
50
+ const m = line.trim().match(wtBranchPattern);
51
+ if (m)
52
+ used.add(m[1]);
53
+ }
54
+ // 3. Scan config.json worktree records
55
+ const worktreeConfig = loadProjectWorktreeConfig();
56
+ for (const name of Object.keys(worktreeConfig)) {
57
+ used.add(name);
58
+ }
59
+ return used;
60
+ }
61
+ function generateFallbackNames(count, used) {
62
+ const alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
63
+ const result = [];
64
+ for (const letter of alphabet) {
65
+ if (result.length >= count)
66
+ break;
67
+ for (const suffix of ["", "ay", "ee", "ie"]) {
68
+ if (result.length >= count)
69
+ break;
70
+ const candidate = `${letter}${suffix}`;
71
+ if (!used.includes(candidate)) {
72
+ result.push(candidate);
73
+ used.push(candidate);
74
+ }
75
+ }
76
+ }
77
+ return result;
78
+ }
79
+ function generateWorkerNames(count, usedNames) {
80
+ const roles = assignRoles(count);
81
+ const available = BUILTIN_NAMES.filter(n => !usedNames.has(n));
82
+ if (available.length >= count) {
83
+ return roles.map((role, i) => ({ name: available[i], role }));
84
+ }
85
+ const result = [];
86
+ for (let i = 0; i < Math.min(count, available.length); i++) {
87
+ result.push({ name: available[i], role: roles[i] });
88
+ }
89
+ const remaining = count - available.length;
90
+ const fallbackNames = generateFallbackNames(remaining, [...usedNames, ...available, ...result.map(r => r.name)]);
91
+ for (let i = 0; i < remaining; i++) {
92
+ result.push({ name: fallbackNames[i], role: roles[available.length + i] });
93
+ }
94
+ return result;
95
+ }
96
+ async function ensureWorktreeEnvironment(worktreePath, name, role) {
97
+ const projectRoot = path.resolve(worktreePath, "..", "..", "..");
98
+ const distTemplateDir = path.join(projectRoot, "dist", "templates");
99
+ const srcTemplateDir = path.join(projectRoot, "templates");
100
+ const templateDir = fs.existsSync(distTemplateDir) ? distTemplateDir : srcTemplateDir;
101
+ const agentsDir = path.join(worktreePath, ".claude-orchestrator", "agents");
102
+ if (fs.existsSync(templateDir)) {
103
+ // Copy agent templates
104
+ const templates = [
105
+ "worker-decompose.md", "worker-evaluate.md",
106
+ "worker-plan.md", "worker-build.md", "worker-verify.md",
107
+ "worker-review.md", "worker-accept.md",
108
+ ];
109
+ for (const filename of templates) {
110
+ const src = path.join(templateDir, "agents", filename);
111
+ const dest = path.join(agentsDir, filename);
112
+ if (fs.existsSync(src) && !fs.existsSync(dest)) {
113
+ fs.mkdirSync(agentsDir, { recursive: true });
114
+ fs.copyFileSync(src, dest);
115
+ }
116
+ }
117
+ // Copy skills to worktree .claude/skills/
118
+ const distSkillsDir = path.join(projectRoot, "dist", "skills");
119
+ const srcSkillsDir = path.join(projectRoot, "skills");
120
+ const skillsSrcDir = fs.existsSync(distSkillsDir) ? distSkillsDir : srcSkillsDir;
121
+ const skillsDstDir = path.join(worktreePath, ".claude", "skills");
122
+ const SKILLS_TO_COPY = [
123
+ "task-traceability",
124
+ "task-planning",
125
+ "task-execution",
126
+ "task-verification",
127
+ "task-review",
128
+ "task-acceptance",
129
+ "claude-orchestrator",
130
+ ];
131
+ if (fs.existsSync(skillsSrcDir)) {
132
+ for (const skillName of SKILLS_TO_COPY) {
133
+ const srcSkillPath = path.join(skillsSrcDir, skillName, "SKILL.md");
134
+ const dstSkillDir = path.join(skillsDstDir, skillName);
135
+ const dstSkillPath = path.join(dstSkillDir, "SKILL.md");
136
+ if (!fs.existsSync(srcSkillPath))
137
+ continue;
138
+ if (fs.existsSync(dstSkillDir)) {
139
+ fs.rmSync(dstSkillDir, { recursive: true, force: true });
140
+ }
141
+ fs.mkdirSync(dstSkillDir, { recursive: true });
142
+ fs.copyFileSync(srcSkillPath, dstSkillPath);
143
+ }
144
+ }
145
+ // Copy team-level CLAUDE.md to worktree root
146
+ const teamClaudeSrc = path.join(templateDir, "claude-memory", "team-claude.md");
147
+ const teamClaudeDest = path.join(worktreePath, "CLAUDE.md");
148
+ if (fs.existsSync(teamClaudeSrc) && !fs.existsSync(teamClaudeDest)) {
149
+ fs.copyFileSync(teamClaudeSrc, teamClaudeDest);
150
+ }
151
+ // Copy personal CLAUDE.md for this role
152
+ const roleToPersonalTemplate = {
153
+ planner: "personal-claude-planner.md",
154
+ builder: "personal-claude-builder.md",
155
+ verifier: "personal-claude-verifier.md",
156
+ reviewer: "personal-claude-reviewer.md",
157
+ accepter: "personal-claude-accepter.md",
158
+ };
159
+ const personalSrc = path.join(templateDir, "claude-memory", roleToPersonalTemplate[role] ?? "personal-claude-builder.md");
160
+ const personalDir = path.join(worktreePath, ".claude-orchestrator", "docs", name);
161
+ const personalDest = path.join(personalDir, "CLAUDE.md");
162
+ if (fs.existsSync(personalSrc) && !fs.existsSync(personalDest)) {
163
+ fs.mkdirSync(personalDir, { recursive: true });
164
+ let content = fs.readFileSync(personalSrc, "utf-8");
165
+ content = content.replace(/\{\{name\}\}/g, name).replace(/\{\{role\}\}/g, role);
166
+ fs.writeFileSync(personalDest, content, "utf-8");
167
+ }
168
+ }
169
+ }
170
+ export async function initializeWorktrees(projectRoot, workerCount) {
171
+ const usedNames = await scanExistingNames(projectRoot);
172
+ const assignments = generateWorkerNames(workerCount, usedNames);
173
+ const configs = [];
174
+ const existingConfig = loadProjectWorktreeConfig();
175
+ const worktreeRoot = path.join(projectRoot, ".claude-orchestrator", "worktree");
176
+ for (const { name, role } of assignments) {
177
+ const existing = existingConfig[name];
178
+ const wtPath = path.join(worktreeRoot, name);
179
+ if (existing && fs.existsSync(wtPath)) {
180
+ configs.push({
181
+ name,
182
+ role: existing.role,
183
+ worktreePath: wtPath,
184
+ relativePath: `.claude-orchestrator/worktree/${name}`,
185
+ branch: getWorktreeBranch(name),
186
+ instanceId: existing.instance_id || crypto.randomUUID().replace(/-/g, ""),
187
+ });
188
+ logger.info(`Reusing existing worktree: ${name} (${role})`);
189
+ continue;
190
+ }
191
+ const relativePath = `.claude-orchestrator/worktree/${name}`;
192
+ const branch = getWorktreeBranch(name);
193
+ try {
194
+ await fs.promises.mkdir(worktreeRoot, { recursive: true });
195
+ const branchExists = execGit(`rev-parse --verify ${branch}`, projectRoot);
196
+ if (branchExists) {
197
+ execGit(`worktree add ${relativePath} ${branch}`, projectRoot);
198
+ }
199
+ else {
200
+ execGit(`worktree add ${relativePath} -b ${branch}`, projectRoot);
201
+ }
202
+ const instanceId = crypto.randomUUID().replace(/-/g, "");
203
+ const wtConfigDir = path.join(wtPath, ".claude-orchestrator");
204
+ await fs.promises.mkdir(wtConfigDir, { recursive: true });
205
+ await fs.promises.writeFile(path.join(wtConfigDir, "config.json"), JSON.stringify({ name, role, instance_id: instanceId }, null, 2));
206
+ await ensureWorktreeEnvironment(wtPath, name, role);
207
+ if (fs.existsSync(path.join(wtPath, "package.json"))) {
208
+ logger.info(`Installing dependencies for ${name}...`);
209
+ try {
210
+ execSync("npm install", { cwd: wtPath, stdio: "inherit" });
211
+ }
212
+ catch {
213
+ logger.warn(`npm install failed for ${name}, continuing...`);
214
+ }
215
+ }
216
+ configs.push({
217
+ name,
218
+ role,
219
+ worktreePath: wtPath,
220
+ relativePath,
221
+ branch,
222
+ instanceId,
223
+ });
224
+ logger.info(`Created worktree: ${name} (${role}) at ${relativePath}`);
225
+ }
226
+ catch (err) {
227
+ logger.error(`Failed to create worktree for ${name}`, err);
228
+ }
229
+ }
230
+ if (configs.length > 0) {
231
+ saveProjectWorktreeConfig(configs);
232
+ }
233
+ return configs;
234
+ }
235
+ //# sourceMappingURL=worktree-initializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree-initializer.js","sourceRoot":"","sources":["../../src/worker/worktree-initializer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adamancyzhang/claude-orchestrator",
3
- "version": "0.3.2",
3
+ "version": "0.4.0",
4
4
  "description": "Multi-agent orchestration CLI backed by ZooKeeper — register, assign tasks, communicate, share context",
5
5
  "repository": "github:adamancyzhang/claude-orchestrator-server",
6
6
  "license": "MIT",
@@ -9,7 +9,7 @@
9
9
  "claude-orchestrator": "bin/claude-orchestrator"
10
10
  },
11
11
  "scripts": {
12
- "build": "rm -rf dist && tsc && cp -r src/templates dist/templates && cp -r skills dist/skills",
12
+ "build": "rm -rf dist && tsc && cp -r templates dist/templates && cp -r skills dist/skills",
13
13
  "start": "node dist/index.js leader",
14
14
  "prepublishOnly": "npm run build",
15
15
  "test": "vitest run",
@@ -1,46 +0,0 @@
1
- You are an Accepter in a multi-agent task coordination system. Your link in the responsibility chain is **Accept** — the final gate. You validate the complete deliverable against business acceptance criteria and make the Go/No-Go decision.
2
-
3
- ## Your Identity
4
- - Name: {{name}}
5
- - Preset Role: {{preset_role}}
6
- - Current Link: Accept
7
- - Work Directory: {{work_dir}}
8
- - Time: {{time}}
9
-
10
- ## Your Task
11
-
12
- **Title**: {{task_title}}
13
- **Description**: {{task_description}}
14
- **Completion Criteria**: {{task_criteria}}
15
-
16
- The full task specification is at: {{task_doc_path}}
17
- This includes the entire chain: Plan blueprint, Build output, Verify report, and Review judgment.
18
-
19
- ## Execution Standard: task-acceptance
20
-
21
- Your job is NOT to re-verify or re-review. Your job is to validate the deliverable against business acceptance criteria and sign off.
22
-
23
- ### Step 1: Read Full Chain Output
24
- Read all upstream artifacts: Planner blueprint, Builder traceability map, Verifier verification map, Reviewer review judgment.
25
-
26
- ### Step 2: Verify Against Acceptance Criteria
27
- For each acceptance criterion: is there a corresponding deliverable? Does it actually exist? Are upstream issues resolved? Is evidence sufficient?
28
-
29
- ### Step 3: Make Go/No-Go Decision
30
- - **Go**: All acceptance criteria met. Deliverable ready to ship.
31
- - **No-Go**: One or more criteria not met. Specific issues must be addressed before re-acceptance.
32
-
33
- There is no "conditional pass". Zero issues for Go.
34
-
35
- ### Step 4: Sign Acceptance Report
36
- Write your acceptance report to {{result_path}}. Include per-criteria results and Go/No-Go decision with rationale.
37
-
38
- ## Completion Report
39
-
40
- Link: accept
41
- Status: completed
42
- Decision: GO | NO-GO
43
- Criteria Checked: <count> | Passed: <count> | Failed: <count>
44
- Failed Criteria: <list each with responsible link and required fix>
45
- Result Path: {{result_path}}
46
- Next Link Ready: N/A (Accept is the final link — chain closed if GO)
@@ -1,45 +0,0 @@
1
- You are a Builder in a multi-agent task coordination system. Your link in the responsibility chain is **Build** — you produce verifiable results according to the Planner's blueprint.
2
-
3
- ## Your Identity
4
- - Name: {{name}}
5
- - Preset Role: {{preset_role}}
6
- - Current Link: Build
7
- - Work Directory: {{work_dir}}
8
- - Time: {{time}}
9
-
10
- ## Your Task
11
-
12
- **Title**: {{task_title}}
13
- **Description**: {{task_description}}
14
- **Completion Criteria**: {{task_criteria}}
15
-
16
- The full task specification is at: {{task_doc_path}}
17
- This includes the Planner's blueprint and any upstream outputs.
18
-
19
- ## Execution Standard: task-traceability
20
-
21
- Every piece of your work must be traceable to a specific requirement in the Plan.
22
-
23
- ### Step 1: Trace
24
- Read the Planner's blueprint. Extract every implementable requirement: feature, interface, data, and quality requirements. List them as your implementation checklist.
25
-
26
- ### Step 2: Execute
27
- Implement each requirement from your checklist. Follow the Plan's architecture exactly. Document any deviations with reasons. If the Plan is unclear, make a reasonable decision and proceed.
28
-
29
- ### Step 3: Map
30
- Build a traceability map: Plan Requirement → Implementation → Status. Mark each as done, deviation (with reason), or not applicable.
31
-
32
- ### Step 4: Evidence
33
- For each mapped item, provide evidence: tests written/passing, manual verification results, key decisions and rationale.
34
-
35
- Write your traceability map and evidence to {{result_path}}.
36
-
37
- ## Completion Report
38
-
39
- Link: build
40
- Status: completed
41
- Implemented: <count> items
42
- Deviations: <count> items (list each with reason)
43
- Evidence: see {{result_path}} for full traceability map
44
- Result Path: {{result_path}}
45
- Next Link Ready: yes
@@ -1,67 +0,0 @@
1
- You are {{name}}, a task decomposition specialist. Your role is {{preset_role}}. Break down the requirement below into a chain of tasks following the Plan → Build → Verify → Review → Accept responsibility chain.
2
-
3
- ## Responsibility Chain
4
-
5
- 1. **Plan** — Define the blueprint. What needs to be done, why, and how.
6
- 2. **Build** — Execute according to the blueprint to produce verifiable results.
7
- 3. **Verify** — Check the Builder's output against the Planner's blueprint.
8
- 4. **Review** — Quality gate. Judge whether the combined output aligns with the Planner's intent and is well-built.
9
- 5. **Accept** — Final acceptance. Validate the deliverable against business requirements and acceptance criteria. Make the Go/No-Go decision.
10
-
11
- ## Requirement
12
-
13
- {{task_description}}
14
-
15
- ## Instructions
16
-
17
- 1. Analyze the requirement. Identify how many independent delivery chains are needed (usually one, but complex requirements may need multiple).
18
- 2. For each chain, define five link tasks. Plan is optional — omit it (set to null) when the requirement is already clear enough to start building directly. Build, Verify, Review, and Accept are mandatory.
19
- 3. For each task, specify clear completion criteria — what "done" means for that specific link.
20
- 4. Assign a priority to each task: 0 (urgent), 1 (high), 2 (normal), 3 (low).
21
-
22
- ## Output Format
23
-
24
- Output exactly one JSON object per chain. Write the result to {{result_path}}.
25
-
26
- ```json
27
- {
28
- "chain_id": "chain-<seq>",
29
- "chain_title": "<short summary of the requirement>",
30
- "tasks": {
31
- "plan": {
32
- "title": "<short title>",
33
- "description": "<detailed description>",
34
- "criteria": "<completion criteria>",
35
- "priority": 1
36
- },
37
- "build": {
38
- "title": "<short title>",
39
- "description": "<detailed description>",
40
- "criteria": "<completion criteria>",
41
- "priority": 1
42
- },
43
- "verify": {
44
- "title": "<short title>",
45
- "description": "<what and how to verify>",
46
- "criteria": "<completion criteria>",
47
- "priority": 1
48
- },
49
- "review": {
50
- "title": "<short title>",
51
- "description": "<what to review, key concerns>",
52
- "criteria": "<completion criteria>",
53
- "priority": 1
54
- },
55
- "accept": {
56
- "title": "<short title>",
57
- "description": "<what to validate for final acceptance>",
58
- "criteria": "<completion criteria>",
59
- "priority": 1
60
- }
61
- }
62
- }
63
- ```
64
-
65
- If plan is not needed, set it to null. Output ONLY the JSON. No explanation.
66
-
67
- After completing the decomposition, include the full JSON as your completion report so the Leader can mechanically create the tasks.
@@ -1,41 +0,0 @@
1
- You are {{name}}, a self-evaluation specialist. Your role is {{preset_role}}. You just completed a task in the Plan → Build → Verify → Review → Accept responsibility chain. Evaluate your own output and decide the next action.
2
-
3
- ## Your Task
4
-
5
- - **Link**: {{link}}
6
- - **Title**: {{task_title}}
7
- - **Description**: {{task_description}}
8
- - **Completion Criteria**: {{task_criteria}}
9
-
10
- ## Your Result
11
-
12
- The result of your work is at {{task_result_path}}. Review it objectively.
13
-
14
- ## Decision Rules
15
-
16
- 1. **Evaluate your output against the completion criteria.**
17
- - Criteria fully met → `activate_next` (proceed to next link in the chain)
18
- - Criteria partially met → `feedback` (describe what's missing so you or another worker can fix it)
19
- - Criteria not met at all → `feedback` with clear explanation of what went wrong
20
-
21
- 2. **Check chain position.**
22
- - If this was the Accept link and it passes → `close_chain`
23
- - Otherwise → activate the next link
24
-
25
- ## Output Format
26
-
27
- Output exactly one JSON decision. Write the result to {{result_path}}.
28
-
29
- ```json
30
- {
31
- "decision": "activate_next" | "feedback" | "close_chain",
32
- "reason": "<one-line explanation of the evaluation>",
33
- "feedback": "<only if feedback: specific guidance on what to improve>",
34
- "nextLink": "<the next link to activate, e.g. build|verify|review|accept>",
35
- "suggestedWorker": null
36
- }
37
- ```
38
-
39
- Output ONLY the JSON. No explanation.
40
-
41
- After evaluating, include the full JSON decision as your completion report so the Leader can mechanically execute the decision.