@weavetab/skills 2.5.0 → 2.5.1
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/README.md +108 -108
- package/ROUTER.md +43 -43
- package/bin/cli.js +232 -232
- package/browser/dom-strategy.md +121 -119
- package/browser/form-automation.md +84 -87
- package/browser/interaction-pipeline.md +242 -216
- package/browser/tab-and-window.md +136 -136
- package/desktop/desktop-targeting.md +85 -85
- package/desktop/electron-discovery.md +115 -115
- package/developer/github-forensics.md +89 -74
- package/dist/bundled/weavetab-all.md +1885 -1709
- package/dist/bundled/weavetab-browser.md +526 -501
- package/dist/bundled/weavetab-desktop.md +176 -176
- package/dist/bundled/weavetab-developer.md +84 -67
- package/dist/bundled/weavetab-documents.md +184 -142
- package/dist/bundled/weavetab-memory.md +259 -233
- package/dist/bundled/weavetab-network-and-perf.md +250 -223
- package/dist/bundled/weavetab-plugins.md +88 -83
- package/dist/bundled/weavetab-resilience.md +244 -216
- package/dist/bundled/weavetab-security.md +93 -87
- package/dist/granular/browser_dom-strategy.md +121 -119
- package/dist/granular/browser_form-automation.md +84 -87
- package/dist/granular/browser_interaction-pipeline.md +242 -216
- package/dist/granular/browser_tab-and-window.md +136 -136
- package/dist/granular/desktop_desktop-targeting.md +85 -85
- package/dist/granular/desktop_electron-discovery.md +115 -115
- package/dist/granular/developer_github-forensics.md +89 -74
- package/dist/granular/documents_canvas-and-visual-capture.md +117 -103
- package/dist/granular/documents_office-document-ingestion.md +91 -63
- package/dist/granular/memory_selector-memory-system.md +127 -127
- package/dist/granular/memory_session-trail.md +111 -95
- package/dist/granular/memory_site-learning.md +62 -53
- package/dist/granular/network-and-perf_device-and-environment.md +100 -87
- package/dist/granular/network-and-perf_network-intercept-and-mock.md +97 -84
- package/dist/granular/network-and-perf_performance-and-vitals.md +86 -84
- package/dist/granular/plugins_hooks-and-overrides.md +40 -35
- package/dist/granular/plugins_plugin-runtime.md +63 -63
- package/dist/granular/resilience_loop-breaker.md +72 -67
- package/dist/granular/resilience_session-time-travel.md +146 -131
- package/dist/granular/resilience_stale-ref-recovery.md +61 -53
- package/dist/granular/security_rbac-and-policies.md +50 -47
- package/dist/granular/security_secret-containment-protocol.md +62 -59
- package/documents/canvas-and-visual-capture.md +117 -103
- package/documents/office-document-ingestion.md +91 -63
- package/evals/evaluator.js +146 -146
- package/evals/scenarios.json +239 -239
- package/memory/selector-memory-system.md +127 -127
- package/memory/session-trail.md +111 -95
- package/memory/site-learning.md +61 -52
- package/network-and-perf/device-and-environment.md +100 -87
- package/network-and-perf/network-intercept-and-mock.md +97 -84
- package/network-and-perf/performance-and-vitals.md +86 -84
- package/package.json +74 -73
- package/plugins/hooks-and-overrides.md +40 -35
- package/plugins/plugin-runtime.md +63 -63
- package/resilience/loop-breaker.md +72 -67
- package/resilience/session-time-travel.md +146 -131
- package/resilience/stale-ref-recovery.md +61 -53
- package/security/rbac-and-policies.md +50 -47
- package/security/secret-containment-protocol.md +62 -59
- package/skills.json +425 -426
- package/src/api.js +239 -239
package/bin/cli.js
CHANGED
|
@@ -1,232 +1,232 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
const { select, confirm, checkbox } = require('@inquirer/prompts');
|
|
4
|
-
const { installSkills, ALL_DOMAINS, WEAVETAB_VERSION } = require('../src/api.js');
|
|
5
|
-
|
|
6
|
-
// High-contrast modern ANSI styling
|
|
7
|
-
const B = '\x1b[38;2;99;102;241m'; // indigo primary
|
|
8
|
-
const CB = '\x1b[38;2;147;197;253m'; // sky cyan
|
|
9
|
-
const W = '\x1b[97m'; // bright white
|
|
10
|
-
const DM = '\x1b[2m'; // dim
|
|
11
|
-
const Y = '\x1b[33m'; // yellow
|
|
12
|
-
const G = '\x1b[32m'; // green
|
|
13
|
-
const R = '\x1b[31m'; // red
|
|
14
|
-
const X = '\x1b[0m'; // reset
|
|
15
|
-
|
|
16
|
-
const line = `${B}${'
|
|
17
|
-
|
|
18
|
-
function normalizeFramework(fw) {
|
|
19
|
-
if (!fw) return null;
|
|
20
|
-
const f = fw.toLowerCase().trim();
|
|
21
|
-
if (f === 'antigravity' || f === '.agent' || f === 'agent') return '.agent';
|
|
22
|
-
if (f === 'cursor' || f === '.cursor') return '.cursor';
|
|
23
|
-
if (f === 'cline' || f === '.clinerules' || f === 'clinerules') return '.clinerules';
|
|
24
|
-
if (f === 'windsurf' || f === '.windsurf') return '.windsurf';
|
|
25
|
-
if (f === 'openclaw' || f === '.openclaw') return '.openclaw';
|
|
26
|
-
if (f === 'roocode' || f === '.roocode' || f === 'roo') return '.roocode';
|
|
27
|
-
if (f === 'generic' || f === 'markdown' || f === 'raw') return 'generic';
|
|
28
|
-
return fw;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
function mapScope(scope) {
|
|
32
|
-
if (!scope || scope === 'all' || scope === 'full') return ALL_DOMAINS;
|
|
33
|
-
if (scope.includes(',')) {
|
|
34
|
-
const list = scope.split(',').map(s => s.trim().toLowerCase()).filter(Boolean);
|
|
35
|
-
const valid = list.filter(d => ALL_DOMAINS.includes(d));
|
|
36
|
-
return valid.length > 0 ? valid : ALL_DOMAINS;
|
|
37
|
-
}
|
|
38
|
-
const single = scope.trim().toLowerCase();
|
|
39
|
-
if (ALL_DOMAINS.includes(single)) return [single];
|
|
40
|
-
return ALL_DOMAINS;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
async function run() {
|
|
44
|
-
const rawArgs = process.argv.slice(2);
|
|
45
|
-
let cliFramework = null;
|
|
46
|
-
let cliScope = null;
|
|
47
|
-
let skipConfirm = false;
|
|
48
|
-
|
|
49
|
-
for (let i = 0; i < rawArgs.length; i++) {
|
|
50
|
-
const a = rawArgs[i];
|
|
51
|
-
if (a === '--framework' || a === '-f' || a === '--agent') {
|
|
52
|
-
cliFramework = normalizeFramework(rawArgs[++i]);
|
|
53
|
-
} else if (a === '--scope' || a === '-s' || a === '--domains') {
|
|
54
|
-
cliScope = rawArgs[++i];
|
|
55
|
-
} else if (a === '--yes' || a === '-y') {
|
|
56
|
-
skipConfirm = true;
|
|
57
|
-
} else if (a === '--help' || a === '-h') {
|
|
58
|
-
console.log(`
|
|
59
|
-
Usage: npx @weavetab/skills@latest [options]
|
|
60
|
-
|
|
61
|
-
Options:
|
|
62
|
-
-f, --framework <name> Target agent framework (.agent, .cursor, .clinerules, .windsurf, .openclaw, .roocode, generic)
|
|
63
|
-
-s, --scope <folders> Folders to install (e.g. browser,security, or 'all')
|
|
64
|
-
-y, --yes Skip confirmation prompts (installs all folders)
|
|
65
|
-
-h, --help Show help
|
|
66
|
-
`);
|
|
67
|
-
process.exit(0);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
console.log('');
|
|
72
|
-
console.log(line);
|
|
73
|
-
console.log(`${B} Weavetab MCP Skills Engine${X} ${CB}v${WEAVETAB_VERSION}${X}`);
|
|
74
|
-
console.log(`${DM} Enterprise Domain-Driven Agent Intelligence${X}`);
|
|
75
|
-
console.log(line);
|
|
76
|
-
console.log('');
|
|
77
|
-
console.log(`${CB}
|
|
78
|
-
console.log(`${CB}
|
|
79
|
-
console.log(`${CB}
|
|
80
|
-
console.log('');
|
|
81
|
-
|
|
82
|
-
if (!skipConfirm && !cliFramework) {
|
|
83
|
-
const proceed = await confirm({
|
|
84
|
-
message: 'Does your workspace have @weavetab/mcp installed or configured?',
|
|
85
|
-
default: true
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
if (!proceed) {
|
|
89
|
-
console.log('');
|
|
90
|
-
console.log(`${DM} Run: npm install -g @weavetab/mcp${X}`);
|
|
91
|
-
console.log(`${DM} Documentation: https://weavetab.dev${X}`);
|
|
92
|
-
console.log('');
|
|
93
|
-
process.exit(0);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
console.log('');
|
|
98
|
-
|
|
99
|
-
// Step 1
|
|
100
|
-
let selectedDomains = ALL_DOMAINS;
|
|
101
|
-
if (cliScope) {
|
|
102
|
-
selectedDomains = mapScope(cliScope);
|
|
103
|
-
} else if (!skipConfirm) {
|
|
104
|
-
selectedDomains = await checkbox({
|
|
105
|
-
message: 'Select Domain Folders to Install (all selected by default, press Space to unselect)',
|
|
106
|
-
choices: [
|
|
107
|
-
{
|
|
108
|
-
name: 'browser (/browser)
|
|
109
|
-
value: 'browser',
|
|
110
|
-
checked: true
|
|
111
|
-
},
|
|
112
|
-
{
|
|
113
|
-
name: 'desktop (/desktop)
|
|
114
|
-
value: 'desktop',
|
|
115
|
-
checked: true
|
|
116
|
-
},
|
|
117
|
-
{
|
|
118
|
-
name: 'memory (/memory)
|
|
119
|
-
value: 'memory',
|
|
120
|
-
checked: true
|
|
121
|
-
},
|
|
122
|
-
{
|
|
123
|
-
name: 'resilience (/resilience)
|
|
124
|
-
value: 'resilience',
|
|
125
|
-
checked: true
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
name: 'security (/security)
|
|
129
|
-
value: 'security',
|
|
130
|
-
checked: true
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
name: 'plugins (/plugins)
|
|
134
|
-
value: 'plugins',
|
|
135
|
-
checked: true
|
|
136
|
-
},
|
|
137
|
-
{
|
|
138
|
-
name: 'network-and-perf (/network-and-perf)
|
|
139
|
-
value: 'network-and-perf',
|
|
140
|
-
checked: true
|
|
141
|
-
},
|
|
142
|
-
{
|
|
143
|
-
name: 'documents (/documents)
|
|
144
|
-
value: 'documents',
|
|
145
|
-
checked: true
|
|
146
|
-
},
|
|
147
|
-
{
|
|
148
|
-
name: 'developer (/developer)
|
|
149
|
-
value: 'developer',
|
|
150
|
-
checked: true
|
|
151
|
-
}
|
|
152
|
-
]
|
|
153
|
-
});
|
|
154
|
-
|
|
155
|
-
if (!selectedDomains || selectedDomains.length === 0) {
|
|
156
|
-
console.log(`${Y} No folders selected, defaulting to all domain folders.${X}`);
|
|
157
|
-
selectedDomains = ALL_DOMAINS;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
console.log('');
|
|
162
|
-
|
|
163
|
-
// Step 2
|
|
164
|
-
let targetFramework = cliFramework;
|
|
165
|
-
if (!targetFramework) {
|
|
166
|
-
targetFramework = await select({
|
|
167
|
-
message: 'Select Target AI Agent Framework',
|
|
168
|
-
choices: [
|
|
169
|
-
{
|
|
170
|
-
name: 'Antigravity (.agent/skills/<domain>/SKILL.md)',
|
|
171
|
-
value: '.agent',
|
|
172
|
-
description: 'Native Antigravity standard with YAML frontmatter discovery'
|
|
173
|
-
},
|
|
174
|
-
{
|
|
175
|
-
name: 'Cursor IDE (.cursor/rules/weavetab-<domain>.mdc)',
|
|
176
|
-
value: '.cursor',
|
|
177
|
-
description: 'Cursor rules with MDC frontmatter and glob matching'
|
|
178
|
-
},
|
|
179
|
-
{
|
|
180
|
-
name: 'Cline (.clinerules)',
|
|
181
|
-
value: '.clinerules',
|
|
182
|
-
description: 'Consolidated markdown file with domain dividers'
|
|
183
|
-
},
|
|
184
|
-
{
|
|
185
|
-
name: 'Windsurf IDE (.windsurf/rules/)',
|
|
186
|
-
value: '.windsurf',
|
|
187
|
-
description: 'Cascade / Windsurf project rules directory'
|
|
188
|
-
},
|
|
189
|
-
{
|
|
190
|
-
name: 'OpenClaw (.openclaw/skills/)',
|
|
191
|
-
value: '.openclaw',
|
|
192
|
-
description: 'OpenClaw autonomous agent skill packages'
|
|
193
|
-
},
|
|
194
|
-
{
|
|
195
|
-
name: 'RooCode (.roocode/rules/)',
|
|
196
|
-
value: '.roocode',
|
|
197
|
-
description: 'RooCode extension rules directory'
|
|
198
|
-
},
|
|
199
|
-
{
|
|
200
|
-
name: 'Raw Markdown (weavetab-skills/)',
|
|
201
|
-
value: 'generic',
|
|
202
|
-
description: 'Portable markdown directory for any LLM prompt'
|
|
203
|
-
}
|
|
204
|
-
]
|
|
205
|
-
});
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
console.log('');
|
|
209
|
-
console.log(`${DM} Installing ${selectedDomains.length} domain bundles...${X}`);
|
|
210
|
-
|
|
211
|
-
try {
|
|
212
|
-
const result = await installSkills({
|
|
213
|
-
targetFramework,
|
|
214
|
-
domains: selectedDomains,
|
|
215
|
-
includeRouter: true
|
|
216
|
-
});
|
|
217
|
-
|
|
218
|
-
console.log('');
|
|
219
|
-
console.log(line);
|
|
220
|
-
console.log(`${G}
|
|
221
|
-
console.log(`${CB} Step-0 ROUTER.md matrix ready for your AI agent.${X}`);
|
|
222
|
-
console.log(line);
|
|
223
|
-
console.log('');
|
|
224
|
-
} catch (e) {
|
|
225
|
-
console.log('');
|
|
226
|
-
console.error(`${R} Error:${X} ${e.message}`);
|
|
227
|
-
console.log('');
|
|
228
|
-
process.exit(1);
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
run();
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const { select, confirm, checkbox } = require('@inquirer/prompts');
|
|
4
|
+
const { installSkills, ALL_DOMAINS, WEAVETAB_VERSION } = require('../src/api.js');
|
|
5
|
+
|
|
6
|
+
// High-contrast modern ANSI styling
|
|
7
|
+
const B = '\x1b[38;2;99;102;241m'; // indigo primary
|
|
8
|
+
const CB = '\x1b[38;2;147;197;253m'; // sky cyan
|
|
9
|
+
const W = '\x1b[97m'; // bright white
|
|
10
|
+
const DM = '\x1b[2m'; // dim
|
|
11
|
+
const Y = '\x1b[33m'; // yellow
|
|
12
|
+
const G = '\x1b[32m'; // green
|
|
13
|
+
const R = '\x1b[31m'; // red
|
|
14
|
+
const X = '\x1b[0m'; // reset
|
|
15
|
+
|
|
16
|
+
const line = `${B}${'━'.repeat(58)}${X}`;
|
|
17
|
+
|
|
18
|
+
function normalizeFramework(fw) {
|
|
19
|
+
if (!fw) return null;
|
|
20
|
+
const f = fw.toLowerCase().trim();
|
|
21
|
+
if (f === 'antigravity' || f === '.agent' || f === 'agent') return '.agent';
|
|
22
|
+
if (f === 'cursor' || f === '.cursor') return '.cursor';
|
|
23
|
+
if (f === 'cline' || f === '.clinerules' || f === 'clinerules') return '.clinerules';
|
|
24
|
+
if (f === 'windsurf' || f === '.windsurf') return '.windsurf';
|
|
25
|
+
if (f === 'openclaw' || f === '.openclaw') return '.openclaw';
|
|
26
|
+
if (f === 'roocode' || f === '.roocode' || f === 'roo') return '.roocode';
|
|
27
|
+
if (f === 'generic' || f === 'markdown' || f === 'raw') return 'generic';
|
|
28
|
+
return fw;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function mapScope(scope) {
|
|
32
|
+
if (!scope || scope === 'all' || scope === 'full') return ALL_DOMAINS;
|
|
33
|
+
if (scope.includes(',')) {
|
|
34
|
+
const list = scope.split(',').map(s => s.trim().toLowerCase()).filter(Boolean);
|
|
35
|
+
const valid = list.filter(d => ALL_DOMAINS.includes(d));
|
|
36
|
+
return valid.length > 0 ? valid : ALL_DOMAINS;
|
|
37
|
+
}
|
|
38
|
+
const single = scope.trim().toLowerCase();
|
|
39
|
+
if (ALL_DOMAINS.includes(single)) return [single];
|
|
40
|
+
return ALL_DOMAINS;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
async function run() {
|
|
44
|
+
const rawArgs = process.argv.slice(2);
|
|
45
|
+
let cliFramework = null;
|
|
46
|
+
let cliScope = null;
|
|
47
|
+
let skipConfirm = false;
|
|
48
|
+
|
|
49
|
+
for (let i = 0; i < rawArgs.length; i++) {
|
|
50
|
+
const a = rawArgs[i];
|
|
51
|
+
if (a === '--framework' || a === '-f' || a === '--agent') {
|
|
52
|
+
cliFramework = normalizeFramework(rawArgs[++i]);
|
|
53
|
+
} else if (a === '--scope' || a === '-s' || a === '--domains') {
|
|
54
|
+
cliScope = rawArgs[++i];
|
|
55
|
+
} else if (a === '--yes' || a === '-y') {
|
|
56
|
+
skipConfirm = true;
|
|
57
|
+
} else if (a === '--help' || a === '-h') {
|
|
58
|
+
console.log(`
|
|
59
|
+
Usage: npx @weavetab/skills@latest [options]
|
|
60
|
+
|
|
61
|
+
Options:
|
|
62
|
+
-f, --framework <name> Target agent framework (.agent, .cursor, .clinerules, .windsurf, .openclaw, .roocode, generic)
|
|
63
|
+
-s, --scope <folders> Folders to install (e.g. browser,security, or 'all')
|
|
64
|
+
-y, --yes Skip confirmation prompts (installs all folders)
|
|
65
|
+
-h, --help Show help
|
|
66
|
+
`);
|
|
67
|
+
process.exit(0);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
console.log('');
|
|
72
|
+
console.log(line);
|
|
73
|
+
console.log(`${B} Weavetab MCP Skills Engine${X} ${CB}v${WEAVETAB_VERSION}${X}`);
|
|
74
|
+
console.log(`${DM} Enterprise Domain-Driven Agent Intelligence${X}`);
|
|
75
|
+
console.log(line);
|
|
76
|
+
console.log('');
|
|
77
|
+
console.log(`${CB} ✦ 41 Official MCP Tools Mapped${X}`);
|
|
78
|
+
console.log(`${CB} ✦ Universal Step-0 ROUTER.md Decision Matrix${X}`);
|
|
79
|
+
console.log(`${CB} ✦ Multi-Agent Adapters (Antigravity, Cursor, Cline, Windsurf)${X}`);
|
|
80
|
+
console.log('');
|
|
81
|
+
|
|
82
|
+
if (!skipConfirm && !cliFramework) {
|
|
83
|
+
const proceed = await confirm({
|
|
84
|
+
message: 'Does your workspace have @weavetab/mcp installed or configured?',
|
|
85
|
+
default: true
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
if (!proceed) {
|
|
89
|
+
console.log('');
|
|
90
|
+
console.log(`${DM} Run: npm install -g @weavetab/mcp${X}`);
|
|
91
|
+
console.log(`${DM} Documentation: https://weavetab.dev${X}`);
|
|
92
|
+
console.log('');
|
|
93
|
+
process.exit(0);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
console.log('');
|
|
98
|
+
|
|
99
|
+
// Step 1 — Select Domain Folders
|
|
100
|
+
let selectedDomains = ALL_DOMAINS;
|
|
101
|
+
if (cliScope) {
|
|
102
|
+
selectedDomains = mapScope(cliScope);
|
|
103
|
+
} else if (!skipConfirm) {
|
|
104
|
+
selectedDomains = await checkbox({
|
|
105
|
+
message: 'Select Domain Folders to Install (all selected by default, press Space to unselect)',
|
|
106
|
+
choices: [
|
|
107
|
+
{
|
|
108
|
+
name: 'browser (/browser) — Core DOM interaction, navigation, wait, tabs, input',
|
|
109
|
+
value: 'browser',
|
|
110
|
+
checked: true
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
name: 'desktop (/desktop) — Desktop & Electron apps, Slack, Discord, VS Code',
|
|
114
|
+
value: 'desktop',
|
|
115
|
+
checked: true
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
name: 'memory (/memory) — Site profiles, selector memory, session trails',
|
|
119
|
+
value: 'memory',
|
|
120
|
+
checked: true
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
name: 'resilience (/resilience) — Loop breaker, checkpoints, anti-captcha, recovery',
|
|
124
|
+
value: 'resilience',
|
|
125
|
+
checked: true
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
name: 'security (/security) — Permission boundaries, domain filters, secret injection',
|
|
129
|
+
value: 'security',
|
|
130
|
+
checked: true
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
name: 'plugins (/plugins) — Plugin management, discovery, dynamic tool loading',
|
|
134
|
+
value: 'plugins',
|
|
135
|
+
checked: true
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
name: 'network-and-perf (/network-and-perf) — HAR, network intercept, cookies, performance',
|
|
139
|
+
value: 'network-and-perf',
|
|
140
|
+
checked: true
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
name: 'documents (/documents) — Office documents, Word, Excel, PowerPoint, PDF',
|
|
144
|
+
value: 'documents',
|
|
145
|
+
checked: true
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
name: 'developer (/developer) — GitHub forensics, issue/PR inspection',
|
|
149
|
+
value: 'developer',
|
|
150
|
+
checked: true
|
|
151
|
+
}
|
|
152
|
+
]
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
if (!selectedDomains || selectedDomains.length === 0) {
|
|
156
|
+
console.log(`${Y} No folders selected, defaulting to all domain folders.${X}`);
|
|
157
|
+
selectedDomains = ALL_DOMAINS;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
console.log('');
|
|
162
|
+
|
|
163
|
+
// Step 2 — Select AI Agent Ecosystem
|
|
164
|
+
let targetFramework = cliFramework;
|
|
165
|
+
if (!targetFramework) {
|
|
166
|
+
targetFramework = await select({
|
|
167
|
+
message: 'Select Target AI Agent Framework',
|
|
168
|
+
choices: [
|
|
169
|
+
{
|
|
170
|
+
name: 'Antigravity (.agent/skills/<domain>/SKILL.md)',
|
|
171
|
+
value: '.agent',
|
|
172
|
+
description: 'Native Antigravity standard with YAML frontmatter discovery'
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
name: 'Cursor IDE (.cursor/rules/weavetab-<domain>.mdc)',
|
|
176
|
+
value: '.cursor',
|
|
177
|
+
description: 'Cursor rules with MDC frontmatter and glob matching'
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
name: 'Cline (.clinerules)',
|
|
181
|
+
value: '.clinerules',
|
|
182
|
+
description: 'Consolidated markdown file with domain dividers'
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
name: 'Windsurf IDE (.windsurf/rules/)',
|
|
186
|
+
value: '.windsurf',
|
|
187
|
+
description: 'Cascade / Windsurf project rules directory'
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
name: 'OpenClaw (.openclaw/skills/)',
|
|
191
|
+
value: '.openclaw',
|
|
192
|
+
description: 'OpenClaw autonomous agent skill packages'
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
name: 'RooCode (.roocode/rules/)',
|
|
196
|
+
value: '.roocode',
|
|
197
|
+
description: 'RooCode extension rules directory'
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
name: 'Raw Markdown (weavetab-skills/)',
|
|
201
|
+
value: 'generic',
|
|
202
|
+
description: 'Portable markdown directory for any LLM prompt'
|
|
203
|
+
}
|
|
204
|
+
]
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
console.log('');
|
|
209
|
+
console.log(`${DM} Installing ${selectedDomains.length} domain bundles...${X}`);
|
|
210
|
+
|
|
211
|
+
try {
|
|
212
|
+
const result = await installSkills({
|
|
213
|
+
targetFramework,
|
|
214
|
+
domains: selectedDomains,
|
|
215
|
+
includeRouter: true
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
console.log('');
|
|
219
|
+
console.log(line);
|
|
220
|
+
console.log(`${G} ✔ Success!${X} ${result}`);
|
|
221
|
+
console.log(`${CB} Step-0 ROUTER.md matrix ready for your AI agent.${X}`);
|
|
222
|
+
console.log(line);
|
|
223
|
+
console.log('');
|
|
224
|
+
} catch (e) {
|
|
225
|
+
console.log('');
|
|
226
|
+
console.error(`${R} Error:${X} ${e.message}`);
|
|
227
|
+
console.log('');
|
|
228
|
+
process.exit(1);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
run();
|