{
  "schemaVersion": "1.0",
  "item": {
    "slug": "secondmind",
    "name": "SecondMind",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/Emphaiser/secondmind",
    "canonicalUrl": "https://clawhub.ai/Emphaiser/secondmind",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/secondmind",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=secondmind",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "config.example.json",
      "package.json",
      "SKILL.md",
      "setup.js",
      "README.md",
      "AGENT-SETUP.md"
    ],
    "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/secondmind"
    },
    "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/secondmind",
    "agentPageUrl": "https://openagent3.xyz/skills/secondmind/agent",
    "manifestUrl": "https://openagent3.xyz/skills/secondmind/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/secondmind/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": "When To Use",
        "body": "Activate this skill when the user:\n\nAsks to set up, configure, or check SecondMind status\nWants to search their knowledge base or recall past conversations\nAsks for proactive suggestions or project ideas\nMentions memory, remembering, or context from past sessions\nSends /new or /reset (trigger pre-reset flush!)\nAsks about their mood/emotional patterns or upcoming events\nSends any SecondMind Telegram command (see below)"
      },
      {
        "title": "First-Run Setup",
        "body": "If the database does not exist at {baseDir}/data/secondmind.db:\n\nnode {baseDir}/setup.js\n\nThen guide the user through editing {baseDir}/config.json:\n\nSet openrouter.apiKey (required – get one at https://openrouter.ai/keys)\nCheck openclaw.sessionsDir matches their agent's session path\nOptional: Enable Telegram notifications"
      },
      {
        "title": "CRITICAL: Pre-Reset Memory Capture",
        "body": "When the user sends /new or /reset:\n\nBEFORE the reset takes effect, run:\nnode {baseDir}/scripts/flush.js\n\n\nRespond with the script's output (e.g. \"💾 Session archived.\")\nTHEN allow the reset to proceed normally"
      },
      {
        "title": "Telegram Commands (Integrated Mode)",
        "body": "When telegramMode is \"integrated\" in config.json, the OpenClaw agent handles\nthese commands directly. Execute the corresponding script and format the response."
      },
      {
        "title": "/smstatus or /es",
        "body": "node {baseDir}/scripts/status.js"
      },
      {
        "title": "/proposals or /ep [filter]",
        "body": "node {baseDir}/scripts/proposals.js [proposed|accepted|rejected|all]"
      },
      {
        "title": "/accept <ID...> [comment] or /ea <ID...> [comment]",
        "body": "node {baseDir}/scripts/feedback.js accept <ID...> [comment]\n\nSupports multiple IDs: /accept 1 3 5 or /accept all\nAfter accepting, a project is automatically created to track progress.\n\nRead the proposal's follow_up field from the database:\nsqlite3 {baseDir}/data/secondmind.db \"SELECT follow_up, description FROM proposals WHERE id=<ID>\"\nIf there's a follow_up question, ask the user that question\nIf the user agrees, start working on the task immediately\nExample flow:\n\nUser: /accept 5\nAgent: \"✅ #5 akzeptiert. Soll ich dir die Guide-Liste direkt zusammenstellen?\"\nUser: \"Ja mach\"\nAgent: starts working on the task"
      },
      {
        "title": "/reject <ID...> [comment] or /er <ID...> [comment]",
        "body": "node {baseDir}/scripts/feedback.js reject <ID...> [comment]\n\nSupports multiple IDs: /reject 2 4 or /reject all\nAcknowledge briefly. Don't make a big deal out of it."
      },
      {
        "title": "/defer <ID...> [comment] or /ed <ID...> [comment]",
        "body": "node {baseDir}/scripts/feedback.js defer <ID...> [comment]"
      },
      {
        "title": "/drop <ID...> or /drop all older_than <duration>",
        "body": "node {baseDir}/scripts/feedback.js drop <ID...>\nnode {baseDir}/scripts/feedback.js drop all older_than 14d\n\nPermanently kills proposals – they will never be suggested again, not even reformulated.\nSupports: /drop 2 4, /drop all, /drop all older_than 14d"
      },
      {
        "title": "/projects or /pj [filter]",
        "body": "node {baseDir}/scripts/proposals.js  # (projects are shown in status)\n\nLists tracked projects. Filter: active (default), completed, all.\nProjects are auto-created when proposals are accepted."
      },
      {
        "title": "/complete <ID...> or /done <ID...>",
        "body": "node {baseDir}/scripts/feedback.js complete <ID...>\n\nMarks a project as completed. Completed projects are permanently excluded from future suggestions.\nThe ID refers to the original proposal ID."
      },
      {
        "title": "/mute <duration> or /unmute",
        "body": "node {baseDir}/scripts/feedback.js mute 1d\nnode {baseDir}/scripts/feedback.js mute 1w\nnode {baseDir}/scripts/feedback.js unmute\n\nPauses all notifications and initiative runs for the given duration.\nDurations: 1h, 1d, 1w, 2w"
      },
      {
        "title": "Natural Language Feedback",
        "body": "The bot understands natural language feedback on the most recently shown proposals:\n\n\"Nimm die ersten zwei, den Rest ignorieren\"\n\"1 und 3 sind gut, Rest weg\"\n\"Alle droppen bis auf die Security-Sachen\""
      },
      {
        "title": "/smsearch <query> or /smsr <query>",
        "body": "node {baseDir}/scripts/search.js \"<query>\" --no-rerank"
      },
      {
        "title": "/mood or /em",
        "body": "Query the database at {baseDir}/data/secondmind.db:\n\nSELECT mood, COUNT(*) as count FROM social_context\nWHERE detected_at > datetime('now', '-7 days')\nGROUP BY mood ORDER BY count DESC;\n\nFormat with emoji: 😤frustration 🎉excitement 😰worry 🥳celebration 😫stress 🤔curiosity 😴boredom 🙏gratitude"
      },
      {
        "title": "/smrun or /smrun",
        "body": "cd {baseDir} && node scripts/ingest.js && node scripts/consolidate.js && node scripts/initiative.js"
      },
      {
        "title": "Standalone Telegram Bot (Alternative Mode)",
        "body": "When telegramMode is \"standalone\", the user runs a separate bot daemon:\n\nnode {baseDir}/scripts/telegram-bot.js\n\nThis requires a dedicated Telegram bot token (different from the OpenClaw agent's bot).\nThe standalone bot handles all the same commands listed above via its own polling loop."
      },
      {
        "title": "Background Jobs (installed by setup.js)",
        "body": "Ingest: Every 30 min – imports JSONL session transcripts\nConsolidate: Every 6h – LLM extracts knowledge + emotions + events\nArchive: Daily 3:00 AM – promotes mature knowledge to long-term FTS5 index\nInitiative: Every 6h – generates proposals and sends Telegram notifications"
      },
      {
        "title": "Configuration",
        "body": "Edit {baseDir}/config.json:\n\nopenrouter.apiKey: OpenRouter API key (REQUIRED)\nopenclaw.sessionsDir: Path to your agent's sessions directory\ntelegramMode: \"integrated\" (via OpenClaw) or \"standalone\" (separate daemon)\nnotifications.enabled: true to push proposals to Telegram\nnotifications.telegram.botToken: Your Telegram bot token\nnotifications.telegram.chatId: Your Telegram chat ID\nmodels.*: LLM model assignments (pre-optimized, change only if needed)\ninitiative.reminderCooldownDays: Days before reminding about deferred proposals (default: 7)\ninitiative.maxNudgesPerProposal: Max reminders before auto-archiving (default: 2)\ninitiative.dedupThreshold: Semantic similarity threshold for dedup (default: 0.85)"
      },
      {
        "title": "Troubleshooting",
        "body": "\"Database locked\": Cron job running. Wait 30s.\n\"OpenRouter error\": Check API key + credit balance at openrouter.ai\n\"No new data\": Check openclaw.sessionsDir in config.json\nTelegram conflict: Two bots polling same token → use integrated mode or create second bot\nReset: node {baseDir}/setup.js --reset"
      },
      {
        "title": "Cost",
        "body": "~$0.60-1.65/month via OpenRouter Cloud. See https://openrouter.ai/models for current prices."
      }
    ],
    "body": "SecondMind – Autonomous AI Memory, Initiative & Social Intelligence\nWhen To Use\n\nActivate this skill when the user:\n\nAsks to set up, configure, or check SecondMind status\nWants to search their knowledge base or recall past conversations\nAsks for proactive suggestions or project ideas\nMentions memory, remembering, or context from past sessions\nSends /new or /reset (trigger pre-reset flush!)\nAsks about their mood/emotional patterns or upcoming events\nSends any SecondMind Telegram command (see below)\nFirst-Run Setup\n\nIf the database does not exist at {baseDir}/data/secondmind.db:\n\nnode {baseDir}/setup.js\n\n\nThen guide the user through editing {baseDir}/config.json:\n\nSet openrouter.apiKey (required – get one at https://openrouter.ai/keys)\nCheck openclaw.sessionsDir matches their agent's session path\nOptional: Enable Telegram notifications\nCRITICAL: Pre-Reset Memory Capture\n\nWhen the user sends /new or /reset:\n\nBEFORE the reset takes effect, run:\nnode {baseDir}/scripts/flush.js\n\nRespond with the script's output (e.g. \"💾 Session archived.\")\nTHEN allow the reset to proceed normally\nTelegram Commands (Integrated Mode)\n\nWhen telegramMode is \"integrated\" in config.json, the OpenClaw agent handles these commands directly. Execute the corresponding script and format the response.\n\n/smstatus or /es\nnode {baseDir}/scripts/status.js\n\n/proposals or /ep [filter]\nnode {baseDir}/scripts/proposals.js [proposed|accepted|rejected|all]\n\n/accept <ID...> [comment] or /ea <ID...> [comment]\nnode {baseDir}/scripts/feedback.js accept <ID...> [comment]\n\n\nSupports multiple IDs: /accept 1 3 5 or /accept all After accepting, a project is automatically created to track progress.\n\nRead the proposal's follow_up field from the database: sqlite3 {baseDir}/data/secondmind.db \"SELECT follow_up, description FROM proposals WHERE id=<ID>\"\nIf there's a follow_up question, ask the user that question\nIf the user agrees, start working on the task immediately\nExample flow:\nUser: /accept 5\nAgent: \"✅ #5 akzeptiert. Soll ich dir die Guide-Liste direkt zusammenstellen?\"\nUser: \"Ja mach\"\nAgent: starts working on the task\n/reject <ID...> [comment] or /er <ID...> [comment]\nnode {baseDir}/scripts/feedback.js reject <ID...> [comment]\n\n\nSupports multiple IDs: /reject 2 4 or /reject all Acknowledge briefly. Don't make a big deal out of it.\n\n/defer <ID...> [comment] or /ed <ID...> [comment]\nnode {baseDir}/scripts/feedback.js defer <ID...> [comment]\n\n/drop <ID...> or /drop all older_than <duration>\nnode {baseDir}/scripts/feedback.js drop <ID...>\nnode {baseDir}/scripts/feedback.js drop all older_than 14d\n\n\nPermanently kills proposals – they will never be suggested again, not even reformulated. Supports: /drop 2 4, /drop all, /drop all older_than 14d\n\n/projects or /pj [filter]\nnode {baseDir}/scripts/proposals.js  # (projects are shown in status)\n\n\nLists tracked projects. Filter: active (default), completed, all. Projects are auto-created when proposals are accepted.\n\n/complete <ID...> or /done <ID...>\nnode {baseDir}/scripts/feedback.js complete <ID...>\n\n\nMarks a project as completed. Completed projects are permanently excluded from future suggestions. The ID refers to the original proposal ID.\n\n/mute <duration> or /unmute\nnode {baseDir}/scripts/feedback.js mute 1d\nnode {baseDir}/scripts/feedback.js mute 1w\nnode {baseDir}/scripts/feedback.js unmute\n\n\nPauses all notifications and initiative runs for the given duration. Durations: 1h, 1d, 1w, 2w\n\nNatural Language Feedback\n\nThe bot understands natural language feedback on the most recently shown proposals:\n\n\"Nimm die ersten zwei, den Rest ignorieren\"\n\"1 und 3 sind gut, Rest weg\"\n\"Alle droppen bis auf die Security-Sachen\"\n/smsearch <query> or /smsr <query>\nnode {baseDir}/scripts/search.js \"<query>\" --no-rerank\n\n/mood or /em\n\nQuery the database at {baseDir}/data/secondmind.db:\n\nSELECT mood, COUNT(*) as count FROM social_context\nWHERE detected_at > datetime('now', '-7 days')\nGROUP BY mood ORDER BY count DESC;\n\n\nFormat with emoji: 😤frustration 🎉excitement 😰worry 🥳celebration 😫stress 🤔curiosity 😴boredom 🙏gratitude\n\n/smrun or /smrun\ncd {baseDir} && node scripts/ingest.js && node scripts/consolidate.js && node scripts/initiative.js\n\nStandalone Telegram Bot (Alternative Mode)\n\nWhen telegramMode is \"standalone\", the user runs a separate bot daemon:\n\nnode {baseDir}/scripts/telegram-bot.js\n\n\nThis requires a dedicated Telegram bot token (different from the OpenClaw agent's bot). The standalone bot handles all the same commands listed above via its own polling loop.\n\nBackground Jobs (installed by setup.js)\nIngest: Every 30 min – imports JSONL session transcripts\nConsolidate: Every 6h – LLM extracts knowledge + emotions + events\nArchive: Daily 3:00 AM – promotes mature knowledge to long-term FTS5 index\nInitiative: Every 6h – generates proposals and sends Telegram notifications\nConfiguration\n\nEdit {baseDir}/config.json:\n\nopenrouter.apiKey: OpenRouter API key (REQUIRED)\nopenclaw.sessionsDir: Path to your agent's sessions directory\ntelegramMode: \"integrated\" (via OpenClaw) or \"standalone\" (separate daemon)\nnotifications.enabled: true to push proposals to Telegram\nnotifications.telegram.botToken: Your Telegram bot token\nnotifications.telegram.chatId: Your Telegram chat ID\nmodels.*: LLM model assignments (pre-optimized, change only if needed)\ninitiative.reminderCooldownDays: Days before reminding about deferred proposals (default: 7)\ninitiative.maxNudgesPerProposal: Max reminders before auto-archiving (default: 2)\ninitiative.dedupThreshold: Semantic similarity threshold for dedup (default: 0.85)\nTroubleshooting\n\"Database locked\": Cron job running. Wait 30s.\n\"OpenRouter error\": Check API key + credit balance at openrouter.ai\n\"No new data\": Check openclaw.sessionsDir in config.json\nTelegram conflict: Two bots polling same token → use integrated mode or create second bot\nReset: node {baseDir}/setup.js --reset\nCost\n\n~$0.60-1.65/month via OpenRouter Cloud. See https://openrouter.ai/models for current prices."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/Emphaiser/secondmind",
    "publisherUrl": "https://clawhub.ai/Emphaiser/secondmind",
    "owner": "Emphaiser",
    "version": "1.4.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/secondmind",
    "downloadUrl": "https://openagent3.xyz/downloads/secondmind",
    "agentUrl": "https://openagent3.xyz/skills/secondmind/agent",
    "manifestUrl": "https://openagent3.xyz/skills/secondmind/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/secondmind/agent.md"
  }
}