[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71KFJ8WDB7NRJH45EYT7CFZ":3,"skill-same:01M71KFJ8WDB7NRJH45EYT7CFZ":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":32,"linkOnly":33,"markdownContent":34,"markdownBody":35,"frontMatter":36,"refName":37,"commitSha":38,"skillDirectory":39,"forksCount":40,"repositoryHtmlUrl":41,"repositoryHomepageUrl":42,"ownerHtmlUrl":43,"ownerBlogUrl":44,"ownerDescription":45,"updatedAt":46,"install":47,"resources":60},"01M71KFJ8WDB7NRJH45EYT7CFZ","environment-secrets",null,"Manage environment variables and secrets. View, set, delete env vars and request secrets from users.","clawdsolana\u002FOpenClawd","clawdsolana","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F279036008?v=4","01M71JTVF9FNGKE2SVJRPTQM31","OpenClawd","01M71JTVGCKWBSS8ZYC1HYWVA5",2,"MIT","https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fenvironment-secrets\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31],"environment secrets","environment","secrets","users","SET","delete","view","env vars","request","manage","environment variables","Variables","env","2026-11-10 10:12:30",false,"---\nname: environment-secrets\ndescription: Manage environment variables and secrets. View, set, delete env vars and request secrets from users.\n---\n\n# Environment Secrets Skill\n\nManage environment variables and secrets (such as API keys, tokens, and credentials). View, set, delete environment variables and request secrets from users.\n\nThe user can also change the values of any environment variables\u002Fsecrets using the \"secrets\" tab in the Replit GUI.\n\n## When to Use\n\nUse this skill when:\n\n- You need to check what environment variables or secrets exist\n- Setting sensitive configuration values (ports, hostnames, feature flags)\n- Deleting obsolete environment variables\n- Requesting API keys, tokens, or other secrets from the user\n\n## When NOT to Use\n\n- Never set sensitive values directly (API keys, passwords, tokens) - always use `requestEnvVar` to request from user\n- Don't modify runtime-managed variables (REPLIT_DOMAINS, REPL_ID, DATABASE_URL for Helium DBs)\n\n## Environment Types\n\nEnvironment variables are scoped to specific environments:\n\n- **shared**: Available in both development and production\n- **development**: Only available in development environment\n- **production**: Only available in production environment\n\nBy default, you should use the 'shared' environment to store environment variables unless there is a clear reason why it would require different values in development and production.\n\nAn environment variable stored in the 'shared' environment can not be modified in 'development' or 'production' environments. To modify it, delete it from the 'shared' environment and re-add it to 'development' and 'production' environments.\n\nSecrets are global and not environment-scoped.\n\n## Available Functions\n\n### viewEnvVars(type, environment, keys)\n\nView environment variables and\u002For secrets.\n\n**Parameters:**\n\n- `type` (str, default \"all\"): What to view: \"env\", \"secret\", or \"all\"\n- `environment` (str, optional): Filter by environment: \"shared\", \"development\", \"production\"\n- `keys` (list[str], optional): Filter by specific keys\n\n**Returns:** Dict with `envVars`, `secrets`, and `runtimeManaged` fields\n\n**Example:**\n\n```javascript\n\u002F\u002F View all env vars and secrets\nconst result = await viewEnvVars();\nconsole.log(result.envVars);  \u002F\u002F {shared: {PORT: '3000'}, development: {...}}\nconsole.log(result.secrets);   \u002F\u002F {OPENAI_API_KEY: true, STRIPE_KEY: true}\n\n\u002F\u002F Check if specific secrets exist\nconst result2 = await viewEnvVars({ type: \"secret\", keys: [\"OPENAI_API_KEY\", \"STRIPE_KEY\"] });\nif (result2.secrets.OPENAI_API_KEY) {\n    console.log(\"OpenAI key is configured\");\n}\n\n\u002F\u002F View only development env vars\nconst result3 = await viewEnvVars({ type: \"env\", environment: \"development\" });\n```\n\n### setEnvVars(values, environment)\n\nSet environment variables. Cannot be used for secrets.\n\n**Parameters:**\n\n- `values` (dict[str, str], required): Key-value pairs to set\n- `environment` (str, default \"shared\"): Target: \"shared\", \"development\", \"production\"\n\n**Returns:** Dict with `environment` and `keys` that were set\n\n**Example:**\n\n```javascript\n\u002F\u002F Set shared config (available in dev and prod)\nawait setEnvVars({ values: { PORT: \"3000\", DEBUG: \"false\" } });\n\n\u002F\u002F Set development-only config\nawait setEnvVars({ values: { LOG_LEVEL: \"debug\" }, environment: \"development\" });\n\n\u002F\u002F Set production config\nawait setEnvVars({ values: { LOG_LEVEL: \"error\" }, environment: \"production\" });\n```\n\n### deleteEnvVars(keys, environment)\n\nDelete environment variables.\n\n**Parameters:**\n\n- `keys` (list[str], required): Keys to delete\n- `environment` (str, default \"shared\"): Target: \"shared\", \"development\", \"production\"\n\n**Returns:** Dict with `environment` and `keys` that were deleted\n\n**Example:**\n\n```javascript\n\u002F\u002F Delete from shared environment\nawait deleteEnvVars({ keys: [\"OLD_CONFIG\", \"DEPRECATED_FLAG\"] });\n\n\u002F\u002F Delete from specific environment\nawait deleteEnvVars({ keys: [\"DEBUG\"], environment: \"development\" });\n```\n\n### requestEnvVar(requestType, keys, envVars, userMessage)\n\nRequest secrets or environment variables from the user. This pauses agent execution until the user provides the values.\n\n**Parameters:**\n\n- `requestType` (str, required): \"secret\" or \"env\"\n- `keys` (list[str], required if requestType=\"secret\"): Secret keys to request\n- `envVars` (list[dict], required if requestType=\"env\"): Env vars with `key` and `environment`\n- `userMessage` (str, optional): Custom message for user\n\n**Returns:** Dict with `requested`, `userMessage`, and `waitingForInput`\n\n**Example - Request secrets:**\n\n```javascript\n\u002F\u002F Request API keys from user\nawait requestEnvVar({\n    requestType: \"secret\",\n    keys: [\"OPENAI_API_KEY\", \"STRIPE_SECRET_KEY\"],\n    userMessage: \"Please provide your API keys to enable the payment feature\"\n});\n\u002F\u002F Agent pauses here until user provides the secrets\n```\n\n**Example - Request env vars:**\n\n```javascript\n\u002F\u002F Request non-sensitive config from user\nawait requestEnvVar({\n    requestType: \"env\",\n    envVars: [\n        { key: \"CUSTOM_DOMAIN\", environment: \"production\" },\n        { key: \"FEATURE_FLAG\", environment: \"shared\" }\n    ],\n    userMessage: \"Please provide the following configuration values\"\n});\n```\n\n## Best Practices\n\n1. **Check before requesting**: Always use `viewEnvVars` first to see what's already configured\n2. **Use shared for common config**: Put variables needed in both dev and prod in \"shared\"\n3. **Never hardcode secrets**: Always request secrets from users via `requestEnvVar`\n4. **Provide helpful messages**: Include context when requesting secrets so users know why they're needed\n5. **Handle conflicts**: If you need to move a var between environments, delete from old first\n\n## Example Workflow\n\n```javascript\n\u002F\u002F 1. Check current configuration\nconst result = await viewEnvVars();\n\n\u002F\u002F 2. Check if required secrets exist\nconst missingSecrets = [];\nfor (const key of [\"OPENAI_API_KEY\", \"DATABASE_URL\"]) {\n    if (!result.secrets[key]) {\n        missingSecrets.push(key);\n    }\n}\n\n\u002F\u002F 3. Request missing secrets from user\nif (missingSecrets.length > 0) {\n    await requestEnvVar({\n        requestType: \"secret\",\n        keys: missingSecrets,\n        userMessage: \"The following API keys are needed for the chat feature\"\n    });\n} else {\n    \u002F\u002F 4. Set non-sensitive config\n    await setEnvVars({\n        values: {\n            CHAT_ENABLED: \"true\",\n            MAX_TOKENS: \"4096\"\n        }\n    });\n}\n```\n\n## Restrictions\n\n- Cannot view secret values (only existence status)\n- Cannot set or modify secrets directly\n- Cannot modify runtime-managed variables\n- Variables cannot exist in both \"shared\" and a specific environment simultaneously\n","# Environment Secrets Skill\n\nManage environment variables and secrets (such as API keys, tokens, and credentials). View, set, delete environment variables and request secrets from users.\n\nThe user can also change the values of any environment variables\u002Fsecrets using the \"secrets\" tab in the Replit GUI.\n\n## When to Use\n\nUse this skill when:\n\n- You need to check what environment variables or secrets exist\n- Setting sensitive configuration values (ports, hostnames, feature flags)\n- Deleting obsolete environment variables\n- Requesting API keys, tokens, or other secrets from the user\n\n## When NOT to Use\n\n- Never set sensitive values directly (API keys, passwords, tokens) - always use `requestEnvVar` to request from user\n- Don't modify runtime-managed variables (REPLIT_DOMAINS, REPL_ID, DATABASE_URL for Helium DBs)\n\n## Environment Types\n\nEnvironment variables are scoped to specific environments:\n\n- **shared**: Available in both development and production\n- **development**: Only available in development environment\n- **production**: Only available in production environment\n\nBy default, you should use the 'shared' environment to store environment variables unless there is a clear reason why it would require different values in development and production.\n\nAn environment variable stored in the 'shared' environment can not be modified in 'development' or 'production' environments. To modify it, delete it from the 'shared' environment and re-add it to 'development' and 'production' environments.\n\nSecrets are global and not environment-scoped.\n\n## Available Functions\n\n### viewEnvVars(type, environment, keys)\n\nView environment variables and\u002For secrets.\n\n**Parameters:**\n\n- `type` (str, default \"all\"): What to view: \"env\", \"secret\", or \"all\"\n- `environment` (str, optional): Filter by environment: \"shared\", \"development\", \"production\"\n- `keys` (list[str], optional): Filter by specific keys\n\n**Returns:** Dict with `envVars`, `secrets`, and `runtimeManaged` fields\n\n**Example:**\n\n```javascript\n\u002F\u002F View all env vars and secrets\nconst result = await viewEnvVars();\nconsole.log(result.envVars);  \u002F\u002F {shared: {PORT: '3000'}, development: {...}}\nconsole.log(result.secrets);   \u002F\u002F {OPENAI_API_KEY: true, STRIPE_KEY: true}\n\n\u002F\u002F Check if specific secrets exist\nconst result2 = await viewEnvVars({ type: \"secret\", keys: [\"OPENAI_API_KEY\", \"STRIPE_KEY\"] });\nif (result2.secrets.OPENAI_API_KEY) {\n    console.log(\"OpenAI key is configured\");\n}\n\n\u002F\u002F View only development env vars\nconst result3 = await viewEnvVars({ type: \"env\", environment: \"development\" });\n```\n\n### setEnvVars(values, environment)\n\nSet environment variables. Cannot be used for secrets.\n\n**Parameters:**\n\n- `values` (dict[str, str], required): Key-value pairs to set\n- `environment` (str, default \"shared\"): Target: \"shared\", \"development\", \"production\"\n\n**Returns:** Dict with `environment` and `keys` that were set\n\n**Example:**\n\n```javascript\n\u002F\u002F Set shared config (available in dev and prod)\nawait setEnvVars({ values: { PORT: \"3000\", DEBUG: \"false\" } });\n\n\u002F\u002F Set development-only config\nawait setEnvVars({ values: { LOG_LEVEL: \"debug\" }, environment: \"development\" });\n\n\u002F\u002F Set production config\nawait setEnvVars({ values: { LOG_LEVEL: \"error\" }, environment: \"production\" });\n```\n\n### deleteEnvVars(keys, environment)\n\nDelete environment variables.\n\n**Parameters:**\n\n- `keys` (list[str], required): Keys to delete\n- `environment` (str, default \"shared\"): Target: \"shared\", \"development\", \"production\"\n\n**Returns:** Dict with `environment` and `keys` that were deleted\n\n**Example:**\n\n```javascript\n\u002F\u002F Delete from shared environment\nawait deleteEnvVars({ keys: [\"OLD_CONFIG\", \"DEPRECATED_FLAG\"] });\n\n\u002F\u002F Delete from specific environment\nawait deleteEnvVars({ keys: [\"DEBUG\"], environment: \"development\" });\n```\n\n### requestEnvVar(requestType, keys, envVars, userMessage)\n\nRequest secrets or environment variables from the user. This pauses agent execution until the user provides the values.\n\n**Parameters:**\n\n- `requestType` (str, required): \"secret\" or \"env\"\n- `keys` (list[str], required if requestType=\"secret\"): Secret keys to request\n- `envVars` (list[dict], required if requestType=\"env\"): Env vars with `key` and `environment`\n- `userMessage` (str, optional): Custom message for user\n\n**Returns:** Dict with `requested`, `userMessage`, and `waitingForInput`\n\n**Example - Request secrets:**\n\n```javascript\n\u002F\u002F Request API keys from user\nawait requestEnvVar({\n    requestType: \"secret\",\n    keys: [\"OPENAI_API_KEY\", \"STRIPE_SECRET_KEY\"],\n    userMessage: \"Please provide your API keys to enable the payment feature\"\n});\n\u002F\u002F Agent pauses here until user provides the secrets\n```\n\n**Example - Request env vars:**\n\n```javascript\n\u002F\u002F Request non-sensitive config from user\nawait requestEnvVar({\n    requestType: \"env\",\n    envVars: [\n        { key: \"CUSTOM_DOMAIN\", environment: \"production\" },\n        { key: \"FEATURE_FLAG\", environment: \"shared\" }\n    ],\n    userMessage: \"Please provide the following configuration values\"\n});\n```\n\n## Best Practices\n\n1. **Check before requesting**: Always use `viewEnvVars` first to see what's already configured\n2. **Use shared for common config**: Put variables needed in both dev and prod in \"shared\"\n3. **Never hardcode secrets**: Always request secrets from users via `requestEnvVar`\n4. **Provide helpful messages**: Include context when requesting secrets so users know why they're needed\n5. **Handle conflicts**: If you need to move a var between environments, delete from old first\n\n## Example Workflow\n\n```javascript\n\u002F\u002F 1. Check current configuration\nconst result = await viewEnvVars();\n\n\u002F\u002F 2. Check if required secrets exist\nconst missingSecrets = [];\nfor (const key of [\"OPENAI_API_KEY\", \"DATABASE_URL\"]) {\n    if (!result.secrets[key]) {\n        missingSecrets.push(key);\n    }\n}\n\n\u002F\u002F 3. Request missing secrets from user\nif (missingSecrets.length > 0) {\n    await requestEnvVar({\n        requestType: \"secret\",\n        keys: missingSecrets,\n        userMessage: \"The following API keys are needed for the chat feature\"\n    });\n} else {\n    \u002F\u002F 4. Set non-sensitive config\n    await setEnvVars({\n        values: {\n            CHAT_ENABLED: \"true\",\n            MAX_TOKENS: \"4096\"\n        }\n    });\n}\n```\n\n## Restrictions\n\n- Cannot view secret values (only existence status)\n- Cannot set or modify secrets directly\n- Cannot modify runtime-managed variables\n- Variables cannot exist in both \"shared\" and a specific environment simultaneously\n",{"name":5,"description":7},"main","6b4a291df75c639681e93b4b5b812126443fd6ed","skills\u002Fenvironment-secrets",3,"https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd","https:\u002F\u002Fsolanaclawd.com\u002Fopenclawd","https:\u002F\u002Fgithub.com\u002Fclawdsolana","https:\u002F\u002Fmusebook.trade","Welcome to Open Clawd. The future of Ai on and off chain. Bringing webMCP to web 3 using X402, A2A, MPP and so much more!","2026-08-01 09:30:51",{"source":8,"skillName":5,"commands":48,"prompt":58,"zipAvailable":59},[49,52,55],{"tool":50,"command":51},"npx","npx skills add clawdsolana\u002FOpenClawd --skill environment-secrets",{"tool":53,"command":54},"bunx","bunx skills add clawdsolana\u002FOpenClawd --skill environment-secrets",{"tool":56,"command":57},"pnpm","pnpm dlx skills add clawdsolana\u002FOpenClawd --skill environment-secrets","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fenvironment-secrets\u002FSKILL.md",true,[61],{"path":62,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":65,"sourceHtmlUrl":66},".fingerprint","OTHER","其他",32,"https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fenvironment-secrets\u002F.fingerprint",[68,101,128,154,164,188],{"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":100},"01M71KRBD0W01EAXJ8YM4M1SJ2","solana-dev","End-to-end Solana development playbook (Jan 2026). Prefer Solana Foundation framework-kit (@solana\u002Fclient + @solana\u002Freact-hooks) for React\u002FNext.js UI. Prefer @solana\u002Fkit for all new client\u002FRPC\u002Ftransaction code. When legacy dependencies require web3.js, isolate it behind @solana\u002Fweb3-compat (or @solana\u002Fweb3.js as a true legacy fallback). Covers wallet-standard-first connection (incl. ConnectorKit), Anchor\u002FPinocchio programs, Codama-based client generation, LiteSVM\u002FMollusk\u002FSurfpool testing, and security checklists.","https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fsolana-dev\u002FSKILL.md",[74],{"categoryNo":75,"categoryName":76,"taxonomyType":77,"taxonomyTypeDesc":78},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99],"solana dev","dev","solana","Wallet","end","testing","hooks","kit","new","when","web3","code","react","next","2026","playbook","security","ui","fallback","framework","2026-11-10 10:56:23",{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":110,"publishedAt":100},"01M71KR8QPESSY61SVE8ZTFNVT","xurl","A CLI tool for making authenticated requests to the X (Twitter) API. Use this skill when you need to post tweets, reply, quote, search, read posts, manage followers, send DMs, upload media, or interact with any X API v2 endpoint.","https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fxurl\u002FSKILL.md",[107],{"categoryNo":108,"categoryName":109,"taxonomyType":77,"taxonomyTypeDesc":78},"01JBSEEDCAT000000000000023","Skill与智能体开发",[103,111,112,113,114,115,116,89,117,118,119,120,121,122,123,124,125,28,126,127],"posts","Media","x api","search","send","tap","you","api","cli","read","install","cli tool","endpoint","brew","for","tool","twitter",{"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":135,"publishedAt":100},"01M71KR6FSXV88YDKWP7NBY3SH","wurk-integration","WURK API integration for monetizing agents with x402 payments on Solana\u002FBase - create social jobs, custom challenges, and agent help tasks","https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fwurk-integration\u002FSKILL.md",[134],{"categoryNo":108,"categoryName":109,"taxonomyType":77,"taxonomyTypeDesc":78},[136,137,138,139,140,141,142,143,118,144,145,146,147,148,149,150,125,151,152,153],"wurk","wurk integration","integration","x402","social","payments","tasks","team","create","social-jobs","command","agent-help","custom-jobs","clawd","safe","api integration","custom","true",{"skillNo":155,"name":156,"nameZh":6,"description":157,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":158,"categories":159,"keywords":160,"publishedAt":100},"01M71KR4HCX41BPAK9GP7RPRRP","workflows","Manage application workflows including configuration, restart, and removal.","https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fworkflows\u002FSKILL.md",[],[156,28,161,162,163],"configuration","application","restart",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":168,"categories":169,"keywords":170,"publishedAt":100},"01M71KR1VM0F5GPEQDNG5J7A0H","web-search","Search the web, fetch content, extract branding profiles, and capture screenshots from URLs. Use for real-time information, API documentation, current events, design matching, and visual reference.","https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fweb-search\u002FSKILL.md",[],[171,114,172,173,174,125,175,176,177,178,179,180,181,118,182,183,184,185,186,187],"web search","web","fetch","api documentation","real-time","time","profiles","design","use","information","visual","documentation","branding","matching","reference","capture","content",{"skillNo":189,"name":190,"nameZh":6,"description":191,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":192,"categories":193,"keywords":194,"publishedAt":100},"01M71KQZN5MR1JFQHG5GWXYAHS","weather","Get current weather and forecasts via wttr.in or Open-Meteo. Use when: user asks about weather, temperature, or forecasts for any location. NOT for: historical weather data, severe weather alerts, or detailed meteorological analysis. No API key needed.","https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fweather\u002FSKILL.md",[],[190,195,125,196,179,89,197,118,198,199,200,201,202,203,204,205,206,207],"get","open","analysis","alerts","temperature","curl","via","help","about","https","location","data","user"]