[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6XEEDKRVKZV66RVFS8M7ZME":3,"skill-same:01M6XEEDKRVKZV66RVFS8M7ZME":70},{"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":50,"commitSha":51,"skillDirectory":52,"forksCount":14,"repositoryHtmlUrl":53,"repositoryHomepageUrl":6,"ownerHtmlUrl":54,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":55,"install":56,"resources":69},"01M6XEEDKRVKZV66RVFS8M7ZME","azd-deployment",null,"Deploy containerized frontend + backend applications to Azure Container Apps with remote builds, managed identity, and idempotent infrastructure.","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\u002Fazd-deployment\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"deployment","azd deployment","community","2026","managed","idempotent","unknown","containerized","with","remote","apps","azure container apps","frontend","container","backend","applications","infrastructure","azure","deploy","identity","2026-11-10 10:12:30",false,"---\nname: azd-deployment\ndescription: \"Deploy containerized frontend + backend applications to Azure Container Apps with remote builds, managed identity, and idempotent infrastructure.\"\nrisk: unknown\nsource: community\ndate_added: \"2026-02-27\"\n---\n\n# Azure Developer CLI (azd) Container Apps Deployment\n\nDeploy containerized frontend + backend applications to Azure Container Apps with remote builds, managed identity, and idempotent infrastructure.\n\n## Quick Start\n\n```bash\n# Initialize and deploy\nazd auth login\nazd init                    # Creates azure.yaml and .azure\u002F folder\nazd env new \u003Cenv-name>      # Create environment (dev, staging, prod)\nazd up                      # Provision infra + build + deploy\n```\n\n## Core File Structure\n\n```\nproject\u002F\n├── azure.yaml              # azd service definitions + hooks\n├── infra\u002F\n│   ├── main.bicep          # Root infrastructure module\n│   ├── main.parameters.json # Parameter injection from env vars\n│   └── modules\u002F\n│       ├── container-apps-environment.bicep\n│       └── container-app.bicep\n├── .azure\u002F\n│   ├── config.json         # Default environment pointer\n│   └── \u003Cenv-name>\u002F\n│       ├── .env            # Environment-specific values (azd-managed)\n│       └── config.json     # Environment metadata\n└── src\u002F\n    ├── frontend\u002FDockerfile\n    └── backend\u002FDockerfile\n```\n\n## azure.yaml Configuration\n\n### Minimal Configuration\n\n```yaml\nname: azd-deployment\nservices:\n  backend:\n    project: .\u002Fsrc\u002Fbackend\n    language: python\n    host: containerapp\n    docker:\n      path: .\u002FDockerfile\n      remoteBuild: true\n```\n\n### Full Configuration with Hooks\n\n```yaml\nname: azd-deployment\nmetadata:\n  template: my-project@1.0.0\n\ninfra:\n  provider: bicep\n  path: .\u002Finfra\n\nazure:\n  location: eastus2\n\nservices:\n  frontend:\n    project: .\u002Fsrc\u002Ffrontend\n    language: ts\n    host: containerapp\n    docker:\n      path: .\u002FDockerfile\n      context: .\n      remoteBuild: true\n\n  backend:\n    project: .\u002Fsrc\u002Fbackend\n    language: python\n    host: containerapp\n    docker:\n      path: .\u002FDockerfile\n      context: .\n      remoteBuild: true\n\nhooks:\n  preprovision:\n    shell: sh\n    run: |\n      echo \"Before provisioning...\"\n      \n  postprovision:\n    shell: sh\n    run: |\n      echo \"After provisioning - set up RBAC, etc.\"\n      \n  postdeploy:\n    shell: sh\n    run: |\n      echo \"Frontend: ${SERVICE_FRONTEND_URI}\"\n      echo \"Backend: ${SERVICE_BACKEND_URI}\"\n```\n\n### Key azure.yaml Options\n\n| Option | Description |\n|--------|-------------|\n| `remoteBuild: true` | Build images in Azure Container Registry (recommended) |\n| `context: .` | Docker build context relative to project path |\n| `host: containerapp` | Deploy to Azure Container Apps |\n| `infra.provider: bicep` | Use Bicep for infrastructure |\n\n## Environment Variables Flow\n\n### Three-Level Configuration\n\n1. **Local `.env`** - For local development only\n2. **`.azure\u002F\u003Cenv>\u002F.env`** - azd-managed, auto-populated from Bicep outputs\n3. **`main.parameters.json`** - Maps env vars to Bicep parameters\n\n### Parameter Injection Pattern\n\n```json\n\u002F\u002F infra\u002Fmain.parameters.json\n{\n  \"parameters\": {\n    \"environmentName\": { \"value\": \"${AZURE_ENV_NAME}\" },\n    \"location\": { \"value\": \"${AZURE_LOCATION=eastus2}\" },\n    \"azureOpenAiEndpoint\": { \"value\": \"${AZURE_OPENAI_ENDPOINT}\" }\n  }\n}\n```\n\nSyntax: `${VAR_NAME}` or `${VAR_NAME=default_value}`\n\n### Setting Environment Variables\n\n```bash\n# Set for current environment\nazd env set AZURE_OPENAI_ENDPOINT \"https:\u002F\u002Fmy-openai.openai.azure.com\"\nazd env set AZURE_SEARCH_ENDPOINT \"https:\u002F\u002Fmy-search.search.windows.net\"\n\n# Set during init\nazd env new prod\nazd env set AZURE_OPENAI_ENDPOINT \"...\" \n```\n\n### Bicep Output → Environment Variable\n\n```bicep\n\u002F\u002F In main.bicep - outputs auto-populate .azure\u002F\u003Cenv>\u002F.env\noutput SERVICE_FRONTEND_URI string = frontend.outputs.uri\noutput SERVICE_BACKEND_URI string = backend.outputs.uri\noutput BACKEND_PRINCIPAL_ID string = backend.outputs.principalId\n```\n\n## Idempotent Deployments\n\n### Why azd up is Idempotent\n\n1. **Bicep is declarative** - Resources reconcile to desired state\n2. **Remote builds tag uniquely** - Image tags include deployment timestamp\n3. **ACR reuses layers** - Only changed layers upload\n\n### Preserving Manual Changes\n\nCustom domains added via Portal can be lost on redeploy. Preserve with hooks:\n\n```yaml\nhooks:\n  preprovision:\n    shell: sh\n    run: |\n      # Save custom domains before provision\n      if az containerapp show --name \"$FRONTEND_NAME\" -g \"$RG\" &>\u002Fdev\u002Fnull; then\n        az containerapp show --name \"$FRONTEND_NAME\" -g \"$RG\" \\\n          --query \"properties.configuration.ingress.customDomains\" \\\n          -o json > \u002Ftmp\u002Fdomains.json\n      fi\n\n  postprovision:\n    shell: sh\n    run: |\n      # Verify\u002Frestore custom domains\n      if [ -f \u002Ftmp\u002Fdomains.json ]; then\n        echo \"Saved domains: $(cat \u002Ftmp\u002Fdomains.json)\"\n      fi\n```\n\n### Handling Existing Resources\n\n```bicep\n\u002F\u002F Reference existing ACR (don't recreate)\nresource containerRegistry 'Microsoft.ContainerRegistry\u002Fregistries@2023-07-01' existing = {\n  name: containerRegistryName\n}\n\n\u002F\u002F Set customDomains to null to preserve Portal-added domains\ncustomDomains: empty(customDomainsParam) ? null : customDomainsParam\n```\n\n## Container App Service Discovery\n\nInternal HTTP routing between Container Apps in same environment:\n\n```bicep\n\u002F\u002F Backend reference in frontend env vars\nenv: [\n  {\n    name: 'BACKEND_URL'\n    value: 'http:\u002F\u002Fca-backend-${resourceToken}'  \u002F\u002F Internal DNS\n  }\n]\n```\n\nFrontend nginx proxies to internal URL:\n```nginx\nlocation \u002Fapi {\n    proxy_pass $BACKEND_URL;\n}\n```\n\n## Managed Identity & RBAC\n\n### Enable System-Assigned Identity\n\n```bicep\nresource containerApp 'Microsoft.App\u002FcontainerApps@2024-03-01' = {\n  identity: {\n    type: 'SystemAssigned'\n  }\n}\n\noutput principalId string = containerApp.identity.principalId\n```\n\n### Post-Provision RBAC Assignment\n\n```yaml\nhooks:\n  postprovision:\n    shell: sh\n    run: |\n      PRINCIPAL_ID=\"${BACKEND_PRINCIPAL_ID}\"\n      \n      # Azure OpenAI access\n      az role assignment create \\\n        --assignee-object-id \"$PRINCIPAL_ID\" \\\n        --assignee-principal-type ServicePrincipal \\\n        --role \"Cognitive Services OpenAI User\" \\\n        --scope \"$OPENAI_RESOURCE_ID\" 2>\u002Fdev\u002Fnull || true\n      \n      # Azure AI Search access\n      az role assignment create \\\n        --assignee-object-id \"$PRINCIPAL_ID\" \\\n        --role \"Search Index Data Reader\" \\\n        --scope \"$SEARCH_RESOURCE_ID\" 2>\u002Fdev\u002Fnull || true\n```\n\n## Common Commands\n\n```bash\n# Environment management\nazd env list                        # List environments\nazd env select \u003Cname>               # Switch environment\nazd env get-values                  # Show all env vars\nazd env set KEY value               # Set variable\n\n# Deployment\nazd up                              # Full provision + deploy\nazd provision                       # Infrastructure only\nazd deploy                          # Code deployment only\nazd deploy --service backend        # Deploy single service\n\n# Debugging\nazd show                            # Show project status\naz containerapp logs show -n \u003Capp> -g \u003Crg> --follow  # Stream logs\n```\n\n## Reference Files\n\n- **Bicep patterns**: See references\u002Fbicep-patterns.md for Container Apps modules\n- **Troubleshooting**: See references\u002Ftroubleshooting.md for common issues\n- **azure.yaml schema**: See references\u002Fazure-yaml-schema.md for full options\n\n## Critical Reminders\n\n1. **Always use `remoteBuild: true`** - Local builds fail on M1\u002FARM Macs deploying to AMD64\n2. **Bicep outputs auto-populate .azure\u002F\u003Cenv>\u002F.env** - Don't manually edit\n3. **Use `azd env set` for secrets** - Not main.parameters.json defaults\n4. **Service tags (`azd-service-name`)** - Required for azd to find Container Apps\n5. **`|| true` in hooks** - Prevent RBAC \"already exists\" errors from failing deploy\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n","# Azure Developer CLI (azd) Container Apps Deployment\n\nDeploy containerized frontend + backend applications to Azure Container Apps with remote builds, managed identity, and idempotent infrastructure.\n\n## Quick Start\n\n```bash\n# Initialize and deploy\nazd auth login\nazd init                    # Creates azure.yaml and .azure\u002F folder\nazd env new \u003Cenv-name>      # Create environment (dev, staging, prod)\nazd up                      # Provision infra + build + deploy\n```\n\n## Core File Structure\n\n```\nproject\u002F\n├── azure.yaml              # azd service definitions + hooks\n├── infra\u002F\n│   ├── main.bicep          # Root infrastructure module\n│   ├── main.parameters.json # Parameter injection from env vars\n│   └── modules\u002F\n│       ├── container-apps-environment.bicep\n│       └── container-app.bicep\n├── .azure\u002F\n│   ├── config.json         # Default environment pointer\n│   └── \u003Cenv-name>\u002F\n│       ├── .env            # Environment-specific values (azd-managed)\n│       └── config.json     # Environment metadata\n└── src\u002F\n    ├── frontend\u002FDockerfile\n    └── backend\u002FDockerfile\n```\n\n## azure.yaml Configuration\n\n### Minimal Configuration\n\n```yaml\nname: azd-deployment\nservices:\n  backend:\n    project: .\u002Fsrc\u002Fbackend\n    language: python\n    host: containerapp\n    docker:\n      path: .\u002FDockerfile\n      remoteBuild: true\n```\n\n### Full Configuration with Hooks\n\n```yaml\nname: azd-deployment\nmetadata:\n  template: my-project@1.0.0\n\ninfra:\n  provider: bicep\n  path: .\u002Finfra\n\nazure:\n  location: eastus2\n\nservices:\n  frontend:\n    project: .\u002Fsrc\u002Ffrontend\n    language: ts\n    host: containerapp\n    docker:\n      path: .\u002FDockerfile\n      context: .\n      remoteBuild: true\n\n  backend:\n    project: .\u002Fsrc\u002Fbackend\n    language: python\n    host: containerapp\n    docker:\n      path: .\u002FDockerfile\n      context: .\n      remoteBuild: true\n\nhooks:\n  preprovision:\n    shell: sh\n    run: |\n      echo \"Before provisioning...\"\n      \n  postprovision:\n    shell: sh\n    run: |\n      echo \"After provisioning - set up RBAC, etc.\"\n      \n  postdeploy:\n    shell: sh\n    run: |\n      echo \"Frontend: ${SERVICE_FRONTEND_URI}\"\n      echo \"Backend: ${SERVICE_BACKEND_URI}\"\n```\n\n### Key azure.yaml Options\n\n| Option | Description |\n|--------|-------------|\n| `remoteBuild: true` | Build images in Azure Container Registry (recommended) |\n| `context: .` | Docker build context relative to project path |\n| `host: containerapp` | Deploy to Azure Container Apps |\n| `infra.provider: bicep` | Use Bicep for infrastructure |\n\n## Environment Variables Flow\n\n### Three-Level Configuration\n\n1. **Local `.env`** - For local development only\n2. **`.azure\u002F\u003Cenv>\u002F.env`** - azd-managed, auto-populated from Bicep outputs\n3. **`main.parameters.json`** - Maps env vars to Bicep parameters\n\n### Parameter Injection Pattern\n\n```json\n\u002F\u002F infra\u002Fmain.parameters.json\n{\n  \"parameters\": {\n    \"environmentName\": { \"value\": \"${AZURE_ENV_NAME}\" },\n    \"location\": { \"value\": \"${AZURE_LOCATION=eastus2}\" },\n    \"azureOpenAiEndpoint\": { \"value\": \"${AZURE_OPENAI_ENDPOINT}\" }\n  }\n}\n```\n\nSyntax: `${VAR_NAME}` or `${VAR_NAME=default_value}`\n\n### Setting Environment Variables\n\n```bash\n# Set for current environment\nazd env set AZURE_OPENAI_ENDPOINT \"https:\u002F\u002Fmy-openai.openai.azure.com\"\nazd env set AZURE_SEARCH_ENDPOINT \"https:\u002F\u002Fmy-search.search.windows.net\"\n\n# Set during init\nazd env new prod\nazd env set AZURE_OPENAI_ENDPOINT \"...\" \n```\n\n### Bicep Output → Environment Variable\n\n```bicep\n\u002F\u002F In main.bicep - outputs auto-populate .azure\u002F\u003Cenv>\u002F.env\noutput SERVICE_FRONTEND_URI string = frontend.outputs.uri\noutput SERVICE_BACKEND_URI string = backend.outputs.uri\noutput BACKEND_PRINCIPAL_ID string = backend.outputs.principalId\n```\n\n## Idempotent Deployments\n\n### Why azd up is Idempotent\n\n1. **Bicep is declarative** - Resources reconcile to desired state\n2. **Remote builds tag uniquely** - Image tags include deployment timestamp\n3. **ACR reuses layers** - Only changed layers upload\n\n### Preserving Manual Changes\n\nCustom domains added via Portal can be lost on redeploy. Preserve with hooks:\n\n```yaml\nhooks:\n  preprovision:\n    shell: sh\n    run: |\n      # Save custom domains before provision\n      if az containerapp show --name \"$FRONTEND_NAME\" -g \"$RG\" &>\u002Fdev\u002Fnull; then\n        az containerapp show --name \"$FRONTEND_NAME\" -g \"$RG\" \\\n          --query \"properties.configuration.ingress.customDomains\" \\\n          -o json > \u002Ftmp\u002Fdomains.json\n      fi\n\n  postprovision:\n    shell: sh\n    run: |\n      # Verify\u002Frestore custom domains\n      if [ -f \u002Ftmp\u002Fdomains.json ]; then\n        echo \"Saved domains: $(cat \u002Ftmp\u002Fdomains.json)\"\n      fi\n```\n\n### Handling Existing Resources\n\n```bicep\n\u002F\u002F Reference existing ACR (don't recreate)\nresource containerRegistry 'Microsoft.ContainerRegistry\u002Fregistries@2023-07-01' existing = {\n  name: containerRegistryName\n}\n\n\u002F\u002F Set customDomains to null to preserve Portal-added domains\ncustomDomains: empty(customDomainsParam) ? null : customDomainsParam\n```\n\n## Container App Service Discovery\n\nInternal HTTP routing between Container Apps in same environment:\n\n```bicep\n\u002F\u002F Backend reference in frontend env vars\nenv: [\n  {\n    name: 'BACKEND_URL'\n    value: 'http:\u002F\u002Fca-backend-${resourceToken}'  \u002F\u002F Internal DNS\n  }\n]\n```\n\nFrontend nginx proxies to internal URL:\n```nginx\nlocation \u002Fapi {\n    proxy_pass $BACKEND_URL;\n}\n```\n\n## Managed Identity & RBAC\n\n### Enable System-Assigned Identity\n\n```bicep\nresource containerApp 'Microsoft.App\u002FcontainerApps@2024-03-01' = {\n  identity: {\n    type: 'SystemAssigned'\n  }\n}\n\noutput principalId string = containerApp.identity.principalId\n```\n\n### Post-Provision RBAC Assignment\n\n```yaml\nhooks:\n  postprovision:\n    shell: sh\n    run: |\n      PRINCIPAL_ID=\"${BACKEND_PRINCIPAL_ID}\"\n      \n      # Azure OpenAI access\n      az role assignment create \\\n        --assignee-object-id \"$PRINCIPAL_ID\" \\\n        --assignee-principal-type ServicePrincipal \\\n        --role \"Cognitive Services OpenAI User\" \\\n        --scope \"$OPENAI_RESOURCE_ID\" 2>\u002Fdev\u002Fnull || true\n      \n      # Azure AI Search access\n      az role assignment create \\\n        --assignee-object-id \"$PRINCIPAL_ID\" \\\n        --role \"Search Index Data Reader\" \\\n        --scope \"$SEARCH_RESOURCE_ID\" 2>\u002Fdev\u002Fnull || true\n```\n\n## Common Commands\n\n```bash\n# Environment management\nazd env list                        # List environments\nazd env select \u003Cname>               # Switch environment\nazd env get-values                  # Show all env vars\nazd env set KEY value               # Set variable\n\n# Deployment\nazd up                              # Full provision + deploy\nazd provision                       # Infrastructure only\nazd deploy                          # Code deployment only\nazd deploy --service backend        # Deploy single service\n\n# Debugging\nazd show                            # Show project status\naz containerapp logs show -n \u003Capp> -g \u003Crg> --follow  # Stream logs\n```\n\n## Reference Files\n\n- **Bicep patterns**: See references\u002Fbicep-patterns.md for Container Apps modules\n- **Troubleshooting**: See references\u002Ftroubleshooting.md for common issues\n- **azure.yaml schema**: See references\u002Fazure-yaml-schema.md for full options\n\n## Critical Reminders\n\n1. **Always use `remoteBuild: true`** - Local builds fail on M1\u002FARM Macs deploying to AMD64\n2. **Bicep outputs auto-populate .azure\u002F\u003Cenv>\u002F.env** - Don't manually edit\n3. **Use `azd env set` for secrets** - Not main.parameters.json defaults\n4. **Service tags (`azd-service-name`)** - Required for azd to find Container Apps\n5. **`|| true` in hooks** - Prevent RBAC \"already exists\" errors from failing deploy\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n",{"name":5,"risk":30,"source":26,"date_added":49,"description":7},"2026-02-27","main","7a38d8e7073e61c16eda85681cb32fb68a8657a5","skills-store\u002Fcopilot\u002Fazd-deployment","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router","https:\u002F\u002Fgithub.com\u002Fsapsapshen","2026-04-14 21:12:12",{"source":8,"skillName":5,"commands":57,"prompt":67,"zipAvailable":68},[58,61,64],{"tool":59,"command":60},"npx","npx skills add sapsapshen\u002Fai-memory-router --skill azd-deployment",{"tool":62,"command":63},"bunx","bunx skills add sapsapshen\u002Fai-memory-router --skill azd-deployment",{"tool":65,"command":66},"pnpm","pnpm dlx skills add sapsapshen\u002Fai-memory-router --skill azd-deployment","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fcopilot\u002Fazd-deployment\u002FSKILL.md",true,[],[71,94,120,130,143,160],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":82,"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",[77],{"categoryNo":78,"categoryName":79,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[83,84,85,86,87,88,89,90,91,92,93,32],"wechat search","wechat","search","capabilities","openclaw","design","web search","compliance","web","official","fetch",{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":100,"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",[],[101,102,103,104,105,106,85,107,108,109,110,111,112,113,114,115,116,117,118,119],"trend","trend tap","tap","api keys","Bash","time","trending","hacker","aggregator","do","when","brew","live","data","google","install","read","across","api",{"skillNo":121,"name":122,"nameZh":6,"description":123,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":126,"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",[],[127,128,101,112,113,114,115,105,85,117,129,118,119,111,109,108,107,116,106,104],"trend radar","radar","pulse",{"skillNo":131,"name":132,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":136,"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",[],[137,138,139,140,141,142],"news","tech","tech news daily","daily","rss","翻译",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"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",[149],{"categoryNo":150,"categoryName":151,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",[145,91,153,154,155,32,112,156,157,158,103,159,116],"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,116,170,157,171,172,173,174,175],"status","play","go","latest","github","discover","control","cmd","volume"]