[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7184A4B4TYQ98DBDYYCFHGD":3,"skill-same:01M7184A4B4TYQ98DBDYYCFHGD":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":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":47,"commitSha":48,"skillDirectory":49,"forksCount":14,"repositoryHtmlUrl":50,"repositoryHomepageUrl":6,"ownerHtmlUrl":51,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":52,"install":53,"resources":66},"01M7184A4B4TYQ98DBDYYCFHGD","bullmq-specialist",null,"BullMQ expert for Redis-backed job queues, background processing, and reliable async execution in Node.js\u002FTypeScript applications.","sapsapshen\u002Fai-memory-router","sapsapshen","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F20347959?v=4","01M6XDQEF1DP50DKF37H81J3J5","shenmian","01M6XDQEJPE41Y3DT2763X8ZJN",0,"MIT","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fbullmq-specialist\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"specialist","bullmq specialist","bullmq","background","js","redis","async execution","execution","applications","async","for","bullmq expert","queues","typescript","node","2026","apache","spawner","expert","processing","2026-11-10 10:12:30",false,"---\nname: bullmq-specialist\ndescription: BullMQ expert for Redis-backed job queues, background processing,\n  and reliable async execution in Node.js\u002FTypeScript applications.\nrisk: none\nsource: vibeship-spawner-skills (Apache 2.0)\ndate_added: 2026-02-27\n---\n\n# BullMQ Specialist\n\nBullMQ expert for Redis-backed job queues, background processing, and\nreliable async execution in Node.js\u002FTypeScript applications.\n\n## Principles\n\n- Jobs are fire-and-forget from the producer side - let the queue handle delivery\n- Always set explicit job options - defaults rarely match your use case\n- Idempotency is your responsibility - jobs may run more than once\n- Backoff strategies prevent thundering herds - exponential beats linear\n- Dead letter queues are not optional - failed jobs need a home\n- Concurrency limits protect downstream services - start conservative\n- Job data should be small - pass IDs, not payloads\n- Graceful shutdown prevents orphaned jobs - handle SIGTERM properly\n\n## Capabilities\n\n- bullmq-queues\n- job-scheduling\n- delayed-jobs\n- repeatable-jobs\n- job-priorities\n- rate-limiting-jobs\n- job-events\n- worker-patterns\n- flow-producers\n- job-dependencies\n\n## Scope\n\n- redis-infrastructure -> redis-specialist\n- serverless-queues -> upstash-qstash\n- workflow-orchestration -> temporal-craftsman\n- event-sourcing -> event-architect\n- email-delivery -> email-systems\n\n## Tooling\n\n### Core\n\n- bullmq\n- ioredis\n\n### Hosting\n\n- upstash\n- redis-cloud\n- elasticache\n- railway\n\n### Monitoring\n\n- bull-board\n- arena\n- bullmq-pro\n\n### Patterns\n\n- delayed-jobs\n- repeatable-jobs\n- job-flows\n- rate-limiting\n- sandboxed-processors\n\n## Patterns\n\n### Basic Queue Setup\n\nProduction-ready BullMQ queue with proper configuration\n\n**When to use**: Starting any new queue implementation\n\nimport { Queue, Worker, QueueEvents } from 'bullmq';\nimport IORedis from 'ioredis';\n\n\u002F\u002F Shared connection for all queues\nconst connection = new IORedis(process.env.REDIS_URL, {\n  maxRetriesPerRequest: null,  \u002F\u002F Required for BullMQ\n  enableReadyCheck: false,\n});\n\n\u002F\u002F Create queue with sensible defaults\nconst emailQueue = new Queue('emails', {\n  connection,\n  defaultJobOptions: {\n    attempts: 3,\n    backoff: {\n      type: 'exponential',\n      delay: 1000,\n    },\n    removeOnComplete: { count: 1000 },\n    removeOnFail: { count: 5000 },\n  },\n});\n\n\u002F\u002F Worker with concurrency limit\nconst worker = new Worker('emails', async (job) => {\n  await sendEmail(job.data);\n}, {\n  connection,\n  concurrency: 5,\n  limiter: {\n    max: 100,\n    duration: 60000,  \u002F\u002F 100 jobs per minute\n  },\n});\n\n\u002F\u002F Handle events\nworker.on('failed', (job, err) => {\n  console.error(`Job ${job?.id} failed:`, err);\n});\n\n### Delayed and Scheduled Jobs\n\nJobs that run at specific times or after delays\n\n**When to use**: Scheduling future tasks, reminders, or timed actions\n\n\u002F\u002F Delayed job - runs once after delay\nawait queue.add('reminder', { userId: 123 }, {\n  delay: 24 * 60 * 60 * 1000,  \u002F\u002F 24 hours\n});\n\n\u002F\u002F Repeatable job - runs on schedule\nawait queue.add('daily-digest', { type: 'summary' }, {\n  repeat: {\n    pattern: '0 9 * * *',  \u002F\u002F Every day at 9am\n    tz: 'America\u002FNew_York',\n  },\n});\n\n\u002F\u002F Remove repeatable job\nawait queue.removeRepeatable('daily-digest', {\n  pattern: '0 9 * * *',\n  tz: 'America\u002FNew_York',\n});\n\n### Job Flows and Dependencies\n\nComplex multi-step job processing with parent-child relationships\n\n**When to use**: Jobs depend on other jobs completing first\n\nimport { FlowProducer } from 'bullmq';\n\nconst flowProducer = new FlowProducer({ connection });\n\n\u002F\u002F Parent waits for all children to complete\nawait flowProducer.add({\n  name: 'process-order',\n  queueName: 'orders',\n  data: { orderId: 123 },\n  children: [\n    {\n      name: 'validate-inventory',\n      queueName: 'inventory',\n      data: { orderId: 123 },\n    },\n    {\n      name: 'charge-payment',\n      queueName: 'payments',\n      data: { orderId: 123 },\n    },\n    {\n      name: 'notify-warehouse',\n      queueName: 'notifications',\n      data: { orderId: 123 },\n    },\n  ],\n});\n\n### Graceful Shutdown\n\nProperly close workers without losing jobs\n\n**When to use**: Deploying or restarting workers\n\nconst shutdown = async () => {\n  console.log('Shutting down gracefully...');\n\n  \u002F\u002F Stop accepting new jobs\n  await worker.pause();\n\n  \u002F\u002F Wait for current jobs to finish (with timeout)\n  await worker.close();\n\n  \u002F\u002F Close queue connection\n  await queue.close();\n\n  process.exit(0);\n};\n\nprocess.on('SIGTERM', shutdown);\nprocess.on('SIGINT', shutdown);\n\n### Bull Board Dashboard\n\nVisual monitoring for BullMQ queues\n\n**When to use**: Need visibility into queue status and job states\n\nimport { createBullBoard } from '@bull-board\u002Fapi';\nimport { BullMQAdapter } from '@bull-board\u002Fapi\u002FbullMQAdapter';\nimport { ExpressAdapter } from '@bull-board\u002Fexpress';\n\nconst serverAdapter = new ExpressAdapter();\nserverAdapter.setBasePath('\u002Fadmin\u002Fqueues');\n\ncreateBullBoard({\n  queues: [\n    new BullMQAdapter(emailQueue),\n    new BullMQAdapter(orderQueue),\n  ],\n  serverAdapter,\n});\n\napp.use('\u002Fadmin\u002Fqueues', serverAdapter.getRouter());\n\n## Validation Checks\n\n### Redis connection missing maxRetriesPerRequest\n\nSeverity: ERROR\n\nBullMQ requires maxRetriesPerRequest null for proper reconnection handling\n\nMessage: BullMQ queue\u002Fworker created without maxRetriesPerRequest: null on Redis connection. This will cause workers to stop on Redis connection issues.\n\n### No stalled job event handler\n\nSeverity: WARNING\n\nWorkers should handle stalled events to detect crashed workers\n\nMessage: Worker created without 'stalled' event handler. Stalled jobs indicate worker crashes and should be monitored.\n\n### No failed job event handler\n\nSeverity: WARNING\n\nWorkers should handle failed events for monitoring and alerting\n\nMessage: Worker created without 'failed' event handler. Failed jobs should be logged and monitored.\n\n### No graceful shutdown handling\n\nSeverity: WARNING\n\nWorkers should gracefully shut down on SIGTERM\u002FSIGINT\n\nMessage: Worker file without graceful shutdown handling. Jobs may be orphaned on deployment.\n\n### Awaiting queue.add in request handler\n\nSeverity: INFO\n\nQueue additions should be fire-and-forget in request handlers\n\nMessage: Queue.add awaited in request handler. Consider fire-and-forget for faster response.\n\n### Potentially large data in job payload\n\nSeverity: WARNING\n\nJob data should be small - pass IDs not full objects\n\nMessage: Job appears to have large inline data. Pass IDs instead of full objects to keep Redis memory low.\n\n### Job without timeout configuration\n\nSeverity: INFO\n\nJobs should have timeouts to prevent infinite execution\n\nMessage: Job added without explicit timeout. Consider adding timeout to prevent stuck jobs.\n\n### Retry without backoff strategy\n\nSeverity: WARNING\n\nRetries should use exponential backoff to avoid thundering herd\n\nMessage: Job has retry attempts but no backoff strategy. Use exponential backoff to prevent thundering herd.\n\n### Repeatable job without explicit timezone\n\nSeverity: WARNING\n\nRepeatable jobs should specify timezone to avoid DST issues\n\nMessage: Repeatable job without explicit timezone. Will use server local time which can drift with DST.\n\n### Potentially high worker concurrency\n\nSeverity: INFO\n\nHigh concurrency can overwhelm downstream services\n\nMessage: Worker concurrency is high. Ensure downstream services can handle this load (DB connections, API rate limits).\n\n## Collaboration\n\n### Delegation Triggers\n\n- redis infrastructure|redis cluster|memory tuning -> redis-specialist (Queue needs Redis infrastructure)\n- serverless queue|edge queue|no redis -> upstash-qstash (Need queues without managing Redis)\n- complex workflow|saga|compensation|long-running -> temporal-craftsman (Need workflow orchestration beyond simple jobs)\n- event sourcing|CQRS|event streaming -> event-architect (Need event-driven architecture)\n- deploy|kubernetes|scaling|infrastructure -> devops (Queue needs infrastructure)\n- monitor|metrics|alerting|dashboard -> performance-hunter (Queue needs monitoring)\n\n### Email Queue Stack\n\nSkills: bullmq-specialist, email-systems, redis-specialist\n\nWorkflow:\n\n```\n1. Email request received (API)\n2. Job queued with rate limiting (bullmq-specialist)\n3. Worker processes with backoff (bullmq-specialist)\n4. Email sent via provider (email-systems)\n5. Status tracked in Redis (redis-specialist)\n```\n\n### Background Processing Stack\n\nSkills: bullmq-specialist, backend, devops\n\nWorkflow:\n\n```\n1. API receives request (backend)\n2. Long task queued for background (bullmq-specialist)\n3. Worker processes async (bullmq-specialist)\n4. Result stored\u002Fnotified (backend)\n5. Workers scaled per load (devops)\n```\n\n### AI Processing Pipeline\n\nSkills: bullmq-specialist, ai-workflow-automation, performance-hunter\n\nWorkflow:\n\n```\n1. AI task submitted (ai-workflow-automation)\n2. Job flow created with dependencies (bullmq-specialist)\n3. Workers process stages (bullmq-specialist)\n4. Performance monitored (performance-hunter)\n5. Results aggregated (ai-workflow-automation)\n```\n\n### Scheduled Tasks Stack\n\nSkills: bullmq-specialist, backend, redis-specialist\n\nWorkflow:\n\n```\n1. Repeatable jobs defined (bullmq-specialist)\n2. Cron patterns with timezone (bullmq-specialist)\n3. Jobs execute on schedule (bullmq-specialist)\n4. State managed in Redis (redis-specialist)\n5. Results handled (backend)\n```\n\n## Related Skills\n\nWorks well with: `redis-specialist`, `backend`, `nextjs-app-router`, `email-systems`, `ai-workflow-automation`, `performance-hunter`\n\n## When to Use\n\n- User mentions or implies: bullmq\n- User mentions or implies: bull queue\n- User mentions or implies: redis queue\n- User mentions or implies: background job\n- User mentions or implies: job queue\n- User mentions or implies: delayed job\n- User mentions or implies: repeatable job\n- User mentions or implies: worker process\n- User mentions or implies: job scheduling\n- User mentions or implies: async processing\n","# BullMQ Specialist\n\nBullMQ expert for Redis-backed job queues, background processing, and\nreliable async execution in Node.js\u002FTypeScript applications.\n\n## Principles\n\n- Jobs are fire-and-forget from the producer side - let the queue handle delivery\n- Always set explicit job options - defaults rarely match your use case\n- Idempotency is your responsibility - jobs may run more than once\n- Backoff strategies prevent thundering herds - exponential beats linear\n- Dead letter queues are not optional - failed jobs need a home\n- Concurrency limits protect downstream services - start conservative\n- Job data should be small - pass IDs, not payloads\n- Graceful shutdown prevents orphaned jobs - handle SIGTERM properly\n\n## Capabilities\n\n- bullmq-queues\n- job-scheduling\n- delayed-jobs\n- repeatable-jobs\n- job-priorities\n- rate-limiting-jobs\n- job-events\n- worker-patterns\n- flow-producers\n- job-dependencies\n\n## Scope\n\n- redis-infrastructure -> redis-specialist\n- serverless-queues -> upstash-qstash\n- workflow-orchestration -> temporal-craftsman\n- event-sourcing -> event-architect\n- email-delivery -> email-systems\n\n## Tooling\n\n### Core\n\n- bullmq\n- ioredis\n\n### Hosting\n\n- upstash\n- redis-cloud\n- elasticache\n- railway\n\n### Monitoring\n\n- bull-board\n- arena\n- bullmq-pro\n\n### Patterns\n\n- delayed-jobs\n- repeatable-jobs\n- job-flows\n- rate-limiting\n- sandboxed-processors\n\n## Patterns\n\n### Basic Queue Setup\n\nProduction-ready BullMQ queue with proper configuration\n\n**When to use**: Starting any new queue implementation\n\nimport { Queue, Worker, QueueEvents } from 'bullmq';\nimport IORedis from 'ioredis';\n\n\u002F\u002F Shared connection for all queues\nconst connection = new IORedis(process.env.REDIS_URL, {\n  maxRetriesPerRequest: null,  \u002F\u002F Required for BullMQ\n  enableReadyCheck: false,\n});\n\n\u002F\u002F Create queue with sensible defaults\nconst emailQueue = new Queue('emails', {\n  connection,\n  defaultJobOptions: {\n    attempts: 3,\n    backoff: {\n      type: 'exponential',\n      delay: 1000,\n    },\n    removeOnComplete: { count: 1000 },\n    removeOnFail: { count: 5000 },\n  },\n});\n\n\u002F\u002F Worker with concurrency limit\nconst worker = new Worker('emails', async (job) => {\n  await sendEmail(job.data);\n}, {\n  connection,\n  concurrency: 5,\n  limiter: {\n    max: 100,\n    duration: 60000,  \u002F\u002F 100 jobs per minute\n  },\n});\n\n\u002F\u002F Handle events\nworker.on('failed', (job, err) => {\n  console.error(`Job ${job?.id} failed:`, err);\n});\n\n### Delayed and Scheduled Jobs\n\nJobs that run at specific times or after delays\n\n**When to use**: Scheduling future tasks, reminders, or timed actions\n\n\u002F\u002F Delayed job - runs once after delay\nawait queue.add('reminder', { userId: 123 }, {\n  delay: 24 * 60 * 60 * 1000,  \u002F\u002F 24 hours\n});\n\n\u002F\u002F Repeatable job - runs on schedule\nawait queue.add('daily-digest', { type: 'summary' }, {\n  repeat: {\n    pattern: '0 9 * * *',  \u002F\u002F Every day at 9am\n    tz: 'America\u002FNew_York',\n  },\n});\n\n\u002F\u002F Remove repeatable job\nawait queue.removeRepeatable('daily-digest', {\n  pattern: '0 9 * * *',\n  tz: 'America\u002FNew_York',\n});\n\n### Job Flows and Dependencies\n\nComplex multi-step job processing with parent-child relationships\n\n**When to use**: Jobs depend on other jobs completing first\n\nimport { FlowProducer } from 'bullmq';\n\nconst flowProducer = new FlowProducer({ connection });\n\n\u002F\u002F Parent waits for all children to complete\nawait flowProducer.add({\n  name: 'process-order',\n  queueName: 'orders',\n  data: { orderId: 123 },\n  children: [\n    {\n      name: 'validate-inventory',\n      queueName: 'inventory',\n      data: { orderId: 123 },\n    },\n    {\n      name: 'charge-payment',\n      queueName: 'payments',\n      data: { orderId: 123 },\n    },\n    {\n      name: 'notify-warehouse',\n      queueName: 'notifications',\n      data: { orderId: 123 },\n    },\n  ],\n});\n\n### Graceful Shutdown\n\nProperly close workers without losing jobs\n\n**When to use**: Deploying or restarting workers\n\nconst shutdown = async () => {\n  console.log('Shutting down gracefully...');\n\n  \u002F\u002F Stop accepting new jobs\n  await worker.pause();\n\n  \u002F\u002F Wait for current jobs to finish (with timeout)\n  await worker.close();\n\n  \u002F\u002F Close queue connection\n  await queue.close();\n\n  process.exit(0);\n};\n\nprocess.on('SIGTERM', shutdown);\nprocess.on('SIGINT', shutdown);\n\n### Bull Board Dashboard\n\nVisual monitoring for BullMQ queues\n\n**When to use**: Need visibility into queue status and job states\n\nimport { createBullBoard } from '@bull-board\u002Fapi';\nimport { BullMQAdapter } from '@bull-board\u002Fapi\u002FbullMQAdapter';\nimport { ExpressAdapter } from '@bull-board\u002Fexpress';\n\nconst serverAdapter = new ExpressAdapter();\nserverAdapter.setBasePath('\u002Fadmin\u002Fqueues');\n\ncreateBullBoard({\n  queues: [\n    new BullMQAdapter(emailQueue),\n    new BullMQAdapter(orderQueue),\n  ],\n  serverAdapter,\n});\n\napp.use('\u002Fadmin\u002Fqueues', serverAdapter.getRouter());\n\n## Validation Checks\n\n### Redis connection missing maxRetriesPerRequest\n\nSeverity: ERROR\n\nBullMQ requires maxRetriesPerRequest null for proper reconnection handling\n\nMessage: BullMQ queue\u002Fworker created without maxRetriesPerRequest: null on Redis connection. This will cause workers to stop on Redis connection issues.\n\n### No stalled job event handler\n\nSeverity: WARNING\n\nWorkers should handle stalled events to detect crashed workers\n\nMessage: Worker created without 'stalled' event handler. Stalled jobs indicate worker crashes and should be monitored.\n\n### No failed job event handler\n\nSeverity: WARNING\n\nWorkers should handle failed events for monitoring and alerting\n\nMessage: Worker created without 'failed' event handler. Failed jobs should be logged and monitored.\n\n### No graceful shutdown handling\n\nSeverity: WARNING\n\nWorkers should gracefully shut down on SIGTERM\u002FSIGINT\n\nMessage: Worker file without graceful shutdown handling. Jobs may be orphaned on deployment.\n\n### Awaiting queue.add in request handler\n\nSeverity: INFO\n\nQueue additions should be fire-and-forget in request handlers\n\nMessage: Queue.add awaited in request handler. Consider fire-and-forget for faster response.\n\n### Potentially large data in job payload\n\nSeverity: WARNING\n\nJob data should be small - pass IDs not full objects\n\nMessage: Job appears to have large inline data. Pass IDs instead of full objects to keep Redis memory low.\n\n### Job without timeout configuration\n\nSeverity: INFO\n\nJobs should have timeouts to prevent infinite execution\n\nMessage: Job added without explicit timeout. Consider adding timeout to prevent stuck jobs.\n\n### Retry without backoff strategy\n\nSeverity: WARNING\n\nRetries should use exponential backoff to avoid thundering herd\n\nMessage: Job has retry attempts but no backoff strategy. Use exponential backoff to prevent thundering herd.\n\n### Repeatable job without explicit timezone\n\nSeverity: WARNING\n\nRepeatable jobs should specify timezone to avoid DST issues\n\nMessage: Repeatable job without explicit timezone. Will use server local time which can drift with DST.\n\n### Potentially high worker concurrency\n\nSeverity: INFO\n\nHigh concurrency can overwhelm downstream services\n\nMessage: Worker concurrency is high. Ensure downstream services can handle this load (DB connections, API rate limits).\n\n## Collaboration\n\n### Delegation Triggers\n\n- redis infrastructure|redis cluster|memory tuning -> redis-specialist (Queue needs Redis infrastructure)\n- serverless queue|edge queue|no redis -> upstash-qstash (Need queues without managing Redis)\n- complex workflow|saga|compensation|long-running -> temporal-craftsman (Need workflow orchestration beyond simple jobs)\n- event sourcing|CQRS|event streaming -> event-architect (Need event-driven architecture)\n- deploy|kubernetes|scaling|infrastructure -> devops (Queue needs infrastructure)\n- monitor|metrics|alerting|dashboard -> performance-hunter (Queue needs monitoring)\n\n### Email Queue Stack\n\nSkills: bullmq-specialist, email-systems, redis-specialist\n\nWorkflow:\n\n```\n1. Email request received (API)\n2. Job queued with rate limiting (bullmq-specialist)\n3. Worker processes with backoff (bullmq-specialist)\n4. Email sent via provider (email-systems)\n5. Status tracked in Redis (redis-specialist)\n```\n\n### Background Processing Stack\n\nSkills: bullmq-specialist, backend, devops\n\nWorkflow:\n\n```\n1. API receives request (backend)\n2. Long task queued for background (bullmq-specialist)\n3. Worker processes async (bullmq-specialist)\n4. Result stored\u002Fnotified (backend)\n5. Workers scaled per load (devops)\n```\n\n### AI Processing Pipeline\n\nSkills: bullmq-specialist, ai-workflow-automation, performance-hunter\n\nWorkflow:\n\n```\n1. AI task submitted (ai-workflow-automation)\n2. Job flow created with dependencies (bullmq-specialist)\n3. Workers process stages (bullmq-specialist)\n4. Performance monitored (performance-hunter)\n5. Results aggregated (ai-workflow-automation)\n```\n\n### Scheduled Tasks Stack\n\nSkills: bullmq-specialist, backend, redis-specialist\n\nWorkflow:\n\n```\n1. Repeatable jobs defined (bullmq-specialist)\n2. Cron patterns with timezone (bullmq-specialist)\n3. Jobs execute on schedule (bullmq-specialist)\n4. State managed in Redis (redis-specialist)\n5. Results handled (backend)\n```\n\n## Related Skills\n\nWorks well with: `redis-specialist`, `backend`, `nextjs-app-router`, `email-systems`, `ai-workflow-automation`, `performance-hunter`\n\n## When to Use\n\n- User mentions or implies: bullmq\n- User mentions or implies: bull queue\n- User mentions or implies: redis queue\n- User mentions or implies: background job\n- User mentions or implies: job queue\n- User mentions or implies: delayed job\n- User mentions or implies: repeatable job\n- User mentions or implies: worker process\n- User mentions or implies: job scheduling\n- User mentions or implies: async processing\n",{"name":5,"risk":44,"source":45,"date_added":46,"description":7},"none","vibeship-spawner-skills (Apache 2.0)",1772150400000,"main","7a38d8e7073e61c16eda85681cb32fb68a8657a5","skills-store\u002Fglobal\u002Fbullmq-specialist","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router","https:\u002F\u002Fgithub.com\u002Fsapsapshen","2026-04-14 21:12:12",{"source":8,"skillName":5,"commands":54,"prompt":64,"zipAvailable":65},[55,58,61],{"tool":56,"command":57},"npx","npx skills add sapsapshen\u002Fai-memory-router --skill bullmq-specialist",{"tool":59,"command":60},"bunx","bunx skills add sapsapshen\u002Fai-memory-router --skill bullmq-specialist",{"tool":62,"command":63},"pnpm","pnpm dlx skills add sapsapshen\u002Fai-memory-router --skill bullmq-specialist","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fbullmq-specialist\u002FSKILL.md",true,[],[68,92,118,128,141,160],{"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":15,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":79,"publishedAt":39},"01M71ATQRKG48SH06FQ697T5G9","wechat-search","Search WeChat Official Account articles using OpenClaw's web search and fetch capabilities with compliance-focused design.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fwechat-search-release\u002FSKILL.md",[74],{"categoryNo":75,"categoryName":76,"taxonomyType":77,"taxonomyTypeDesc":78},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[80,81,82,83,84,85,86,87,88,89,90,91],"wechat search","wechat","search","capabilities","openclaw","design","web search","compliance","web","official","fetch","with",{"skillNo":93,"name":94,"nameZh":6,"description":95,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":98,"publishedAt":39},"01M71ATNAVGZB35PFYM2GC5N00","trend-tap","Real-time trending topics aggregator across 7 platforms (X\u002FTwitter, Reddit, Google Trends, Hacker News, Zhihu, Bilibili, Weibo). Trigger: when user says 'trend', 'trends', 'trend tap', '热点', '热搜', or asks what is trending\u002Fhot. Do NOT use web_search — this skill already fetches live data from all platforms with zero API keys.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftrend-tap\u002FSKILL.md",[],[99,100,101,102,103,104,82,105,106,107,108,109,110,111,112,113,114,115,116,117],"trend","trend tap","tap","api keys","Bash","time","trending","hacker","aggregator","do","when","brew","live","data","google","install","read","across","api",{"skillNo":119,"name":120,"nameZh":6,"description":121,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":124,"publishedAt":39},"01M71ATJ9AM5KM15AA8PS302EB","trend-radar","Real-time trending topics aggregator across 7 platforms (X\u002FTwitter, Reddit, Google Trends, Hacker News, Zhihu, Bilibili, Weibo). Trigger: when user says 'trend', 'trends', 'trend pulse', '热点', '热搜', or asks what is trending\u002Fhot. Do NOT use web_search — this skill already fetches live data from all platforms with zero API keys.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftrend-radar\u002FSKILL.md",[],[125,126,99,110,111,112,113,103,82,115,127,116,117,109,107,106,105,114,104,102],"trend radar","radar","pulse",{"skillNo":129,"name":130,"nameZh":6,"description":131,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":134,"publishedAt":39},"01M71ATGF095N3EJM9G8SD0BB5","tech-news-daily","每日科技新闻汇——从全球多个 RSS 源抓取最新科技新闻，翻译（英→中）、去重、排版成每日简报。当用户询问科技新闻、科技新鲜事、每日科技、技术动态、Daily Tech News 或类似表达时触发此技能。","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftech-news-daily\u002FSKILL.md",[],[135,136,137,138,139,140],"news","tech","tech news daily","daily","rss","翻译",{"skillNo":142,"name":143,"nameZh":6,"description":144,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":145,"categories":146,"keywords":152,"publishedAt":39},"01M71ATFAEAMQ17M70NQNY7SR8","summarize","Summarize URLs or files with the summarize CLI (web, PDFs, images, audio, YouTube).","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fsummarize\u002FSKILL.md",[147],{"categoryNo":148,"categoryName":149,"taxonomyType":150,"taxonomyTypeDesc":151},"01JBSEEDCAT000000000000021","资料检索与研究","SCENARIO","使用场景",[143,88,153,154,155,91,110,156,157,158,101,159,114],"Audio","cli","youtube","images","https","files","pdfs",{"skillNo":161,"name":162,"nameZh":6,"description":163,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":164,"categories":165,"keywords":166,"publishedAt":39},"01M71ATDNS3R0M4H936PACQAWZ","sonoscli","Control Sonos speakers (discover\u002Fstatus\u002Fplay\u002Fvolume\u002Fgroup).","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fsonoscli\u002FSKILL.md",[],[162,167,168,169,114,170,157,171,172,173,174,175],"status","play","go","latest","github","discover","control","cmd","volume"]