[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71MJNG4QD2D142END2ZXRFK":3,"skill-same:01M71MJNG4QD2D142END2ZXRFK":67},{"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":23,"publishedAt":37,"linkOnly":38,"markdownContent":39,"markdownBody":40,"frontMatter":41,"refName":45,"commitSha":46,"skillDirectory":47,"forksCount":48,"repositoryHtmlUrl":49,"repositoryHomepageUrl":6,"ownerHtmlUrl":50,"ownerBlogUrl":6,"ownerDescription":51,"updatedAt":52,"install":53,"resources":66},"01M71MJNG4QD2D142END2ZXRFK","NetSuite Automation",null,"NetSuite Automation: manage customers, sales orders, invoices, inventory, and records via Oracle NetSuite ERP with SuiteQL queries","q2805187159\u002FAnvil","q2805187159","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F105276843?v=4","01M71KF4TN999VNJX9FY9QT06A","铁甲勇士宋小宝","01M71KF4V97XXQ7AGES97R4Q9F",3,"MIT","https:\u002F\u002Fgithub.com\u002Fq2805187159\u002FAnvil\u002Fblob\u002Fmain\u002Fskills\u002Fcomposio-skills\u002Fnetsuite-automation\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,5,25,26,27,28,29,30,31,32,33,34,35,36],"netsuite","automation","erp","invoices","manage","inventory","records","oracle","sales","with","queries","via","orders","2026-11-10 10:56:23",false,"---\nname: NetSuite Automation\ndescription: \"NetSuite Automation: manage customers, sales orders, invoices, inventory, and records via Oracle NetSuite ERP with SuiteQL queries\"\nrequires:\n  mcp: [rube]\n---\n\n# NetSuite Automation\n\nAutomate Oracle NetSuite ERP operations including creating customers and sales orders, running SuiteQL queries, upserting records by external ID, and inspecting record metadata for comprehensive business management.\n\n**Toolkit docs:** [composio.dev\u002Ftoolkits\u002Fnetsuite](https:\u002F\u002Fcomposio.dev\u002Ftoolkits\u002Fnetsuite)\n\n---\n\n## Setup\n\nThis skill requires the **Rube MCP server** connected at `https:\u002F\u002Frube.app\u002Fmcp`.\n\nBefore executing any tools, ensure an active connection exists for the `netsuite` toolkit. If no connection is active, initiate one via `RUBE_MANAGE_CONNECTIONS`.\n\n---\n\n## Core Workflows\n\n### 1. Create Sales Orders\n\nCreate customer orders with line items including item references, quantities, and pricing.\n\n**Tool:** `NETSUITE_CREATE_SALES_ORDER`\n\n**Key Parameters:**\n- `entity` (required) -- Customer reference: `{\"id\": \"\u003Cinternal_id>\"}`\n- `item` (required) -- Container with `items` array, each containing:\n  - `item` (required) -- Item reference: `{\"id\": \"\u003Cinternal_id>\"}`\n  - `quantity` (required) -- Units to order (non-negative)\n  - `rate` -- Unit price (optional if item has default pricing)\n  - `amount` -- Total line amount (alternative to rate)\n  - `taxcode` -- Tax code reference: `{\"id\": \"\u003Cinternal_id>\"}` (required if SuiteTax enabled)\n  - `description` -- Line item notes\n- `tranDate` -- Transaction date in `YYYY-MM-DD` format\n- `memo` -- Header memo\n- `orderStatus` -- `\"A\"` (Pending Approval) or `\"B\"` (Pending Fulfillment)\n- `otherrefnum` -- External reference or PO number\n\n**Example:**\n```\nTool: NETSUITE_CREATE_SALES_ORDER\nArguments:\n  entity: {\"id\": \"1234\"}\n  item: {\n    \"items\": [\n      {\"item\": {\"id\": \"56\"}, \"quantity\": 10, \"rate\": 25.00},\n      {\"item\": {\"id\": \"78\"}, \"quantity\": 5, \"rate\": 50.00}\n    ]\n  }\n  tranDate: \"2026-02-11\"\n  memo: \"Q1 bulk order\"\n  orderStatus: \"B\"\n```\n\n---\n\n### 2. Run SuiteQL Queries\n\nExecute ad-hoc SQL queries against NetSuite data with server-side paging.\n\n**Tool:** `NETSUITE_RUN_SUITEQL_QUERY`\n\n**Key Parameters:**\n- `q` (required) -- SuiteQL SELECT statement\n- `limit` -- Rows per page (default varies)\n- `offset` -- Zero-based index of first row (must be a multiple of `limit`)\n\n**Examples:**\n```\nTool: NETSUITE_RUN_SUITEQL_QUERY\nArguments:\n  q: \"SELECT id, companyname, email FROM customer WHERE isinactive = 'F' ORDER BY companyname\"\n  limit: 100\n  offset: 0\n```\n\n```\nTool: NETSUITE_RUN_SUITEQL_QUERY\nArguments:\n  q: \"SELECT id, entitystatus, total FROM transaction WHERE type = 'SalesOrd' AND trandate >= '2026-01-01'\"\n  limit: 50\n```\n\n---\n\n### 3. Create and Manage Customers\n\nCreate new customer records with subsidiary assignment and contact details.\n\n**Tools:**\n- `NETSUITE_CREATE_CUSTOMER` -- Create a new customer\n- `NETSUITE_GET_CUSTOMER` -- Retrieve customer by internal ID\n- `NETSUITE_UPDATE_CUSTOMER` -- Update existing customer (PATCH semantics)\n\n**Key Parameters for `NETSUITE_CREATE_CUSTOMER`:**\n- `body` (required) -- JSON object with customer data. Required fields:\n  - `subsidiary` -- Object with `id` (subsidiary internal ID)\n  - Either `companyName` (for businesses) or `firstName` + `lastName` (for individuals)\n  - Optional: `email`, `phone`, `isPerson` (set to `\"T\"` for individuals), `comments`\n- `replace` -- Comma-separated sublist names to fully replace (e.g., `\"contacts,addressbook\"`)\n\n**Example:**\n```\nTool: NETSUITE_CREATE_CUSTOMER\nArguments:\n  body: {\n    \"companyName\": \"Acme Corp\",\n    \"subsidiary\": {\"id\": \"1\"},\n    \"email\": \"info@acme.com\",\n    \"phone\": \"555-0100\"\n  }\n```\n\n---\n\n### 4. Upsert Records by External ID\n\nCreate or update records idempotently using an external identifier. Essential for sync workflows.\n\n**Tool:** `NETSUITE_UPSERT_RECORD_BY_EXTERNAL_ID`\n\n**Key Parameters:**\n- `record_type` (required) -- Record type name, e.g., `\"customer\"`, `\"salesorder\"`, `\"customrecord_myrec\"`\n- `external_id` (required) -- External ID value (letters, numbers, underscore, hyphen only)\n- `body` (required) -- JSON object matching the record schema; include mandatory fields when creating\n\n**Example:**\n```\nTool: NETSUITE_UPSERT_RECORD_BY_EXTERNAL_ID\nArguments:\n  record_type: \"customer\"\n  external_id: \"CRM-CUST-42\"\n  body: {\n    \"companyName\": \"Acme Corp\",\n    \"subsidiary\": {\"id\": \"1\"},\n    \"email\": \"updated@acme.com\"\n  }\n```\n\n> **Warning:** Idempotency depends on consistent external ID usage. Mismatches silently create additional records instead of updating.\n\n---\n\n### 5. Inspect Record Metadata\n\nDiscover available fields, data types, constraints, and requirements before creating or updating records.\n\n**Tool:** `NETSUITE_GET_RECORD_METADATA`\n\n**Key Parameters:**\n- `record_type` (required) -- e.g., `\"customer\"`, `\"salesorder\"`, `\"invoice\"`, `\"vendor\"`, `\"employee\"`, `\"item\"`\n- `accept` -- `\"application\u002Fschema+json\"` (default, JSON Schema) or `\"application\u002Fswagger+json\"` (OpenAPI 3.0)\n\n**Example:**\n```\nTool: NETSUITE_GET_RECORD_METADATA\nArguments:\n  record_type: \"salesorder\"\n```\n\n---\n\n### 6. List and Filter Records\n\nRetrieve multiple records with optional filtering and pagination.\n\n**Tool:** `NETSUITE_LIST_RECORDS`\n\n**Key Parameters:**\n- `recordType` (required) -- e.g., `\"customer\"`, `\"salesorder\"`\n- `q` -- Filter expression using N\u002Fquery operators, e.g., `\"email START_WITH \\\"barbara\\\"\"`\n- `limit` -- Max records per page (1--1000, default 1000)\n- `offset` -- Zero-based index (must be divisible by limit)\n\n**Supporting Tools:**\n- `NETSUITE_FILTER_RECORD_COLLECTION` -- Alternative filtering (secondary to SuiteQL)\n- `NETSUITE_GET_RECORD_SELECTED_FIELDS` -- Retrieve specific fields only (reduced payload)\n\n---\n\n## Recommended Execution Plan\n\n1. **Inspect the record schema** using `NETSUITE_GET_RECORD_METADATA` to discover required fields\n2. **Search for existing records** using `NETSUITE_RUN_SUITEQL_QUERY` to avoid duplicates\n3. **Look up customer** by email using SuiteQL; fetch details with `NETSUITE_GET_CUSTOMER` if found\n4. **Create customer if needed** using `NETSUITE_CREATE_CUSTOMER` (ensure `subsidiary` is set)\n5. **Validate item internal IDs** using `NETSUITE_LIST_RECORDS` or SuiteQL\n6. **Create the sales order** using `NETSUITE_CREATE_SALES_ORDER` with validated references\n7. **Optionally upsert by external ID** using `NETSUITE_UPSERT_RECORD_BY_EXTERNAL_ID` for sync workflows\n8. **Verify results** using `NETSUITE_GET_RECORD_SELECTED_FIELDS` to confirm pricing\u002Ftotals\n\n---\n\n## Known Pitfalls\n\n| Pitfall | Detail |\n|---------|--------|\n| **Invalid item IDs** | `NETSUITE_CREATE_SALES_ORDER` throws USER_ERROR when item internal ID is invalid. Pre-validate via `NETSUITE_LIST_RECORDS` or `NETSUITE_RUN_SUITEQL_QUERY`. |\n| **Missing required fields** | `NETSUITE_CREATE_CUSTOMER` returns 400 when required fields (e.g., `subsidiary`) are missing. Always inspect with `NETSUITE_GET_RECORD_METADATA` first. |\n| **SuiteQL field names** | Query differences by account can cause empty results. Confirm field names via `NETSUITE_GET_RECORD_METADATA` when results look wrong. |\n| **Filter expression limits** | `NETSUITE_FILTER_RECORD_COLLECTION` may fail if filter syntax is unsupported. Treat as secondary to SuiteQL. |\n| **External ID idempotency** | `NETSUITE_UPSERT_RECORD_BY_EXTERNAL_ID` depends on consistent external IDs. Mismatches silently create duplicates instead of updating. |\n| **SuiteTax line items** | Accounts with SuiteTax enabled require `taxcode` on every line item. Omitting it causes creation failures. |\n\n---\n\n## Quick Reference\n\n| Tool Slug | Description |\n|-----------|-------------|\n| `NETSUITE_CREATE_SALES_ORDER` | Create a new sales order with line items |\n| `NETSUITE_RUN_SUITEQL_QUERY` | Execute ad-hoc SuiteQL queries with paging |\n| `NETSUITE_CREATE_CUSTOMER` | Create a new customer record |\n| `NETSUITE_GET_CUSTOMER` | Retrieve a customer by internal ID |\n| `NETSUITE_UPDATE_CUSTOMER` | Update an existing customer (PATCH) |\n| `NETSUITE_UPSERT_RECORD_BY_EXTERNAL_ID` | Create or update a record by external ID |\n| `NETSUITE_GET_RECORD_METADATA` | Inspect record schema and field definitions |\n| `NETSUITE_LIST_RECORDS` | List records with filtering and pagination |\n| `NETSUITE_FILTER_RECORD_COLLECTION` | Alternative record filtering |\n| `NETSUITE_GET_RECORD_SELECTED_FIELDS` | Retrieve specific fields from a record |\n\n---\n\n*Powered by [Composio](https:\u002F\u002Fcomposio.dev)*\n","# NetSuite Automation\n\nAutomate Oracle NetSuite ERP operations including creating customers and sales orders, running SuiteQL queries, upserting records by external ID, and inspecting record metadata for comprehensive business management.\n\n**Toolkit docs:** [composio.dev\u002Ftoolkits\u002Fnetsuite](https:\u002F\u002Fcomposio.dev\u002Ftoolkits\u002Fnetsuite)\n\n---\n\n## Setup\n\nThis skill requires the **Rube MCP server** connected at `https:\u002F\u002Frube.app\u002Fmcp`.\n\nBefore executing any tools, ensure an active connection exists for the `netsuite` toolkit. If no connection is active, initiate one via `RUBE_MANAGE_CONNECTIONS`.\n\n---\n\n## Core Workflows\n\n### 1. Create Sales Orders\n\nCreate customer orders with line items including item references, quantities, and pricing.\n\n**Tool:** `NETSUITE_CREATE_SALES_ORDER`\n\n**Key Parameters:**\n- `entity` (required) -- Customer reference: `{\"id\": \"\u003Cinternal_id>\"}`\n- `item` (required) -- Container with `items` array, each containing:\n  - `item` (required) -- Item reference: `{\"id\": \"\u003Cinternal_id>\"}`\n  - `quantity` (required) -- Units to order (non-negative)\n  - `rate` -- Unit price (optional if item has default pricing)\n  - `amount` -- Total line amount (alternative to rate)\n  - `taxcode` -- Tax code reference: `{\"id\": \"\u003Cinternal_id>\"}` (required if SuiteTax enabled)\n  - `description` -- Line item notes\n- `tranDate` -- Transaction date in `YYYY-MM-DD` format\n- `memo` -- Header memo\n- `orderStatus` -- `\"A\"` (Pending Approval) or `\"B\"` (Pending Fulfillment)\n- `otherrefnum` -- External reference or PO number\n\n**Example:**\n```\nTool: NETSUITE_CREATE_SALES_ORDER\nArguments:\n  entity: {\"id\": \"1234\"}\n  item: {\n    \"items\": [\n      {\"item\": {\"id\": \"56\"}, \"quantity\": 10, \"rate\": 25.00},\n      {\"item\": {\"id\": \"78\"}, \"quantity\": 5, \"rate\": 50.00}\n    ]\n  }\n  tranDate: \"2026-02-11\"\n  memo: \"Q1 bulk order\"\n  orderStatus: \"B\"\n```\n\n---\n\n### 2. Run SuiteQL Queries\n\nExecute ad-hoc SQL queries against NetSuite data with server-side paging.\n\n**Tool:** `NETSUITE_RUN_SUITEQL_QUERY`\n\n**Key Parameters:**\n- `q` (required) -- SuiteQL SELECT statement\n- `limit` -- Rows per page (default varies)\n- `offset` -- Zero-based index of first row (must be a multiple of `limit`)\n\n**Examples:**\n```\nTool: NETSUITE_RUN_SUITEQL_QUERY\nArguments:\n  q: \"SELECT id, companyname, email FROM customer WHERE isinactive = 'F' ORDER BY companyname\"\n  limit: 100\n  offset: 0\n```\n\n```\nTool: NETSUITE_RUN_SUITEQL_QUERY\nArguments:\n  q: \"SELECT id, entitystatus, total FROM transaction WHERE type = 'SalesOrd' AND trandate >= '2026-01-01'\"\n  limit: 50\n```\n\n---\n\n### 3. Create and Manage Customers\n\nCreate new customer records with subsidiary assignment and contact details.\n\n**Tools:**\n- `NETSUITE_CREATE_CUSTOMER` -- Create a new customer\n- `NETSUITE_GET_CUSTOMER` -- Retrieve customer by internal ID\n- `NETSUITE_UPDATE_CUSTOMER` -- Update existing customer (PATCH semantics)\n\n**Key Parameters for `NETSUITE_CREATE_CUSTOMER`:**\n- `body` (required) -- JSON object with customer data. Required fields:\n  - `subsidiary` -- Object with `id` (subsidiary internal ID)\n  - Either `companyName` (for businesses) or `firstName` + `lastName` (for individuals)\n  - Optional: `email`, `phone`, `isPerson` (set to `\"T\"` for individuals), `comments`\n- `replace` -- Comma-separated sublist names to fully replace (e.g., `\"contacts,addressbook\"`)\n\n**Example:**\n```\nTool: NETSUITE_CREATE_CUSTOMER\nArguments:\n  body: {\n    \"companyName\": \"Acme Corp\",\n    \"subsidiary\": {\"id\": \"1\"},\n    \"email\": \"info@acme.com\",\n    \"phone\": \"555-0100\"\n  }\n```\n\n---\n\n### 4. Upsert Records by External ID\n\nCreate or update records idempotently using an external identifier. Essential for sync workflows.\n\n**Tool:** `NETSUITE_UPSERT_RECORD_BY_EXTERNAL_ID`\n\n**Key Parameters:**\n- `record_type` (required) -- Record type name, e.g., `\"customer\"`, `\"salesorder\"`, `\"customrecord_myrec\"`\n- `external_id` (required) -- External ID value (letters, numbers, underscore, hyphen only)\n- `body` (required) -- JSON object matching the record schema; include mandatory fields when creating\n\n**Example:**\n```\nTool: NETSUITE_UPSERT_RECORD_BY_EXTERNAL_ID\nArguments:\n  record_type: \"customer\"\n  external_id: \"CRM-CUST-42\"\n  body: {\n    \"companyName\": \"Acme Corp\",\n    \"subsidiary\": {\"id\": \"1\"},\n    \"email\": \"updated@acme.com\"\n  }\n```\n\n> **Warning:** Idempotency depends on consistent external ID usage. Mismatches silently create additional records instead of updating.\n\n---\n\n### 5. Inspect Record Metadata\n\nDiscover available fields, data types, constraints, and requirements before creating or updating records.\n\n**Tool:** `NETSUITE_GET_RECORD_METADATA`\n\n**Key Parameters:**\n- `record_type` (required) -- e.g., `\"customer\"`, `\"salesorder\"`, `\"invoice\"`, `\"vendor\"`, `\"employee\"`, `\"item\"`\n- `accept` -- `\"application\u002Fschema+json\"` (default, JSON Schema) or `\"application\u002Fswagger+json\"` (OpenAPI 3.0)\n\n**Example:**\n```\nTool: NETSUITE_GET_RECORD_METADATA\nArguments:\n  record_type: \"salesorder\"\n```\n\n---\n\n### 6. List and Filter Records\n\nRetrieve multiple records with optional filtering and pagination.\n\n**Tool:** `NETSUITE_LIST_RECORDS`\n\n**Key Parameters:**\n- `recordType` (required) -- e.g., `\"customer\"`, `\"salesorder\"`\n- `q` -- Filter expression using N\u002Fquery operators, e.g., `\"email START_WITH \\\"barbara\\\"\"`\n- `limit` -- Max records per page (1--1000, default 1000)\n- `offset` -- Zero-based index (must be divisible by limit)\n\n**Supporting Tools:**\n- `NETSUITE_FILTER_RECORD_COLLECTION` -- Alternative filtering (secondary to SuiteQL)\n- `NETSUITE_GET_RECORD_SELECTED_FIELDS` -- Retrieve specific fields only (reduced payload)\n\n---\n\n## Recommended Execution Plan\n\n1. **Inspect the record schema** using `NETSUITE_GET_RECORD_METADATA` to discover required fields\n2. **Search for existing records** using `NETSUITE_RUN_SUITEQL_QUERY` to avoid duplicates\n3. **Look up customer** by email using SuiteQL; fetch details with `NETSUITE_GET_CUSTOMER` if found\n4. **Create customer if needed** using `NETSUITE_CREATE_CUSTOMER` (ensure `subsidiary` is set)\n5. **Validate item internal IDs** using `NETSUITE_LIST_RECORDS` or SuiteQL\n6. **Create the sales order** using `NETSUITE_CREATE_SALES_ORDER` with validated references\n7. **Optionally upsert by external ID** using `NETSUITE_UPSERT_RECORD_BY_EXTERNAL_ID` for sync workflows\n8. **Verify results** using `NETSUITE_GET_RECORD_SELECTED_FIELDS` to confirm pricing\u002Ftotals\n\n---\n\n## Known Pitfalls\n\n| Pitfall | Detail |\n|---------|--------|\n| **Invalid item IDs** | `NETSUITE_CREATE_SALES_ORDER` throws USER_ERROR when item internal ID is invalid. Pre-validate via `NETSUITE_LIST_RECORDS` or `NETSUITE_RUN_SUITEQL_QUERY`. |\n| **Missing required fields** | `NETSUITE_CREATE_CUSTOMER` returns 400 when required fields (e.g., `subsidiary`) are missing. Always inspect with `NETSUITE_GET_RECORD_METADATA` first. |\n| **SuiteQL field names** | Query differences by account can cause empty results. Confirm field names via `NETSUITE_GET_RECORD_METADATA` when results look wrong. |\n| **Filter expression limits** | `NETSUITE_FILTER_RECORD_COLLECTION` may fail if filter syntax is unsupported. Treat as secondary to SuiteQL. |\n| **External ID idempotency** | `NETSUITE_UPSERT_RECORD_BY_EXTERNAL_ID` depends on consistent external IDs. Mismatches silently create duplicates instead of updating. |\n| **SuiteTax line items** | Accounts with SuiteTax enabled require `taxcode` on every line item. Omitting it causes creation failures. |\n\n---\n\n## Quick Reference\n\n| Tool Slug | Description |\n|-----------|-------------|\n| `NETSUITE_CREATE_SALES_ORDER` | Create a new sales order with line items |\n| `NETSUITE_RUN_SUITEQL_QUERY` | Execute ad-hoc SuiteQL queries with paging |\n| `NETSUITE_CREATE_CUSTOMER` | Create a new customer record |\n| `NETSUITE_GET_CUSTOMER` | Retrieve a customer by internal ID |\n| `NETSUITE_UPDATE_CUSTOMER` | Update an existing customer (PATCH) |\n| `NETSUITE_UPSERT_RECORD_BY_EXTERNAL_ID` | Create or update a record by external ID |\n| `NETSUITE_GET_RECORD_METADATA` | Inspect record schema and field definitions |\n| `NETSUITE_LIST_RECORDS` | List records with filtering and pagination |\n| `NETSUITE_FILTER_RECORD_COLLECTION` | Alternative record filtering |\n| `NETSUITE_GET_RECORD_SELECTED_FIELDS` | Retrieve specific fields from a record |\n\n---\n\n*Powered by [Composio](https:\u002F\u002Fcomposio.dev)*\n",{"name":5,"requires":42,"description":7},{"mcp":43},[44],"rube","main","6ffadc67c9777282fa1f9330ec12ac8778064409","skills\u002Fcomposio-skills\u002Fnetsuite-automation",0,"https:\u002F\u002Fgithub.com\u002Fq2805187159\u002FAnvil","https:\u002F\u002Fgithub.com\u002Fq2805187159","Independent Researcher\r\n\r\nEmail: q2805187159@gmail.com\r\n\r\nGithub: q2805187159\r\n\r\nResearch Interests:\r\n- LLM Agents\r\n- Tool Routing\r\n- RAG","2026-06-24 18:31:41",{"source":8,"skillName":5,"commands":54,"prompt":64,"zipAvailable":65},[55,58,61],{"tool":56,"command":57},"npx","npx skills add q2805187159\u002FAnvil --skill \"NetSuite Automation\"",{"tool":59,"command":60},"bunx","bunx skills add q2805187159\u002FAnvil --skill \"NetSuite Automation\"",{"tool":62,"command":63},"pnpm","pnpm dlx skills add q2805187159\u002FAnvil --skill \"NetSuite Automation\"","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fq2805187159\u002FAnvil\u002Fblob\u002Fmain\u002Fskills\u002Fcomposio-skills\u002Fnetsuite-automation\u002FSKILL.md",true,[],[68,99,132,139,163,186],{"skillNo":69,"name":70,"nameZh":6,"description":71,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":72,"licenseFileUrl":73,"sourceHtmlUrl":74,"categories":75,"keywords":82,"publishedAt":37},"01M71NPWVVMB1AZ8XGKNJFT0YP","webapp-testing","Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fq2805187159\u002FAnvil\u002Fblob\u002Fmain\u002Fskills\u002Fwebapp-testing\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fq2805187159\u002FAnvil\u002Fblob\u002Fmain\u002Fskills\u002Fwebapp-testing\u002FSKILL.md",[76,79],{"categoryNo":77,"categoryName":78,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":80,"categoryName":81,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",[83,84,85,86,87,88,89,90,91,92,93,33,94,95,96,97,98],"webapp","testing","webapp testing","for","applications","local","frontend","debugging","toolkit","logs","browser","playwright","web","behavior","ui","screenshots",{"skillNo":100,"name":101,"nameZh":6,"description":102,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":103,"categories":104,"keywords":113,"publishedAt":37},"01M71NPTQ96H4XSZVZT422BNRB","web-design-guidelines","Review UI code for Web Interface Guidelines compliance. Use when asked to \"review my UI\", \"check accessibility\", \"audit design\", \"review UX\", or \"check my site against best practices\".","https:\u002F\u002Fgithub.com\u002Fq2805187159\u002FAnvil\u002Fblob\u002Fmain\u002Fskills\u002Fweb-design-guidelines\u002FSKILL.md",[105,108],{"categoryNo":106,"categoryName":107,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":109,"categoryName":110,"taxonomyType":111,"taxonomyTypeDesc":112},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[114,115,95,116,117,86,118,119,120,121,122,123,124,125,126,127,128,129,130,131],"guidelines","design","web design guidelines","web design","vercel","interface","web interface guidelines","use","when","best practices","file","code","review","check","compliance","audit","ux","accessibility",{"skillNo":133,"name":101,"nameZh":6,"description":102,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":138,"publishedAt":37},"01M71NPS2D31Y2BGFYA9DB7CE4","https:\u002F\u002Fgithub.com\u002Fq2805187159\u002FAnvil\u002Fblob\u002Fmain\u002Fskills\u002Fweb-design-guidelines copy\u002FSKILL.md",[136,137],{"categoryNo":106,"categoryName":107,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":109,"categoryName":110,"taxonomyType":111,"taxonomyTypeDesc":112},[114,115,95,116,117,86,118,119,120,121,122,123,124,125,126,127,128,129,130,131],{"skillNo":140,"name":141,"nameZh":6,"description":142,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":143,"categories":144,"keywords":149,"publishedAt":37},"01M71NPQ9DRT54QSQJ0BHBM3VG","video-generation","Use this skill when the user requests to generate, create, or imagine videos. Supports structured prompts and reference image for guided generation.","https:\u002F\u002Fgithub.com\u002Fq2805187159\u002FAnvil\u002Fblob\u002Fmain\u002Fskills\u002Fvideo-generation\u002FSKILL.md",[145,148],{"categoryNo":146,"categoryName":147,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[150,151,152,86,121,122,153,154,155,156,157,158,159,160,161,162],"Video","video generation","generation","image","create","imagine","requests","generate","videos","reference","prompts","user","structured",{"skillNo":164,"name":165,"nameZh":6,"description":166,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":167,"categories":168,"keywords":170,"publishedAt":37},"01M71NPN57CT154SWXAS52475X","youtube-downloader","Download YouTube videos with customizable quality and format options. Use this skill when the user asks to download, save, or grab YouTube videos. Supports various quality settings (best, 1080p, 720p, 480p, 360p), multiple formats (mp4, webm, mkv), and audio-only downloads as MP3.","https:\u002F\u002Fgithub.com\u002Fq2805187159\u002FAnvil\u002Fblob\u002Fmain\u002Fskills\u002Fvideo-downloader\u002FSKILL.md",[169],{"categoryNo":146,"categoryName":147,"taxonomyType":21,"taxonomyTypeDesc":22},[171,172,173,174,175,176,177,121,122,178,33,179,180,181,182,183,158,184,161,185],"youtube","youtube downloader","mp4","as","downloads","Audio","only","mp3","options","quality","format","settings","grab","formats","download",{"skillNo":187,"name":188,"nameZh":6,"description":189,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":190,"categories":191,"keywords":192,"publishedAt":37},"01M71NPKD95YB8N3J6J78QGFFW","verification-before-completion","Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always","https:\u002F\u002Fgithub.com\u002Fq2805187159\u002FAnvil\u002Fblob\u002Fmain\u002Fskills\u002Fverification-before-completion\u002FSKILL.md",[],[193,194,195,196,197,198,199,121,200,122,201,202,203,204,205,206],"verification","verification before completion","running","evidence","complete","prs","claim","assertions","committing","output","claims","work","about","commands"]