[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-a7ace3ef-a947-49a4-9ed0-51b92ae38472":3,"$faOsQQLneEJwgyvCEVvmxZ1Qqzrm2_XTuUX6tqrJBdz4":42},{"id":4,"title":5,"description":6,"categoryId":7,"moduleId":8,"tags":9,"prompt":10,"icon":11,"source":12,"sourceUrl":13,"authorId":14,"authorName":15,"isPublic":16,"stars":17,"runs":18,"createdAt":19,"updatedAt":19,"module":20,"category":27,"packages":33},"a7ace3ef-a947-49a4-9ed0-51b92ae38472","zapier-make-patterns","无代码自动化让工作流程构建民主化。Zapier和Make","cat_coding_backend","mod_coding","sickn33,coding","---\nname: zapier-make-patterns\ndescription: No-code automation democratizes workflow building. Zapier and Make\n  (formerly Integromat) let non-developers automate business processes without\n  writing code. But no-code doesn't mean no-complexity - these platforms have\n  their own patterns, pitfalls, and breaking points.\nrisk: unknown\nsource: vibeship-spawner-skills (Apache 2.0)\ndate_added: 2026-02-27\n---\n\n# Zapier & Make Patterns\n\nNo-code automation democratizes workflow building. Zapier and Make (formerly\nIntegromat) let non-developers automate business processes without writing\ncode. But no-code doesn't mean no-complexity - these platforms have their\nown patterns, pitfalls, and breaking points.\n\nThis skill covers when to use which platform, how to build reliable\nautomations, and when to graduate to code-based solutions. Key insight:\nZapier optimizes for simplicity and integrations (7000+ apps), Make\noptimizes for power and cost-efficiency (visual branching, operations-based\npricing).\n\nCritical distinction: No-code works until it doesn't. Know the limits.\n\n## Principles\n\n- Start simple, add complexity only when needed\n- Test with real data before going live\n- Document every automation with clear naming\n- Monitor errors - 95% error rate auto-disables Zaps\n- Know when to graduate to code-based solutions\n- Operations\u002Ftasks cost money - design efficiently\n\n## Capabilities\n\n- zapier\n- make\n- integromat\n- no-code-automation\n- zaps\n- scenarios\n- workflow-builders\n- business-process-automation\n\n## Scope\n\n- code-based-workflows → workflow-automation\n- browser-automation → browser-automation\n- custom-integrations → backend\n- api-development → api-designer\n\n## Tooling\n\n### Platforms\n\n- Zapier - When: Simple automations, maximum app coverage, beginners Note: 7000+ integrations, linear workflows, task-based pricing\n- Make - When: Complex workflows, visual branching, budget-conscious Note: Visual scenarios, operations pricing, powerful data handling\n- n8n - When: Self-hosted, code-friendly, unlimited operations Note: Open-source, can add custom code, technical users\n\n### Ai_features\n\n- Zapier Agents - When: AI-powered autonomous automation Note: Natural language instructions, 7000+ app access\n- Zapier Copilot - When: Building Zaps with AI assistance Note: Describes workflow, AI builds it\n- Zapier MCP - When: LLM tools accessing Zapier actions Note: 30,000+ actions available to AI models\n\n## Patterns\n\n### Basic Trigger-Action Pattern\n\nSingle trigger leads to one or more actions\n\n**When to use**: Simple notifications, data sync, basic workflows\n\n# BASIC TRIGGER-ACTION:\n\n\"\"\"\n[Trigger] → [Action]\n  e.g., New Email → Create Task\n\"\"\"\n\n## Zapier Example\n\"\"\"\nZap Name: \"Gmail New Email → Todoist Task\"\n\nTRIGGER: Gmail - New Email\n  - From: specific-sender@example.com\n  - Has attachment: yes\n\nACTION: Todoist - Create Task\n  - Project: Inbox\n  - Content: {{Email Subject}}\n  - Description: From: {{Email From}}\n  - Due date: Tomorrow\n\"\"\"\n\n## Make Example\n\"\"\"\nScenario: \"Gmail to Todoist\"\n\n[Gmail: Watch Emails] → [Todoist: Create a Task]\n\nGmail Module:\n  - Folder: INBOX\n  - From: specific-sender@example.com\n\nTodoist Module:\n  - Project ID: (select from dropdown)\n  - Content: {{1.subject}}\n  - Due String: tomorrow\n\"\"\"\n\n### Best Practices:\n- Use descriptive Zap\u002FScenario names\n- Test with real sample data\n- Use filters to prevent unwanted runs\n\n### Multi-Step Sequential Pattern\n\nChain of actions executed in order\n\n**When to use**: Multi-app workflows, data enrichment pipelines\n\n# MULTI-STEP SEQUENTIAL:\n\n\"\"\"\n[Trigger] → [Action 1] → [Action 2] → [Action 3]\nEach step's output available to subsequent steps\n\"\"\"\n\n## Zapier Multi-Step Zap\n\"\"\"\nZap: \"New Lead → CRM → Slack → Email\"\n\n1. TRIGGER: Typeform - New Entry\n   - Form: Lead Capture Form\n\n2. ACTION: HubSpot - Create Contact\n   - Email: {{Typeform Email}}\n   - First Name: {{Typeform First Name}}\n   - Lead Source: \"Website Form\"\n\n3. ACTION: Slack - Send Channel Message\n   - Channel: #sales-leads\n   - Message: \"New lead: {{Typeform Name}} from {{Typeform Company}}\"\n\n4. ACTION: Gmail - Send Email\n   - To: {{Typeform Email}}\n   - Subject: \"Thanks for reaching out!\"\n   - Body: (template with personalization)\n\"\"\"\n\n## Make Scenario\n\"\"\"\n[Typeform] → [HubSpot] → [Slack] → [Gmail]\n\n- Each module passes data to the next\n- Use {{N.field}} to reference module N's output\n- Add error handlers between critical steps\n\"\"\"\n\n### Conditional Branching Pattern\n\nDifferent actions based on conditions\n\n**When to use**: Different handling for different data types\n\n# CONDITIONAL BRANCHING:\n\n\"\"\"\n              ┌→ [Action A] (condition met)\n[Trigger] ───┤\n              └→ [Action B] (condition not met)\n\"\"\"\n\n## Zapier Paths (Pro+ required)\n\"\"\"\nZap: \"Route Support Tickets\"\n\n1. TRIGGER: Zendesk - New Ticket\n\n2. PATH A: If priority = \"urgent\"\n   - Slack: Post to #urgent-support\n   - PagerDuty: Create incident\n\n3. PATH B: If priority = \"normal\"\n   - Slack: Post to #support\n   - Asana: Create task\n\n4. PATH C: Otherwise (catch-all)\n   - Slack: Post to #support-overflow\n\"\"\"\n\n## Make Router\n\"\"\"\n[Zendesk: Watch Tickets]\n      ↓\n[Router]\n   ├── Route 1: priority = urgent\n   │     └→ [Slack] → [PagerDuty]\n   │\n   ├── Route 2: priority = normal\n   │     └→ [Slack] → [Asana]\n   │\n   └── Fallback route\n         └→ [Slack: overflow]\n\n# Make's visual router makes complex branching clear\n\"\"\"\n\n### Best Practices:\n- Always have a fallback\u002Felse path\n- Test each path independently\n- Document which conditions trigger which path\n\n### Data Transformation Pattern\n\nClean, format, and transform data between apps\n\n**When to use**: Apps expect different data formats\n\n# DATA TRANSFORMATION:\n\n## Zapier Formatter\n\"\"\"\nCommon transformations:\n\n1. Text manipulation:\n   - Split text: \"John Doe\" → First: \"John\", Last: \"Doe\"\n   - Capitalize: \"john\" → \"John\"\n   - Replace: Remove special characters\n\n2. Date formatting:\n   - Convert: \"2024-01-15\" → \"January 15, 2024\"\n   - Adjust: Add 7 days to date\n\n3. Numbers:\n   - Format currency: 1000 → \"$1,000.00\"\n   - Spreadsheet formula: =SUM(A1:A10)\n\n4. Lookup tables:\n   - Map status codes: \"1\" → \"Active\", \"2\" → \"Pending\"\n\"\"\"\n\n## Make Data Functions\n\"\"\"\nMake has powerful built-in functions:\n\nText:\n  {{lower(1.email)}}           # Lowercase\n  {{substring(1.name; 0; 10)}} # First 10 chars\n  {{replace(1.text; \"-\"; \"\")}} # Remove dashes\n\nArrays:\n  {{first(1.items)}}           # First item\n  {{length(1.items)}}          # Count items\n  {{map(1.items; \"id\")}}       # Extract field\n\nDates:\n  {{formatDate(1.date; \"YYYY-MM-DD\")}}\n  {{addDays(now; 7)}}\n\nMath:\n  {{round(1.price * 0.8; 2)}}  # 20% discount, 2 decimals\n\"\"\"\n\n### Best Practices:\n- Transform early in the workflow\n- Use filters to skip invalid data\n- Log transformations for debugging\n\n### Error Handling Pattern\n\nGraceful handling of failures\n\n**When to use**: Any production automation\n\n# ERROR HANDLING:\n\n## Zapier Error Handling\n\"\"\"\n1. Built-in retry (automatic):\n   - Zapier retries failed actions automatically\n   - Exponential backoff for temporary failures\n\n2. Error handling step:\n   Zap:\n     1. [Trigger]\n     2. [Action that might fail]\n     3. [Error Handler]\n        - If error → [Slack: Alert team]\n        - If error → [Email: Send report]\n\n3. Path-based handling:\n   [Action] → Path A: Success → [Continue]\n            → Path B: Error → [Alert + Log]\n\"\"\"\n\n## Make Error Handlers\n\"\"\"\nMake has visual error handling:\n\n[Module] ──┬── Success → [Next Module]\n           │\n           └── Error → [Error Handler]\n\nError handler types:\n1. Break: Stop scenario, send notification\n2. Rollback: Undo completed operations\n3. Commit: Save partial results, continue\n4. Ignore: Skip error, continue with next item\n\nExample:\n[API Call] → Error Handler (Ignore)\n           → [Log to Airtable: \"Failed: {{error.message}}\"]\n           → Continue scenario\n\"\"\"\n\n### Best Practices:\n- Always add error handlers for external APIs\n- Log errors to a spreadsheet\u002Fdatabase\n- Set up Slack\u002Femail alerts for critical failures\n- Test failure scenarios, not just success\n\n### Batch Processing Pattern\n\nProcess multiple items efficiently\n\n**When to use**: Importing data, bulk operations\n\n# BATCH PROCESSING:\n\n## Zapier Looping\n\"\"\"\nZap: \"Process Order Items\"\n\n1. TRIGGER: Shopify - New Order\n   - Returns: order with line_items array\n\n2. LOOPING: For each item in line_items\n   - Create inventory adjustment\n   - Update product count\n   - Log to spreadsheet\n\nNote: Each loop iteration counts as tasks!\n10 items = 10 tasks consumed\n\"\"\"\n\n## Make Iterator\n\"\"\"\n[Webhook: Receive Order]\n      ↓\n[Iterator: line_items]\n      ↓ (processes each item)\n[Inventory: Adjust Stock]\n      ↓\n[Aggregator: Collect Results]\n      ↓\n[Slack: Summary Message]\n\nIterator creates one bundle per item.\nAggregator combines results back together.\nUse Array Aggregator for collecting processed items.\n\"\"\"\n\n### Best Practices:\n- Use aggregators to combine results\n- Consider batch limits (some APIs limit to 100)\n- Watch operation\u002Ftask counts for cost\n- Add delays for rate-limited APIs\n\n### Scheduled Automation Pattern\n\nTime-based triggers instead of events\n\n**When to use**: Daily reports, periodic syncs, batch jobs\n\n# SCHEDULED AUTOMATION:\n\n## Zapier Schedule Trigger\n\"\"\"\nZap: \"Daily Sales Report\"\n\nTRIGGER: Schedule by Zapier\n  - Every: Day\n  - Time: 8:00 AM\n  - Timezone: America\u002FNew_York\n\nACTIONS:\n  1. Google Sheets: Get rows (yesterday's sales)\n  2. Formatter: Calculate totals\n  3. Gmail: Send report to team\n\"\"\"\n\n## Make Scheduled Scenarios\n\"\"\"\nScenario Schedule Options:\n  - Run once (manual)\n  - At regular intervals (every X minutes)\n  - Advanced: Cron expression (0 8 * * *)\n\n[Scheduled Trigger: Every day at 8 AM]\n      ↓\n[Google Sheets: Search Rows]\n      ↓\n[Iterator: Process each row]\n      ↓\n[Aggregator: Sum totals]\n      ↓\n[Gmail: Send Report]\n\"\"\"\n\n### Best Practices:\n- Consider timezone differences\n- Add buffer time for long-running jobs\n- Log execution times for monitoring\n- Don't schedule at exactly midnight (busy period)\n\n## Sharp Edges\n\n### Using Text Instead of IDs in Dropdown Fields\n\nSeverity: CRITICAL\n\nSituation: Configuring actions with dropdown selections\n\nSymptoms:\n\"Bad Request\" errors. \"Invalid value\" messages. Action fails\ndespite correct-looking input. Works when you select from dropdown,\nfails with dynamic values.\n\nWhy this breaks:\nDropdown menus display human-readable text but send IDs to APIs.\nWhen you type \"Marketing Team\" instead of selecting it, Zapier\ntries to send that text as the ID, which the API doesn't recognize.\n\nRecommended fix:\n\n# ALWAYS use dropdowns to select, don't type\n\n# If you need dynamic values:\n\n### Zapier approach:\n1. Add a \"Find\" or \"Search\" action first\n   - HubSpot: Find Contact → returns contact_id\n   - Slack: Find User by Email → returns user_id\n\n2. Use the returned ID in subsequent actions\n   - Dropdown: Use Custom Value\n   - Select the ID from the search step\n\n### Make approach:\n1. Add a Search module first\n   - Search Contacts: filter by email\n   - Returns: contact_id\n\n2. Map the ID to subsequent modules\n   - Contact ID: {{2.id}} (from search module)\n\n# Common ID fields that trip people up:\n- User\u002FMember IDs in Slack, Teams\n- Contact\u002FCompany IDs in CRMs\n- Project\u002FFolder IDs in project tools\n- Category\u002FTag IDs in content systems\n\n### Zap Auto-Disabled at 95% Error Rate\n\nSeverity: CRITICAL\n\nSituation: Running a Zap with frequent errors\n\nSymptoms:\nZap suddenly stops running. Email notification about auto-disable.\n\"This Zap was automatically turned off\" message. Data stops syncing.\n\nWhy this breaks:\nZapier automatically disables Zaps that have 95% or higher error\nrate over 7 days. This prevents runaway automation failures from\nconsuming your task quota and creating data problems.\n\nRecommended fix:\n\n# Prevention:\n\n1. Add error handling steps:\n   - Use Path: If error → [Log + Alert]\n   - Add fallback actions for failures\n\n2. Use filters to prevent bad data:\n   - Only continue if email exists\n   - Only continue if amount > 0\n   - Filter out test\u002Finvalid entries\n\n3. Monitor task history regularly:\n   - Check for recurring errors\n   - Fix issues before 95% threshold\n\n# Recovery:\n\n1. Check Task History for error patterns\n2. Fix the root cause (auth, bad data, API changes)\n3. Test with sample data\n4. Re-enable the Zap manually\n5. Monitor closely for next 24 hours\n\n# Common causes:\n- Expired authentication tokens\n- API rate limits\n- Changed field names in connected apps\n- Invalid data formats\n\n### Loops Consuming Unexpected Task Counts\n\nSeverity: HIGH\n\nSituation: Processing arrays or multiple items\n\nSymptoms:\nTask quota depleted unexpectedly. One Zap run shows as 100+ tasks.\nMonthly limit reached in days. \"You've used X of Y tasks\" surprise.\n\nWhy this breaks:\nIn Zapier, each iteration of a loop counts as separate tasks.\nIf a webhook delivers an order with 50 line items and you loop\nthrough each, that's 50+ tasks for one order.\n\nRecommended fix:\n\n# Understand the math:\n\nOrder with 10 items, 5 actions per item:\n= 1 trigger + (10 items × 5 actions) = 51 tasks\n\n# Strategies to reduce task usage:\n\n1. Batch operations when possible:\n   - Use \"Create Many Rows\" instead of loop + create\n   - Use bulk API endpoints\n\n2. Aggregate before sending:\n   - Collect all items\n   - Send one summary message, not one per item\n\n3. Filter before looping:\n   - Only process items that need action\n   - Skip unchanged\u002Fduplicate items\n\n4. Consider Make for high-volume:\n   - Make uses operations, not tasks per action\n   - More cost-effective for loops\n\n# Make approach:\n[Iterator] → [Actions] → [Aggregator]\n- Pay for operations (module executions)\n- Not per-action like Zapier\n\n### App Updates Breaking Existing Zaps\n\nSeverity: HIGH\n\nSituation: App you're connected to releases updates\n\nSymptoms:\nWorking Zap suddenly fails. \"Field not found\" errors. Different\ndata format in outputs. Actions that worked yesterday fail today.\n\nWhy this breaks:\nWhen connected apps update their APIs, field names can change,\nnew required fields appear, or data formats shift. Zapier\u002FMake\nintegrations may not immediately update to match.\n\nRecommended fix:\n\n# When a Zap breaks after app update:\n\n1. Check the Task History for specific errors\n2. Open the Zap editor to see field mapping issues\n3. Re-select the trigger\u002Faction to refresh schema\n4. Re-map any fields that show as \"unknown\"\n5. Test with new sample data\n\n# Prevention:\n\n1. Subscribe to changelog for critical apps\n2. Keep connection authorizations fresh\n3. Test Zaps after major app updates\n4. Document your field mappings\n5. Use test\u002Fduplicate Zaps for experiments\n\n# If integration is outdated:\n- Check Zapier\u002FMake status pages\n- Report issue to support\n- Consider webhook alternative temporarily\n\n# Common offenders:\n- CRM field restructures\n- API version upgrades\n- OAuth scope changes\n- New required permissions\n\n### Authentication Tokens Expiring\n\nSeverity: HIGH\n\nSituation: Using OAuth connections to apps\n\nSymptoms:\n\"Authentication failed\" errors. \"Please reconnect\" messages.\nZaps fail after weeks of working. Multiple apps fail simultaneously.\n\nWhy this breaks:\nOAuth tokens expire. Some apps require re-authentication every\n60-90 days. If the user who connected the app leaves the company,\ntheir connection may stop working.\n\nRecommended fix:\n\n# Immediate fix:\n1. Go to Settings → Apps\n2. Find the app with issues\n3. Reconnect (re-authorize)\n4. Test affected Zaps\n\n# Prevention:\n\n1. Use service accounts for connections\n   - Don't connect with personal accounts\n   - Use shared team email\u002Faccount\n\n2. Monitor connection health\n   - Check Apps page regularly\n   - Set calendar reminders for known expiration\n\n3. Document who connected what\n   - Track in spreadsheet\n   - Handoff process when people leave\n\n4. Prefer connections that don't expire\n   - API keys over OAuth when available\n   - Long-lived tokens\n\n# Zapier Enterprise:\n- Admin controls for managing connections\n- SSO integration\n- Centralized connection management\n\n### Webhooks Missing or Duplicating Events\n\nSeverity: MEDIUM\n\nSituation: Using webhooks as triggers\n\nSymptoms:\nSome events never trigger the Zap. Same event triggers multiple\ntimes. Inconsistent automation behavior. \"Works sometimes.\"\n\nWhy this breaks:\nWebhooks are fire-and-forget. If Zapier's receiving endpoint is\nslow or unavailable, the webhook may fail. Some systems retry\nwebhooks, causing duplicates. Network issues lose events.\n\nRecommended fix:\n\n# Handle duplicates:\n\n1. Add deduplication logic:\n   - Filter: Only continue if ID not in Airtable\n   - First action: Check if already processed\n\n2. Use idempotency:\n   - Store processed IDs\n   - Skip if ID exists\n\n### Zapier example:\n[Webhook Trigger]\n   ↓\n[Airtable: Find Records] - search by event_id\n   ↓\n[Filter: Only continue if not found]\n   ↓\n[Process Event]\n   ↓\n[Airtable: Create Record] - store event_id\n\n# Handle missed events:\n\n1. Use polling triggers for critical data\n   - Less real-time but more reliable\n   - Catches events during downtime\n\n2. Implement reconciliation:\n   - Scheduled Zap to check for gaps\n   - Compare source data to processed data\n\n3. Check source system retry settings:\n   - Some systems retry on failure\n   - Configure retry count\u002Ftiming\n\n### Make Operations Consumed by Error Retries\n\nSeverity: MEDIUM\n\nSituation: Scenarios with failing modules\n\nSymptoms:\nOperations quota depleted quickly. Scenario runs \"succeeded\" but\nused many operations. Same scenario running more than expected.\n\nWhy this breaks:\nMake counts operations per module execution, including failed\nattempts and retries. Error handler modules consume operations.\nScenarios that fail and retry can use 3-5x expected operations.\n\nRecommended fix:\n\n# Understand operation counting:\n\nSuccessful run: Each module = 1 operation\nFailed + retry (3x): 3 operations for that module\nError handler: Additional operation per handler module\n\n# Reduce operation waste:\n\n1. Add error handlers that break early:\n   [Module] → Error → [Break] (1 additional op)\n   vs\n   [Module] → Error → [Log] → [Alert] → [Update] (3+ ops)\n\n2. Use ignore instead of retry when appropriate:\n   - If failure is expected (record exists)\n   - If retrying won't help (bad data)\n\n3. Pre-validate before expensive operations:\n   [Check Data] → Filter → [API Call]\n   - Fail fast before consuming operations\n\n4. Optimize scenario scheduling:\n   - Don't run every minute if hourly is enough\n   - Use webhooks for real-time when possible\n\n# Monitor usage:\n- Check Operations dashboard\n- Set up usage alerts\n- Review high-consumption scenarios\n\n### Timezone Mismatches in Scheduled Triggers\n\nSeverity: MEDIUM\n\nSituation: Setting up scheduled automations\n\nSymptoms:\nZap runs at wrong time. \"9 AM\" trigger fires at 2 PM. Different\nbehavior on different days. DST causes hour shifts.\n\nWhy this breaks:\nZapier shows times in your local timezone but may store in UTC.\nIf you change timezones or DST occurs, scheduled times shift.\nTeam members in different zones see different times.\n\nRecommended fix:\n\n# Best practices:\n\n1. Explicitly set timezone in schedule:\n   - Don't rely on browser detection\n   - Use business timezone, not personal\n\n2. Document in Zap name:\n   - \"Daily Report 9AM EST\"\n   - Include timezone in description\n\n3. Test around DST transitions:\n   - Schedule changes at DST boundaries\n   - Verify times before\u002Fafter change\n\n4. For global teams:\n   - Use UTC as standard\n   - Convert to local in descriptions\n\n5. Consider buffer times:\n   - Don't schedule at exactly midnight\n   - Avoid on-the-hour (busy periods)\n\n### Make timezone handling:\n- Scenarios use account timezone setting\n- formatDate() function respects timezone\n- Use parseDate() with explicit timezone\n\n## Collaboration\n\n### Delegation Triggers\n\n- automation requires custom code -> workflow-automation (Code-based solutions like Inngest, Temporal)\n- need browser automation in workflow -> browser-automation (Playwright\u002FPuppeteer integration)\n- building custom API integration -> api-designer (API design and implementation)\n- automation needs AI capabilities -> agent-tool-builder (AI agent tools and Zapier MCP)\n- high-volume data processing -> backend (Custom backend processing)\n- need self-hosted automation -> devops (n8n or custom workflow deployment)\n\n## Related Skills\n\nWorks well with: `workflow-automation`, `agent-tool-builder`, `backend`, `api-designer`\n\n## When to Use\n- User mentions or implies: zapier\n- User mentions or implies: make\n- User mentions or implies: integromat\n- User mentions or implies: zap\n- User mentions or implies: scenario\n- User mentions or implies: no-code automation\n- User mentions or implies: trigger action\n- User mentions or implies: workflow automation\n- User mentions or implies: connect apps\n- User mentions or implies: automate\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.\n","","imported","https:\u002F\u002Fgithub.com\u002Fsickn33\u002Fantigravity-awesome-skills","user_system_seed","SkillOPIC",true,55,1434,"2026-05-16 13:48:18",{"id":8,"name":21,"slug":22,"icon":23,"description":24,"sort":25,"createdAt":26},"编程开发","coding","mdi-code-braces","代码生成、调试、审查，提升开发效率",2,"2026-05-16 12:53:40",{"id":7,"name":28,"slug":29,"icon":30,"description":31,"moduleId":8,"sort":25,"skillCount":32,"createdAt":26},"后端开发","backend","mdi-server","API、数据库、服务端架构",296,[34],{"id":35,"skillId":4,"version":36,"fileName":37,"fileSize":38,"filePath":39,"fileHash":40,"manifest":41,"createdAt":19},"3b091028-c3e1-4d96-99c5-9a6617999445","1.0.0","zapier-make-patterns.zip",8582,"uploads\u002Fskills\u002Fa7ace3ef-a947-49a4-9ed0-51b92ae38472\u002Fzapier-make-patterns.zip","270ba6ddabd12c03db6e561fc6873f7583ba2c747e26422915f1472d12279753","[{\"path\":\"SKILL.md\",\"isDirectory\":false,\"size\":21192}]",{"code":43,"message":44,"data":45},200,"success",{"items":46,"stats":47,"page":50},[],{"averageRating":48,"totalRatings":48,"ratingCounts":49},0,[48,48,48,48,48],{"limit":51,"offset":48,"hasMore":52,"nextOffset":51,"ratedOnly":16},15,false]