@weavetab/skills 1.0.0 → 1.0.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 CHANGED
@@ -34,7 +34,7 @@ The interactive menu will guide you to select your agent framework (`.agents`, `
34
34
 
35
35
  ## 💻 Programmatic API
36
36
 
37
- If you are building your own CLI or using the core `wb setup` command, you can install skills programmatically:
37
+ If you are building your own CLI or using the core `wt setup` command, you can install skills programmatically:
38
38
 
39
39
  ```javascript
40
40
  const { installSkills } = require('@weavetab/skills');
package/bin/cli.js CHANGED
@@ -18,7 +18,7 @@ const line = `${B}${'─'.repeat(52)}${X}`;
18
18
  async function run() {
19
19
  console.log('');
20
20
  console.log(line);
21
- console.log(`${B} Weavetab MCP Skills${X} ${DM}v1.0.0${X}`);
21
+ console.log(`${B} Weavetab MCP Skills${X} ${DM}v1.0.1${X}`);
22
22
  console.log(`${DM} Interactive skill installer for AI agents${X}`);
23
23
  console.log(line);
24
24
  console.log('');
@@ -44,7 +44,7 @@ async function run() {
44
44
 
45
45
  // Step 1 — Select category
46
46
  console.log(`${B} Available tiers:${X}`);
47
- console.log(`${G} [1] General${X} Core browser automation patterns (10 skills)`);
47
+ console.log(`${G} [1] General${X} Core browser automation patterns (15 skills)`);
48
48
  console.log(`${DM} [2] Automation Coming soon${X}`);
49
49
  console.log(`${DM} [3] Advanced Coming soon${X}`);
50
50
  console.log('');
@@ -55,7 +55,7 @@ async function run() {
55
55
  {
56
56
  name: 'General',
57
57
  value: 'general',
58
- description: '10 skills -> login, forms, scraping, navigation, uploads, and more'
58
+ description: '15 skills -> login, forms, scraping, navigation, uploads, and more'
59
59
  }
60
60
  ]
61
61
  });
@@ -1,13 +1,13 @@
1
1
  ---
2
2
  id: captcha-evasion
3
3
  tier: general
4
- triggers: []
5
- tools: []
4
+ triggers: ["captcha", "recaptcha", "hcaptcha", "bot check", "verification"]
5
+ tools: ["browser_wait", "browser_click", "browser_map", "browser_snapshot", "browser_ask"]
6
6
  weavetab: ">=2.5.0"
7
7
  ---
8
- # CAPTCHA Evasion & Handling
8
+ # 🤖 Bot Challenge Handling
9
+ **Core Philosophy:** You will encounter anti-bot systems. Handle them gracefully.
9
10
 
10
- 1. **Detection**: If `browser_navigate` stalls or `browser_map` reveals "Verify you are human" or Cloudflare interstitial pages, you have hit an anti-bot check.
11
- 2. **Slow Down**: Do not spam clicks or rapid navigations. Stop and use `browser_wait({ delay: 5000 })` to let the automatic human-simulation heuristics in Weavetab MCP attempt to solve it in the background.
12
- 3. **Manual Solve**: If it requires clicking a checkbox (e.g. Turnstile or reCAPTCHA), find the iframe or checkbox ID via `browser_map`, and use `browser_click` with `intent: "click captcha checkbox"`.
13
- 4. **Bypass**: Avoid triggering them by not using `force: true` or `fast: true` flags unless necessary, as they bypass Weavetab MCP's built-in stealth patterns.
11
+ - **Identify the Threat:** If a page suddenly looks weird, check for Cloudflare, reCAPTCHA, or hCaptcha challenge screens.
12
+ - **Attempt Resolution:** Some captchas are simple "Click to verify you are human" checkboxes. You can often `browser_click` these successfully.
13
+ - **Know Your Limits:** If you hit a complex image grid captcha, do not guess blindly. Use `browser_ask` to prompt the user for help, or wait and see if the challenge resolves itself. You are autonomous, but you know when to ask for human assistance.
@@ -0,0 +1,13 @@
1
+ ---
2
+ id: context-awareness
3
+ tier: general
4
+ triggers: ["analyze page", "understand context", "what is on the page", "read page", "visualize"]
5
+ tools: ["browser_snapshot", "browser_map", "browser_evaluate"]
6
+ weavetab: ">=2.5.0"
7
+ ---
8
+ # 👁️ Deep Context Awareness
9
+ **Core Philosophy:** Don't just look at the DOM; understand the semantic meaning of the page.
10
+
11
+ - **Holistic Understanding:** Before taking action on a complex page, take a moment to understand its structure. Where is the navigation? Where is the main content? Where is the sidebar?
12
+ - **Visual vs. Semantic:** Remember that what is visually prominent might be buried deep in the DOM. Use `browser_snapshot` to reconcile the visual layout with the structural DOM.
13
+ - **Read Between the Lines:** If a user asks you to "buy the cheapest item", you need to autonomously scan the page, extract prices, compare them, and then take action. Be smart.
@@ -0,0 +1,13 @@
1
+ ---
2
+ id: cookie-consent
3
+ tier: general
4
+ triggers: ["cookie banner", "consent", "gdpr", "accept cookies", "popup", "overlay"]
5
+ tools: ["browser_find", "browser_click", "browser_map"]
6
+ weavetab: ">=2.5.0"
7
+ ---
8
+ # 🍪 Autonomous Consent Handling
9
+ **Core Philosophy:** Cookie banners and popups are the bane of web automation. Destroy them.
10
+
11
+ - **Detect and Destroy:** When you land on a new site, the very first thing you should look for is a giant overlay blocking the content.
12
+ - **Accept or Reject:** If the user hasn't specified a preference, you have the autonomy to click "Accept All", "Got it", or "Reject All" just to get the banner out of the way so you can do your actual job.
13
+ - **Don't Let Them Stop You:** If a modal overlay prevents you from clicking the element you actually want, prioritize dismissing the modal first.
@@ -0,0 +1,13 @@
1
+ ---
2
+ id: data-extraction
3
+ tier: general
4
+ triggers: ["extract", "scrape", "get data", "read data", "fetch info", "parse"]
5
+ tools: ["browser_scrape", "browser_evaluate", "browser_snapshot", "browser_map"]
6
+ weavetab: ">=2.5.0"
7
+ ---
8
+ # 🗃️ Intelligent Data Extraction
9
+ **Core Philosophy:** You are a master of transforming messy web pages into structured data.
10
+
11
+ - **Go Beyond the Surface:** Don't just scrape text. Look for hidden metadata, `aria-labels`, and data attributes that might contain cleaner information.
12
+ - **Use JavaScript:** If the DOM is too chaotic to scrape cleanly using standard tools, you have the autonomy to use `browser_evaluate` to run a custom JavaScript snippet to extract exactly what you need.
13
+ - **Synthesize:** If the user asks for a summary of a product, don't just dump the raw description. Extract the price, the reviews, the specs, and synthesize it into a clean, easy-to-read report.
@@ -0,0 +1,13 @@
1
+ ---
2
+ id: dynamic-interaction
3
+ tier: general
4
+ triggers: ["hover", "drag", "complex interaction", "dropdown", "menu", "slider"]
5
+ tools: ["browser_pointer", "browser_map", "browser_click", "browser_evaluate"]
6
+ weavetab: ">=2.5.0"
7
+ ---
8
+ # 🖱️ Complex UI Interactions
9
+ **Core Philosophy:** Modern web apps require more than just clicking and typing.
10
+
11
+ - **Hover States:** Mega-menus and tooltips require hovering. Use `browser_pointer` to move the mouse over elements to reveal hidden interactions.
12
+ - **Drag and Drop:** Sliders, kanban boards, and reorderable lists require drag-and-drop. Calculate the coordinates and execute smooth pointer movements.
13
+ - **Be Human-Like:** When interacting with highly dynamic UI components, sometimes it helps to pause briefly between actions to allow animations and transitions to complete.
@@ -0,0 +1,13 @@
1
+ ---
2
+ id: error-recovery
3
+ tier: general
4
+ triggers: ["error", "fail", "timeout", "crash", "not found", "stuck", "fix"]
5
+ tools: ["browser_snapshot", "browser_map", "browser_console", "browser_wait"]
6
+ weavetab: ">=2.5.0"
7
+ ---
8
+ # 🚑 Autonomous Error Recovery
9
+ **Core Philosophy:** Errors are inevitable. Your strength is in how you recover from them.
10
+
11
+ - **Don't Panic:** If a tool call fails (e.g., element not found, timeout), do not immediately give up and ask the user.
12
+ - **Investigate:** Take a `browser_snapshot` to see what the page actually looks like. Check the `browser_console` for JavaScript errors that might explain why the page is broken.
13
+ - **Pivot and Retry:** Did the page layout change? Find the new selector. Did a modal pop up and steal focus? Close it. You have the autonomy to troubleshoot and try alternative approaches before admitting defeat.
@@ -1,12 +1,13 @@
1
1
  ---
2
2
  id: file-upload
3
3
  tier: general
4
- triggers: []
5
- tools: []
4
+ triggers: ["upload", "file upload", "attach file", "drag and drop", "input file"]
5
+ tools: ["browser_upload", "browser_map", "browser_click", "browser_find"]
6
6
  weavetab: ">=2.5.0"
7
7
  ---
8
- # File Upload Pattern
8
+ # 📤 Resilient File Uploading
9
+ **Core Philosophy:** File uploads can be triggered via hidden inputs, drag-and-drop zones, or complex JS widgets.
9
10
 
10
- 1. **Map**: Find the file input element (`<input type="file">`) using `browser_map`. It may be hidden beneath a stylized button.
11
- 2. **Upload**: Use `browser_upload` with the absolute path to your local file and the input's ref ID. Do NOT try to `browser_click` the upload button to open an OS dialog—that will stall the agent.
12
- 3. **Verify**: Check for upload progress indicators or success messages via `browser_map({ delta: true })`.
11
+ - **Find the Real Input:** Often, the visible "Upload" button is just a styled div. You need to find the actual `<input type="file">`. Use `browser_find` or `browser_map` to hunt it down.
12
+ - **Use the Native Tool:** Once found, use `browser_upload` to attach the file directly to the input element.
13
+ - **Creative Fallbacks:** If `browser_upload` fails because the input is deeply obscured, look for alternative ways to upload (e.g., providing a URL if the site allows it, or alerting the user that manual intervention is needed for this specific widget).
@@ -1,13 +1,16 @@
1
1
  ---
2
2
  id: form-filling
3
3
  tier: general
4
- triggers: []
5
- tools: []
4
+ triggers: ["fill form", "submit form", "form", "input", "textarea", "dropdown", "select", "checkbox"]
5
+ tools: ["browser_map", "browser_fill", "browser_type", "browser_select", "browser_click"]
6
6
  weavetab: ">=2.5.0"
7
7
  ---
8
- # Form Filling Pattern
8
+ # 📝 Dynamic Form Handling
9
+ **Core Philosophy:** Forms are often dynamic, fragile, and aggressively validated. Handle them with care and intelligence.
9
10
 
10
- 1. **Map the Form**: Call `browser_map({ scope: "form" })` to gather all interactive element IDs. Do not map the entire page if you only need the form.
11
- 2. **Batch Fill**: If possible, batch your input using `browser_fill` across multiple fields to save time.
12
- 3. **Selects**: Use `browser_select` for dropdowns, not `browser_click`.
13
- 4. **Submit**: Click the submit button and check the response for `confirmed: true`. Wait for network idle or DOM changes using `browser_wait`.
11
+ - **Map and Plan:** Use `browser_map({ scope: "form" })` to get the lay of the land. Plan your data entry.
12
+ - **Adapt to the UI:**
13
+ - For standard fields, `browser_fill` is fast and efficient.
14
+ - For tricky rich-text editors or masked inputs, fall back to `browser_type`.
15
+ - Use `browser_select` for dropdowns, but be prepared to use `browser_click` if it's a custom div-based dropdown.
16
+ - **Validation Awareness:** Pay attention to the DOM! If a field turns red, stop and fix it. Don't blindly submit a form with errors. If you see a disabled submit button, figure out which required field you missed.
@@ -1,13 +1,13 @@
1
1
  ---
2
2
  id: guardrails
3
3
  tier: general
4
- triggers: []
5
- tools: []
4
+ triggers: ["search", "browse", "github", "web", "navigate", "read repo"]
5
+ tools: ["browser_navigate", "browser_map", "github_analyze", "github_read"]
6
6
  weavetab: ">=2.5.0"
7
7
  ---
8
- # Weavetab MCP Guardrails
9
- **CRITICAL INSTRUCTIONS FOR AI AGENT:**
8
+ # 🛡️ Guardrails & Autonomy
9
+ **Core Philosophy:** You are a highly capable agent. Use your best judgment when deciding whether to use Weavetab MCP or your native tools.
10
10
 
11
- 1. **Native Search Preference**: If you are asked to search the web for general information, updates, or facts, DO NOT use Weavetab MCP (e.g., `browser_navigate` to google.com) if you already possess a native web search tool. Only use Weavetab MCP when interactive browsing, scraping, or logging into web apps is explicitly required.
12
- 2. **Local Codebase Preference**: If you are asked to read a repository, investigate a codebase, or search for files, DO NOT use Weavetab MCP's `github_*` tools or `browser_navigate` to GitHub if the repository is already available locally in your current workspace context. Use native file reading tools (`view_file`, `grep_search`, `list_dir`) instead.
13
- 3. **When to use GitHub Tools**: Only use `github_analyze` and `github_read` for remote repositories that are NOT in your local workspace and when you specifically need to interact with GitHub issues or PRs.
11
+ - **Native Tools First:** If you need to do a simple web search or read a local codebase, rely on your native capabilities first. They are often faster.
12
+ - **When to Engage Weavetab:** Activate Weavetab MCP when you need deep, interactive browsing, rendering complex SPA pages, interacting with forms, or scraping structured data.
13
+ - **Creative Problem Solving:** Don't just follow paths blindly. If a site blocks you, pivot. Try a different search term, a different URL, or evaluate the DOM to find alternative routes. You have the autonomy to solve the problem how you see fit.
@@ -1,12 +1,13 @@
1
1
  ---
2
2
  id: iframe-handling
3
3
  tier: general
4
- triggers: []
5
- tools: []
4
+ triggers: ["iframe", "frame", "embed", "embedded content", "cross origin"]
5
+ tools: ["browser_map", "browser_find", "browser_click", "browser_snapshot", "browser_navigate"]
6
6
  weavetab: ">=2.5.0"
7
7
  ---
8
- # Iframe Handling Pattern
8
+ # 🖼️ iFrame & Embedded Contexts
9
+ **Core Philosophy:** iFrames are websites within websites. You must traverse them intelligently.
9
10
 
10
- 1. **Identify Iframes**: If an element you expect (like a Stripe credit card field) isn't visible in `browser_map`, it might be inside a cross-origin iframe. Look for `[w:XX] iframe` elements in the map.
11
- 2. **Target Iframe**: Weavetab MCP's `browser_map` automatically tries to pierce iframes, but cross-origin security may block it. If an iframe is blocked, you cannot click elements inside it using standard `id` refs.
12
- 3. **Fallback**: Use `browser_eval` to execute JS within the context of the page if you need to manipulate iframe communication via `postMessage`, or notify the user that manual intervention is required for secure cross-origin iframes.
11
+ - **Spot the Frame:** Payment gateways, video players, and embedded widgets live in iFrames. If you can't find an element that you *know* is on screen, it's probably in an iFrame.
12
+ - **Navigate the Hierarchy:** Use your tools to target elements *inside* the iFrame context.
13
+ - **Creative Extraction:** If an iFrame is being particularly stubborn, consider extracting its `src` attribute and using `browser_navigate` to visit the embedded page directly in a new tab.
@@ -1,12 +1,13 @@
1
1
  ---
2
2
  id: infinite-scroll
3
3
  tier: general
4
- triggers: []
5
- tools: []
4
+ triggers: ["infinite scroll", "load more", "scroll", "pagination", "lazy load"]
5
+ tools: ["browser_scroll", "browser_map", "browser_snapshot", "browser_wait"]
6
6
  weavetab: ">=2.5.0"
7
7
  ---
8
- # Infinite Scroll Pattern
8
+ # 📜 Infinite Scroll Navigation
9
+ **Core Philosophy:** Some data is hidden behind the scrollbar. You must be proactive in revealing it.
9
10
 
10
- 1. **Scroll**: Use `browser_scroll({ direction: "down", amount: "page" })`.
11
- 2. **Detect Change**: Use `browser_map({ delta: true })` to check if new items appeared in the DOM.
12
- 3. **Loop Control**: Keep track of the total items found. If `browser_map` returns no new delta after a scroll, you have reached the bottom or need to `browser_wait` for the network. Do not loop endlessly.
11
+ - **Scroll and Observe:** Use `browser_scroll` to move down the page. Don't just scroll once—if you're looking for a specific item, loop your scroll and `browser_wait` until the network fetches the new items.
12
+ - **Know When to Stop:** Monitor the DOM. If you scroll and the total height of the page doesn't change after a few seconds, you've likely hit the bottom.
13
+ - **Load More Buttons:** Infinite scroll is sometimes replaced by "Load More" buttons. Be vigilant—if scrolling isn't working, look for a button to click instead.
@@ -1,14 +1,16 @@
1
1
  ---
2
2
  id: login-flow
3
3
  tier: general
4
- triggers: []
5
- tools: []
4
+ triggers: ["login", "sign in", "authenticate", "credentials", "log in", "username", "password"]
5
+ tools: ["browser_navigate", "browser_map", "browser_fill", "browser_type", "browser_click"]
6
6
  weavetab: ">=2.5.0"
7
7
  ---
8
- # Login Flow Pattern
8
+ # 🔑 Autonomous Login Flow
9
+ **Core Philosophy:** Authentication flows vary wildly across the web. You must adapt to the specific site's architecture.
9
10
 
10
- 1. **Navigate**: Use `browser_navigate` to reach the login page.
11
- 2. **Map**: Call `browser_map({ scope: "form" })` to get the ref IDs of the inputs and submit button. Cache these IDs.
12
- 3. **Fill**: Use `browser_fill` or `browser_type` to enter credentials using the ref IDs.
13
- 4. **Submit**: Use `browser_click` on the submit button's ref ID. Do not press "Enter" blindly unless you confirm the form submits.
14
- 5. **Verify**: Use `browser_map({ delta: true })` to verify the page changed (e.g., checking for a logout button or dashboard elements).
11
+ 1. **Assess the Landscape:** When you land on a login page, use `browser_map` to understand the layout. Is it a single form? A multi-step flow? A social login?
12
+ 2. **Execute Creatively:**
13
+ - Use `browser_fill` for standard forms.
14
+ - If inputs are hidden or complex, use `browser_type` to simulate human keystrokes.
15
+ 3. **Handle Friction:** Expect captchas, 2FA prompts, or weird redirects. If the submit button doesn't work, try pressing Enter natively or looking for hidden validation errors.
16
+ 4. **Verify State:** Always confirm you actually logged in by checking for authenticated UI elements (like a dashboard or avatar) before declaring success.
@@ -1,13 +1,13 @@
1
1
  ---
2
2
  id: multi-tab-management
3
3
  tier: general
4
- triggers: []
5
- tools: []
4
+ triggers: ["new tab", "open tab", "switch tab", "multiple tabs", "popup", "window"]
5
+ tools: ["browser_tabs", "browser_navigate", "browser_click", "browser_map"]
6
6
  weavetab: ">=2.5.0"
7
7
  ---
8
- # Multi-Tab Management Pattern
8
+ # 🗂️ Advanced Tab Management
9
+ **Core Philosophy:** Modern workflows require multitasking. Manage your browser tabs like a pro.
9
10
 
10
- 1. **List Tabs**: Call `browser_tabs()` to get a list of all open tabs and their `tab_id`s.
11
- 2. **Switch Context**: Most Weavetab MCP tools (like `browser_map`, `browser_click`) accept a `tab_id` parameter. Pass the specific `tab_id` to execute actions in a background tab without needing to bring it to the foreground.
12
- 3. **Handle Popups**: If clicking a link opens a new tab, run `browser_tabs()` to identify the new tab, then target it with `tab_id`. Do NOT assume the new tab automatically becomes the active target unless specified.
13
- 4. **Cleanup**: Close tabs when no longer needed using `browser_tabs({ action: "close", tab_id: "..." })` to preserve memory and token context.
11
+ - **Keep Context:** If you need to reference documentation while interacting with an app, open it in a new tab. Use `browser_tabs` to seamlessly switch between them.
12
+ - **Handle Popups:** Sites will often open OAuth flows or external links in new tabs automatically. Be aware of your current active tab and switch contexts when necessary.
13
+ - **Clean Up:** Don't leave 50 tabs open. Close tabs you no longer need to keep your working memory and the browser clean.
@@ -1,12 +1,13 @@
1
1
  ---
2
2
  id: spa-navigation
3
3
  tier: general
4
- triggers: []
5
- tools: []
4
+ triggers: ["spa", "single page", "react", "vue", "angular", "navigate", "route", "dynamic page"]
5
+ tools: ["browser_navigate", "browser_wait", "browser_map", "browser_snapshot", "browser_click"]
6
6
  weavetab: ">=2.5.0"
7
7
  ---
8
- # SPA Navigation Pattern
8
+ # 🧭 Single Page Application (SPA) Mastery
9
+ **Core Philosophy:** SPAs mutate the DOM asynchronously. You cannot rely on traditional page loads.
9
10
 
10
- 1. **Click**: Use `browser_click` to navigate within a Single Page Application (SPA).
11
- 2. **Delta Map**: Do NOT call `browser_navigate` for internal SPA links. Call `browser_map({ delta: true })` after the click to see ONLY what changed in the DOM.
12
- 3. **Wait**: If elements aren't ready, use `browser_wait` for network idle rather than arbitrary sleep timeouts.
11
+ - **Patience is Key:** After clicking a link or a button in an SPA, the URL might change, but the network request might still be pending. Use `browser_wait` to ensure the DOM has settled.
12
+ - **Watch the DOM:** Instead of waiting blindly, look for loading spinners or skeleton screens. When they disappear, the content is ready.
13
+ - **State Awareness:** SPAs maintain state. If you get lost, you can often use the browser's back button or look for breadcrumbs to re-orient yourself.
@@ -1,12 +1,13 @@
1
1
  ---
2
2
  id: table-scraping
3
3
  tier: general
4
- triggers: []
5
- tools: []
4
+ triggers: ["scrape table", "extract table", "table data", "csv", "rows", "columns", "spreadsheet"]
5
+ tools: ["browser_scrape", "browser_map", "browser_snapshot", "browser_navigate"]
6
6
  weavetab: ">=2.5.0"
7
7
  ---
8
- # Table Scraping Pattern
8
+ # 📊 Intelligent Table Scraping
9
+ **Core Philosophy:** Data rarely looks exactly how you want it to. Be a smart data extractor.
9
10
 
10
- 1. **Locate**: Use `browser_map({ prune: true })` to locate the table container.
11
- 2. **Scrape**: Do not manually click through pages or read the DOM raw. Use `browser_scrape` targeting the table structure to extract row data cleanly into JSON.
12
- 3. **Pagination**: If scraping multiple pages, map the "Next" button ID once, then loop: `browser_scrape` -> `browser_click` (Next) -> verify change -> repeat.
11
+ - **Identify the Target:** Tables aren't always `<table>` elements. Look for CSS grids, flexboxes, and repeating list structures.
12
+ - **Scrape Smartly:** Use `browser_scrape` to pull structured data. If the table is paginated, you have the autonomy to loop through pages and compile the data into a single comprehensive dataset.
13
+ - **Data Cleanup:** When you extract the data, don't just dump it. Clean it up. Format it nicely (e.g., Markdown tables or CSV) for the user. If headers are weird, infer what they mean and rename them.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@weavetab/skills",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Supercharge your AI Agents with Weavetab MCP Skills. Native drop-in skills for Antigravity, Cursor, Cline, and more.",
5
5
  "author": "fy2ne",
6
6
  "repository": {
package/skills.json CHANGED
@@ -3,80 +3,305 @@
3
3
  {
4
4
  "id": "captcha-evasion",
5
5
  "tier": "general",
6
- "triggers": [],
7
- "tools": [],
6
+ "triggers": [
7
+ "captcha",
8
+ "recaptcha",
9
+ "hcaptcha",
10
+ "bot check",
11
+ "verification"
12
+ ],
13
+ "tools": [
14
+ "browser_wait",
15
+ "browser_click",
16
+ "browser_map",
17
+ "browser_snapshot",
18
+ "browser_ask"
19
+ ],
8
20
  "weavetab": ">=2.5.0",
9
21
  "filePath": "general/captcha-evasion.md"
10
22
  },
23
+ {
24
+ "id": "context-awareness",
25
+ "tier": "general",
26
+ "triggers": [
27
+ "analyze page",
28
+ "understand context",
29
+ "what is on the page",
30
+ "read page",
31
+ "visualize"
32
+ ],
33
+ "tools": [
34
+ "browser_snapshot",
35
+ "browser_map",
36
+ "browser_evaluate"
37
+ ],
38
+ "weavetab": ">=2.5.0",
39
+ "filePath": "general/context-awareness.md"
40
+ },
41
+ {
42
+ "id": "cookie-consent",
43
+ "tier": "general",
44
+ "triggers": [
45
+ "cookie banner",
46
+ "consent",
47
+ "gdpr",
48
+ "accept cookies",
49
+ "popup",
50
+ "overlay"
51
+ ],
52
+ "tools": [
53
+ "browser_find",
54
+ "browser_click",
55
+ "browser_map"
56
+ ],
57
+ "weavetab": ">=2.5.0",
58
+ "filePath": "general/cookie-consent.md"
59
+ },
60
+ {
61
+ "id": "data-extraction",
62
+ "tier": "general",
63
+ "triggers": [
64
+ "extract",
65
+ "scrape",
66
+ "get data",
67
+ "read data",
68
+ "fetch info",
69
+ "parse"
70
+ ],
71
+ "tools": [
72
+ "browser_scrape",
73
+ "browser_evaluate",
74
+ "browser_snapshot",
75
+ "browser_map"
76
+ ],
77
+ "weavetab": ">=2.5.0",
78
+ "filePath": "general/data-extraction.md"
79
+ },
80
+ {
81
+ "id": "dynamic-interaction",
82
+ "tier": "general",
83
+ "triggers": [
84
+ "hover",
85
+ "drag",
86
+ "complex interaction",
87
+ "dropdown",
88
+ "menu",
89
+ "slider"
90
+ ],
91
+ "tools": [
92
+ "browser_pointer",
93
+ "browser_map",
94
+ "browser_click",
95
+ "browser_evaluate"
96
+ ],
97
+ "weavetab": ">=2.5.0",
98
+ "filePath": "general/dynamic-interaction.md"
99
+ },
100
+ {
101
+ "id": "error-recovery",
102
+ "tier": "general",
103
+ "triggers": [
104
+ "error",
105
+ "fail",
106
+ "timeout",
107
+ "crash",
108
+ "not found",
109
+ "stuck",
110
+ "fix"
111
+ ],
112
+ "tools": [
113
+ "browser_snapshot",
114
+ "browser_map",
115
+ "browser_console",
116
+ "browser_wait"
117
+ ],
118
+ "weavetab": ">=2.5.0",
119
+ "filePath": "general/error-recovery.md"
120
+ },
11
121
  {
12
122
  "id": "file-upload",
13
123
  "tier": "general",
14
- "triggers": [],
15
- "tools": [],
124
+ "triggers": [
125
+ "upload",
126
+ "file upload",
127
+ "attach file",
128
+ "drag and drop",
129
+ "input file"
130
+ ],
131
+ "tools": [
132
+ "browser_upload",
133
+ "browser_map",
134
+ "browser_click",
135
+ "browser_find"
136
+ ],
16
137
  "weavetab": ">=2.5.0",
17
138
  "filePath": "general/file-upload.md"
18
139
  },
19
140
  {
20
141
  "id": "form-filling",
21
142
  "tier": "general",
22
- "triggers": [],
23
- "tools": [],
143
+ "triggers": [
144
+ "fill form",
145
+ "submit form",
146
+ "form",
147
+ "input",
148
+ "textarea",
149
+ "dropdown",
150
+ "select",
151
+ "checkbox"
152
+ ],
153
+ "tools": [
154
+ "browser_map",
155
+ "browser_fill",
156
+ "browser_type",
157
+ "browser_select",
158
+ "browser_click"
159
+ ],
24
160
  "weavetab": ">=2.5.0",
25
161
  "filePath": "general/form-filling.md"
26
162
  },
27
163
  {
28
164
  "id": "guardrails",
29
165
  "tier": "general",
30
- "triggers": [],
31
- "tools": [],
166
+ "triggers": [
167
+ "search",
168
+ "browse",
169
+ "github",
170
+ "web",
171
+ "navigate",
172
+ "read repo"
173
+ ],
174
+ "tools": [
175
+ "browser_navigate",
176
+ "browser_map",
177
+ "github_analyze",
178
+ "github_read"
179
+ ],
32
180
  "weavetab": ">=2.5.0",
33
181
  "filePath": "general/guardrails.md"
34
182
  },
35
183
  {
36
184
  "id": "iframe-handling",
37
185
  "tier": "general",
38
- "triggers": [],
39
- "tools": [],
186
+ "triggers": [
187
+ "iframe",
188
+ "frame",
189
+ "embed",
190
+ "embedded content",
191
+ "cross origin"
192
+ ],
193
+ "tools": [
194
+ "browser_map",
195
+ "browser_find",
196
+ "browser_click",
197
+ "browser_snapshot",
198
+ "browser_navigate"
199
+ ],
40
200
  "weavetab": ">=2.5.0",
41
201
  "filePath": "general/iframe-handling.md"
42
202
  },
43
203
  {
44
204
  "id": "infinite-scroll",
45
205
  "tier": "general",
46
- "triggers": [],
47
- "tools": [],
206
+ "triggers": [
207
+ "infinite scroll",
208
+ "load more",
209
+ "scroll",
210
+ "pagination",
211
+ "lazy load"
212
+ ],
213
+ "tools": [
214
+ "browser_scroll",
215
+ "browser_map",
216
+ "browser_snapshot",
217
+ "browser_wait"
218
+ ],
48
219
  "weavetab": ">=2.5.0",
49
220
  "filePath": "general/infinite-scroll.md"
50
221
  },
51
222
  {
52
223
  "id": "login-flow",
53
224
  "tier": "general",
54
- "triggers": [],
55
- "tools": [],
225
+ "triggers": [
226
+ "login",
227
+ "sign in",
228
+ "authenticate",
229
+ "credentials",
230
+ "log in",
231
+ "username",
232
+ "password"
233
+ ],
234
+ "tools": [
235
+ "browser_navigate",
236
+ "browser_map",
237
+ "browser_fill",
238
+ "browser_type",
239
+ "browser_click"
240
+ ],
56
241
  "weavetab": ">=2.5.0",
57
242
  "filePath": "general/login-flow.md"
58
243
  },
59
244
  {
60
245
  "id": "multi-tab-management",
61
246
  "tier": "general",
62
- "triggers": [],
63
- "tools": [],
247
+ "triggers": [
248
+ "new tab",
249
+ "open tab",
250
+ "switch tab",
251
+ "multiple tabs",
252
+ "popup",
253
+ "window"
254
+ ],
255
+ "tools": [
256
+ "browser_tabs",
257
+ "browser_navigate",
258
+ "browser_click",
259
+ "browser_map"
260
+ ],
64
261
  "weavetab": ">=2.5.0",
65
262
  "filePath": "general/multi-tab-management.md"
66
263
  },
67
264
  {
68
265
  "id": "spa-navigation",
69
266
  "tier": "general",
70
- "triggers": [],
71
- "tools": [],
267
+ "triggers": [
268
+ "spa",
269
+ "single page",
270
+ "react",
271
+ "vue",
272
+ "angular",
273
+ "navigate",
274
+ "route",
275
+ "dynamic page"
276
+ ],
277
+ "tools": [
278
+ "browser_navigate",
279
+ "browser_wait",
280
+ "browser_map",
281
+ "browser_snapshot",
282
+ "browser_click"
283
+ ],
72
284
  "weavetab": ">=2.5.0",
73
285
  "filePath": "general/spa-navigation.md"
74
286
  },
75
287
  {
76
288
  "id": "table-scraping",
77
289
  "tier": "general",
78
- "triggers": [],
79
- "tools": [],
290
+ "triggers": [
291
+ "scrape table",
292
+ "extract table",
293
+ "table data",
294
+ "csv",
295
+ "rows",
296
+ "columns",
297
+ "spreadsheet"
298
+ ],
299
+ "tools": [
300
+ "browser_scrape",
301
+ "browser_map",
302
+ "browser_snapshot",
303
+ "browser_navigate"
304
+ ],
80
305
  "weavetab": ">=2.5.0",
81
306
  "filePath": "general/table-scraping.md"
82
307
  }