neohive 6.0.0 → 6.0.3

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/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [6.0.3] - 2026-04-03
4
+
5
+ ### Fixed
6
+
7
+ - **MCP data directory** — When the MCP process starts with cwd outside the repo (e.g. Cursor home) and no `NEOHIVE_DATA_DIR`, resolve the hive from repo `.cursor/mcp.json` / sibling config (`lib/resolve-server-data-dir.js`); `lib/config.js` uses the same root so agents and dashboard agree.
8
+ - **Dashboard `projects.json`** — Only rewrite the projects file when the canonical list differs from on-disk data (`pack(nonRedundant) !== pack(raw)`), not on every load when duplicates or default-hive rows were only present in the normalized pass-through list.
9
+
3
10
  ## [5.1.0] - 2026-03-19
4
11
 
5
12
  ### Major — True Autonomy Engine + Team Intelligence + Scale to 100
package/cli.js CHANGED
@@ -9,35 +9,32 @@ const command = process.argv[2];
9
9
 
10
10
  function printUsage() {
11
11
  console.log(`
12
- Neohive — Neohive v5.3.0
13
- MCP message broker for inter-agent communication
14
- Supports: Claude Code, Gemini CLI, Codex CLI, Ollama
12
+ Neohive v6.0.0
13
+ The MCP collaboration layer for AI CLI tools.
15
14
 
16
15
  Usage:
17
- npx neohive init Auto-detect CLI and configure MCP
18
- npx neohive init --claude Configure for Claude Code
19
- npx neohive init --gemini Configure for Gemini CLI
20
- npx neohive init --codex Configure for Codex CLI
21
- npx neohive init --all Configure for all supported CLIs
22
- npx neohive init --ollama Setup Ollama agent bridge (local LLM)
23
- npx neohive init --template T Initialize with a team template (pair, team, review, debate, ollama)
24
- npx neohive templates List available agent templates
25
- npx neohive dashboard Launch the web dashboard (http://localhost:3000)
26
- npx neohive dashboard --lan Launch dashboard accessible on LAN (phone/tablet)
27
- npx neohive reset Clear all conversation data
28
- npx neohive msg <agent> <text> Send a message to an agent
29
- npx neohive status Show active agents and message count
30
- npx neohive uninstall Remove neohive from all CLI configs
31
- npx neohive help Show this help message
32
-
33
- v5.0 True Autonomy Engine (61 tools):
34
- New tools: get_work, verify_and_advance, start_plan, retry_with_improvement
35
- Proactive work loop: get_work → do work → verify_and_advance → get_work
36
- Parallel workflow steps with dependency graphs (depends_on)
37
- Auto-retry with skill accumulation (3 attempts then team escalation)
38
- Watchdog engine: idle nudge, stuck detection, auto-reassign
39
- 100ms handoff cooldowns in autonomous mode
40
- Plan dashboard: live progress, pause/stop/skip/reassign controls
16
+ npx neohive init Auto-detect CLI and configure MCP
17
+ npx neohive init --claude Configure for Claude Code only
18
+ npx neohive init --gemini Configure for Gemini CLI only
19
+ npx neohive init --codex Configure for Codex CLI only
20
+ npx neohive init --cursor Configure for Cursor IDE only (.cursor/mcp.json)
21
+ npx neohive init --all Configure for all supported CLIs
22
+ npx neohive init --ollama Setup Ollama local LLM bridge
23
+ npx neohive init --template T Initialize with a team template
24
+ npx neohive serve Run MCP server in HTTP mode (port 4321)
25
+ npx neohive serve --port 8080 Custom port for HTTP server
26
+ npx neohive dashboard Launch web dashboard (http://localhost:3000)
27
+ npx neohive dashboard --lan Dashboard accessible on LAN
28
+ npx neohive status Show active agents and tasks
29
+ npx neohive msg <agent> <text> Send a message from CLI
30
+ npx neohive doctor Diagnostic health check
31
+ npx neohive templates List available team templates
32
+ npx neohive reset --force Clear all data (auto-archives first)
33
+ npx neohive uninstall Remove from all CLI configs
34
+ npx neohive help Show this help
35
+
36
+ Templates: pair, team, review, debate, managed
37
+ Docs: https://github.com/fakiho/neohive
41
38
  `);
42
39
  }
43
40
 
@@ -61,6 +58,11 @@ function detectCLIs() {
61
58
  detected.push('codex');
62
59
  }
63
60
 
61
+ // Cursor IDE: ~/.cursor/ (app support) exists
62
+ if (fs.existsSync(path.join(home, '.cursor'))) {
63
+ detected.push('cursor');
64
+ }
65
+
64
66
  return detected;
65
67
  }
66
68
 
@@ -173,6 +175,41 @@ timeout = 300
173
175
  console.log(' [ok] Codex CLI: .codex/config.toml updated');
174
176
  }
175
177
 
178
+ // Configure for Cursor IDE — absolute NEOHIVE_DATA_DIR so Node never sees unexpanded ${workspaceFolder}.
179
+ // If the IDE omits env on spawn, server startup still resolves the hive via lib/resolve-server-data-dir.js
180
+ // (walks cwd ancestors for the same MCP files).
181
+ function setupCursor(serverPath, cwd) {
182
+ const cursorDir = path.join(cwd, '.cursor');
183
+ const mcpConfigPath = path.join(cursorDir, 'mcp.json');
184
+ const abDataDir = path.join(path.resolve(cwd), '.neohive').replace(/\\/g, '/');
185
+
186
+ if (!fs.existsSync(cursorDir)) {
187
+ fs.mkdirSync(cursorDir, { recursive: true });
188
+ }
189
+
190
+ let mcpConfig = { mcpServers: {} };
191
+ if (fs.existsSync(mcpConfigPath)) {
192
+ try {
193
+ mcpConfig = JSON.parse(fs.readFileSync(mcpConfigPath, 'utf8'));
194
+ if (!mcpConfig.mcpServers) mcpConfig.mcpServers = {};
195
+ } catch {
196
+ const backup = mcpConfigPath + '.backup';
197
+ fs.copyFileSync(mcpConfigPath, backup);
198
+ console.log(' [warn] Existing .cursor/mcp.json was invalid — backed up to mcp.json.backup');
199
+ }
200
+ }
201
+
202
+ mcpConfig.mcpServers['neohive'] = {
203
+ command: 'node',
204
+ args: [serverPath],
205
+ env: { NEOHIVE_DATA_DIR: abDataDir },
206
+ timeout: 300,
207
+ };
208
+
209
+ fs.writeFileSync(mcpConfigPath, JSON.stringify(mcpConfig, null, 2) + '\n');
210
+ console.log(' [ok] Cursor IDE: .cursor/mcp.json updated');
211
+ }
212
+
176
213
  // Setup Ollama agent bridge script
177
214
  function setupOllama(serverPath, cwd) {
178
215
  const dir = dataDir(cwd);
@@ -320,8 +357,10 @@ function init() {
320
357
  targets = ['gemini'];
321
358
  } else if (flag === '--codex') {
322
359
  targets = ['codex'];
360
+ } else if (flag === '--cursor') {
361
+ targets = ['cursor'];
323
362
  } else if (flag === '--all') {
324
- targets = ['claude', 'gemini', 'codex'];
363
+ targets = ['claude', 'gemini', 'codex', 'cursor'];
325
364
  } else if (flag === '--ollama') {
326
365
  const ollama = detectOllama();
327
366
  if (!ollama.installed) {
@@ -353,11 +392,12 @@ function init() {
353
392
  case 'claude': setupClaude(serverPath, cwd); break;
354
393
  case 'gemini': setupGemini(serverPath, cwd); break;
355
394
  case 'codex': setupCodex(serverPath, cwd); break;
395
+ case 'cursor': setupCursor(serverPath, cwd); break;
356
396
  }
357
397
  }
358
398
 
359
399
  // Add .neohive/ and MCP config files to .gitignore
360
- const gitignoreEntries = ['.neohive/', '.mcp.json', '.codex/', '.gemini/'];
400
+ const gitignoreEntries = ['.neohive/', '.mcp.json', '.cursor/mcp.json', '.codex/', '.gemini/'];
361
401
  if (fs.existsSync(gitignorePath)) {
362
402
  let content = fs.readFileSync(gitignorePath, 'utf8');
363
403
  const missing = gitignoreEntries.filter(e => !content.includes(e));
@@ -373,8 +413,13 @@ function init() {
373
413
  console.log(' [ok] .gitignore created');
374
414
  }
375
415
 
416
+ const configuredCursor = targets.includes('cursor');
376
417
  console.log('');
377
- console.log(' Neohive is ready! Restart your CLI to pick up the MCP tools.');
418
+ console.log(
419
+ configuredCursor
420
+ ? ' Neohive is ready! Restart Cursor (or reload MCP tools) and restart any terminal CLIs you use.'
421
+ : ' Neohive is ready! Restart your CLI to pick up the MCP tools.'
422
+ );
378
423
  console.log('');
379
424
 
380
425
  // Show template if --template was provided
@@ -389,7 +434,11 @@ function init() {
389
434
  if (templateFlag) {
390
435
  showTemplate(templateFlag);
391
436
  } else {
392
- console.log(' Open two terminals and start a conversation between agents.');
437
+ if (configuredCursor) {
438
+ console.log(' Cursor: use register + listen() from chat (neohive MCP). Terminal CLIs: one session per agent.');
439
+ } else {
440
+ console.log(' Open two terminals and start a conversation between agents.');
441
+ }
393
442
  console.log(' Tip: Use "npx neohive init --template pair" for ready-made prompts.');
394
443
  console.log('');
395
444
  console.log(' \x1b[1m Monitor:\x1b[0m');
@@ -508,6 +557,17 @@ function showTemplate(templateName) {
508
557
  }
509
558
  }
510
559
 
560
+ function serve() {
561
+ // Parse --port flag
562
+ const portIdx = process.argv.indexOf('--port');
563
+ if (portIdx !== -1 && process.argv[portIdx + 1]) {
564
+ process.env.NEOHIVE_SERVER_PORT = process.argv[portIdx + 1];
565
+ }
566
+ // Signal server.js to use HTTP transport
567
+ process.env.NEOHIVE_TRANSPORT = 'http';
568
+ require('./server.js');
569
+ }
570
+
511
571
  function dashboard() {
512
572
  if (process.argv.includes('--lan')) {
513
573
  process.env.NEOHIVE_LAN = 'true';
@@ -654,7 +714,7 @@ function cliStatus() {
654
714
  console.log('');
655
715
  }
656
716
 
657
- // v5.0: Diagnostic health check
717
+ // v6.0: Diagnostic health check
658
718
  function cliDoctor() {
659
719
  console.log('');
660
720
  console.log(' \x1b[1mNeohive — Doctor\x1b[0m');
@@ -853,6 +913,44 @@ function uninstall() {
853
913
  }
854
914
  }
855
915
 
916
+ // 7. Remove from Cursor IDE project config (.cursor/mcp.json in cwd)
917
+ const cursorMcpPath = path.join(cwd, '.cursor', 'mcp.json');
918
+ if (fs.existsSync(cursorMcpPath)) {
919
+ try {
920
+ const mcpConfig = JSON.parse(fs.readFileSync(cursorMcpPath, 'utf8'));
921
+ if (mcpConfig.mcpServers && mcpConfig.mcpServers['neohive']) {
922
+ delete mcpConfig.mcpServers['neohive'];
923
+ fs.writeFileSync(cursorMcpPath, JSON.stringify(mcpConfig, null, 2) + '\n');
924
+ removed.push('Cursor IDE (project): ' + cursorMcpPath);
925
+ } else {
926
+ notFound.push('Cursor IDE (project): no neohive entry in .cursor/mcp.json');
927
+ }
928
+ } catch (e) {
929
+ console.log(' [warn] Could not parse ' + cursorMcpPath + ': ' + e.message);
930
+ }
931
+ } else {
932
+ notFound.push('Cursor IDE (project): .cursor/mcp.json not found');
933
+ }
934
+
935
+ // 8. Remove from Cursor IDE user config (~/.cursor/mcp.json)
936
+ const cursorGlobalPath = path.join(home, '.cursor', 'mcp.json');
937
+ if (fs.existsSync(cursorGlobalPath)) {
938
+ try {
939
+ const mcpConfig = JSON.parse(fs.readFileSync(cursorGlobalPath, 'utf8'));
940
+ if (mcpConfig.mcpServers && mcpConfig.mcpServers['neohive']) {
941
+ delete mcpConfig.mcpServers['neohive'];
942
+ fs.writeFileSync(cursorGlobalPath, JSON.stringify(mcpConfig, null, 2) + '\n');
943
+ removed.push('Cursor IDE (global): ' + cursorGlobalPath);
944
+ } else {
945
+ notFound.push('Cursor IDE (global): no neohive entry');
946
+ }
947
+ } catch (e) {
948
+ console.log(' [warn] Could not parse ' + cursorGlobalPath + ': ' + e.message);
949
+ }
950
+ } else {
951
+ notFound.push('Cursor IDE (global): ~/.cursor/mcp.json not found');
952
+ }
953
+
856
954
  // Print summary
857
955
  if (removed.length > 0) {
858
956
  console.log(' Removed neohive from:');
@@ -871,7 +969,7 @@ function uninstall() {
871
969
  }
872
970
  }
873
971
 
874
- // 7. Check for data directory
972
+ // 9. Check for data directory
875
973
  const dataPath = path.join(cwd, '.neohive');
876
974
  if (fs.existsSync(dataPath)) {
877
975
  console.log('');
@@ -893,6 +991,9 @@ switch (command) {
893
991
  case 'templates':
894
992
  listTemplates();
895
993
  break;
994
+ case 'serve':
995
+ serve();
996
+ break;
896
997
  case 'dashboard':
897
998
  dashboard();
898
999
  break;
@@ -2,11 +2,61 @@
2
2
  "id": "autonomous-feature",
3
3
  "name": "Autonomous Feature Build",
4
4
  "description": "Full autonomous feature build: architecture, parallel backend+frontend, integration testing. Zero human intervention.",
5
+ "category": "development",
6
+ "conversation_mode": "direct",
5
7
  "agents": [
6
- { "name": "Architect", "role": "Software Architect", "skills": ["design", "interfaces", "architecture"], "prompt": "You are a software architect. Design the feature architecture with clear interfaces. Call verify_and_advance() when done. Use get_work() to stay in the proactive loop." },
7
- { "name": "Backend", "role": "Backend Developer", "skills": ["api", "database", "server", "backend"], "prompt": "You are a backend developer. Implement server-side logic, APIs, and data models. Write unit tests. Call verify_and_advance() when done. Never wait for approval." },
8
- { "name": "Frontend", "role": "Frontend Developer", "skills": ["ui", "css", "components", "frontend"], "prompt": "You are a frontend developer. Implement UI components, pages, and client-side logic. Write component tests. Call verify_and_advance() when done. Never wait for approval." },
9
- { "name": "Tester", "role": "QA Engineer", "skills": ["testing", "qa", "integration", "verification"], "prompt": "You are a QA engineer. Write and run integration tests. Verify all components work together. Call verify_and_advance() when done." }
8
+ {
9
+ "name": "Architect",
10
+ "role": "lead",
11
+ "display_name": "Software Architect",
12
+ "skills": ["design", "interfaces", "architecture", "planning"],
13
+ "responsibilities": [
14
+ "Design feature architecture with clear interfaces",
15
+ "Define contracts between backend and frontend",
16
+ "Create implementation plan"
17
+ ],
18
+ "tools_focus": ["create_workflow", "advance_workflow", "kb_write", "share_file"],
19
+ "prompt": "You are a software architect. Design the feature architecture with clear interfaces. Call verify_and_advance() when done. Use get_work() to stay in the proactive loop."
20
+ },
21
+ {
22
+ "name": "Backend",
23
+ "role": "backend",
24
+ "display_name": "Backend Developer",
25
+ "skills": ["api", "database", "server", "backend", "nodejs"],
26
+ "responsibilities": [
27
+ "Implement server-side logic, APIs, and data models",
28
+ "Write unit tests for backend code",
29
+ "Lock files before editing"
30
+ ],
31
+ "tools_focus": ["lock_file", "unlock_file", "update_task", "advance_workflow", "share_file"],
32
+ "prompt": "You are a backend developer. Implement server-side logic, APIs, and data models. Write unit tests. Use lock_file() before editing. Call verify_and_advance() when done. Never wait for approval."
33
+ },
34
+ {
35
+ "name": "Frontend",
36
+ "role": "frontend",
37
+ "display_name": "Frontend Developer",
38
+ "skills": ["ui", "css", "components", "frontend", "html"],
39
+ "responsibilities": [
40
+ "Implement UI components, pages, and client-side logic",
41
+ "Write component tests",
42
+ "Lock files before editing"
43
+ ],
44
+ "tools_focus": ["lock_file", "unlock_file", "update_task", "advance_workflow", "share_file"],
45
+ "prompt": "You are a frontend developer. Implement UI components, pages, and client-side logic. Write component tests. Use lock_file() before editing. Call verify_and_advance() when done. Never wait for approval."
46
+ },
47
+ {
48
+ "name": "Tester",
49
+ "role": "quality",
50
+ "display_name": "QA Engineer",
51
+ "skills": ["testing", "qa", "integration", "verification"],
52
+ "responsibilities": [
53
+ "Write and run integration tests",
54
+ "Verify all components work together",
55
+ "Submit review results via submit_review()"
56
+ ],
57
+ "tools_focus": ["request_review", "submit_review", "advance_workflow", "get_reputation"],
58
+ "prompt": "You are a QA engineer. Write and run integration tests. Verify all components work together. Call verify_and_advance() when done."
59
+ }
10
60
  ],
11
61
  "workflow": {
12
62
  "name": "Autonomous Feature",
@@ -2,10 +2,48 @@
2
2
  "id": "code-review",
3
3
  "name": "Code Review Pipeline",
4
4
  "description": "Developer writes code, Reviewer checks it, Tester validates. Autonomous: review + test run in parallel after code is written.",
5
+ "category": "quality",
6
+ "conversation_mode": "direct",
5
7
  "agents": [
6
- { "name": "Developer", "role": "Developer", "skills": ["code", "implementation"], "prompt": "You are a developer. Write code as instructed. Call verify_and_advance() when done. If review feedback arrives, fix issues and re-submit. Never wait idle." },
7
- { "name": "Reviewer", "role": "Code Reviewer", "skills": ["review", "standards", "security"], "prompt": "You are a code reviewer. Review code for bugs, style, and best practices. Use submit_review() to approve or request changes. Call verify_and_advance() when done." },
8
- { "name": "Tester", "role": "QA Tester", "skills": ["testing", "qa", "verification"], "prompt": "You are a QA tester. Write and run tests for the code. Report results. Call verify_and_advance() when done. Never wait for approval." }
8
+ {
9
+ "name": "Developer",
10
+ "role": "backend",
11
+ "display_name": "Developer",
12
+ "skills": ["code", "implementation", "javascript", "nodejs"],
13
+ "responsibilities": [
14
+ "Write code as instructed",
15
+ "Address review feedback and fix issues",
16
+ "Lock files before editing"
17
+ ],
18
+ "tools_focus": ["lock_file", "unlock_file", "update_task", "advance_workflow", "share_file"],
19
+ "prompt": "You are a developer. Write code as instructed. Use lock_file() before editing shared code. Call verify_and_advance() when done. If review feedback arrives, fix issues and re-submit. Never wait idle."
20
+ },
21
+ {
22
+ "name": "Reviewer",
23
+ "role": "quality",
24
+ "display_name": "Code Reviewer",
25
+ "skills": ["review", "standards", "security", "quality"],
26
+ "responsibilities": [
27
+ "Review code for bugs, style, and best practices",
28
+ "Check for security vulnerabilities",
29
+ "Approve or request changes via submit_review()"
30
+ ],
31
+ "tools_focus": ["request_review", "submit_review", "advance_workflow", "get_reputation"],
32
+ "prompt": "You are a code reviewer. Review code for bugs, style, and best practices. Use submit_review() to approve or request changes. Call verify_and_advance() when done."
33
+ },
34
+ {
35
+ "name": "Tester",
36
+ "role": "quality",
37
+ "display_name": "QA Tester",
38
+ "skills": ["testing", "qa", "verification", "regression"],
39
+ "responsibilities": [
40
+ "Write and run tests for the code",
41
+ "Report test results and coverage",
42
+ "Verify edge cases and error handling"
43
+ ],
44
+ "tools_focus": ["update_task", "advance_workflow", "submit_review", "share_file"],
45
+ "prompt": "You are a QA tester. Write and run tests for the code. Report results. Call verify_and_advance() when done. Never wait for approval."
46
+ }
9
47
  ],
10
48
  "workflow": {
11
49
  "name": "Code Review",
@@ -2,10 +2,48 @@
2
2
  "id": "debug-squad",
3
3
  "name": "Debug Squad",
4
4
  "description": "Investigator finds the bug, Fixer patches it, Verifier confirms the fix. Autonomous: no waiting between steps.",
5
+ "category": "development",
6
+ "conversation_mode": "direct",
5
7
  "agents": [
6
- { "name": "Investigator", "role": "Bug Investigator", "skills": ["debugging", "analysis", "tracing"], "prompt": "You investigate bugs. Analyze error logs, trace code paths, and identify root causes. Call verify_and_advance() when root cause is found. Never wait idle." },
7
- { "name": "Fixer", "role": "Bug Fixer", "skills": ["code", "fixing", "patching"], "prompt": "You fix bugs. Implement fixes based on investigation findings. Write regression tests. Call verify_and_advance() when done. If fix fails, use retry_with_improvement()." },
8
- { "name": "Verifier", "role": "Fix Verifier", "skills": ["testing", "verification", "qa"], "prompt": "You verify bug fixes. Test the fix, confirm resolution, and check for regressions. Call verify_and_advance() when done." }
8
+ {
9
+ "name": "Investigator",
10
+ "role": "quality",
11
+ "display_name": "Bug Investigator",
12
+ "skills": ["debugging", "analysis", "tracing", "investigation"],
13
+ "responsibilities": [
14
+ "Analyze error logs and trace code paths",
15
+ "Identify root causes with evidence",
16
+ "Document findings with file paths and line numbers"
17
+ ],
18
+ "tools_focus": ["search_messages", "kb_write", "advance_workflow", "share_file"],
19
+ "prompt": "You investigate bugs. Analyze error logs, trace code paths, and identify root causes. Include file paths and line numbers in your findings. Use kb_write() to document root cause. Call verify_and_advance() when root cause is found. Never wait idle."
20
+ },
21
+ {
22
+ "name": "Fixer",
23
+ "role": "backend",
24
+ "display_name": "Bug Fixer",
25
+ "skills": ["code", "fixing", "patching", "testing"],
26
+ "responsibilities": [
27
+ "Implement fixes based on investigation findings",
28
+ "Write regression tests",
29
+ "Lock files before editing"
30
+ ],
31
+ "tools_focus": ["lock_file", "unlock_file", "update_task", "advance_workflow", "share_file"],
32
+ "prompt": "You fix bugs. Implement fixes based on investigation findings. Write regression tests. Use lock_file() before editing. Call verify_and_advance() when done. If fix fails, use retry_with_improvement()."
33
+ },
34
+ {
35
+ "name": "Verifier",
36
+ "role": "quality",
37
+ "display_name": "Fix Verifier",
38
+ "skills": ["testing", "verification", "qa", "regression"],
39
+ "responsibilities": [
40
+ "Test the fix and confirm resolution",
41
+ "Check for regressions",
42
+ "Approve via submit_review()"
43
+ ],
44
+ "tools_focus": ["request_review", "submit_review", "advance_workflow", "get_reputation"],
45
+ "prompt": "You verify bug fixes. Test the fix, confirm resolution, and check for regressions. Use submit_review() to formally approve. Call verify_and_advance() when done."
46
+ }
9
47
  ],
10
48
  "workflow": {
11
49
  "name": "Bug Fix",
@@ -2,10 +2,48 @@
2
2
  "id": "feature-build",
3
3
  "name": "Feature Development",
4
4
  "description": "Architect designs, Builder implements, Reviewer approves. Autonomous mode: agents auto-advance through steps.",
5
+ "category": "development",
6
+ "conversation_mode": "direct",
5
7
  "agents": [
6
- { "name": "Architect", "role": "Software Architect", "skills": ["design", "interfaces", "architecture"], "prompt": "You are a software architect. Design the feature architecture, define interfaces, and create the implementation plan. When done, call verify_and_advance(). Never wait for approval." },
7
- { "name": "Builder", "role": "Developer", "skills": ["code", "implementation", "testing"], "prompt": "You are a developer. Implement the feature following the architecture design. Write tests. When done, call verify_and_advance(). Never wait for approval." },
8
- { "name": "Reviewer", "role": "Senior Reviewer", "skills": ["review", "quality", "standards"], "prompt": "You are a senior reviewer. Review implementations against the architecture. Use submit_review() to approve or request changes. Call verify_and_advance() when done." }
8
+ {
9
+ "name": "Architect",
10
+ "role": "lead",
11
+ "display_name": "Software Architect",
12
+ "skills": ["design", "interfaces", "architecture", "planning"],
13
+ "responsibilities": [
14
+ "Design feature architecture with clear interfaces",
15
+ "Define API contracts between components",
16
+ "Create the implementation plan as a workflow"
17
+ ],
18
+ "tools_focus": ["create_workflow", "advance_workflow", "kb_write", "share_file"],
19
+ "prompt": "You are a software architect. Design the feature architecture, define interfaces, and create the implementation plan. When done, call verify_and_advance(). Never wait for approval."
20
+ },
21
+ {
22
+ "name": "Builder",
23
+ "role": "backend",
24
+ "display_name": "Developer",
25
+ "skills": ["code", "implementation", "testing", "javascript", "nodejs"],
26
+ "responsibilities": [
27
+ "Implement the feature following the architecture design",
28
+ "Write unit tests alongside code",
29
+ "Lock files before editing, unlock after"
30
+ ],
31
+ "tools_focus": ["lock_file", "unlock_file", "update_task", "advance_workflow", "share_file"],
32
+ "prompt": "You are a developer. Implement the feature following the architecture design. Write tests. Use lock_file() before editing shared code. Call verify_and_advance() when done. Never wait for approval."
33
+ },
34
+ {
35
+ "name": "Reviewer",
36
+ "role": "quality",
37
+ "display_name": "Senior Reviewer",
38
+ "skills": ["review", "quality", "standards", "security", "testing"],
39
+ "responsibilities": [
40
+ "Review implementations against the architecture",
41
+ "Check for bugs, security issues, and quality",
42
+ "Approve or request changes via submit_review()"
43
+ ],
44
+ "tools_focus": ["request_review", "submit_review", "get_reputation", "advance_workflow"],
45
+ "prompt": "You are a senior reviewer. Review implementations against the architecture. Use submit_review() to approve or request changes. Call verify_and_advance() when done."
46
+ }
9
47
  ],
10
48
  "workflow": {
11
49
  "name": "Feature Dev",
@@ -2,10 +2,48 @@
2
2
  "id": "research-write",
3
3
  "name": "Research & Write",
4
4
  "description": "Researcher gathers info, Writer creates content, Editor polishes. Autonomous: writer starts as soon as research is ready.",
5
+ "category": "content",
6
+ "conversation_mode": "direct",
5
7
  "agents": [
6
- { "name": "Researcher", "role": "Researcher", "skills": ["research", "analysis", "data"], "prompt": "You are a researcher. Gather information on the given topic. Organize findings into a structured research brief. Call verify_and_advance() when done." },
7
- { "name": "Writer", "role": "Writer", "skills": ["writing", "content", "structure"], "prompt": "You are a writer. Write clear, well-structured content based on the research findings. Call verify_and_advance() when done. If editor requests changes, use retry_with_improvement()." },
8
- { "name": "Editor", "role": "Editor", "skills": ["editing", "style", "accuracy"], "prompt": "You are an editor. Review and polish content. Check for clarity, accuracy, and style. Use submit_review() to approve or request revisions. Call verify_and_advance() when done." }
8
+ {
9
+ "name": "Researcher",
10
+ "role": "quality",
11
+ "display_name": "Researcher",
12
+ "skills": ["research", "analysis", "data", "investigation"],
13
+ "responsibilities": [
14
+ "Gather information on the given topic",
15
+ "Organize findings into a structured brief",
16
+ "Store findings in KB for team access"
17
+ ],
18
+ "tools_focus": ["kb_write", "kb_read", "search_messages", "advance_workflow", "share_file"],
19
+ "prompt": "You are a researcher. Gather information on the given topic. Organize findings into a structured research brief. Use kb_write() to store key findings. Call verify_and_advance() when done."
20
+ },
21
+ {
22
+ "name": "Writer",
23
+ "role": "backend",
24
+ "display_name": "Writer",
25
+ "skills": ["writing", "content", "structure", "documentation"],
26
+ "responsibilities": [
27
+ "Write clear, well-structured content from research",
28
+ "Address editor feedback via retry_with_improvement()",
29
+ "Finalize and publish content"
30
+ ],
31
+ "tools_focus": ["update_task", "advance_workflow", "kb_read", "share_file"],
32
+ "prompt": "You are a writer. Write clear, well-structured content based on the research findings. Use kb_read() to access research data. Call verify_and_advance() when done. If editor requests changes, use retry_with_improvement()."
33
+ },
34
+ {
35
+ "name": "Editor",
36
+ "role": "quality",
37
+ "display_name": "Editor",
38
+ "skills": ["editing", "style", "accuracy", "review"],
39
+ "responsibilities": [
40
+ "Review and polish content for clarity and accuracy",
41
+ "Check style, grammar, and factual correctness",
42
+ "Approve or request revisions via submit_review()"
43
+ ],
44
+ "tools_focus": ["request_review", "submit_review", "advance_workflow", "get_reputation"],
45
+ "prompt": "You are an editor. Review and polish content. Check for clarity, accuracy, and style. Use submit_review() to approve or request revisions. Call verify_and_advance() when done."
46
+ }
9
47
  ],
10
48
  "workflow": {
11
49
  "name": "Content Pipeline",