@robbiesrobotics/alice-agents 1.4.4 → 1.4.6

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.
@@ -2,6 +2,7 @@ import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'node:fs';
2
2
  import { join, dirname } from 'node:path';
3
3
  import { homedir } from 'node:os';
4
4
  import { fileURLToPath } from 'node:url';
5
+ import { buildCodingAgentSkillContent, resolveCodingAgentPreference } from './coding-agent.mjs';
5
6
 
6
7
  const __dirname = dirname(fileURLToPath(import.meta.url));
7
8
  const TEMPLATES_DIR = join(__dirname, '..', 'templates', 'workspaces');
@@ -100,23 +101,17 @@ export function scaffoldWorkspace(agent, userInfo, agentCount) {
100
101
  return { workspaceDir, written, skipped };
101
102
  }
102
103
 
103
- export function scaffoldSkills() {
104
- // Install the claude-code skill into ~/.openclaw/skills/
105
- const claudeCodeSkillDir = join(SKILLS_DIR, 'claude-code');
106
- mkdirSync(claudeCodeSkillDir, { recursive: true });
104
+ export function scaffoldSkills(preference = null) {
105
+ const codingAgentPreference = preference || resolveCodingAgentPreference();
106
+ const codingAgentSkillDir = join(SKILLS_DIR, codingAgentPreference.skillId);
107
+ mkdirSync(codingAgentSkillDir, { recursive: true });
107
108
 
108
- const skillTemplatePath = join(__dirname, '..', 'templates', 'skills', 'claude-code', 'SKILL.md');
109
- const skillDestPath = join(claudeCodeSkillDir, 'SKILL.md');
110
-
111
- if (existsSync(skillTemplatePath)) {
112
- const content = readFileSync(skillTemplatePath, 'utf8');
113
- writeFileSync(skillDestPath, content, 'utf8');
114
- return true;
115
- }
116
- return false;
109
+ const skillDestPath = join(codingAgentSkillDir, 'SKILL.md');
110
+ writeFileSync(skillDestPath, buildCodingAgentSkillContent(codingAgentPreference), 'utf8');
111
+ return codingAgentPreference;
117
112
  }
118
113
 
119
- export function scaffoldAll(agents, userInfo) {
114
+ export function scaffoldAll(agents, userInfo, skillPreference = null) {
120
115
  const agentCount = agents.length;
121
116
  const results = [];
122
117
 
@@ -126,7 +121,7 @@ export function scaffoldAll(agents, userInfo) {
126
121
  }
127
122
 
128
123
  // Install skills
129
- scaffoldSkills();
124
+ const installedSkill = scaffoldSkills(skillPreference);
130
125
 
131
- return results;
126
+ return { workspaces: results, installedSkill };
132
127
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@robbiesrobotics/alice-agents",
3
- "version": "1.4.4",
3
+ "version": "1.4.6",
4
4
  "description": "A.L.I.C.E. — 28 AI agents for OpenClaw. One conversation, one team.",
5
5
  "bin": {
6
6
  "alice-agents": "bin/alice-install.mjs"
@@ -23,15 +23,17 @@
23
23
  "tools/",
24
24
  "snapshots/",
25
25
  "templates/agents-starter.json",
26
+ "templates/agents-pro.json",
26
27
  "templates/mission-control-bridge/",
27
28
  "templates/skills/",
28
29
  "templates/workspaces/",
29
- "SELF-HEALING-SPEC.md",
30
30
  "README.md"
31
31
  ],
32
32
  "scripts": {
33
33
  "test": "node --test test/*.test.mjs",
34
- "test:check": "node --check lib/*.mjs bin/*.mjs"
34
+ "test:check": "node --check lib/*.mjs bin/*.mjs",
35
+ "release:check": "node lib/release-guard.mjs",
36
+ "prepublishOnly": "npm test && npm run test:check && npm run release:check"
35
37
  },
36
38
  "publishConfig": {
37
39
  "access": "public"
@@ -0,0 +1,550 @@
1
+ [
2
+ {
3
+ "id": "hannah",
4
+ "name": "Hannah",
5
+ "domain": "HR",
6
+ "theme": "HR specialist",
7
+ "emoji": "\ud83d\udc65",
8
+ "description": "Team processes, hiring workflows, culture documentation",
9
+ "tier": "pro",
10
+ "coding": false,
11
+ "sandbox": {
12
+ "mode": "all",
13
+ "scope": "agent"
14
+ },
15
+ "tools": {
16
+ "allow": [
17
+ "read",
18
+ "write",
19
+ "edit",
20
+ "web_search",
21
+ "web_fetch",
22
+ "sessions_list",
23
+ "sessions_history",
24
+ "session_status"
25
+ ],
26
+ "deny": [
27
+ "exec",
28
+ "process",
29
+ "browser",
30
+ "canvas",
31
+ "apply_patch",
32
+ "cron"
33
+ ]
34
+ }
35
+ },
36
+ {
37
+ "id": "aiden",
38
+ "name": "Aiden",
39
+ "domain": "Analytics",
40
+ "theme": "analytics specialist",
41
+ "emoji": "\ud83d\udcc8",
42
+ "description": "Business analytics, metrics, dashboards, data visualization",
43
+ "tier": "pro",
44
+ "coding": true,
45
+ "sandbox": {
46
+ "mode": "off"
47
+ },
48
+ "tools": {
49
+ "profile": "coding",
50
+ "alsoAllow": [
51
+ "web_search",
52
+ "web_fetch"
53
+ ]
54
+ }
55
+ },
56
+ {
57
+ "id": "clara",
58
+ "name": "Clara",
59
+ "domain": "Communication",
60
+ "theme": "communication specialist",
61
+ "emoji": "\u270d\ufe0f",
62
+ "description": "Copy, messaging, email drafts, announcements, brand voice",
63
+ "tier": "pro",
64
+ "coding": false,
65
+ "sandbox": {
66
+ "mode": "all",
67
+ "scope": "agent"
68
+ },
69
+ "tools": {
70
+ "allow": [
71
+ "read",
72
+ "write",
73
+ "edit",
74
+ "web_search",
75
+ "web_fetch",
76
+ "message",
77
+ "sessions_list",
78
+ "sessions_history",
79
+ "session_status"
80
+ ],
81
+ "deny": [
82
+ "exec",
83
+ "process",
84
+ "browser",
85
+ "canvas",
86
+ "apply_patch",
87
+ "cron"
88
+ ]
89
+ }
90
+ },
91
+ {
92
+ "id": "avery",
93
+ "name": "Avery",
94
+ "domain": "Automation",
95
+ "theme": "automation specialist",
96
+ "emoji": "\u2699\ufe0f",
97
+ "description": "Workflow automation, cron jobs, scripting, process optimization",
98
+ "tier": "pro",
99
+ "coding": true,
100
+ "sandbox": {
101
+ "mode": "off"
102
+ },
103
+ "tools": {
104
+ "profile": "coding",
105
+ "alsoAllow": [
106
+ "web_search",
107
+ "web_fetch",
108
+ "cron"
109
+ ]
110
+ }
111
+ },
112
+ {
113
+ "id": "owen",
114
+ "name": "Owen",
115
+ "domain": "Operations",
116
+ "theme": "operations specialist",
117
+ "emoji": "\ud83d\udd27",
118
+ "description": "System health, monitoring, incident response, operational readiness",
119
+ "tier": "pro",
120
+ "coding": false,
121
+ "sandbox": {
122
+ "mode": "off"
123
+ },
124
+ "tools": {
125
+ "allow": [
126
+ "read",
127
+ "exec",
128
+ "process",
129
+ "web_search",
130
+ "web_fetch",
131
+ "sessions_list",
132
+ "sessions_history",
133
+ "session_status"
134
+ ],
135
+ "deny": [
136
+ "write",
137
+ "edit",
138
+ "apply_patch",
139
+ "canvas",
140
+ "browser",
141
+ "cron"
142
+ ]
143
+ }
144
+ },
145
+ {
146
+ "id": "isaac",
147
+ "name": "Isaac",
148
+ "domain": "Integration",
149
+ "theme": "integration specialist",
150
+ "emoji": "\ud83d\udd0c",
151
+ "description": "API integration, third-party services, webhooks, connectors",
152
+ "tier": "pro",
153
+ "coding": true,
154
+ "sandbox": {
155
+ "mode": "off"
156
+ },
157
+ "tools": {
158
+ "profile": "coding",
159
+ "alsoAllow": [
160
+ "web_search",
161
+ "web_fetch"
162
+ ]
163
+ }
164
+ },
165
+ {
166
+ "id": "tommy",
167
+ "name": "Tommy",
168
+ "domain": "Travel",
169
+ "theme": "travel specialist",
170
+ "emoji": "\u2708\ufe0f",
171
+ "description": "Trip planning, itineraries, booking research, travel logistics",
172
+ "tier": "pro",
173
+ "coding": false,
174
+ "sandbox": {
175
+ "mode": "all",
176
+ "scope": "agent"
177
+ },
178
+ "tools": {
179
+ "allow": [
180
+ "read",
181
+ "write",
182
+ "edit",
183
+ "web_search",
184
+ "web_fetch",
185
+ "browser",
186
+ "cron",
187
+ "sessions_list",
188
+ "sessions_history",
189
+ "session_status"
190
+ ],
191
+ "deny": [
192
+ "exec",
193
+ "process",
194
+ "canvas",
195
+ "apply_patch"
196
+ ]
197
+ }
198
+ },
199
+ {
200
+ "id": "sloane",
201
+ "name": "Sloane",
202
+ "domain": "Sales",
203
+ "theme": "sales specialist",
204
+ "emoji": "\ud83d\udcbc",
205
+ "description": "Sales strategy, outreach, pipeline management, proposals",
206
+ "tier": "pro",
207
+ "coding": false,
208
+ "sandbox": {
209
+ "mode": "all",
210
+ "scope": "agent"
211
+ },
212
+ "tools": {
213
+ "allow": [
214
+ "read",
215
+ "write",
216
+ "edit",
217
+ "web_search",
218
+ "web_fetch",
219
+ "browser",
220
+ "message",
221
+ "sessions_list",
222
+ "sessions_history",
223
+ "session_status",
224
+ "cron"
225
+ ],
226
+ "deny": [
227
+ "exec",
228
+ "process",
229
+ "canvas",
230
+ "apply_patch"
231
+ ]
232
+ }
233
+ },
234
+ {
235
+ "id": "nadia",
236
+ "name": "Nadia",
237
+ "domain": "UI/UX Design",
238
+ "theme": "UI/UX design specialist",
239
+ "emoji": "\ud83c\udfa8",
240
+ "description": "Design systems, wireframes, UI patterns, visual design",
241
+ "tier": "pro",
242
+ "coding": false,
243
+ "sandbox": {
244
+ "mode": "all",
245
+ "scope": "agent"
246
+ },
247
+ "tools": {
248
+ "allow": [
249
+ "read",
250
+ "write",
251
+ "edit",
252
+ "apply_patch",
253
+ "canvas",
254
+ "browser",
255
+ "web_search",
256
+ "web_fetch",
257
+ "sessions_list",
258
+ "sessions_history",
259
+ "session_status"
260
+ ],
261
+ "deny": [
262
+ "exec",
263
+ "process",
264
+ "cron"
265
+ ]
266
+ }
267
+ },
268
+ {
269
+ "id": "morgan",
270
+ "name": "Morgan",
271
+ "domain": "Marketing",
272
+ "theme": "marketing specialist",
273
+ "emoji": "\ud83d\udce3",
274
+ "description": "Marketing strategy, content planning, SEO, campaigns",
275
+ "tier": "pro",
276
+ "coding": false,
277
+ "sandbox": {
278
+ "mode": "all",
279
+ "scope": "agent"
280
+ },
281
+ "tools": {
282
+ "allow": [
283
+ "read",
284
+ "write",
285
+ "edit",
286
+ "web_search",
287
+ "web_fetch",
288
+ "browser",
289
+ "message",
290
+ "sessions_list",
291
+ "sessions_history",
292
+ "session_status",
293
+ "cron"
294
+ ],
295
+ "deny": [
296
+ "exec",
297
+ "process",
298
+ "canvas",
299
+ "apply_patch"
300
+ ]
301
+ }
302
+ },
303
+ {
304
+ "id": "alex",
305
+ "name": "Alex",
306
+ "domain": "API Crawling",
307
+ "theme": "API crawler specialist",
308
+ "emoji": "\ud83d\udd77\ufe0f",
309
+ "description": "API discovery, web scraping, data extraction, crawl automation",
310
+ "tier": "pro",
311
+ "coding": true,
312
+ "sandbox": {
313
+ "mode": "off"
314
+ },
315
+ "tools": {
316
+ "profile": "coding",
317
+ "alsoAllow": [
318
+ "web_search",
319
+ "web_fetch",
320
+ "browser"
321
+ ]
322
+ }
323
+ },
324
+ {
325
+ "id": "uma",
326
+ "name": "Uma",
327
+ "domain": "UX Research",
328
+ "theme": "UX researcher",
329
+ "emoji": "\ud83e\uddea",
330
+ "description": "User research, usability testing, personas, journey maps",
331
+ "tier": "pro",
332
+ "coding": false,
333
+ "sandbox": {
334
+ "mode": "all",
335
+ "scope": "agent"
336
+ },
337
+ "tools": {
338
+ "allow": [
339
+ "read",
340
+ "write",
341
+ "edit",
342
+ "browser",
343
+ "canvas",
344
+ "web_search",
345
+ "web_fetch",
346
+ "sessions_list",
347
+ "sessions_history",
348
+ "session_status"
349
+ ],
350
+ "deny": [
351
+ "exec",
352
+ "process",
353
+ "cron",
354
+ "apply_patch"
355
+ ]
356
+ }
357
+ },
358
+ {
359
+ "id": "caleb",
360
+ "name": "Caleb",
361
+ "domain": "CRM",
362
+ "theme": "CRM builder specialist",
363
+ "emoji": "\ud83d\uddc2\ufe0f",
364
+ "description": "CRM design, customer data, pipeline tooling, relationship tracking",
365
+ "tier": "pro",
366
+ "coding": true,
367
+ "sandbox": {
368
+ "mode": "off"
369
+ },
370
+ "tools": {
371
+ "profile": "coding",
372
+ "alsoAllow": [
373
+ "web_search",
374
+ "web_fetch"
375
+ ]
376
+ }
377
+ },
378
+ {
379
+ "id": "elena",
380
+ "name": "Elena",
381
+ "domain": "Estimation",
382
+ "theme": "estimator specialist",
383
+ "emoji": "\ud83d\udccb",
384
+ "description": "Project estimation, cost analysis, timeline planning, scoping",
385
+ "tier": "pro",
386
+ "coding": false,
387
+ "sandbox": {
388
+ "mode": "all",
389
+ "scope": "agent"
390
+ },
391
+ "tools": {
392
+ "allow": [
393
+ "read",
394
+ "write",
395
+ "edit",
396
+ "web_search",
397
+ "web_fetch",
398
+ "sessions_list",
399
+ "sessions_history",
400
+ "session_status"
401
+ ],
402
+ "deny": [
403
+ "exec",
404
+ "process",
405
+ "browser",
406
+ "canvas",
407
+ "apply_patch",
408
+ "cron"
409
+ ]
410
+ }
411
+ },
412
+ {
413
+ "id": "audrey",
414
+ "name": "Audrey",
415
+ "domain": "Accounting",
416
+ "theme": "accounting specialist",
417
+ "emoji": "\ud83d\udcb0",
418
+ "description": "Financial tracking, invoicing, expense reports, bookkeeping",
419
+ "tier": "pro",
420
+ "coding": false,
421
+ "sandbox": {
422
+ "mode": "all",
423
+ "scope": "agent"
424
+ },
425
+ "tools": {
426
+ "allow": [
427
+ "read",
428
+ "write",
429
+ "edit",
430
+ "web_search",
431
+ "web_fetch",
432
+ "sessions_list",
433
+ "sessions_history",
434
+ "session_status"
435
+ ],
436
+ "deny": [
437
+ "exec",
438
+ "process",
439
+ "browser",
440
+ "canvas",
441
+ "apply_patch",
442
+ "cron"
443
+ ]
444
+ }
445
+ },
446
+ {
447
+ "id": "logan",
448
+ "name": "Logan",
449
+ "domain": "Legal",
450
+ "theme": "legal specialist",
451
+ "emoji": "\u2696\ufe0f",
452
+ "description": "Contract review, compliance, terms of service, legal research",
453
+ "tier": "pro",
454
+ "coding": false,
455
+ "sandbox": {
456
+ "mode": "all",
457
+ "scope": "agent"
458
+ },
459
+ "tools": {
460
+ "allow": [
461
+ "read",
462
+ "write",
463
+ "edit",
464
+ "web_search",
465
+ "web_fetch",
466
+ "sessions_list",
467
+ "sessions_history",
468
+ "session_status"
469
+ ],
470
+ "deny": [
471
+ "exec",
472
+ "process",
473
+ "browser",
474
+ "canvas",
475
+ "apply_patch",
476
+ "cron"
477
+ ]
478
+ }
479
+ },
480
+ {
481
+ "id": "eva",
482
+ "name": "Eva",
483
+ "domain": "Executive Assistant",
484
+ "theme": "executive assistant",
485
+ "emoji": "\ud83d\udccc",
486
+ "description": "Scheduling, task management, priority triaging, reminders",
487
+ "tier": "pro",
488
+ "coding": false,
489
+ "sandbox": {
490
+ "mode": "all",
491
+ "scope": "agent"
492
+ },
493
+ "tools": {
494
+ "allow": [
495
+ "read",
496
+ "write",
497
+ "edit",
498
+ "web_search",
499
+ "web_fetch",
500
+ "message",
501
+ "sessions_list",
502
+ "sessions_history",
503
+ "session_status",
504
+ "cron"
505
+ ],
506
+ "deny": [
507
+ "exec",
508
+ "process",
509
+ "browser",
510
+ "canvas",
511
+ "apply_patch"
512
+ ]
513
+ }
514
+ },
515
+ {
516
+ "id": "parker",
517
+ "name": "Parker",
518
+ "domain": "Project Management",
519
+ "theme": "project manager",
520
+ "emoji": "\ud83d\udcc5",
521
+ "description": "Project planning, milestone tracking, team coordination, roadmaps",
522
+ "tier": "pro",
523
+ "coding": false,
524
+ "sandbox": {
525
+ "mode": "all",
526
+ "scope": "agent"
527
+ },
528
+ "tools": {
529
+ "allow": [
530
+ "read",
531
+ "write",
532
+ "edit",
533
+ "web_search",
534
+ "web_fetch",
535
+ "message",
536
+ "sessions_list",
537
+ "sessions_history",
538
+ "session_status",
539
+ "cron"
540
+ ],
541
+ "deny": [
542
+ "exec",
543
+ "process",
544
+ "browser",
545
+ "canvas",
546
+ "apply_patch"
547
+ ]
548
+ }
549
+ }
550
+ ]