@weavetab/skills 2.5.0-beta.5 → 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.
Files changed (62) hide show
  1. package/README.md +108 -108
  2. package/ROUTER.md +43 -43
  3. package/bin/cli.js +232 -232
  4. package/browser/dom-strategy.md +121 -119
  5. package/browser/form-automation.md +84 -87
  6. package/browser/interaction-pipeline.md +242 -216
  7. package/browser/tab-and-window.md +136 -136
  8. package/desktop/desktop-targeting.md +85 -85
  9. package/desktop/electron-discovery.md +115 -115
  10. package/developer/github-forensics.md +89 -74
  11. package/dist/bundled/weavetab-all.md +1885 -1709
  12. package/dist/bundled/weavetab-browser.md +504 -479
  13. package/dist/bundled/weavetab-desktop.md +164 -164
  14. package/dist/bundled/weavetab-developer.md +77 -60
  15. package/dist/bundled/weavetab-documents.md +173 -131
  16. package/dist/bundled/weavetab-memory.md +259 -233
  17. package/dist/bundled/weavetab-network-and-perf.md +233 -206
  18. package/dist/bundled/weavetab-plugins.md +30 -25
  19. package/dist/bundled/weavetab-resilience.md +229 -201
  20. package/dist/bundled/weavetab-security.md +81 -75
  21. package/dist/granular/browser_dom-strategy.md +121 -119
  22. package/dist/granular/browser_form-automation.md +84 -87
  23. package/dist/granular/browser_interaction-pipeline.md +242 -216
  24. package/dist/granular/browser_tab-and-window.md +136 -136
  25. package/dist/granular/desktop_desktop-targeting.md +85 -85
  26. package/dist/granular/desktop_electron-discovery.md +115 -115
  27. package/dist/granular/developer_github-forensics.md +89 -74
  28. package/dist/granular/documents_canvas-and-visual-capture.md +117 -103
  29. package/dist/granular/documents_office-document-ingestion.md +91 -63
  30. package/dist/granular/memory_selector-memory-system.md +127 -127
  31. package/dist/granular/memory_session-trail.md +111 -95
  32. package/dist/granular/memory_site-learning.md +62 -53
  33. package/dist/granular/network-and-perf_device-and-environment.md +100 -87
  34. package/dist/granular/network-and-perf_network-intercept-and-mock.md +97 -84
  35. package/dist/granular/network-and-perf_performance-and-vitals.md +86 -84
  36. package/dist/granular/plugins_hooks-and-overrides.md +40 -35
  37. package/dist/granular/plugins_plugin-runtime.md +3 -3
  38. package/dist/granular/resilience_loop-breaker.md +72 -67
  39. package/dist/granular/resilience_session-time-travel.md +146 -131
  40. package/dist/granular/resilience_stale-ref-recovery.md +61 -53
  41. package/dist/granular/security_rbac-and-policies.md +50 -47
  42. package/dist/granular/security_secret-containment-protocol.md +62 -59
  43. package/documents/canvas-and-visual-capture.md +117 -103
  44. package/documents/office-document-ingestion.md +91 -63
  45. package/evals/evaluator.js +146 -146
  46. package/evals/scenarios.json +239 -239
  47. package/memory/selector-memory-system.md +127 -127
  48. package/memory/session-trail.md +111 -95
  49. package/memory/site-learning.md +62 -53
  50. package/network-and-perf/device-and-environment.md +100 -87
  51. package/network-and-perf/network-intercept-and-mock.md +97 -84
  52. package/network-and-perf/performance-and-vitals.md +86 -84
  53. package/package.json +4 -3
  54. package/plugins/hooks-and-overrides.md +40 -35
  55. package/plugins/plugin-runtime.md +3 -3
  56. package/resilience/loop-breaker.md +72 -67
  57. package/resilience/session-time-travel.md +146 -131
  58. package/resilience/stale-ref-recovery.md +61 -53
  59. package/security/rbac-and-policies.md +50 -47
  60. package/security/secret-containment-protocol.md +62 -59
  61. package/skills.json +26 -27
  62. 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}${'━'.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} ✦ 44 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();
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();