{
  "schemaVersion": "1.0",
  "item": {
    "slug": "atlas-tracker",
    "name": "Atlas Tracker",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/DIdro/atlas-tracker",
    "canonicalUrl": "https://clawhub.ai/DIdro/atlas-tracker",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/atlas-tracker",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=atlas-tracker",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "references/api-patterns.md",
      "references/node-types-guide.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. 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/atlas-tracker"
    },
    "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/atlas-tracker",
    "agentPageUrl": "https://openagent3.xyz/skills/atlas-tracker/agent",
    "manifestUrl": "https://openagent3.xyz/skills/atlas-tracker/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/atlas-tracker/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": "Atlas Tracker Skill",
        "body": "Atlas Tracker (app.redforester.com) is a graph-based knowledge system combining mindmaps, Kanban, and structured properties. This skill covers working with it via the OpenClaw AT plugin tools."
      },
      {
        "title": "Setup",
        "body": "This skill requires two components to be installed and running:"
      },
      {
        "title": "1. AT MCP Server",
        "body": "A local Node.js server that proxies requests to the Atlas Tracker REST API.\n\nThe AT MCP server is maintained by the Atlas Tracker / RedForester team.\nContact @gmdidro (Telegram) or visit app.redforester.com to request access.\n\nOnce you have the server files:\n\ncd at-mcp/\nyarn install\nyarn build\n\n# Run directly\nnode build/index.js\n\n# Or run as a systemd user service (recommended)\ncp at-mcp.service ~/.config/systemd/user/\nsystemctl --user daemon-reload\nsystemctl --user enable --now at-mcp\n\nThe server listens on http://localhost:3222 by default.\n\nRequired environment variables (set in the service file or .env):\n\nAT_BASE_URL=https://app.redforester.com/api\nAUTH_HEADER=Basic <base64(username:md5(password))>\nAPI_KEY=<your-local-api-key>\nPORT=3222"
      },
      {
        "title": "2. OpenClaw Plugin",
        "body": "Copy the plugin file to your OpenClaw extensions directory:\n\nmkdir -p ~/.openclaw/extensions/atlas-tracker/\ncp index.ts ~/.openclaw/extensions/atlas-tracker/\ncp openclaw.plugin.json ~/.openclaw/extensions/atlas-tracker/\n\nThen configure the plugin in your openclaw.json:\n\n{\n  \"plugins\": {\n    \"atlas-tracker\": {\n      \"serverUrl\": \"http://localhost:3222\",\n      \"apiKey\": \"<your-local-api-key>\"\n    }\n  }\n}\n\nOpenClaw will hot-reload the plugin automatically. Verify with:\n\nopenclaw status\n\nYou should see at_read_branch, at_create_branch, at_update_branch, at_get_node_types, at_read_attachments listed as available tools."
      },
      {
        "title": "Core Concepts",
        "body": "Map — a mindmap, identified by mapId (full UUID)\nNode — a single item in the map; has id, title (HTML), optional typeId, typeProperties, children[]\nBranch — a node + all its descendants\nNode type — a schema defining available properties (enum, text, htmltext, file, user, date, etc.)\nTitle format — always HTML: <p>My title</p>, never plain text"
      },
      {
        "title": "Tool URLs",
        "body": "All tools take a nodeUrl in format:\n\nhttps://app.redforester.com/mindmap?mapid=<UUID>&nodeid=<UUID>\n\nBoth mapid and nodeid must be full UUIDs (e.g. 3d7340e8-c763-4c9e-b049-4e900b7cf565), never partial."
      },
      {
        "title": "Reading a branch",
        "body": "Always read before modifying — never assume structure:\n\nat_read_branch(nodeUrl) → returns node tree with children, types, properties"
      },
      {
        "title": "Finding the right node",
        "body": "If you don't know a nodeId, search via AT REST API:\n\nPOST /api/search  body: {\"query\": \"...\", \"map_ids\": [\"<mapId>\"]}\n# Returns hits[].id — then at_read_branch each candidate to verify title"
      },
      {
        "title": "Creating branches",
        "body": "at_create_branch(parentNodeUrl, data)\n\ndata must include children: [] even for leaf nodes — required field."
      },
      {
        "title": "Updating branches",
        "body": "at_update_branch(nodeUrl, delete[], update[], create[])\n\ncreate items: {parentNodeId, data: {title, typeId?, typeProperties?, children: []}}\nupdate items: {id, title?, typeProperties?, customProperties?}\nAll three arrays required (pass [] if unused)"
      },
      {
        "title": "Node Types",
        "body": "Call at_get_node_types(nodeUrl) once per map session — types vary per map.\nCommon types: Идея, Задача, Заметка, Категория, Проект, Этап, Заявка, Лид.\n\nFor typed nodes, typeProperties keys must exactly match the property names from at_get_node_types."
      },
      {
        "title": "Critical Rules",
        "body": "Full UUIDs only — partial IDs (e.g. b319f356) will return 404\nchildren: [] required — omitting it causes validation error on create\nHTML titles — wrap in <p>...</p>; use <ul><li>...</li></ul> for lists\nRead before write — always at_read_branch first to get current state and node IDs\n403 = permission denied — you can only write nodes owned by your AT account; read access may be broader\nLarge maps are slow — avoid full subtree reads on large maps; use search + targeted node reads instead"
      },
      {
        "title": "Add children to existing node",
        "body": "at_read_branch to get parent nodeId and confirm it exists\nat_update_branch with create: [{parentNodeId: \"<id>\", data: {..., children: []}}]"
      },
      {
        "title": "Batch create a solution tree",
        "body": "Use at_create_branch with nested children[] to create the full tree in one call."
      },
      {
        "title": "Update node content",
        "body": "at_read_branch to get current node id and properties\nat_update_branch with update: [{id, typeProperties: {key: \"<html_value>\"}}]"
      },
      {
        "title": "Create a link node (shortcut/reference)",
        "body": "A link node is a reference to an existing node — it appears in the map as a shortcut to the original. Useful for showing the same node in multiple places without duplicating it.\n\nat_create_link_node(nodeUrl, originalNodeId)\n\nnodeUrl — URL of the parent where the link node should appear\noriginalNodeId — UUID of the existing node to reference\n\nExample: place a reference to node abc-123 under parent node def-456:\n\nat_create_link_node(\n  \"https://app.redforester.com/mindmap?mapid=<mapId>&nodeid=def-456\",\n  \"abc-123\"\n)"
      },
      {
        "title": "Upload a file to a node",
        "body": "Attach any file (PDF, Excel, Word, image) to an AT node:\n\nat_upload_file(nodeUrl, filePath)\n\nfilePath — absolute local path to the file\nUploads via PUT /api/files, then attaches as a type_id=10 property\nAdds to existing files — does not overwrite"
      },
      {
        "title": "Work with comments",
        "body": "at_get_comments(nodeUrl)           → list all comments (with thread structure)\nat_add_comment(nodeUrl, text, replyToCommentId?)  → add comment or reply to thread\nat_update_comment(nodeUrl, commentId, text)       → edit comment text\nat_delete_comment(nodeUrl, commentId)             → delete comment"
      },
      {
        "title": "Reference Files",
        "body": "api-patterns.md — REST API search, auth, node fetch patterns (read when you need to search nodes or call AT API directly)\nnode-types-guide.md — property type reference (htmltext, enum, file, user, date, etc.) and how to set them (read when creating/updating typed nodes)"
      }
    ],
    "body": "Atlas Tracker Skill\n\nAtlas Tracker (app.redforester.com) is a graph-based knowledge system combining mindmaps, Kanban, and structured properties. This skill covers working with it via the OpenClaw AT plugin tools.\n\nSetup\n\nThis skill requires two components to be installed and running:\n\n1. AT MCP Server\n\nA local Node.js server that proxies requests to the Atlas Tracker REST API.\n\nThe AT MCP server is maintained by the Atlas Tracker / RedForester team.\nContact @gmdidro (Telegram) or visit app.redforester.com to request access.\n\nOnce you have the server files:\n\ncd at-mcp/\nyarn install\nyarn build\n\n# Run directly\nnode build/index.js\n\n# Or run as a systemd user service (recommended)\ncp at-mcp.service ~/.config/systemd/user/\nsystemctl --user daemon-reload\nsystemctl --user enable --now at-mcp\n\n\nThe server listens on http://localhost:3222 by default.\n\nRequired environment variables (set in the service file or .env):\n\nAT_BASE_URL=https://app.redforester.com/api\nAUTH_HEADER=Basic <base64(username:md5(password))>\nAPI_KEY=<your-local-api-key>\nPORT=3222\n\n2. OpenClaw Plugin\n\nCopy the plugin file to your OpenClaw extensions directory:\n\nmkdir -p ~/.openclaw/extensions/atlas-tracker/\ncp index.ts ~/.openclaw/extensions/atlas-tracker/\ncp openclaw.plugin.json ~/.openclaw/extensions/atlas-tracker/\n\n\nThen configure the plugin in your openclaw.json:\n\n{\n  \"plugins\": {\n    \"atlas-tracker\": {\n      \"serverUrl\": \"http://localhost:3222\",\n      \"apiKey\": \"<your-local-api-key>\"\n    }\n  }\n}\n\n\nOpenClaw will hot-reload the plugin automatically. Verify with:\n\nopenclaw status\n\n\nYou should see at_read_branch, at_create_branch, at_update_branch, at_get_node_types, at_read_attachments listed as available tools.\n\nCore Concepts\nMap — a mindmap, identified by mapId (full UUID)\nNode — a single item in the map; has id, title (HTML), optional typeId, typeProperties, children[]\nBranch — a node + all its descendants\nNode type — a schema defining available properties (enum, text, htmltext, file, user, date, etc.)\nTitle format — always HTML: <p>My title</p>, never plain text\nTool URLs\n\nAll tools take a nodeUrl in format:\n\nhttps://app.redforester.com/mindmap?mapid=<UUID>&nodeid=<UUID>\n\n\nBoth mapid and nodeid must be full UUIDs (e.g. 3d7340e8-c763-4c9e-b049-4e900b7cf565), never partial.\n\nWorkflow\nReading a branch\n\nAlways read before modifying — never assume structure:\n\nat_read_branch(nodeUrl) → returns node tree with children, types, properties\n\nFinding the right node\n\nIf you don't know a nodeId, search via AT REST API:\n\nPOST /api/search  body: {\"query\": \"...\", \"map_ids\": [\"<mapId>\"]}\n# Returns hits[].id — then at_read_branch each candidate to verify title\n\nCreating branches\nat_create_branch(parentNodeUrl, data)\n\n\ndata must include children: [] even for leaf nodes — required field.\n\nUpdating branches\nat_update_branch(nodeUrl, delete[], update[], create[])\n\ncreate items: {parentNodeId, data: {title, typeId?, typeProperties?, children: []}}\nupdate items: {id, title?, typeProperties?, customProperties?}\nAll three arrays required (pass [] if unused)\nNode Types\n\nCall at_get_node_types(nodeUrl) once per map session — types vary per map. Common types: Идея, Задача, Заметка, Категория, Проект, Этап, Заявка, Лид.\n\nFor typed nodes, typeProperties keys must exactly match the property names from at_get_node_types.\n\nCritical Rules\nFull UUIDs only — partial IDs (e.g. b319f356) will return 404\nchildren: [] required — omitting it causes validation error on create\nHTML titles — wrap in <p>...</p>; use <ul><li>...</li></ul> for lists\nRead before write — always at_read_branch first to get current state and node IDs\n403 = permission denied — you can only write nodes owned by your AT account; read access may be broader\nLarge maps are slow — avoid full subtree reads on large maps; use search + targeted node reads instead\nCommon Patterns\nAdd children to existing node\nat_read_branch to get parent nodeId and confirm it exists\nat_update_branch with create: [{parentNodeId: \"<id>\", data: {..., children: []}}]\nBatch create a solution tree\n\nUse at_create_branch with nested children[] to create the full tree in one call.\n\nUpdate node content\nat_read_branch to get current node id and properties\nat_update_branch with update: [{id, typeProperties: {key: \"<html_value>\"}}]\nCreate a link node (shortcut/reference)\n\nA link node is a reference to an existing node — it appears in the map as a shortcut to the original. Useful for showing the same node in multiple places without duplicating it.\n\nat_create_link_node(nodeUrl, originalNodeId)\n\nnodeUrl — URL of the parent where the link node should appear\noriginalNodeId — UUID of the existing node to reference\n\nExample: place a reference to node abc-123 under parent node def-456:\n\nat_create_link_node(\n  \"https://app.redforester.com/mindmap?mapid=<mapId>&nodeid=def-456\",\n  \"abc-123\"\n)\n\nUpload a file to a node\n\nAttach any file (PDF, Excel, Word, image) to an AT node:\n\nat_upload_file(nodeUrl, filePath)\n\nfilePath — absolute local path to the file\nUploads via PUT /api/files, then attaches as a type_id=10 property\nAdds to existing files — does not overwrite\nWork with comments\nat_get_comments(nodeUrl)           → list all comments (with thread structure)\nat_add_comment(nodeUrl, text, replyToCommentId?)  → add comment or reply to thread\nat_update_comment(nodeUrl, commentId, text)       → edit comment text\nat_delete_comment(nodeUrl, commentId)             → delete comment\n\nReference Files\napi-patterns.md — REST API search, auth, node fetch patterns (read when you need to search nodes or call AT API directly)\nnode-types-guide.md — property type reference (htmltext, enum, file, user, date, etc.) and how to set them (read when creating/updating typed nodes)"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/DIdro/atlas-tracker",
    "publisherUrl": "https://clawhub.ai/DIdro/atlas-tracker",
    "owner": "DIdro",
    "version": "1.0.5",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/atlas-tracker",
    "downloadUrl": "https://openagent3.xyz/downloads/atlas-tracker",
    "agentUrl": "https://openagent3.xyz/skills/atlas-tracker/agent",
    "manifestUrl": "https://openagent3.xyz/skills/atlas-tracker/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/atlas-tracker/agent.md"
  }
}