[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M718DS7VVAG5WX12AYWJMPDD":3,"skill-same:01M718DS7VVAG5WX12AYWJMPDD":203},{"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":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":45,"commitSha":46,"skillDirectory":47,"forksCount":14,"repositoryHtmlUrl":48,"repositoryHomepageUrl":6,"ownerHtmlUrl":49,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":50,"install":51,"resources":64},"01M718DS7VVAG5WX12AYWJMPDD","dbos-typescript",null,"Guide for building reliable, fault-tolerant TypeScript applications with DBOS durable workflows. Use when adding DBOS to existing TypeScript code, creating workflows and steps, or using queues for concurrency control.","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\u002Fdbos-typescript\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"dbos typescript","typescript","guide","docs","queues","safe","https","2026","concurrency","control","with","code","when","workflows","Existing","use","dev","applications","for","2026-11-10 10:12:30",false,"---\nname: dbos-typescript\ndescription: \"Guide for building reliable, fault-tolerant TypeScript applications with DBOS durable workflows. Use when adding DBOS to existing TypeScript code, creating workflows and steps, or using queues for concurrency control.\"\nrisk: safe\nsource: \"https:\u002F\u002Fdocs.dbos.dev\u002F\"\ndate_added: \"2026-02-27\"\n---\n\n# DBOS TypeScript Best Practices\n\nGuide for building reliable, fault-tolerant TypeScript applications with DBOS durable workflows.\n\n## When to Use\nReference these guidelines when:\n- Adding DBOS to existing TypeScript code\n- Creating workflows and steps\n- Using queues for concurrency control\n- Implementing workflow communication (events, messages, streams)\n- Configuring and launching DBOS applications\n- Using DBOSClient from external applications\n- Testing DBOS applications\n\n## Rule Categories by Priority\n\n| Priority | Category | Impact | Prefix |\n|----------|----------|--------|--------|\n| 1 | Lifecycle | CRITICAL | `lifecycle-` |\n| 2 | Workflow | CRITICAL | `workflow-` |\n| 3 | Step | HIGH | `step-` |\n| 4 | Queue | HIGH | `queue-` |\n| 5 | Communication | MEDIUM | `comm-` |\n| 6 | Pattern | MEDIUM | `pattern-` |\n| 7 | Testing | LOW-MEDIUM | `test-` |\n| 8 | Client | MEDIUM | `client-` |\n| 9 | Advanced | LOW | `advanced-` |\n\n## Critical Rules\n\n### Installation\n\nAlways install the latest version of DBOS:\n\n```bash\nnpm install @dbos-inc\u002Fdbos-sdk@latest\n```\n\n### DBOS Configuration and Launch\n\nA DBOS application MUST configure and launch DBOS before running any workflows:\n\n```typescript\nimport { DBOS } from \"@dbos-inc\u002Fdbos-sdk\";\n\nasync function main() {\n  DBOS.setConfig({\n    name: \"my-app\",\n    systemDatabaseUrl: process.env.DBOS_SYSTEM_DATABASE_URL,\n  });\n  await DBOS.launch();\n  await myWorkflow();\n}\n\nmain().catch(console.log);\n```\n\n### Workflow and Step Structure\n\nWorkflows are comprised of steps. Any function performing complex operations or accessing external services must be run as a step using `DBOS.runStep`:\n\n```typescript\nimport { DBOS } from \"@dbos-inc\u002Fdbos-sdk\";\n\nasync function fetchData() {\n  return await fetch(\"https:\u002F\u002Fapi.example.com\").then(r => r.json());\n}\n\nasync function myWorkflowFn() {\n  const result = await DBOS.runStep(fetchData, { name: \"fetchData\" });\n  return result;\n}\nconst myWorkflow = DBOS.registerWorkflow(myWorkflowFn);\n```\n\n### Key Constraints\n\n- Do NOT call, start, or enqueue workflows from within steps\n- Do NOT use threads or uncontrolled concurrency to start workflows - use `DBOS.startWorkflow` or queues\n- Workflows MUST be deterministic - non-deterministic operations go in steps\n- Do NOT modify global variables from workflows or steps\n\n## How to Use\n\nRead individual rule files for detailed explanations and examples:\n\n```\nreferences\u002Flifecycle-config.md\nreferences\u002Fworkflow-determinism.md\nreferences\u002Fqueue-concurrency.md\n```\n\n## References\n\n- https:\u002F\u002Fdocs.dbos.dev\u002F\n- https:\u002F\u002Fgithub.com\u002Fdbos-inc\u002Fdbos-transact-ts\n","# DBOS TypeScript Best Practices\n\nGuide for building reliable, fault-tolerant TypeScript applications with DBOS durable workflows.\n\n## When to Use\nReference these guidelines when:\n- Adding DBOS to existing TypeScript code\n- Creating workflows and steps\n- Using queues for concurrency control\n- Implementing workflow communication (events, messages, streams)\n- Configuring and launching DBOS applications\n- Using DBOSClient from external applications\n- Testing DBOS applications\n\n## Rule Categories by Priority\n\n| Priority | Category | Impact | Prefix |\n|----------|----------|--------|--------|\n| 1 | Lifecycle | CRITICAL | `lifecycle-` |\n| 2 | Workflow | CRITICAL | `workflow-` |\n| 3 | Step | HIGH | `step-` |\n| 4 | Queue | HIGH | `queue-` |\n| 5 | Communication | MEDIUM | `comm-` |\n| 6 | Pattern | MEDIUM | `pattern-` |\n| 7 | Testing | LOW-MEDIUM | `test-` |\n| 8 | Client | MEDIUM | `client-` |\n| 9 | Advanced | LOW | `advanced-` |\n\n## Critical Rules\n\n### Installation\n\nAlways install the latest version of DBOS:\n\n```bash\nnpm install @dbos-inc\u002Fdbos-sdk@latest\n```\n\n### DBOS Configuration and Launch\n\nA DBOS application MUST configure and launch DBOS before running any workflows:\n\n```typescript\nimport { DBOS } from \"@dbos-inc\u002Fdbos-sdk\";\n\nasync function main() {\n  DBOS.setConfig({\n    name: \"my-app\",\n    systemDatabaseUrl: process.env.DBOS_SYSTEM_DATABASE_URL,\n  });\n  await DBOS.launch();\n  await myWorkflow();\n}\n\nmain().catch(console.log);\n```\n\n### Workflow and Step Structure\n\nWorkflows are comprised of steps. Any function performing complex operations or accessing external services must be run as a step using `DBOS.runStep`:\n\n```typescript\nimport { DBOS } from \"@dbos-inc\u002Fdbos-sdk\";\n\nasync function fetchData() {\n  return await fetch(\"https:\u002F\u002Fapi.example.com\").then(r => r.json());\n}\n\nasync function myWorkflowFn() {\n  const result = await DBOS.runStep(fetchData, { name: \"fetchData\" });\n  return result;\n}\nconst myWorkflow = DBOS.registerWorkflow(myWorkflowFn);\n```\n\n### Key Constraints\n\n- Do NOT call, start, or enqueue workflows from within steps\n- Do NOT use threads or uncontrolled concurrency to start workflows - use `DBOS.startWorkflow` or queues\n- Workflows MUST be deterministic - non-deterministic operations go in steps\n- Do NOT modify global variables from workflows or steps\n\n## How to Use\n\nRead individual rule files for detailed explanations and examples:\n\n```\nreferences\u002Flifecycle-config.md\nreferences\u002Fworkflow-determinism.md\nreferences\u002Fqueue-concurrency.md\n```\n\n## References\n\n- https:\u002F\u002Fdocs.dbos.dev\u002F\n- https:\u002F\u002Fgithub.com\u002Fdbos-inc\u002Fdbos-transact-ts\n",{"name":5,"risk":24,"source":43,"date_added":44,"description":7},"https:\u002F\u002Fdocs.dbos.dev\u002F","2026-02-27","main","7a38d8e7073e61c16eda85681cb32fb68a8657a5","skills-store\u002Fglobal\u002Fdbos-typescript","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router","https:\u002F\u002Fgithub.com\u002Fsapsapshen","2026-04-14 21:12:12",{"source":8,"skillName":5,"commands":52,"prompt":62,"zipAvailable":63},[53,56,59],{"tool":54,"command":55},"npx","npx skills add sapsapshen\u002Fai-memory-router --skill dbos-typescript",{"tool":57,"command":58},"bunx","bunx skills add sapsapshen\u002Fai-memory-router --skill dbos-typescript",{"tool":60,"command":61},"pnpm","pnpm dlx skills add sapsapshen\u002Fai-memory-router --skill dbos-typescript","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fdbos-typescript\u002FSKILL.md",true,[65,71,75,79,83,87,91,95,99,103,107,111,115,119,123,127,131,135,139,143,147,151,155,159,163,167,171,175,179,183,187,191,195,199],{"path":66,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":69,"sourceHtmlUrl":70},"AGENTS.md","REFERENCE","参考文档",2728,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fdbos-typescript\u002FAGENTS.md",{"path":72,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":73,"sourceHtmlUrl":74},"CLAUDE.md",9,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fdbos-typescript\u002FCLAUDE.md",{"path":76,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":77,"sourceHtmlUrl":78},"references\u002F_sections.md",1444,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fdbos-typescript\u002Freferences\u002F_sections.md",{"path":80,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":81,"sourceHtmlUrl":82},"references\u002Fadvanced-patching.md",2054,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fdbos-typescript\u002Freferences\u002Fadvanced-patching.md",{"path":84,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":85,"sourceHtmlUrl":86},"references\u002Fadvanced-versioning.md",1779,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fdbos-typescript\u002Freferences\u002Fadvanced-versioning.md",{"path":88,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":89,"sourceHtmlUrl":90},"references\u002Fclient-enqueue.md",2125,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fdbos-typescript\u002Freferences\u002Fclient-enqueue.md",{"path":92,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":93,"sourceHtmlUrl":94},"references\u002Fclient-setup.md",1867,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fdbos-typescript\u002Freferences\u002Fclient-setup.md",{"path":96,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":97,"sourceHtmlUrl":98},"references\u002Fcomm-events.md",2113,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fdbos-typescript\u002Freferences\u002Fcomm-events.md",{"path":100,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":101,"sourceHtmlUrl":102},"references\u002Fcomm-messages.md",1956,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fdbos-typescript\u002Freferences\u002Fcomm-messages.md",{"path":104,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":105,"sourceHtmlUrl":106},"references\u002Fcomm-streaming.md",1942,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fdbos-typescript\u002Freferences\u002Fcomm-streaming.md",{"path":108,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":109,"sourceHtmlUrl":110},"references\u002Flifecycle-config.md",1189,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fdbos-typescript\u002Freferences\u002Flifecycle-config.md",{"path":112,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":113,"sourceHtmlUrl":114},"references\u002Flifecycle-express.md",1490,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fdbos-typescript\u002Freferences\u002Flifecycle-express.md",{"path":116,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":117,"sourceHtmlUrl":118},"references\u002Fpattern-classes.md",2041,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fdbos-typescript\u002Freferences\u002Fpattern-classes.md",{"path":120,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":121,"sourceHtmlUrl":122},"references\u002Fpattern-debouncing.md",1929,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fdbos-typescript\u002Freferences\u002Fpattern-debouncing.md",{"path":124,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":125,"sourceHtmlUrl":126},"references\u002Fpattern-idempotency.md",1915,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fdbos-typescript\u002Freferences\u002Fpattern-idempotency.md",{"path":128,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":129,"sourceHtmlUrl":130},"references\u002Fpattern-scheduled.md",2283,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fdbos-typescript\u002Freferences\u002Fpattern-scheduled.md",{"path":132,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":133,"sourceHtmlUrl":134},"references\u002Fpattern-sleep.md",1655,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fdbos-typescript\u002Freferences\u002Fpattern-sleep.md",{"path":136,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":137,"sourceHtmlUrl":138},"references\u002Fqueue-basics.md",1620,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fdbos-typescript\u002Freferences\u002Fqueue-basics.md",{"path":140,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":141,"sourceHtmlUrl":142},"references\u002Fqueue-concurrency.md",1728,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fdbos-typescript\u002Freferences\u002Fqueue-concurrency.md",{"path":144,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":145,"sourceHtmlUrl":146},"references\u002Fqueue-deduplication.md",1621,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fdbos-typescript\u002Freferences\u002Fqueue-deduplication.md",{"path":148,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":149,"sourceHtmlUrl":150},"references\u002Fqueue-listening.md",1786,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fdbos-typescript\u002Freferences\u002Fqueue-listening.md",{"path":152,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":153,"sourceHtmlUrl":154},"references\u002Fqueue-partitioning.md",1916,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fdbos-typescript\u002Freferences\u002Fqueue-partitioning.md",{"path":156,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":157,"sourceHtmlUrl":158},"references\u002Fqueue-priority.md",1376,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fdbos-typescript\u002Freferences\u002Fqueue-priority.md",{"path":160,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":161,"sourceHtmlUrl":162},"references\u002Fqueue-rate-limiting.md",1186,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fdbos-typescript\u002Freferences\u002Fqueue-rate-limiting.md",{"path":164,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":165,"sourceHtmlUrl":166},"references\u002Fstep-basics.md",1938,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fdbos-typescript\u002Freferences\u002Fstep-basics.md",{"path":168,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":169,"sourceHtmlUrl":170},"references\u002Fstep-retries.md",1958,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fdbos-typescript\u002Freferences\u002Fstep-retries.md",{"path":172,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":173,"sourceHtmlUrl":174},"references\u002Fstep-transactions.md",2207,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fdbos-typescript\u002Freferences\u002Fstep-transactions.md",{"path":176,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":177,"sourceHtmlUrl":178},"references\u002Ftest-setup.md",3023,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fdbos-typescript\u002Freferences\u002Ftest-setup.md",{"path":180,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":181,"sourceHtmlUrl":182},"references\u002Fworkflow-background.md",1460,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fdbos-typescript\u002Freferences\u002Fworkflow-background.md",{"path":184,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":185,"sourceHtmlUrl":186},"references\u002Fworkflow-constraints.md",1955,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fdbos-typescript\u002Freferences\u002Fworkflow-constraints.md",{"path":188,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":189,"sourceHtmlUrl":190},"references\u002Fworkflow-control.md",2039,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fdbos-typescript\u002Freferences\u002Fworkflow-control.md",{"path":192,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":193,"sourceHtmlUrl":194},"references\u002Fworkflow-determinism.md",1664,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fdbos-typescript\u002Freferences\u002Fworkflow-determinism.md",{"path":196,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":197,"sourceHtmlUrl":198},"references\u002Fworkflow-introspection.md",1827,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fdbos-typescript\u002Freferences\u002Fworkflow-introspection.md",{"path":200,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":201,"sourceHtmlUrl":202},"references\u002Fworkflow-timeout.md",1358,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fdbos-typescript\u002Freferences\u002Fworkflow-timeout.md",[204,227,252,262,275,293],{"skillNo":205,"name":206,"nameZh":6,"description":207,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":208,"categories":209,"keywords":215,"publishedAt":38},"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",[210],{"categoryNo":211,"categoryName":212,"taxonomyType":213,"taxonomyTypeDesc":214},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[216,217,218,219,220,221,222,223,224,225,226,29],"wechat search","wechat","search","capabilities","openclaw","design","web search","compliance","web","official","fetch",{"skillNo":228,"name":229,"nameZh":6,"description":230,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":231,"categories":232,"keywords":233,"publishedAt":38},"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",[],[234,235,236,237,238,239,218,240,241,242,243,31,244,245,246,247,248,249,250,251],"trend","trend tap","tap","api keys","Bash","time","trending","hacker","aggregator","do","brew","live","data","google","install","read","across","api",{"skillNo":253,"name":254,"nameZh":6,"description":255,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":256,"categories":257,"keywords":258,"publishedAt":38},"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",[],[259,260,234,244,245,246,247,238,218,249,261,250,251,31,242,241,240,248,239,237],"trend radar","radar","pulse",{"skillNo":263,"name":264,"nameZh":6,"description":265,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":266,"categories":267,"keywords":268,"publishedAt":38},"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",[],[269,270,271,272,273,274],"news","tech","tech news daily","daily","rss","翻译",{"skillNo":276,"name":277,"nameZh":6,"description":278,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":279,"categories":280,"keywords":286,"publishedAt":38},"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",[281],{"categoryNo":282,"categoryName":283,"taxonomyType":284,"taxonomyTypeDesc":285},"01JBSEEDCAT000000000000021","资料检索与研究","SCENARIO","使用场景",[277,224,287,288,289,29,244,290,25,291,236,292,248],"Audio","cli","youtube","images","files","pdfs",{"skillNo":294,"name":295,"nameZh":6,"description":296,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":297,"categories":298,"keywords":299,"publishedAt":38},"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",[],[295,300,301,302,248,303,25,304,305,28,306,307],"status","play","go","latest","github","discover","cmd","volume"]