@weavetab/skills 2.5.0 → 2.5.2

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