{
  "schemaVersion": "1.0",
  "item": {
    "slug": "todozi",
    "name": "Todozi - Your Ai Task Manager",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/bgengs/todozi",
    "canonicalUrl": "https://clawhub.ai/bgengs/todozi",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/todozi",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=todozi",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "references/api_reference.md",
      "scripts/todozi.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-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-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/todozi"
    },
    "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/todozi",
    "agentPageUrl": "https://openagent3.xyz/skills/todozi/agent",
    "manifestUrl": "https://openagent3.xyz/skills/todozi/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/todozi/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": "Quick Start",
        "body": "As SDK:\n\nfrom skills.todozi.scripts.todozi import TodoziClient\n\nclient = TodoziClient(api_key=\"your_key\")\nmatrices = await client.list_matrices()\ntask = await client.create_task(\"Build feature\", priority=\"high\")\nawait client.complete_item(task.id)\n\nAs LangChain Tools:\n\nfrom skills.todozi.scripts.todozi import TODOZI_TOOLS\n# Add to agent tools list"
      },
      {
        "title": "SDK Overview",
        "body": "ClassPurposeTodoziClientAsync API clientTodoziTaskTask dataclassTodoziMatrixMatrix dataclassTodoziStatsStats dataclass"
      },
      {
        "title": "Environment",
        "body": "export TODOZI_API_KEY=your_key\nexport TODOZI_BASE=https://todozi.com/api  # optional, default provided"
      },
      {
        "title": "Matrices",
        "body": "# List all matrices\nmatrices = await client.list_matrices()\n\n# Create matrix\nmatrix = await client.create_matrix(\"Work\", category=\"do\")\n\n# Get matrix\nmatrix = await client.get_matrix(\"matrix_id\")\n\n# Delete matrix\nawait client.delete_matrix(\"matrix_id\")"
      },
      {
        "title": "Tasks / Goals / Notes",
        "body": "# Create task\ntask = await client.create_task(\n    title=\"Review PR\",\n    priority=\"high\",\n    due_date=\"2026-02-01\",\n    description=\"Check the new feature\",\n    tags=[\"pr\", \"review\"],\n)\n\n# Create goal\ngoal = await client.create_goal(\"Ship v2\", priority=\"high\")\n\n# Create note\nnote = await client.create_note(\"Remember to call Mom\")\n\n# Get item\nitem = await client.get_item(\"item_id\")\n\n# Update item\nupdated = await client.update_item(\"item_id\", {\"title\": \"New title\", \"priority\": \"low\"})\n\n# Complete item\nawait client.complete_item(\"item_id\")\n\n# Delete item\nawait client.delete_item(\"item_id\")"
      },
      {
        "title": "Lists",
        "body": "# List tasks (with filters)\ntasks = await client.list_tasks(status=\"todo\", priority=\"high\")\n\n# List goals\ngoals = await client.list_goals()\n\n# List notes\nnotes = await client.list_notes()\n\n# List everything\nall_items = await client.list_all()"
      },
      {
        "title": "Search",
        "body": "Searches only: title, description, tags (NOT content)\n\nresults = await client.search(\n    query=\"pr\",\n    type_=\"task\",          # task, goal, or note\n    status=\"pending\",\n    priority=\"high\",\n    category=\"do\",\n    tags=[\"review\"],\n    limit=10,\n)"
      },
      {
        "title": "Bulk Operations",
        "body": "# Update multiple\nawait client.bulk_update([\n    {\"id\": \"id1\", \"title\": \"Updated\"},\n    {\"id\": \"id2\", \"priority\": \"low\"},\n])\n\n# Complete multiple\nawait client.bulk_complete([\"id1\", \"id2\"])\n\n# Delete multiple\nawait client.bulk_delete([\"id1\", \"id2\"])"
      },
      {
        "title": "Webhooks",
        "body": "# Create webhook\nwebhook = await client.create_webhook(\n    url=\"https://yoururl.com/todozi\",\n    events=[\"item.created\", \"item.completed\"],\n)\n\n# List webhooks\nwebhooks = await client.list_webhooks()\n\n# Update webhook\nawait client.update_webhook(webhook_id, url, [\"*\"])\n\n# Delete webhook\nawait client.delete_webhook(webhook_id)"
      },
      {
        "title": "System",
        "body": "# Stats\nstats = await client.get_stats()\n\n# Health check\nhealth = await client.health_check()\n\n# Validate API key\nvalid = await client.validate_api_key()\n\n# Register (get API key)\nkeys = await client.register(webhook=\"https://url.com\")"
      },
      {
        "title": "LangChain Tools",
        "body": "The skill provides @tool decorated functions for agent integration:\n\nfrom skills.todozi.scripts.todozi import TODOZI_TOOLS\n\n# Available tools:\n# - todozi_create_task(title, priority, due_date, description, thread_id, tags)\n# - todozi_list_tasks(status, priority, thread_id, limit)\n# - todozi_complete_task(task_id)\n# - todozi_get_stats()\n# - todozi_search(query, type_, status, priority, limit)\n# - todozi_list_matrices()"
      },
      {
        "title": "Categories",
        "body": "CategoryDescriptiondoDo now (urgent + important)delegateDelegate (urgent + not important)deferDefer (not urgent + important)doneCompleted itemsdreamGoals/dreams (not urgent + not important)dontDon't do (neither)"
      },
      {
        "title": "Common Patterns",
        "body": "Auto-create default matrix:\n\ntask = await client.create_task(\"My task\")  # Creates \"Default\" matrix if needed\n\nGet stats with completion rate:\n\nstats = await client.get_stats()\nrate = stats.completed_tasks / stats.total_tasks * 100 if stats.total_tasks > 0 else 0\n\nSearch with multiple filters:\n\nresults = await client.search(\"feature\", type_=\"task\", status=\"pending\", priority=\"high\")\n\nComplete multiple tasks:\n\ntasks = await client.list_tasks(status=\"todo\")\nids = [t.id for t in tasks[:5]]\nawait client.bulk_complete(ids)"
      }
    ],
    "body": "Todozi\nQuick Start\n\nAs SDK:\n\nfrom skills.todozi.scripts.todozi import TodoziClient\n\nclient = TodoziClient(api_key=\"your_key\")\nmatrices = await client.list_matrices()\ntask = await client.create_task(\"Build feature\", priority=\"high\")\nawait client.complete_item(task.id)\n\n\nAs LangChain Tools:\n\nfrom skills.todozi.scripts.todozi import TODOZI_TOOLS\n# Add to agent tools list\n\nSDK Overview\nClass\tPurpose\nTodoziClient\tAsync API client\nTodoziTask\tTask dataclass\nTodoziMatrix\tMatrix dataclass\nTodoziStats\tStats dataclass\nEnvironment\nexport TODOZI_API_KEY=your_key\nexport TODOZI_BASE=https://todozi.com/api  # optional, default provided\n\nClient Methods\nMatrices\n# List all matrices\nmatrices = await client.list_matrices()\n\n# Create matrix\nmatrix = await client.create_matrix(\"Work\", category=\"do\")\n\n# Get matrix\nmatrix = await client.get_matrix(\"matrix_id\")\n\n# Delete matrix\nawait client.delete_matrix(\"matrix_id\")\n\nTasks / Goals / Notes\n# Create task\ntask = await client.create_task(\n    title=\"Review PR\",\n    priority=\"high\",\n    due_date=\"2026-02-01\",\n    description=\"Check the new feature\",\n    tags=[\"pr\", \"review\"],\n)\n\n# Create goal\ngoal = await client.create_goal(\"Ship v2\", priority=\"high\")\n\n# Create note\nnote = await client.create_note(\"Remember to call Mom\")\n\n# Get item\nitem = await client.get_item(\"item_id\")\n\n# Update item\nupdated = await client.update_item(\"item_id\", {\"title\": \"New title\", \"priority\": \"low\"})\n\n# Complete item\nawait client.complete_item(\"item_id\")\n\n# Delete item\nawait client.delete_item(\"item_id\")\n\nLists\n# List tasks (with filters)\ntasks = await client.list_tasks(status=\"todo\", priority=\"high\")\n\n# List goals\ngoals = await client.list_goals()\n\n# List notes\nnotes = await client.list_notes()\n\n# List everything\nall_items = await client.list_all()\n\nSearch\n\nSearches only: title, description, tags (NOT content)\n\nresults = await client.search(\n    query=\"pr\",\n    type_=\"task\",          # task, goal, or note\n    status=\"pending\",\n    priority=\"high\",\n    category=\"do\",\n    tags=[\"review\"],\n    limit=10,\n)\n\nBulk Operations\n# Update multiple\nawait client.bulk_update([\n    {\"id\": \"id1\", \"title\": \"Updated\"},\n    {\"id\": \"id2\", \"priority\": \"low\"},\n])\n\n# Complete multiple\nawait client.bulk_complete([\"id1\", \"id2\"])\n\n# Delete multiple\nawait client.bulk_delete([\"id1\", \"id2\"])\n\nWebhooks\n# Create webhook\nwebhook = await client.create_webhook(\n    url=\"https://yoururl.com/todozi\",\n    events=[\"item.created\", \"item.completed\"],\n)\n\n# List webhooks\nwebhooks = await client.list_webhooks()\n\n# Update webhook\nawait client.update_webhook(webhook_id, url, [\"*\"])\n\n# Delete webhook\nawait client.delete_webhook(webhook_id)\n\nSystem\n# Stats\nstats = await client.get_stats()\n\n# Health check\nhealth = await client.health_check()\n\n# Validate API key\nvalid = await client.validate_api_key()\n\n# Register (get API key)\nkeys = await client.register(webhook=\"https://url.com\")\n\nLangChain Tools\n\nThe skill provides @tool decorated functions for agent integration:\n\nfrom skills.todozi.scripts.todozi import TODOZI_TOOLS\n\n# Available tools:\n# - todozi_create_task(title, priority, due_date, description, thread_id, tags)\n# - todozi_list_tasks(status, priority, thread_id, limit)\n# - todozi_complete_task(task_id)\n# - todozi_get_stats()\n# - todozi_search(query, type_, status, priority, limit)\n# - todozi_list_matrices()\n\nCategories\nCategory\tDescription\ndo\tDo now (urgent + important)\ndelegate\tDelegate (urgent + not important)\ndefer\tDefer (not urgent + important)\ndone\tCompleted items\ndream\tGoals/dreams (not urgent + not important)\ndont\tDon't do (neither)\nCommon Patterns\n\nAuto-create default matrix:\n\ntask = await client.create_task(\"My task\")  # Creates \"Default\" matrix if needed\n\n\nGet stats with completion rate:\n\nstats = await client.get_stats()\nrate = stats.completed_tasks / stats.total_tasks * 100 if stats.total_tasks > 0 else 0\n\n\nSearch with multiple filters:\n\nresults = await client.search(\"feature\", type_=\"task\", status=\"pending\", priority=\"high\")\n\n\nComplete multiple tasks:\n\ntasks = await client.list_tasks(status=\"todo\")\nids = [t.id for t in tasks[:5]]\nawait client.bulk_complete(ids)"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/bgengs/todozi",
    "publisherUrl": "https://clawhub.ai/bgengs/todozi",
    "owner": "bgengs",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/todozi",
    "downloadUrl": "https://openagent3.xyz/downloads/todozi",
    "agentUrl": "https://openagent3.xyz/skills/todozi/agent",
    "manifestUrl": "https://openagent3.xyz/skills/todozi/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/todozi/agent.md"
  }
}