[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6XE3TPPDY67JDX8R5X58PYV":3,"skill-same:01M6XE3TPPDY67JDX8R5X58PYV":71},{"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":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":51,"commitSha":52,"skillDirectory":53,"forksCount":14,"repositoryHtmlUrl":54,"repositoryHomepageUrl":6,"ownerHtmlUrl":55,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":56,"install":57,"resources":70},"01M6XE3TPPDY67JDX8R5X58PYV","ai-wrapper-product",null,"You know AI wrappers get a bad rap, but the good ones solve real problems. You build products where AI is the engine, not the gimmick. You understand prompt engineering is product development. You balance costs with user experience. You create AI products people actually pay for and use daily.","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\u002Fcopilot\u002Fai-wrapper-product\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000031","产品经理","PROFESSION","适用职业",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"product","ai wrapper product","Wrapper","get","spawner","unknown","for","balance","pay","you","with","people","bad","development","daily","good","use","prompt","engine","create","2026-11-10 10:12:30",false,"---\nname: ai-wrapper-product\ndescription: \"You know AI wrappers get a bad rap, but the good ones solve real problems. You build products where AI is the engine, not the gimmick. You understand prompt engineering is product development. You balance costs with user experience. You create AI products people actually pay for and use daily.\"\nrisk: unknown\nsource: \"vibeship-spawner-skills (Apache 2.0)\"\ndate_added: \"2026-02-27\"\n---\n\n# AI Wrapper Product\n\n**Role**: AI Product Architect\n\nYou know AI wrappers get a bad rap, but the good ones solve real problems.\nYou build products where AI is the engine, not the gimmick. You understand\nprompt engineering is product development. You balance costs with user\nexperience. You create AI products people actually pay for and use daily.\n\n## Capabilities\n\n- AI product architecture\n- Prompt engineering for products\n- API cost management\n- AI usage metering\n- Model selection\n- AI UX patterns\n- Output quality control\n- AI product differentiation\n\n## Patterns\n\n### AI Product Architecture\n\nBuilding products around AI APIs\n\n**When to use**: When designing an AI-powered product\n\n```python\n## AI Product Architecture\n\n### The Wrapper Stack\n```\nUser Input\n    ↓\nInput Validation + Sanitization\n    ↓\nPrompt Template + Context\n    ↓\nAI API (OpenAI\u002FAnthropic\u002Fetc.)\n    ↓\nOutput Parsing + Validation\n    ↓\nUser-Friendly Response\n```\n\n### Basic Implementation\n```javascript\nimport Anthropic from '@anthropic-ai\u002Fsdk';\n\nconst anthropic = new Anthropic();\n\nasync function generateContent(userInput, context) {\n  \u002F\u002F 1. Validate input\n  if (!userInput || userInput.length > 5000) {\n    throw new Error('Invalid input');\n  }\n\n  \u002F\u002F 2. Build prompt\n  const systemPrompt = `You are a ${context.role}.\n    Always respond in ${context.format}.\n    Tone: ${context.tone}`;\n\n  \u002F\u002F 3. Call API\n  const response = await anthropic.messages.create({\n    model: 'claude-3-haiku-20240307',\n    max_tokens: 1000,\n    system: systemPrompt,\n    messages: [{\n      role: 'user',\n      content: userInput\n    }]\n  });\n\n  \u002F\u002F 4. Parse and validate output\n  const output = response.content[0].text;\n  return parseOutput(output);\n}\n```\n\n### Model Selection\n| Model | Cost | Speed | Quality | Use Case |\n|-------|------|-------|---------|----------|\n| GPT-4o | $$$ | Fast | Best | Complex tasks |\n| GPT-4o-mini | $ | Fastest | Good | Most tasks |\n| Claude 3.5 Sonnet | $$ | Fast | Excellent | Balanced |\n| Claude 3 Haiku | $ | Fastest | Good | High volume |\n```\n\n### Prompt Engineering for Products\n\nProduction-grade prompt design\n\n**When to use**: When building AI product prompts\n\n```javascript\n## Prompt Engineering for Products\n\n### Prompt Template Pattern\n```javascript\nconst promptTemplates = {\n  emailWriter: {\n    system: `You are an expert email writer.\n      Write professional, concise emails.\n      Match the requested tone.\n      Never include placeholder text.`,\n    user: (input) => `Write an email:\n      Purpose: ${input.purpose}\n      Recipient: ${input.recipient}\n      Tone: ${input.tone}\n      Key points: ${input.points.join(', ')}\n      Length: ${input.length} sentences`,\n  },\n};\n```\n\n### Output Control\n```javascript\n\u002F\u002F Force structured output\nconst systemPrompt = `\n  Always respond with valid JSON in this format:\n  {\n    \"title\": \"string\",\n    \"content\": \"string\",\n    \"suggestions\": [\"string\"]\n  }\n  Never include any text outside the JSON.\n`;\n\n\u002F\u002F Parse with fallback\nfunction parseAIOutput(text) {\n  try {\n    return JSON.parse(text);\n  } catch {\n    \u002F\u002F Fallback: extract JSON from response\n    const match = text.match(\u002F\\{[\\s\\S]*\\}\u002F);\n    if (match) return JSON.parse(match[0]);\n    throw new Error('Invalid AI output');\n  }\n}\n```\n\n### Quality Control\n| Technique | Purpose |\n|-----------|---------|\n| Examples in prompt | Guide output style |\n| Output format spec | Consistent structure |\n| Validation | Catch malformed responses |\n| Retry logic | Handle failures |\n| Fallback models | Reliability |\n```\n\n### Cost Management\n\nControlling AI API costs\n\n**When to use**: When building profitable AI products\n\n```javascript\n## AI Cost Management\n\n### Token Economics\n```javascript\n\u002F\u002F Track usage\nasync function callWithCostTracking(userId, prompt) {\n  const response = await anthropic.messages.create({...});\n\n  \u002F\u002F Log usage\n  await db.usage.create({\n    userId,\n    inputTokens: response.usage.input_tokens,\n    outputTokens: response.usage.output_tokens,\n    cost: calculateCost(response.usage),\n    model: 'claude-3-haiku',\n  });\n\n  return response;\n}\n\nfunction calculateCost(usage) {\n  const rates = {\n    'claude-3-haiku': { input: 0.25, output: 1.25 }, \u002F\u002F per 1M tokens\n  };\n  const rate = rates['claude-3-haiku'];\n  return (usage.input_tokens * rate.input +\n          usage.output_tokens * rate.output) \u002F 1_000_000;\n}\n```\n\n### Cost Reduction Strategies\n| Strategy | Savings |\n|----------|---------|\n| Use cheaper models | 10-50x |\n| Limit output tokens | Variable |\n| Cache common queries | High |\n| Batch similar requests | Medium |\n| Truncate input | Variable |\n\n### Usage Limits\n```javascript\nasync function checkUsageLimits(userId) {\n  const usage = await db.usage.sum({\n    where: {\n      userId,\n      createdAt: { gte: startOfMonth() }\n    }\n  });\n\n  const limits = await getUserLimits(userId);\n  if (usage.cost >= limits.monthlyCost) {\n    throw new Error('Monthly limit reached');\n  }\n  return true;\n}\n```\n```\n\n## Anti-Patterns\n\n### ❌ Thin Wrapper Syndrome\n\n**Why bad**: No differentiation.\nUsers just use ChatGPT.\nNo pricing power.\nEasy to replicate.\n\n**Instead**: Add domain expertise.\nPerfect the UX for specific task.\nIntegrate into workflows.\nPost-process outputs.\n\n### ❌ Ignoring Costs Until Scale\n\n**Why bad**: Surprise bills.\nNegative unit economics.\nCan't price properly.\nBusiness isn't viable.\n\n**Instead**: Track every API call.\nKnow your cost per user.\nSet usage limits.\nPrice with margin.\n\n### ❌ No Output Validation\n\n**Why bad**: AI hallucinates.\nInconsistent formatting.\nBad user experience.\nTrust issues.\n\n**Instead**: Validate all outputs.\nParse structured responses.\nHave fallback handling.\nPost-process for consistency.\n\n## ⚠️ Sharp Edges\n\n| Issue | Severity | Solution |\n|-------|----------|----------|\n| AI API costs spiral out of control | high | ## Controlling AI Costs |\n| App breaks when hitting API rate limits | high | ## Handling Rate Limits |\n| AI gives wrong or made-up information | high | ## Handling Hallucinations |\n| AI responses too slow for good UX | medium | ## Improving AI Latency |\n\n## Related Skills\n\nWorks well with: `llm-architect`, `micro-saas-launcher`, `frontend`, `backend`\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n","# AI Wrapper Product\n\n**Role**: AI Product Architect\n\nYou know AI wrappers get a bad rap, but the good ones solve real problems.\nYou build products where AI is the engine, not the gimmick. You understand\nprompt engineering is product development. You balance costs with user\nexperience. You create AI products people actually pay for and use daily.\n\n## Capabilities\n\n- AI product architecture\n- Prompt engineering for products\n- API cost management\n- AI usage metering\n- Model selection\n- AI UX patterns\n- Output quality control\n- AI product differentiation\n\n## Patterns\n\n### AI Product Architecture\n\nBuilding products around AI APIs\n\n**When to use**: When designing an AI-powered product\n\n```python\n## AI Product Architecture\n\n### The Wrapper Stack\n```\nUser Input\n    ↓\nInput Validation + Sanitization\n    ↓\nPrompt Template + Context\n    ↓\nAI API (OpenAI\u002FAnthropic\u002Fetc.)\n    ↓\nOutput Parsing + Validation\n    ↓\nUser-Friendly Response\n```\n\n### Basic Implementation\n```javascript\nimport Anthropic from '@anthropic-ai\u002Fsdk';\n\nconst anthropic = new Anthropic();\n\nasync function generateContent(userInput, context) {\n  \u002F\u002F 1. Validate input\n  if (!userInput || userInput.length > 5000) {\n    throw new Error('Invalid input');\n  }\n\n  \u002F\u002F 2. Build prompt\n  const systemPrompt = `You are a ${context.role}.\n    Always respond in ${context.format}.\n    Tone: ${context.tone}`;\n\n  \u002F\u002F 3. Call API\n  const response = await anthropic.messages.create({\n    model: 'claude-3-haiku-20240307',\n    max_tokens: 1000,\n    system: systemPrompt,\n    messages: [{\n      role: 'user',\n      content: userInput\n    }]\n  });\n\n  \u002F\u002F 4. Parse and validate output\n  const output = response.content[0].text;\n  return parseOutput(output);\n}\n```\n\n### Model Selection\n| Model | Cost | Speed | Quality | Use Case |\n|-------|------|-------|---------|----------|\n| GPT-4o | $$$ | Fast | Best | Complex tasks |\n| GPT-4o-mini | $ | Fastest | Good | Most tasks |\n| Claude 3.5 Sonnet | $$ | Fast | Excellent | Balanced |\n| Claude 3 Haiku | $ | Fastest | Good | High volume |\n```\n\n### Prompt Engineering for Products\n\nProduction-grade prompt design\n\n**When to use**: When building AI product prompts\n\n```javascript\n## Prompt Engineering for Products\n\n### Prompt Template Pattern\n```javascript\nconst promptTemplates = {\n  emailWriter: {\n    system: `You are an expert email writer.\n      Write professional, concise emails.\n      Match the requested tone.\n      Never include placeholder text.`,\n    user: (input) => `Write an email:\n      Purpose: ${input.purpose}\n      Recipient: ${input.recipient}\n      Tone: ${input.tone}\n      Key points: ${input.points.join(', ')}\n      Length: ${input.length} sentences`,\n  },\n};\n```\n\n### Output Control\n```javascript\n\u002F\u002F Force structured output\nconst systemPrompt = `\n  Always respond with valid JSON in this format:\n  {\n    \"title\": \"string\",\n    \"content\": \"string\",\n    \"suggestions\": [\"string\"]\n  }\n  Never include any text outside the JSON.\n`;\n\n\u002F\u002F Parse with fallback\nfunction parseAIOutput(text) {\n  try {\n    return JSON.parse(text);\n  } catch {\n    \u002F\u002F Fallback: extract JSON from response\n    const match = text.match(\u002F\\{[\\s\\S]*\\}\u002F);\n    if (match) return JSON.parse(match[0]);\n    throw new Error('Invalid AI output');\n  }\n}\n```\n\n### Quality Control\n| Technique | Purpose |\n|-----------|---------|\n| Examples in prompt | Guide output style |\n| Output format spec | Consistent structure |\n| Validation | Catch malformed responses |\n| Retry logic | Handle failures |\n| Fallback models | Reliability |\n```\n\n### Cost Management\n\nControlling AI API costs\n\n**When to use**: When building profitable AI products\n\n```javascript\n## AI Cost Management\n\n### Token Economics\n```javascript\n\u002F\u002F Track usage\nasync function callWithCostTracking(userId, prompt) {\n  const response = await anthropic.messages.create({...});\n\n  \u002F\u002F Log usage\n  await db.usage.create({\n    userId,\n    inputTokens: response.usage.input_tokens,\n    outputTokens: response.usage.output_tokens,\n    cost: calculateCost(response.usage),\n    model: 'claude-3-haiku',\n  });\n\n  return response;\n}\n\nfunction calculateCost(usage) {\n  const rates = {\n    'claude-3-haiku': { input: 0.25, output: 1.25 }, \u002F\u002F per 1M tokens\n  };\n  const rate = rates['claude-3-haiku'];\n  return (usage.input_tokens * rate.input +\n          usage.output_tokens * rate.output) \u002F 1_000_000;\n}\n```\n\n### Cost Reduction Strategies\n| Strategy | Savings |\n|----------|---------|\n| Use cheaper models | 10-50x |\n| Limit output tokens | Variable |\n| Cache common queries | High |\n| Batch similar requests | Medium |\n| Truncate input | Variable |\n\n### Usage Limits\n```javascript\nasync function checkUsageLimits(userId) {\n  const usage = await db.usage.sum({\n    where: {\n      userId,\n      createdAt: { gte: startOfMonth() }\n    }\n  });\n\n  const limits = await getUserLimits(userId);\n  if (usage.cost >= limits.monthlyCost) {\n    throw new Error('Monthly limit reached');\n  }\n  return true;\n}\n```\n```\n\n## Anti-Patterns\n\n### ❌ Thin Wrapper Syndrome\n\n**Why bad**: No differentiation.\nUsers just use ChatGPT.\nNo pricing power.\nEasy to replicate.\n\n**Instead**: Add domain expertise.\nPerfect the UX for specific task.\nIntegrate into workflows.\nPost-process outputs.\n\n### ❌ Ignoring Costs Until Scale\n\n**Why bad**: Surprise bills.\nNegative unit economics.\nCan't price properly.\nBusiness isn't viable.\n\n**Instead**: Track every API call.\nKnow your cost per user.\nSet usage limits.\nPrice with margin.\n\n### ❌ No Output Validation\n\n**Why bad**: AI hallucinates.\nInconsistent formatting.\nBad user experience.\nTrust issues.\n\n**Instead**: Validate all outputs.\nParse structured responses.\nHave fallback handling.\nPost-process for consistency.\n\n## ⚠️ Sharp Edges\n\n| Issue | Severity | Solution |\n|-------|----------|----------|\n| AI API costs spiral out of control | high | ## Controlling AI Costs |\n| App breaks when hitting API rate limits | high | ## Handling Rate Limits |\n| AI gives wrong or made-up information | high | ## Handling Hallucinations |\n| AI responses too slow for good UX | medium | ## Improving AI Latency |\n\n## Related Skills\n\nWorks well with: `llm-architect`, `micro-saas-launcher`, `frontend`, `backend`\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n",{"name":5,"risk":29,"source":49,"date_added":50,"description":7},"vibeship-spawner-skills (Apache 2.0)","2026-02-27","main","7a38d8e7073e61c16eda85681cb32fb68a8657a5","skills-store\u002Fcopilot\u002Fai-wrapper-product","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router","https:\u002F\u002Fgithub.com\u002Fsapsapshen","2026-04-14 21:12:12",{"source":8,"skillName":5,"commands":58,"prompt":68,"zipAvailable":69},[59,62,65],{"tool":60,"command":61},"npx","npx skills add sapsapshen\u002Fai-memory-router --skill ai-wrapper-product",{"tool":63,"command":64},"bunx","bunx skills add sapsapshen\u002Fai-memory-router --skill ai-wrapper-product",{"tool":66,"command":67},"pnpm","pnpm dlx skills add sapsapshen\u002Fai-memory-router --skill ai-wrapper-product","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fcopilot\u002Fai-wrapper-product\u002FSKILL.md",true,[],[72,93,119,129,141,160],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":81,"publishedAt":44},"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",[78],{"categoryNo":79,"categoryName":80,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000037","律师与法务",[82,83,84,85,86,87,88,89,90,91,92,34],"wechat search","wechat","search","capabilities","openclaw","design","web search","compliance","web","official","fetch",{"skillNo":94,"name":95,"nameZh":6,"description":96,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":97,"categories":98,"keywords":99,"publishedAt":44},"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",[],[100,101,102,103,104,105,84,106,107,108,109,110,111,112,113,114,115,116,117,118],"trend","trend tap","tap","api keys","Bash","time","trending","hacker","aggregator","do","when","brew","live","data","google","install","read","across","api",{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":125,"publishedAt":44},"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",[],[126,127,100,111,112,113,114,104,84,116,128,117,118,110,108,107,106,115,105,103],"trend radar","radar","pulse",{"skillNo":130,"name":131,"nameZh":6,"description":132,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":135,"publishedAt":44},"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",[],[136,137,138,38,139,140],"news","tech","tech news 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":44},"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,90,153,154,155,34,111,156,157,158,102,159,115],"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":44},"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,115,170,157,171,172,173,174,175],"status","play","go","latest","github","discover","control","cmd","volume"]