[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7A9AHWMMACSAYG7VCKFSTAA":3,"skill-same:01M7A9AHWMMACSAYG7VCKFSTAA":63},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":28,"commitSha":29,"skillDirectory":30,"forksCount":14,"repositoryHtmlUrl":31,"repositoryHomepageUrl":6,"ownerHtmlUrl":32,"ownerBlogUrl":6,"ownerDescription":33,"updatedAt":34,"install":35,"resources":48},"01M7A9AHWMMACSAYG7VCKFSTAA","nemojs-skill",null,"Generates Nemo.js automation tests in JavaScript. PayPal's Selenium-based test framework for Node.js. Use when user mentions \"Nemo.js\", \"nemo automation\". Triggers on: \"Nemo.js\", \"nemo automation\", \"nemo test\", \"PayPal test framework\".","NeelakshSaxena\u002FVayu","NeelakshSaxena","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F87892838?v=4","01M7A3B9YFS6F6N9DD1787DT86","Neelaksh Saxena","01M7A3B9ZKBT09MNMPX2XN69BY",0,"MIT","https:\u002F\u002Fgithub.com\u002FNeelakshSaxena\u002FVayu\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fnemojs-skill\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\ndescription: \"Generates Nemo.js automation tests in JavaScript. PayPal's Selenium-based test framework for Node.js. Use when user mentions \\\"Nemo.js\\\", \\\"nemo automation\\\". Triggers on: \\\"Nemo.js\\\", \\\"nemo automation\\\", \\\"nemo test\\\", \\\"PayPal test framework\\\".\\n\"\nlicense: \"MIT\"\nmetadata: {\"author\":\"TestMu AI\",\"version\":\"1.0\"}\n---\n# Nemo.js Automation Skill\n\n> PayPal's Selenium-based test automation framework for Node.js.\n\nFor TestMu AI cloud execution, see [reference\u002Fcloud-integration.md](reference\u002Fcloud-integration.md) and [shared\u002Ftestmu-cloud-reference.md](..\u002Fshared\u002Ftestmu-cloud-reference.md).\n\n## Core Patterns\n\n### Basic Test (Mocha)\n\n```javascript\nconst Nemo = require('nemo');\nconst { expect } = require('chai');\n\ndescribe('Login Flow', function() {\n  this.timeout(30000);\n  let nemo;\n\n  before(async () => {\n    nemo = await Nemo();\n  });\n\n  after(async () => {\n    await nemo.driver.quit();\n  });\n\n  it('should login with valid credentials', async () => {\n    await nemo.driver.get(nemo.data.baseUrl + '\u002Flogin');\n    const email = await nemo.view._find('#email');\n    await email.sendKeys('user@test.com');\n    const password = await nemo.view._find('#password');\n    await password.sendKeys('password123');\n    await nemo.view._find('button[type=\"submit\"]').click();\n\n    await nemo.view._waitVisible('.dashboard', 10000);\n    const url = await nemo.driver.getCurrentUrl();\n    expect(url).to.include('\u002Fdashboard');\n  });\n\n  it('should show error for invalid credentials', async () => {\n    await nemo.driver.get(nemo.data.baseUrl + '\u002Flogin');\n    await nemo.view._find('#email').sendKeys('wrong@test.com');\n    await nemo.view._find('#password').sendKeys('wrong');\n    await nemo.view._find('button[type=\"submit\"]').click();\n\n    await nemo.view._waitVisible('.error', 5000);\n    const error = await nemo.view._find('.error');\n    const text = await error.getText();\n    expect(text).to.include('Invalid');\n  });\n});\n```\n\n### View Locators\n\n```javascript\nawait nemo.view._find('#css-id');                    \u002F\u002F CSS\nawait nemo.view._find('.class-name');                \u002F\u002F CSS class\nawait nemo.view._find('[data-testid=\"login\"]');     \u002F\u002F Data attribute\nawait nemo.view._find('xpath:\u002F\u002Fbutton[@type]');     \u002F\u002F XPath prefix\nawait nemo.view._waitVisible(locator, timeout);     \u002F\u002F Wait + find\nawait nemo.view._finds('.items');                    \u002F\u002F Find multiple\n```\n\n### Configuration (nemo.config.json)\n\n```json\n{\n  \"driver\": {\n    \"browser\": \"chrome\",\n    \"server\": \"http:\u002F\u002Flocalhost:4444\u002Fwd\u002Fhub\"\n  },\n  \"data\": {\n    \"baseUrl\": \"http:\u002F\u002Flocalhost:3000\"\n  },\n  \"view\": [\"locator\"],\n  \"plugins\": {\n    \"view\": { \"module\": \"nemo-view\" }\n  }\n}\n```\n\n### Cloud Execution on TestMu AI\n\nSet environment variables: `LT_USERNAME`, `LT_ACCESS_KEY`\n\n```json\n{\n  \"driver\": {\n    \"browser\": \"chrome\",\n    \"server\": \"https:\u002F\u002Fhub.lambdatest.com\u002Fwd\u002Fhub\",\n    \"serverCaps\": {\n      \"username\": \"${LT_USERNAME}\",\n      \"accessKey\": \"${LT_ACCESS_KEY}\"\n    },\n    \"capabilities\": {\n      \"LT:Options\": {\n        \"user\": \"${LT_USERNAME}\",\n        \"accessKey\": \"${LT_ACCESS_KEY}\",\n        \"build\": \"Nemo Build\",\n        \"name\": \"Nemo Test\",\n        \"platformName\": \"Windows 11\",\n        \"video\": true,\n        \"console\": true,\n        \"network\": true\n      }\n    }\n  }\n}\n```\n\n## Setup: `npm install nemo nemo-view --save-dev`\n## Run: `npx mocha test\u002F*.js --timeout 30000`\n\n## Deep Patterns\n\nFor advanced patterns, debugging guides, CI\u002FCD integration, and best practices,\nsee `reference\u002Fplaybook.md`.\n","# Nemo.js Automation Skill\n\n> PayPal's Selenium-based test automation framework for Node.js.\n\nFor TestMu AI cloud execution, see [reference\u002Fcloud-integration.md](reference\u002Fcloud-integration.md) and [shared\u002Ftestmu-cloud-reference.md](..\u002Fshared\u002Ftestmu-cloud-reference.md).\n\n## Core Patterns\n\n### Basic Test (Mocha)\n\n```javascript\nconst Nemo = require('nemo');\nconst { expect } = require('chai');\n\ndescribe('Login Flow', function() {\n  this.timeout(30000);\n  let nemo;\n\n  before(async () => {\n    nemo = await Nemo();\n  });\n\n  after(async () => {\n    await nemo.driver.quit();\n  });\n\n  it('should login with valid credentials', async () => {\n    await nemo.driver.get(nemo.data.baseUrl + '\u002Flogin');\n    const email = await nemo.view._find('#email');\n    await email.sendKeys('user@test.com');\n    const password = await nemo.view._find('#password');\n    await password.sendKeys('password123');\n    await nemo.view._find('button[type=\"submit\"]').click();\n\n    await nemo.view._waitVisible('.dashboard', 10000);\n    const url = await nemo.driver.getCurrentUrl();\n    expect(url).to.include('\u002Fdashboard');\n  });\n\n  it('should show error for invalid credentials', async () => {\n    await nemo.driver.get(nemo.data.baseUrl + '\u002Flogin');\n    await nemo.view._find('#email').sendKeys('wrong@test.com');\n    await nemo.view._find('#password').sendKeys('wrong');\n    await nemo.view._find('button[type=\"submit\"]').click();\n\n    await nemo.view._waitVisible('.error', 5000);\n    const error = await nemo.view._find('.error');\n    const text = await error.getText();\n    expect(text).to.include('Invalid');\n  });\n});\n```\n\n### View Locators\n\n```javascript\nawait nemo.view._find('#css-id');                    \u002F\u002F CSS\nawait nemo.view._find('.class-name');                \u002F\u002F CSS class\nawait nemo.view._find('[data-testid=\"login\"]');     \u002F\u002F Data attribute\nawait nemo.view._find('xpath:\u002F\u002Fbutton[@type]');     \u002F\u002F XPath prefix\nawait nemo.view._waitVisible(locator, timeout);     \u002F\u002F Wait + find\nawait nemo.view._finds('.items');                    \u002F\u002F Find multiple\n```\n\n### Configuration (nemo.config.json)\n\n```json\n{\n  \"driver\": {\n    \"browser\": \"chrome\",\n    \"server\": \"http:\u002F\u002Flocalhost:4444\u002Fwd\u002Fhub\"\n  },\n  \"data\": {\n    \"baseUrl\": \"http:\u002F\u002Flocalhost:3000\"\n  },\n  \"view\": [\"locator\"],\n  \"plugins\": {\n    \"view\": { \"module\": \"nemo-view\" }\n  }\n}\n```\n\n### Cloud Execution on TestMu AI\n\nSet environment variables: `LT_USERNAME`, `LT_ACCESS_KEY`\n\n```json\n{\n  \"driver\": {\n    \"browser\": \"chrome\",\n    \"server\": \"https:\u002F\u002Fhub.lambdatest.com\u002Fwd\u002Fhub\",\n    \"serverCaps\": {\n      \"username\": \"${LT_USERNAME}\",\n      \"accessKey\": \"${LT_ACCESS_KEY}\"\n    },\n    \"capabilities\": {\n      \"LT:Options\": {\n        \"user\": \"${LT_USERNAME}\",\n        \"accessKey\": \"${LT_ACCESS_KEY}\",\n        \"build\": \"Nemo Build\",\n        \"name\": \"Nemo Test\",\n        \"platformName\": \"Windows 11\",\n        \"video\": true,\n        \"console\": true,\n        \"network\": true\n      }\n    }\n  }\n}\n```\n\n## Setup: `npm install nemo nemo-view --save-dev`\n## Run: `npx mocha test\u002F*.js --timeout 30000`\n\n## Deep Patterns\n\nFor advanced patterns, debugging guides, CI\u002FCD integration, and best practices,\nsee `reference\u002Fplaybook.md`.\n",{"license":15,"metadata":24,"description":27},{"author":25,"version":26},"TestMu AI","1.0","Generates Nemo.js automation tests in JavaScript. PayPal's Selenium-based test framework for Node.js. Use when user mentions \"Nemo.js\", \"nemo automation\". Triggers on: \"Nemo.js\", \"nemo automation\", \"nemo test\", \"PayPal test framework\".\n","main","7540bbccf0c1ded6156a467b02c95b61ad62413f",".agents\u002Fskills\u002Fnemojs-skill","https:\u002F\u002Fgithub.com\u002FNeelakshSaxena\u002FVayu","https:\u002F\u002Fgithub.com\u002FNeelakshSaxena","Currently exploring the intersection of tech","2026-09-11 03:02:31",{"source":8,"skillName":5,"commands":36,"prompt":46,"zipAvailable":47},[37,40,43],{"tool":38,"command":39},"npx","npx skills add NeelakshSaxena\u002FVayu --skill nemojs-skill",{"tool":41,"command":42},"bunx","bunx skills add NeelakshSaxena\u002FVayu --skill nemojs-skill",{"tool":44,"command":45},"pnpm","pnpm dlx skills add NeelakshSaxena\u002FVayu --skill nemojs-skill","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FNeelakshSaxena\u002FVayu\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fnemojs-skill\u002FSKILL.md",true,[49,55,59],{"path":50,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":53,"sourceHtmlUrl":54},"reference\u002Fadvanced-patterns.md","REFERENCE","参考文档",2266,"https:\u002F\u002Fgithub.com\u002FNeelakshSaxena\u002FVayu\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fnemojs-skill\u002Freference\u002Fadvanced-patterns.md",{"path":56,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":57,"sourceHtmlUrl":58},"reference\u002Fcloud-integration.md",1172,"https:\u002F\u002Fgithub.com\u002FNeelakshSaxena\u002FVayu\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fnemojs-skill\u002Freference\u002Fcloud-integration.md",{"path":60,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":61,"sourceHtmlUrl":62},"reference\u002Fplaybook.md",7008,"https:\u002F\u002Fgithub.com\u002FNeelakshSaxena\u002FVayu\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fnemojs-skill\u002Freference\u002Fplaybook.md",[64,72,79,86,93,100],{"skillNo":65,"name":66,"nameZh":6,"description":67,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":68,"licenseFileUrl":6,"sourceHtmlUrl":69,"categories":70,"keywords":71,"publishedAt":19},"01M7ACCCVNCFKMA9X6D15X6G98","runpodctl","Runpod CLI for managing GPU\u002FCPU workloads from the terminal — pods, serverless endpoints, templates, network volumes, Hub deploys, models, SSH, and file transfer (send\u002Freceive). Use for terminal\u002FCI\u002Fscripting, Hub browse\u002Fdeploy, SSH setup, `doctor`, or when the Runpod MCP tools are not connected. For structured tool calls in an MCP-enabled session, prefer runpod-mcp.","Apache-2.0","https:\u002F\u002Fgithub.com\u002FNeelakshSaxena\u002FVayu\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Frunpodctl\u002FSKILL.md",[],[],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":68,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":78,"publishedAt":19},"01M7ACC63SRHEA5KMCHSMZK2TC","runpod","Start here for any Runpod task — running GPU\u002FCPU pods, deploying serverless endpoints, templates, network volumes, building images, or understanding how Runpod works. Routes to the right skill (runpod-mcp, runpodctl, flash, companion-clis, runpod-usage, runpod-templates, runpod-migrate) and indexes two dozen live-verified end-to-end examples (golden paths) — use it when the lane is unclear, and for any multi-step or provisioning task even when it is not.","https:\u002F\u002Fgithub.com\u002FNeelakshSaxena\u002FVayu\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Frunpod\u002FSKILL.md",[],[],{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":68,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":85,"publishedAt":19},"01M7ACC0Q1C89N9BZBV91CTQTF","runpod-usage","How Runpod works and how to work it — pods vs serverless, GPU\u002FVRAM selection, storage, building a container, networking, plus the agentic pod development loop (provision → ssh-exec → set up → poll readiness) and on-pod install hygiene (uv\u002Fapt). Use to answer \"how does X work\", \"which GPU\", \"how do I build a container\", or \"how do I stand up a workload on a pod\". Guidance, not a tool — execute with runpodctl, runpod-mcp, or flash.","https:\u002F\u002Fgithub.com\u002FNeelakshSaxena\u002FVayu\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Frunpod-usage\u002FSKILL.md",[],[],{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":68,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":92,"publishedAt":19},"01M7ACBRPE345GF5GM5B8P8RRC","runpod-templates","Runpod's official prebuilt pod templates (ComfyUI, PyTorch, and others): what each image ships, which ports and paths it uses, how to pick one, how to pin a version, and what is missing on first boot. Use when a task says \"run \u003CX> on a pod\" and an official template already covers it, instead of building an image — and when a user needs help with or wants to fix something about a Runpod template they are already running (won't boot, can't reach the UI, missing models, wrong CUDA line, broken ComfyUI workflow metadata on imported workflows): start here and route onward. Deploy with runpodctl or runpod-mcp; end-to-end walkthroughs live in the runpod router's golden paths.","https:\u002F\u002Fgithub.com\u002FNeelakshSaxena\u002FVayu\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Frunpod-templates\u002FSKILL.md",[],[],{"skillNo":94,"name":95,"nameZh":6,"description":96,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":68,"licenseFileUrl":6,"sourceHtmlUrl":97,"categories":98,"keywords":99,"publishedAt":19},"01M7ACBJATHKVX1TWES2F44GY8","runpod-migrate","Migrate a codebase from the Runpod GraphQL API or REST v1 to REST v2 — inventory which parts use which API version, rewrite the call sites, flag breaking changes, and verify. Use when someone asks to move to v2, asks what v2 would change, or asks which Runpod API their code is on. For managing infrastructure rather than migrating code, use runpod-mcp or runpodctl.","https:\u002F\u002Fgithub.com\u002FNeelakshSaxena\u002FVayu\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Frunpod-migrate\u002FSKILL.md",[],[],{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":68,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":106,"publishedAt":19},"01M7ACBC7GHVH6T9YEAPCG2AP8","runpod-mcp","Manage Runpod infrastructure — pods, serverless endpoints, jobs, templates, network volumes, container-registry auth, GPU\u002FCPU catalog, and billing — via the Runpod MCP server's structured tool calls. Use when the Runpod MCP tools (create-pod, list-endpoints, …) are connected in this session, or to connect them (hosted OAuth or local npx). Prefer this over runpodctl for plain infra CRUD when MCP is available; use runpodctl for the terminal, file transfer, or SSH setup.","https:\u002F\u002Fgithub.com\u002FNeelakshSaxena\u002FVayu\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Frunpod-mcp\u002FSKILL.md",[],[]]