{
  "schemaVersion": "1.0",
  "item": {
    "slug": "launchthatbot-convex-backend",
    "name": "Launchthatbot Convex Backend",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/launchthatbot/launchthatbot-convex-backend",
    "canonicalUrl": "https://clawhub.ai/launchthatbot/launchthatbot-convex-backend",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/launchthatbot-convex-backend",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=launchthatbot-convex-backend",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md",
      "convex/_generated/api.js",
      "convex/_generated/server.js",
      "convex/components/openclawBackend/README.md",
      "convex/components/openclawBackend/convex.config.js"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/launchthatbot-convex-backend"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/launchthatbot-convex-backend",
    "agentPageUrl": "https://openagent3.xyz/skills/launchthatbot-convex-backend/agent",
    "manifestUrl": "https://openagent3.xyz/skills/launchthatbot-convex-backend/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/launchthatbot-convex-backend/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "What is LaunchThatBot",
        "body": "LaunchThatBot.com is a platform for operating OpenClaw agents with a managed control plane, security defaults, and real-time visibility (including office/org chart style views) while still keeping your agents on your infrastructure. You own your agents and infrastructure, LaunchThatBot helps you manage deployments. Disconnect any time and keep your system running."
      },
      {
        "title": "What this skill is for",
        "body": "@launchthatbot/convex-backend is for users who want longterm agent memory and secrets to persist in Convex (https://www.convex.dev/) instead of local files. Works for single agents or multi-agents working off one shared system.\n\nUse this skill when you want:\n\ndurable memory across restarts\nstructured daily logs\nsafer secret handling through Convex env tools\n\nThis skill can be used without any active connection to LaunchThatBot.\nIt uses the stock Convex MCP server with your own Convex credentials and writes memory/logs and env-managed secrets into your Convex instance."
      },
      {
        "title": "Manual setup required",
        "body": "This skill requires manual Convex setup by the user:\n\nCreate a Convex account and project.\nFrom the Convex dashboard, copy the Development deploy key for that project (for now).\nGive that key to the bot when asked, or set it manually as local CONVEX_DEPLOY_KEY in .env / runtime env vars.\n\nDo not assume this key exists automatically. If it is missing, stop and ask the user to complete the manual setup first.\n\nYou do not need to keep npx convex dev running for this skill flow. However, Convex MCP and CLI calls still need deployment context:\n\nCONVEX_DEPLOY_KEY (required for auth)\nCONVEX_DEPLOYMENT (or equivalent project/deployment selection via env/config)\n\nIf those values are not available, stop and ask the user to set them first (for example in .env / .env.local or via MCP startup config)."
      },
      {
        "title": "Convex Backend Integration",
        "body": "You are connected to a Convex backend via the Convex MCP server. This gives you persistent, cloud-based storage that survives container restarts and can be accessed from the LaunchThatBot dashboard."
      },
      {
        "title": "MCP Requirement (Stock Convex MCP)",
        "body": "This skill uses the stock Convex MCP server (convex@latest mcp start), not a custom LaunchThatBot MCP tool for data storage.\n\nRecommended setup:\n\n{\n  \"mcpServers\": {\n    \"convex\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"convex@latest\", \"mcp\", \"start\"]\n    }\n  }\n}\n\nReference: https://docs.convex.dev/ai/convex-mcp-server"
      },
      {
        "title": "mcporter Compatibility Preflight",
        "body": "If your runtime does not expose MCP tools natively (common in OpenClaw/Pi flows), use mcporter as the bridge.\n\nCheck prerequisites before running this skill workflow:\n\nmcporter --version || npx -y mcporter --version\nmcporter list || npx -y mcporter list\nmcporter list convex --schema || npx -y mcporter list convex --schema\n\nIf mcporter is not runnable, tell the user they need npx mcporter (or a local install). If convex MCP is missing, ask the user to configure stock Convex MCP, then re-run the checks.\n\nWhen bridging via mcporter, call Convex MCP tools through CLI commands (for example npx -y mcporter call convex.run ...) instead of assuming native MCP tool invocation in the runtime.\n\nConvex MCP tool mapping for this skill:\n\nUse convex.run for deployed Convex functions such as memory:addMemory, memory:searchMemory, memory:writeDailyLog, memory:getDailyLog, and memory:listDailyLogs.\nUse convex.envSet, convex.envGet, convex.envList, and convex.envRemove for environment variables.\nDo not call memory:* as MCP tools directly. They are function names passed to convex.run."
      },
      {
        "title": "CRITICAL RULES",
        "body": "CONVEX_DEPLOY_KEY is the only required local secret in .env. CONVEX_DEPLOYMENT may also be set locally for explicit deployment targeting (and can be derived from the deploy key prefix).\nNEVER store CONVEX_DEPLOY_KEY in Convex (envSet).\nAll other secrets (API keys, tokens, passwords) must use Convex environment variables (envSet/envGet/envList/envRemove) and not local .env or auth.json.\nNEVER store sensitive credentials in MEMORY.md or daily log files.\nAlways write daily summaries to Convex at the end of each session or when asked to save progress.\nAlways check Convex for existing secrets before asking the user to provide them again."
      },
      {
        "title": "Required local credentials",
        "body": "Before running this skill, the user must provide:\n\nCONVEX_DEPLOY_KEY (required local secret)\nCONVEX_DEPLOYMENT (recommended for deterministic targeting; may be parsed from deploy key prefix)\n\nIf deployment auth/targeting is unclear, stop and request user confirmation before writes."
      },
      {
        "title": "Bootstrap Rule (Required)",
        "body": "Before Convex MCP operations can work, CONVEX_DEPLOY_KEY must already exist in local runtime env (.env / deployment env vars). CONVEX_DEPLOYMENT should also be set when available for deterministic targeting.\n\nIf CONVEX_DEPLOY_KEY is missing:\n\nstop secret/memory operations\ntell the user exactly what is missing\nask them to set CONVEX_DEPLOY_KEY locally (and set CONVEX_DEPLOYMENT by parsing the deploy key prefix when possible), then restart/reload MCP\nre-run preflight:\n\nmcporter list convex --schema || npx -y mcporter list convex --schema\n\nDo not attempt to save CONVEX_DEPLOY_KEY to Convex."
      },
      {
        "title": "Required Convex Deploy Step",
        "body": "This skill package includes a Convex app under the convex/ folder and convex.json at package root.\nThe required backend logic is mounted as a local component:\n\ncomponent name: convex_openclaw_backend_component\napp mount alias: openclawBackend\n\nAfter installing or updating this skill, run deploy from the skill root:\n\ncd /home/node/.openclaw/skills/convex-backend\nCONVEX_DEPLOY_KEY=... npx -y convex@latest deploy\n\nWhy:\n\nnpx convex deploy must run in the directory containing convex.json.\nWithout deploy, the custom memory/daily-log functions are not available, and memory:* calls will fail."
      },
      {
        "title": "Rule for Adding Custom Logic",
        "body": "If the user asks for new backend functionality (for example custom task tables, new mutations, or queries):\n\nKeep required integration logic inside component files (convex/components/openclawBackend/*).\nPut user-specific custom tables/functions in the root app (convex/*) so they stay separate from required integration tables.\nRe-run deploy from skill root each time changes are made.\nWhile autonomously adding custom logic, never modify or delete the openclawBackend component.\nTreat openclawBackend as core integration infrastructure, not a workspace for user-specific features.\n\nIf you change Convex code but do not deploy, newly added functions/tables will not exist in the user's Convex deployment."
      },
      {
        "title": "Storing Secrets (API Keys, Passwords, Tokens)",
        "body": "Use stock Convex MCP environment variable tools for secrets:\n\nenvSet\nenvGet\nenvList\nenvRemove\n\nDo not use custom secrets:* functions for credentials in this skill."
      },
      {
        "title": "Secret naming strategy (shared + per-agent fallback)",
        "body": "For a logical secret key like OPENAI_API_KEY, resolve in this order:\n\nAGENT_<agentId>_OPENAI_API_KEY (agent-specific override)\nAGENT_DEFAULT_OPENAI_API_KEY (shared default for all agents)\nOPENAI_API_KEY (legacy global fallback, optional)\n\nExamples:\n\nAgent override: AGENT_agent2_OPENAI_API_KEY\nShared default: AGENT_DEFAULT_OPENAI_API_KEY"
      },
      {
        "title": "Write / Read / Remove examples",
        "body": "Set shared default:\n\nTool: envSet\nArguments: { \"name\": \"AGENT_DEFAULT_OPENAI_API_KEY\", \"value\": \"sk-...\" }\n\nSet agent-specific override:\n\nTool: envSet\nArguments: { \"name\": \"AGENT_<agentId>_OPENAI_API_KEY\", \"value\": \"sk-...\" }\n\nRead by fallback chain:\n\nenvGet(\"AGENT_<agentId>_OPENAI_API_KEY\")\nif missing, envGet(\"AGENT_DEFAULT_OPENAI_API_KEY\")\nif missing, optionally envGet(\"OPENAI_API_KEY\")\n\nRemove an agent override:\n\nTool: envRemove\nArguments: { \"name\": \"AGENT_<agentId>_OPENAI_API_KEY\" }"
      },
      {
        "title": "First-Run Migration for Existing .env Keys",
        "body": "If this skill is installed on an existing agent that already has many keys in local .env, run this migration prompt after Convex MCP preflight succeeds:\n\nAsk the user:\n\n\"Convex backend is configured. Do you want me to migrate all local .env secrets into Convex and remove them from local .env?\nRecommended: Yes.\nLocal .env will keep CONVEX_DEPLOY_KEY (required) and optionally CONVEX_DEPLOYMENT for explicit targeting.\"\n\nIf user confirms, run migration in two phases:"
      },
      {
        "title": "Phase A: Copy + verify (non-destructive)",
        "body": "Read local .env and collect secret key/value pairs.\nExclude CONVEX_DEPLOY_KEY and CONVEX_DEPLOYMENT.\nFor each remaining key, copy to Convex env using naming convention above:\n\npreferred: AGENT_DEFAULT_<KEY>\noptional per-agent override: AGENT_<agentId>_<KEY>\n\n\nVerify migration with envList and targeted envGet.\nReport copied-key count and ask for explicit cleanup approval."
      },
      {
        "title": "Phase B: Optional cleanup (destructive)",
        "body": "Only continue if the user explicitly confirms cleanup with a clear yes response (for example: YES_REMOVE_LOCAL_ENV).\n\nRemove only keys that were copied and verified in Phase A.\nKeep CONVEX_DEPLOY_KEY in local .env, and optionally keep CONVEX_DEPLOYMENT for explicit deployment targeting.\nConfirm cleanup completion with removed-key count.\n\nSafety notes:\n\nCreate a local backup of .env before mutation.\nDo not print secret values in chat/log output.\nIf any key fails migration, do not delete that key from local .env until retry succeeds."
      },
      {
        "title": "Storing Long-Term Memory",
        "body": "When you learn something important about the user, their preferences, or make a significant decision:\n\nTool: convex.run (via mcporter)\nFunction: memory:addMemory\nArguments: {\n  \"agentId\": \"<your-agent-id>\",\n  \"type\": \"fact\",\n  \"content\": \"User prefers TypeScript over JavaScript for all new projects\",\n  \"tags\": [\"preferences\", \"coding\"]\n}\n\nnpx -y mcporter call convex.run --args '{\n  \"functionName\": \"memory:addMemory\",\n  \"args\": {\n    \"agentId\": \"<your-agent-id>\",\n    \"type\": \"fact\",\n    \"content\": \"User prefers TypeScript over JavaScript for all new projects\",\n    \"tags\": [\"preferences\", \"coding\"]\n  }\n}'\n\nMemory types:\n\nfact — Something true about the user or their setup\npreference — User likes/dislikes\ndecision — A choice that was made and should be remembered\nnote — General observations or context\n\nTo recall memories:\n\nTool: convex.run (via mcporter)\nFunction: memory:searchMemory\nArguments: { \"agentId\": \"<your-agent-id>\", \"type\": \"preference\", \"limit\": 20 }"
      },
      {
        "title": "Daily Log Entries",
        "body": "At the end of each work session, write a summary of what was accomplished:\n\nTool: convex.run (via mcporter)\nFunction: memory:writeDailyLog\nArguments: {\n  \"agentId\": \"<your-agent-id>\",\n  \"date\": \"2026-02-17\",\n  \"content\": \"## Summary\\n- Set up email integration with Resend\\n- Configured GitHub SSH keys\\n- Started work on Twitter bot automation\\n\\n## Blockers\\n- Need Twitter API key from user\"\n}\n\nDaily logs are append-only — calling writeDailyLog for the same date appends to the existing entry.\n\nTo review past logs:\n\nTool: convex.run (via mcporter)\nFunction: memory:listDailyLogs\nArguments: { \"agentId\": \"<your-agent-id>\", \"limit\": 7 }"
      },
      {
        "title": "Session Startup Checklist",
        "body": "At the beginning of each session:\n\nCheck for configured env secrets: convex.envList (and convex.envGet for required keys)\nLoad recent memories: convex.run with function memory:searchMemory and limit 20\nLoad today's log: convex.run with function memory:getDailyLog and today's date\nLoad yesterday's log for continuity context\n\nThis ensures you have full context from previous sessions."
      },
      {
        "title": "Your Agent ID",
        "body": "Your agent ID is provided in your agent configuration. Use it consistently in all Convex calls. If you're unsure of your agent ID, check your agent YAML config file."
      }
    ],
    "body": "What is LaunchThatBot\n\nLaunchThatBot.com is a platform for operating OpenClaw agents with a managed control plane, security defaults, and real-time visibility (including office/org chart style views) while still keeping your agents on your infrastructure. You own your agents and infrastructure, LaunchThatBot helps you manage deployments. Disconnect any time and keep your system running.\n\nWhat this skill is for\n\n@launchthatbot/convex-backend is for users who want longterm agent memory and secrets to persist in Convex (https://www.convex.dev/) instead of local files. Works for single agents or multi-agents working off one shared system.\n\nUse this skill when you want:\n\ndurable memory across restarts\nstructured daily logs\nsafer secret handling through Convex env tools\n\nThis skill can be used without any active connection to LaunchThatBot. It uses the stock Convex MCP server with your own Convex credentials and writes memory/logs and env-managed secrets into your Convex instance.\n\nManual setup required\n\nThis skill requires manual Convex setup by the user:\n\nCreate a Convex account and project.\nFrom the Convex dashboard, copy the Development deploy key for that project (for now).\nGive that key to the bot when asked, or set it manually as local CONVEX_DEPLOY_KEY in .env / runtime env vars.\n\nDo not assume this key exists automatically. If it is missing, stop and ask the user to complete the manual setup first.\n\nYou do not need to keep npx convex dev running for this skill flow. However, Convex MCP and CLI calls still need deployment context:\n\nCONVEX_DEPLOY_KEY (required for auth)\nCONVEX_DEPLOYMENT (or equivalent project/deployment selection via env/config)\n\nIf those values are not available, stop and ask the user to set them first (for example in .env / .env.local or via MCP startup config).\n\nConvex Backend Integration\n\nYou are connected to a Convex backend via the Convex MCP server. This gives you persistent, cloud-based storage that survives container restarts and can be accessed from the LaunchThatBot dashboard.\n\nMCP Requirement (Stock Convex MCP)\n\nThis skill uses the stock Convex MCP server (convex@latest mcp start), not a custom LaunchThatBot MCP tool for data storage.\n\nRecommended setup:\n\n{\n  \"mcpServers\": {\n    \"convex\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"convex@latest\", \"mcp\", \"start\"]\n    }\n  }\n}\n\n\nReference: https://docs.convex.dev/ai/convex-mcp-server\n\nmcporter Compatibility Preflight\n\nIf your runtime does not expose MCP tools natively (common in OpenClaw/Pi flows), use mcporter as the bridge.\n\nCheck prerequisites before running this skill workflow:\n\nmcporter --version || npx -y mcporter --version\nmcporter list || npx -y mcporter list\nmcporter list convex --schema || npx -y mcporter list convex --schema\n\n\nIf mcporter is not runnable, tell the user they need npx mcporter (or a local install). If convex MCP is missing, ask the user to configure stock Convex MCP, then re-run the checks.\n\nWhen bridging via mcporter, call Convex MCP tools through CLI commands (for example npx -y mcporter call convex.run ...) instead of assuming native MCP tool invocation in the runtime.\n\nConvex MCP tool mapping for this skill:\n\nUse convex.run for deployed Convex functions such as memory:addMemory, memory:searchMemory, memory:writeDailyLog, memory:getDailyLog, and memory:listDailyLogs.\nUse convex.envSet, convex.envGet, convex.envList, and convex.envRemove for environment variables.\nDo not call memory:* as MCP tools directly. They are function names passed to convex.run.\nCRITICAL RULES\nCONVEX_DEPLOY_KEY is the only required local secret in .env. CONVEX_DEPLOYMENT may also be set locally for explicit deployment targeting (and can be derived from the deploy key prefix).\nNEVER store CONVEX_DEPLOY_KEY in Convex (envSet).\nAll other secrets (API keys, tokens, passwords) must use Convex environment variables (envSet/envGet/envList/envRemove) and not local .env or auth.json.\nNEVER store sensitive credentials in MEMORY.md or daily log files.\nAlways write daily summaries to Convex at the end of each session or when asked to save progress.\nAlways check Convex for existing secrets before asking the user to provide them again.\nRequired local credentials\n\nBefore running this skill, the user must provide:\n\nCONVEX_DEPLOY_KEY (required local secret)\nCONVEX_DEPLOYMENT (recommended for deterministic targeting; may be parsed from deploy key prefix)\n\nIf deployment auth/targeting is unclear, stop and request user confirmation before writes.\n\nBootstrap Rule (Required)\n\nBefore Convex MCP operations can work, CONVEX_DEPLOY_KEY must already exist in local runtime env (.env / deployment env vars). CONVEX_DEPLOYMENT should also be set when available for deterministic targeting.\n\nIf CONVEX_DEPLOY_KEY is missing:\n\nstop secret/memory operations\ntell the user exactly what is missing\nask them to set CONVEX_DEPLOY_KEY locally (and set CONVEX_DEPLOYMENT by parsing the deploy key prefix when possible), then restart/reload MCP\nre-run preflight:\nmcporter list convex --schema || npx -y mcporter list convex --schema\n\n\nDo not attempt to save CONVEX_DEPLOY_KEY to Convex.\n\nRequired Convex Deploy Step\n\nThis skill package includes a Convex app under the convex/ folder and convex.json at package root. The required backend logic is mounted as a local component:\n\ncomponent name: convex_openclaw_backend_component\napp mount alias: openclawBackend\n\nAfter installing or updating this skill, run deploy from the skill root:\n\ncd /home/node/.openclaw/skills/convex-backend\nCONVEX_DEPLOY_KEY=... npx -y convex@latest deploy\n\n\nWhy:\n\nnpx convex deploy must run in the directory containing convex.json.\nWithout deploy, the custom memory/daily-log functions are not available, and memory:* calls will fail.\nRule for Adding Custom Logic\n\nIf the user asks for new backend functionality (for example custom task tables, new mutations, or queries):\n\nKeep required integration logic inside component files (convex/components/openclawBackend/*).\nPut user-specific custom tables/functions in the root app (convex/*) so they stay separate from required integration tables.\nRe-run deploy from skill root each time changes are made.\nWhile autonomously adding custom logic, never modify or delete the openclawBackend component.\nTreat openclawBackend as core integration infrastructure, not a workspace for user-specific features.\n\nIf you change Convex code but do not deploy, newly added functions/tables will not exist in the user's Convex deployment.\n\nStoring Secrets (API Keys, Passwords, Tokens)\n\nUse stock Convex MCP environment variable tools for secrets:\n\nenvSet\nenvGet\nenvList\nenvRemove\n\nDo not use custom secrets:* functions for credentials in this skill.\n\nSecret naming strategy (shared + per-agent fallback)\n\nFor a logical secret key like OPENAI_API_KEY, resolve in this order:\n\nAGENT_<agentId>_OPENAI_API_KEY (agent-specific override)\nAGENT_DEFAULT_OPENAI_API_KEY (shared default for all agents)\nOPENAI_API_KEY (legacy global fallback, optional)\n\nExamples:\n\nAgent override: AGENT_agent2_OPENAI_API_KEY\nShared default: AGENT_DEFAULT_OPENAI_API_KEY\nWrite / Read / Remove examples\n\nSet shared default:\n\nTool: envSet\nArguments: { \"name\": \"AGENT_DEFAULT_OPENAI_API_KEY\", \"value\": \"sk-...\" }\n\n\nSet agent-specific override:\n\nTool: envSet\nArguments: { \"name\": \"AGENT_<agentId>_OPENAI_API_KEY\", \"value\": \"sk-...\" }\n\n\nRead by fallback chain:\n\nenvGet(\"AGENT_<agentId>_OPENAI_API_KEY\")\nif missing, envGet(\"AGENT_DEFAULT_OPENAI_API_KEY\")\nif missing, optionally envGet(\"OPENAI_API_KEY\")\n\nRemove an agent override:\n\nTool: envRemove\nArguments: { \"name\": \"AGENT_<agentId>_OPENAI_API_KEY\" }\n\nFirst-Run Migration for Existing .env Keys\n\nIf this skill is installed on an existing agent that already has many keys in local .env, run this migration prompt after Convex MCP preflight succeeds:\n\nAsk the user:\n\n\"Convex backend is configured. Do you want me to migrate all local .env secrets into Convex and remove them from local .env? Recommended: Yes. Local .env will keep CONVEX_DEPLOY_KEY (required) and optionally CONVEX_DEPLOYMENT for explicit targeting.\"\n\nIf user confirms, run migration in two phases:\n\nPhase A: Copy + verify (non-destructive)\nRead local .env and collect secret key/value pairs.\nExclude CONVEX_DEPLOY_KEY and CONVEX_DEPLOYMENT.\nFor each remaining key, copy to Convex env using naming convention above:\npreferred: AGENT_DEFAULT_<KEY>\noptional per-agent override: AGENT_<agentId>_<KEY>\nVerify migration with envList and targeted envGet.\nReport copied-key count and ask for explicit cleanup approval.\nPhase B: Optional cleanup (destructive)\n\nOnly continue if the user explicitly confirms cleanup with a clear yes response (for example: YES_REMOVE_LOCAL_ENV).\n\nRemove only keys that were copied and verified in Phase A.\nKeep CONVEX_DEPLOY_KEY in local .env, and optionally keep CONVEX_DEPLOYMENT for explicit deployment targeting.\nConfirm cleanup completion with removed-key count.\n\nSafety notes:\n\nCreate a local backup of .env before mutation.\nDo not print secret values in chat/log output.\nIf any key fails migration, do not delete that key from local .env until retry succeeds.\nStoring Long-Term Memory\n\nWhen you learn something important about the user, their preferences, or make a significant decision:\n\nTool: convex.run (via mcporter)\nFunction: memory:addMemory\nArguments: {\n  \"agentId\": \"<your-agent-id>\",\n  \"type\": \"fact\",\n  \"content\": \"User prefers TypeScript over JavaScript for all new projects\",\n  \"tags\": [\"preferences\", \"coding\"]\n}\n\nnpx -y mcporter call convex.run --args '{\n  \"functionName\": \"memory:addMemory\",\n  \"args\": {\n    \"agentId\": \"<your-agent-id>\",\n    \"type\": \"fact\",\n    \"content\": \"User prefers TypeScript over JavaScript for all new projects\",\n    \"tags\": [\"preferences\", \"coding\"]\n  }\n}'\n\n\nMemory types:\n\nfact — Something true about the user or their setup\npreference — User likes/dislikes\ndecision — A choice that was made and should be remembered\nnote — General observations or context\n\nTo recall memories:\n\nTool: convex.run (via mcporter)\nFunction: memory:searchMemory\nArguments: { \"agentId\": \"<your-agent-id>\", \"type\": \"preference\", \"limit\": 20 }\n\nDaily Log Entries\n\nAt the end of each work session, write a summary of what was accomplished:\n\nTool: convex.run (via mcporter)\nFunction: memory:writeDailyLog\nArguments: {\n  \"agentId\": \"<your-agent-id>\",\n  \"date\": \"2026-02-17\",\n  \"content\": \"## Summary\\n- Set up email integration with Resend\\n- Configured GitHub SSH keys\\n- Started work on Twitter bot automation\\n\\n## Blockers\\n- Need Twitter API key from user\"\n}\n\n\nDaily logs are append-only — calling writeDailyLog for the same date appends to the existing entry.\n\nTo review past logs:\n\nTool: convex.run (via mcporter)\nFunction: memory:listDailyLogs\nArguments: { \"agentId\": \"<your-agent-id>\", \"limit\": 7 }\n\nSession Startup Checklist\n\nAt the beginning of each session:\n\nCheck for configured env secrets: convex.envList (and convex.envGet for required keys)\nLoad recent memories: convex.run with function memory:searchMemory and limit 20\nLoad today's log: convex.run with function memory:getDailyLog and today's date\nLoad yesterday's log for continuity context\n\nThis ensures you have full context from previous sessions.\n\nYour Agent ID\n\nYour agent ID is provided in your agent configuration. Use it consistently in all Convex calls. If you're unsure of your agent ID, check your agent YAML config file."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/launchthatbot/launchthatbot-convex-backend",
    "publisherUrl": "https://clawhub.ai/launchthatbot/launchthatbot-convex-backend",
    "owner": "launchthatbot",
    "version": "1.0.3",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/launchthatbot-convex-backend",
    "downloadUrl": "https://openagent3.xyz/downloads/launchthatbot-convex-backend",
    "agentUrl": "https://openagent3.xyz/skills/launchthatbot-convex-backend/agent",
    "manifestUrl": "https://openagent3.xyz/skills/launchthatbot-convex-backend/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/launchthatbot-convex-backend/agent.md"
  }
}