{
  "schemaVersion": "1.0",
  "item": {
    "slug": "backboard",
    "name": "Backboard.io",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/chrisk60331/backboard",
    "canonicalUrl": "https://clawhub.ai/chrisk60331/backboard",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/backboard",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=backboard",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "backend/pyproject.toml",
      "backend/api/__init__.py",
      "backend/api/models/__init__.py",
      "backend/api/models/schemas.py",
      "backend/api/app.py",
      "backend/api/routes/assistants.py"
    ],
    "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. 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. 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-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.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/backboard"
    },
    "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/backboard",
    "agentPageUrl": "https://openagent3.xyz/skills/backboard/agent",
    "manifestUrl": "https://openagent3.xyz/skills/backboard/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/backboard/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. 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. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Tools",
        "body": "This skill connects to a local Flask backend that wraps the Backboard SDK. The backend must be running on http://localhost:5100."
      },
      {
        "title": "backboard_create_assistant",
        "body": "Create a new Backboard assistant with a name and system prompt.\n\nParameters:\n\nname (string, required): Name of the assistant\nsystem_prompt (string, required): System instructions for the assistant\n\nExample:\n\n{\n  \"name\": \"Support Bot\",\n  \"system_prompt\": \"You are a helpful customer support assistant.\"\n}"
      },
      {
        "title": "backboard_list_assistants",
        "body": "List all available Backboard assistants.\n\nParameters: None"
      },
      {
        "title": "backboard_get_assistant",
        "body": "Get details of a specific assistant.\n\nParameters:\n\nassistant_id (string, required): ID of the assistant"
      },
      {
        "title": "backboard_delete_assistant",
        "body": "Delete an assistant.\n\nParameters:\n\nassistant_id (string, required): ID of the assistant to delete"
      },
      {
        "title": "backboard_create_thread",
        "body": "Create a new conversation thread for an assistant.\n\nParameters:\n\nassistant_id (string, required): ID of the assistant to create thread for"
      },
      {
        "title": "backboard_list_threads",
        "body": "List all conversation threads, optionally filtered by assistant.\n\nParameters:\n\nassistant_id (string, optional): Filter threads by assistant ID"
      },
      {
        "title": "backboard_get_thread",
        "body": "Get a thread with its message history.\n\nParameters:\n\nthread_id (string, required): ID of the thread"
      },
      {
        "title": "backboard_send_message",
        "body": "Send a message to a thread and get a response.\n\nParameters:\n\nthread_id (string, required): ID of the thread\ncontent (string, required): Message content\nmemory (string, optional): Memory mode - \"Auto\", \"Readonly\", or \"off\" (default: \"Auto\")"
      },
      {
        "title": "backboard_add_memory",
        "body": "Store a memory for an assistant that persists across conversations.\n\nParameters:\n\nassistant_id (string, required): ID of the assistant\ncontent (string, required): Memory content to store\nmetadata (object, optional): Additional metadata for the memory\n\nExample:\n\n{\n  \"assistant_id\": \"asst_123\",\n  \"content\": \"User prefers Python programming and dark mode interfaces\",\n  \"metadata\": {\"category\": \"preferences\"}\n}"
      },
      {
        "title": "backboard_list_memories",
        "body": "List all memories for an assistant.\n\nParameters:\n\nassistant_id (string, required): ID of the assistant"
      },
      {
        "title": "backboard_get_memory",
        "body": "Get a specific memory.\n\nParameters:\n\nassistant_id (string, required): ID of the assistant\nmemory_id (string, required): ID of the memory"
      },
      {
        "title": "backboard_update_memory",
        "body": "Update an existing memory.\n\nParameters:\n\nassistant_id (string, required): ID of the assistant\nmemory_id (string, required): ID of the memory\ncontent (string, required): New content for the memory"
      },
      {
        "title": "backboard_delete_memory",
        "body": "Delete a memory.\n\nParameters:\n\nassistant_id (string, required): ID of the assistant\nmemory_id (string, required): ID of the memory to delete"
      },
      {
        "title": "backboard_memory_stats",
        "body": "Get memory statistics for an assistant.\n\nParameters:\n\nassistant_id (string, required): ID of the assistant"
      },
      {
        "title": "backboard_upload_document",
        "body": "Upload a document to an assistant or thread for RAG (Retrieval-Augmented Generation).\n\nParameters:\n\nassistant_id (string, optional): ID of the assistant (use this OR thread_id)\nthread_id (string, optional): ID of the thread (use this OR assistant_id)\nfile_path (string, required): Path to the document file\n\nSupported file types: PDF, DOCX, XLSX, PPTX, TXT, CSV, MD, PY, JS, HTML, CSS, XML, JSON"
      },
      {
        "title": "backboard_list_documents",
        "body": "List documents for an assistant or thread.\n\nParameters:\n\nassistant_id (string, optional): ID of the assistant\nthread_id (string, optional): ID of the thread"
      },
      {
        "title": "backboard_document_status",
        "body": "Check the processing status of an uploaded document.\n\nParameters:\n\ndocument_id (string, required): ID of the document"
      },
      {
        "title": "backboard_delete_document",
        "body": "Delete a document.\n\nParameters:\n\ndocument_id (string, required): ID of the document to delete"
      },
      {
        "title": "Instructions",
        "body": "When the user asks about:"
      },
      {
        "title": "Memory Operations",
        "body": "\"Remember that...\" or \"Store this...\" → Use backboard_add_memory\n\"What do you remember about...\" → Use backboard_list_memories or backboard_get_memory\n\"Forget...\" or \"Delete memory...\" → Use backboard_delete_memory\n\"Update my preference...\" → Use backboard_update_memory"
      },
      {
        "title": "Document Operations",
        "body": "\"Upload this document\" or \"Index this file\" → Use backboard_upload_document\n\"What documents do I have?\" → Use backboard_list_documents\n\"Is my document ready?\" → Use backboard_document_status"
      },
      {
        "title": "Assistant Management",
        "body": "\"Create a new assistant\" → Use backboard_create_assistant\n\"List my assistants\" → Use backboard_list_assistants\n\"Delete assistant\" → Use backboard_delete_assistant"
      },
      {
        "title": "Conversation Threading",
        "body": "\"Start a new conversation\" → Use backboard_create_thread\n\"Show conversation history\" → Use backboard_get_thread\n\"Send message to thread\" → Use backboard_send_message"
      },
      {
        "title": "General Guidelines",
        "body": "Always confirm successful operations with the user\nWhen creating assistants, suggest meaningful names and system prompts\nFor document uploads, verify the file type is supported before attempting\nWhen using memory, explain what information is being stored\nThread IDs and assistant IDs should be stored/tracked for the user's context"
      },
      {
        "title": "Example 1: Store a User Preference",
        "body": "User: \"Remember that I prefer dark mode and Python code examples\"\nAction: Call backboard_add_memory with content \"User prefers dark mode interfaces and Python code examples\" and metadata {\"category\": \"preferences\"}\nResponse: \"I've stored your preferences. You prefer dark mode and Python code examples.\""
      },
      {
        "title": "Example 2: Create an Assistant",
        "body": "User: \"Create a code review assistant\"\nAction: Call backboard_create_assistant with name \"Code Reviewer\" and system_prompt \"You are an expert code reviewer. Analyze code for bugs, performance issues, and best practices. Provide constructive feedback.\"\nResponse: \"Created your Code Reviewer assistant (ID: asst_xxx). It's ready to review code and provide feedback.\""
      },
      {
        "title": "Example 3: Upload and Query a Document",
        "body": "User: \"Upload my project documentation and then tell me what it covers\"\nAction 1: Call backboard_upload_document with the file\nAction 2: Wait for processing, check status with backboard_document_status\nAction 3: Use backboard_send_message with memory=\"Auto\" to query about the document\nResponse: \"I've uploaded and indexed your documentation. Based on the content, it covers...\""
      },
      {
        "title": "Example 4: Start a Threaded Conversation",
        "body": "User: \"Start a new conversation with my support assistant\"\nAction: Call backboard_create_thread with the assistant_id\nResponse: \"Started a new conversation thread (ID: thread_xxx). You can now send messages to your support assistant.\""
      },
      {
        "title": "Backend Setup",
        "body": "The skill requires a running backend server. To start:\n\nSet the BACKBOARD_API_KEY environment variable\nNavigate to the backend directory\nRun ./start.sh\n\nThe backend will be available at http://localhost:5100."
      },
      {
        "title": "API Endpoints Reference",
        "body": "EndpointMethodDescription/healthGETHealth check/assistantsGET, POSTList/create assistants/assistants/{id}GET, PATCH, DELETEGet/update/delete assistant/assistants/{id}/threadsGET, POSTList/create threads for assistant/assistants/{id}/memoryGET, POSTList/add memories/assistants/{id}/memory/{mid}GET, PATCH, DELETEGet/update/delete memory/assistants/{id}/memory/statsGETMemory statistics/assistants/{id}/documentsGET, POSTList/upload documents/threadsGETList all threads/threads/{id}GET, DELETEGet/delete thread/threads/{id}/messagesPOSTSend message/threads/{id}/documentsGET, POSTList/upload thread documents/documents/{id}/statusGETDocument processing status/documents/{id}DELETEDelete document"
      }
    ],
    "body": "Tools\n\nThis skill connects to a local Flask backend that wraps the Backboard SDK. The backend must be running on http://localhost:5100.\n\nbackboard_create_assistant\n\nCreate a new Backboard assistant with a name and system prompt.\n\nParameters:\n\nname (string, required): Name of the assistant\nsystem_prompt (string, required): System instructions for the assistant\n\nExample:\n\n{\n  \"name\": \"Support Bot\",\n  \"system_prompt\": \"You are a helpful customer support assistant.\"\n}\n\nbackboard_list_assistants\n\nList all available Backboard assistants.\n\nParameters: None\n\nbackboard_get_assistant\n\nGet details of a specific assistant.\n\nParameters:\n\nassistant_id (string, required): ID of the assistant\nbackboard_delete_assistant\n\nDelete an assistant.\n\nParameters:\n\nassistant_id (string, required): ID of the assistant to delete\nbackboard_create_thread\n\nCreate a new conversation thread for an assistant.\n\nParameters:\n\nassistant_id (string, required): ID of the assistant to create thread for\nbackboard_list_threads\n\nList all conversation threads, optionally filtered by assistant.\n\nParameters:\n\nassistant_id (string, optional): Filter threads by assistant ID\nbackboard_get_thread\n\nGet a thread with its message history.\n\nParameters:\n\nthread_id (string, required): ID of the thread\nbackboard_send_message\n\nSend a message to a thread and get a response.\n\nParameters:\n\nthread_id (string, required): ID of the thread\ncontent (string, required): Message content\nmemory (string, optional): Memory mode - \"Auto\", \"Readonly\", or \"off\" (default: \"Auto\")\nbackboard_add_memory\n\nStore a memory for an assistant that persists across conversations.\n\nParameters:\n\nassistant_id (string, required): ID of the assistant\ncontent (string, required): Memory content to store\nmetadata (object, optional): Additional metadata for the memory\n\nExample:\n\n{\n  \"assistant_id\": \"asst_123\",\n  \"content\": \"User prefers Python programming and dark mode interfaces\",\n  \"metadata\": {\"category\": \"preferences\"}\n}\n\nbackboard_list_memories\n\nList all memories for an assistant.\n\nParameters:\n\nassistant_id (string, required): ID of the assistant\nbackboard_get_memory\n\nGet a specific memory.\n\nParameters:\n\nassistant_id (string, required): ID of the assistant\nmemory_id (string, required): ID of the memory\nbackboard_update_memory\n\nUpdate an existing memory.\n\nParameters:\n\nassistant_id (string, required): ID of the assistant\nmemory_id (string, required): ID of the memory\ncontent (string, required): New content for the memory\nbackboard_delete_memory\n\nDelete a memory.\n\nParameters:\n\nassistant_id (string, required): ID of the assistant\nmemory_id (string, required): ID of the memory to delete\nbackboard_memory_stats\n\nGet memory statistics for an assistant.\n\nParameters:\n\nassistant_id (string, required): ID of the assistant\nbackboard_upload_document\n\nUpload a document to an assistant or thread for RAG (Retrieval-Augmented Generation).\n\nParameters:\n\nassistant_id (string, optional): ID of the assistant (use this OR thread_id)\nthread_id (string, optional): ID of the thread (use this OR assistant_id)\nfile_path (string, required): Path to the document file\n\nSupported file types: PDF, DOCX, XLSX, PPTX, TXT, CSV, MD, PY, JS, HTML, CSS, XML, JSON\n\nbackboard_list_documents\n\nList documents for an assistant or thread.\n\nParameters:\n\nassistant_id (string, optional): ID of the assistant\nthread_id (string, optional): ID of the thread\nbackboard_document_status\n\nCheck the processing status of an uploaded document.\n\nParameters:\n\ndocument_id (string, required): ID of the document\nbackboard_delete_document\n\nDelete a document.\n\nParameters:\n\ndocument_id (string, required): ID of the document to delete\nInstructions\n\nWhen the user asks about:\n\nMemory Operations\n\"Remember that...\" or \"Store this...\" → Use backboard_add_memory\n\"What do you remember about...\" → Use backboard_list_memories or backboard_get_memory\n\"Forget...\" or \"Delete memory...\" → Use backboard_delete_memory\n\"Update my preference...\" → Use backboard_update_memory\nDocument Operations\n\"Upload this document\" or \"Index this file\" → Use backboard_upload_document\n\"What documents do I have?\" → Use backboard_list_documents\n\"Is my document ready?\" → Use backboard_document_status\nAssistant Management\n\"Create a new assistant\" → Use backboard_create_assistant\n\"List my assistants\" → Use backboard_list_assistants\n\"Delete assistant\" → Use backboard_delete_assistant\nConversation Threading\n\"Start a new conversation\" → Use backboard_create_thread\n\"Show conversation history\" → Use backboard_get_thread\n\"Send message to thread\" → Use backboard_send_message\nGeneral Guidelines\nAlways confirm successful operations with the user\nWhen creating assistants, suggest meaningful names and system prompts\nFor document uploads, verify the file type is supported before attempting\nWhen using memory, explain what information is being stored\nThread IDs and assistant IDs should be stored/tracked for the user's context\nExamples\nExample 1: Store a User Preference\nUser: \"Remember that I prefer dark mode and Python code examples\"\nAction: Call backboard_add_memory with content \"User prefers dark mode interfaces and Python code examples\" and metadata {\"category\": \"preferences\"}\nResponse: \"I've stored your preferences. You prefer dark mode and Python code examples.\"\nExample 2: Create an Assistant\nUser: \"Create a code review assistant\"\nAction: Call backboard_create_assistant with name \"Code Reviewer\" and system_prompt \"You are an expert code reviewer. Analyze code for bugs, performance issues, and best practices. Provide constructive feedback.\"\nResponse: \"Created your Code Reviewer assistant (ID: asst_xxx). It's ready to review code and provide feedback.\"\nExample 3: Upload and Query a Document\nUser: \"Upload my project documentation and then tell me what it covers\"\nAction 1: Call backboard_upload_document with the file\nAction 2: Wait for processing, check status with backboard_document_status\nAction 3: Use backboard_send_message with memory=\"Auto\" to query about the document\nResponse: \"I've uploaded and indexed your documentation. Based on the content, it covers...\"\nExample 4: Start a Threaded Conversation\nUser: \"Start a new conversation with my support assistant\"\nAction: Call backboard_create_thread with the assistant_id\nResponse: \"Started a new conversation thread (ID: thread_xxx). You can now send messages to your support assistant.\"\nBackend Setup\n\nThe skill requires a running backend server. To start:\n\nSet the BACKBOARD_API_KEY environment variable\nNavigate to the backend directory\nRun ./start.sh\n\nThe backend will be available at http://localhost:5100.\n\nAPI Endpoints Reference\nEndpoint\tMethod\tDescription\n/health\tGET\tHealth check\n/assistants\tGET, POST\tList/create assistants\n/assistants/{id}\tGET, PATCH, DELETE\tGet/update/delete assistant\n/assistants/{id}/threads\tGET, POST\tList/create threads for assistant\n/assistants/{id}/memory\tGET, POST\tList/add memories\n/assistants/{id}/memory/{mid}\tGET, PATCH, DELETE\tGet/update/delete memory\n/assistants/{id}/memory/stats\tGET\tMemory statistics\n/assistants/{id}/documents\tGET, POST\tList/upload documents\n/threads\tGET\tList all threads\n/threads/{id}\tGET, DELETE\tGet/delete thread\n/threads/{id}/messages\tPOST\tSend message\n/threads/{id}/documents\tGET, POST\tList/upload thread documents\n/documents/{id}/status\tGET\tDocument processing status\n/documents/{id}\tDELETE\tDelete document"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/chrisk60331/backboard",
    "publisherUrl": "https://clawhub.ai/chrisk60331/backboard",
    "owner": "chrisk60331",
    "version": "1.0.2",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/backboard",
    "downloadUrl": "https://openagent3.xyz/downloads/backboard",
    "agentUrl": "https://openagent3.xyz/skills/backboard/agent",
    "manifestUrl": "https://openagent3.xyz/skills/backboard/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/backboard/agent.md"
  }
}