{
  "schemaVersion": "1.0",
  "item": {
    "slug": "ms-todo-sync",
    "name": "ms-todo-sync",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/xiaoski/ms-todo-sync",
    "canonicalUrl": "https://clawhub.ai/xiaoski/ms-todo-sync",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/ms-todo-sync",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=ms-todo-sync",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "pyproject.toml",
      "requirements.txt",
      "scripts/ms-todo-sync.py",
      "SKILL.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-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/ms-todo-sync"
    },
    "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/ms-todo-sync",
    "agentPageUrl": "https://openagent3.xyz/skills/ms-todo-sync/agent",
    "manifestUrl": "https://openagent3.xyz/skills/ms-todo-sync/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/ms-todo-sync/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": "ms-todo-sync",
        "body": "A Microsoft To Do command-line client for managing tasks and lists via Microsoft Graph API."
      },
      {
        "title": "Prerequisites",
        "body": "Python >= 3.9 must be installed.\nuv (Python package manager) must be installed. Install via pip install uv or see https://docs.astral.sh/uv/.\nWorking directory: All commands MUST be run from the root of this skill (the directory containing this SKILL.md file).\nNetwork access: Requires internet access to Microsoft Graph API endpoints.\nAuthentication: First-time use requires interactive login via browser. See Authentication section.\n\nToken cache: ~/.mstodo_token_cache.json (persists across sessions, auto-refreshed)\nDevice flow cache: ~/.mstodo_device_flow.json (temporary)"
      },
      {
        "title": "First-Time Setup",
        "body": "Before using this skill for the first time, dependencies must be installed:\n\n# Navigate to skill directory\ncd <path-to-ms-todo-sync>\n\n# Install dependencies using uv (recommended - creates isolated environment)\nuv sync\n\n# Alternative: Install dependencies with pip (uses global/active Python environment)\npip install -r requirements.txt\n\nDependencies:\n\nRequires msal (Microsoft Authentication Library) and requests\nSpecified in requirements.txt\nuv creates an isolated virtual environment to avoid conflicts"
      },
      {
        "title": "Environment Verification",
        "body": "After installation, verify the setup:\n\n# Check if uv can find the script\nuv run scripts/ms-todo-sync.py --help\n\n# Expected: Command help text should be displayed\n\nTroubleshooting:\n\nIf uv: command not found, install uv: pip install uv\nIf Python not found, install Python 3.9 or higher from https://python.org\nIf script fails with import errors, ensure dependencies are installed: uv sync or pip install -r requirements.txt"
      },
      {
        "title": "Security Notes",
        "body": "Uses official Microsoft Graph API via Microsoft's msal library\nAll code is plain Python (.py files), readable and auditable\nTokens stored locally in ~/.mstodo_token_cache.json\nAll API calls go directly to Microsoft endpoints"
      },
      {
        "title": "Command Reference",
        "body": "All commands follow this pattern:\n\nuv run scripts/ms-todo-sync.py [GLOBAL_OPTIONS] <command> [COMMAND_OPTIONS]"
      },
      {
        "title": "Global Options",
        "body": "OptionDescription-v, --verboseShow detailed information (IDs, dates, notes). Must be placed BEFORE the subcommand.--debugEnable debug mode to display API requests and responses. Useful for troubleshooting. Must be placed BEFORE the subcommand.\n\n⚠️ Common mistake: Global options MUST come before the subcommand.\n\n✅ uv run scripts/ms-todo-sync.py -v lists\n✅ uv run scripts/ms-todo-sync.py --debug add \"Task\"\n❌ uv run scripts/ms-todo-sync.py lists -v"
      },
      {
        "title": "Authentication",
        "body": "Authentication uses a two-step device code flow designed for non-interactive/agent environments.\n\nlogin get — Get verification code\n\nuv run scripts/ms-todo-sync.py login get\n\nOutput example:\n\n✓ Verification code generated\n\nPlease visit the following link to log in:\nhttps://microsoft.com/devicelogin\n\nEnter verification code: ABC123XYZ\n\nVerify with command: ms-todo-sync.py login verify\n\nAgent behavior: Present the URL and verification code to the user. Wait for the user to confirm they have completed the browser login before proceeding.\n\nlogin verify — Complete login\n\nuv run scripts/ms-todo-sync.py login verify\n\nOutput on success:\n\n✓ Authentication successful! Login information saved, you will be logged in automatically next time.\n\nOutput on failure:\n\n✗ Authentication failed: <error description>\n\n⚠️ This command blocks until Microsoft's server confirms the user completed browser authentication. Do NOT run this until the user confirms they have completed the browser step.\n\nExit code: 0 on success, 1 on failure.\n\nlogout — Clear saved login\n\nuv run scripts/ms-todo-sync.py logout\n\nOnly use when the user explicitly asks to switch accounts or clear login data. Under normal circumstances, the token is cached and login is automatic."
      },
      {
        "title": "List Management",
        "body": "lists — List all task lists\n\nuv run scripts/ms-todo-sync.py lists\nuv run scripts/ms-todo-sync.py -v lists  # with IDs and dates\n\nOutput example:\n\n📋 Task Lists (3 total):\n\n1. Tasks\n2. Work\n3. Shopping\n\ncreate-list — Create a new list\n\nuv run scripts/ms-todo-sync.py create-list \"<name>\"\n\nArgumentRequiredDescriptionnameYesName of the new list\n\nOutput: ✓ List created: <name>\n\ndelete-list — Delete a list\n\nuv run scripts/ms-todo-sync.py delete-list \"<name>\" [-y]\n\nArgument/OptionRequiredDescriptionnameYesName of the list to delete-y, --yesNoSkip confirmation prompt\n\n⚠️ This is a destructive operation. Without -y, the command will prompt for confirmation. Consider asking the user before deleting important lists.\n\nOutput: ✓ List deleted: <name>"
      },
      {
        "title": "Task Operations",
        "body": "add — Add a new task\n\nuv run scripts/ms-todo-sync.py add \"<title>\" [options]\n\nOptionRequiredDefaultDescriptiontitleYes—Task title (positional argument)-l, --listNo(default list)Target list name. If not specified, uses your Microsoft To Do default list.-p, --priorityNonormalPriority: low, normal, high-d, --dueNo—Due date. Accepts days from now (3 or 3d) or date (2026-02-15). Note: Only date is supported, not time.-r, --reminderNo—Reminder datetime. Formats: 3h (hours), 2d (days), 2026-02-15 14:30 (date+time with space, needs quotes), 2026-02-15T14:30:00 (ISO format), 2026-02-15 (date only, defaults to 09:00).-R, --recurrenceNo—Recurrence pattern. Formats: daily (every day), weekdays (Mon-Fri), weekly (every week), monthly (every month). With interval: daily:2 (every 2 days), weekly:3 (every 3 weeks), monthly:2 (every 2 months). Note: Automatically sets start date.-D, --descriptionNo—Task description/notes-t, --tagsNo—Comma-separated tags (e.g., \"work,urgent\")\n\nBehavior: If the specified list doesn't exist, it will be automatically created.\n\nOutput example:\n\n✓ List created: Work\n✓ Task added: Complete report\n\ncomplete — Mark a task as completed\n\nuv run scripts/ms-todo-sync.py complete \"<title>\" [-l \"<list>\"]\n\nOptionRequiredDefaultDescriptiontitleYes—Exact task title-l, --listNo(default list)List name where the task resides. If not specified, uses your default list.\n\nOutput: ✓ Task completed: <title>\n\ndelete — Delete a task\n\nuv run scripts/ms-todo-sync.py delete \"<title>\" [-l \"<list>\"] [-y]\n\nOptionRequiredDefaultDescriptiontitleYes—Exact task title-l, --listNo(default list)List name. If not specified, uses your default list.-y, --yesNo—Skip confirmation prompt\n\n⚠️ This is a destructive operation. Without -y, the command will prompt for confirmation. For routine cleanup or when user intent is clear, -y can be used to avoid blocking.\n\nOutput: ✓ Task deleted: <title>"
      },
      {
        "title": "Task Views",
        "body": "tasks — List tasks in a specific list\n\nuv run scripts/ms-todo-sync.py tasks \"<list>\" [-a]\n\nOptionRequiredDefaultDescriptionlistYes—List name (positional argument)-a, --allNo—Include completed tasks (default: only incomplete)\n\nOutput example:\n\n📋 Tasks in list \"Work\" (2 total):\n\n1. [In Progress] Write documentation ⭐\n2. [In Progress] Review PR\n\npending — All incomplete tasks across all lists\n\nuv run scripts/ms-todo-sync.py pending [-g]\n\nOptionRequiredDescription-g, --groupNoGroup results by list\n\nOutput example (with -g):\n\n📋 All incomplete tasks (3 total):\n\n📂 Work:\n  [In Progress] Write documentation ⭐\n  [In Progress] Review PR\n\n📂 Shopping:\n  [In Progress] Buy groceries\n\ntoday — Tasks due today\n\nuv run scripts/ms-todo-sync.py today\n\nLists incomplete tasks with due date matching today. Output: 📅 No tasks due today if none found.\n\noverdue — Overdue tasks\n\nuv run scripts/ms-todo-sync.py overdue\n\nOutput example:\n\n⚠️  Overdue tasks (1 total):\n\n[In Progress] Submit report ⭐\n   List: Work\n   Overdue: 3 days\n\ndetail — View full task details\n\nuv run scripts/ms-todo-sync.py detail \"<title>\" [-l \"<list>\"]\n\nOptionRequiredDefaultDescriptiontitleYes—Task title (supports partial/fuzzy match)-l, --listNo(default list)List name. If not specified, uses your default list.\n\nWhen multiple tasks match, returns the most recently modified incomplete task. If all matches are completed, returns the most recently modified completed task.\n\nsearch — Search tasks by keyword\n\nuv run scripts/ms-todo-sync.py search \"<keyword>\"\n\nSearches across all lists in both task titles and notes (case-insensitive).\n\nOutput example:\n\n🔍 Search results (1 found):\n\n[In Progress] Write documentation ⭐\n   List: Work\n\nstats — Task statistics\n\nuv run scripts/ms-todo-sync.py stats\n\nOutput example:\n\n📊 Task Statistics:\n\n  Total lists: 3\n  Total tasks: 15\n  Completed: 10\n  Pending: 5\n  High priority: 2\n  Overdue: 1\n\n  Completion rate: 66.7%\n\nexport — Export all tasks to JSON\n\nuv run scripts/ms-todo-sync.py export [-o \"<filename>\"]\n\nOptionRequiredDefaultDescription-o, --outputNotodo_export.jsonOutput file path\n\nOutput: ✓ Tasks exported to: <filename>"
      },
      {
        "title": "Exit Codes",
        "body": "CodeMeaning0Success1Failure (not logged in, API error, invalid arguments, etc.)"
      },
      {
        "title": "Common Error Messages",
        "body": "ErrorCauseResolution❌ Not logged inNo cached token or token expiredRun login get then login verifyModuleNotFoundError: No module named 'msal'Dependencies not installedRun uv sync or pip install -r requirements.txt❌ List not found: <name>Specified list does not existCheck list name with lists command❌ Task not found: <name>No task with exact matching titleCheck task title with tasks or search❌ Error: <message>API or network errorRetry; check network; use --debug for details"
      },
      {
        "title": "Critical Rules",
        "body": "Working directory: Always cd to the directory containing this SKILL.md before running commands.\nDependency installation: Before first use or when encountering import errors, run uv sync to ensure all dependencies are installed.\nTask list organization: When adding tasks:\n\nFirst, run lists to see available task lists\nIf user doesn't specify a list, tasks will be added to their default list (wellknownListName: \"defaultList\")\nIntelligently categorize tasks into appropriate lists (e.g., \"Work\", \"Personal\", \"Shopping\")\nIf user mentions a context (work, home, shopping, etc.), use or create an appropriate list\nLists will be auto-created if they don't exist, so feel free to use meaningful list names\n\n\nDestructive operations: For delete and delete-list commands:\n\nThese commands will prompt for confirmation by default (blocking behavior)\nUse -y flag to skip confirmation ONLY when:\n\nUser has explicitly requested to delete without confirmation\nThe deletion intent is unambiguous and confirmed through conversation\n\n\nWhen in doubt, ask the user for confirmation instead of using -y\n\n\nGlobal option placement: -v and --debug must come BEFORE the subcommand, not after.\nDo not retry login verify automatically: This command blocks waiting for user browser interaction. Only call it after the user confirms completion.\nCheck login status first: Before performing any task operations, run a lightweight command (e.g., lists) to verify authentication. Handle the \"Not logged in\" error gracefully."
      },
      {
        "title": "Recommended Workflow for Agents",
        "body": "1. cd <skill_directory>\n2. uv sync                                       # Ensure dependencies are installed (first time or after updates)\n3. uv run scripts/ms-todo-sync.py lists          # Test auth & see available lists\n   → If fails with exit code 1 (\"Not logged in\"):\n     a. uv run scripts/ms-todo-sync.py login get  # Get code\n     b. Present URL + code to user\n     c. Wait for user confirmation\n     d. uv run scripts/ms-todo-sync.py login verify\n4. When adding tasks:\n   → Analyze task context from user's description\n   → Choose or create appropriate list name:\n     - Work-related → \"Work\" list\n     - Personal errands → \"Personal\" list  \n     - Shopping items → \"Shopping\" list\n     - Project-specific → Use project name as list\n   → Add task with appropriate list via `-l` option\n5. Verify results (e.g., list tasks after adding)\n\nExample task categorization:\n\n\"Buy milk\" → Shopping list (or default list if no context)\n\"Prepare report for meeting\" → Work list\n\"Call dentist\" → Personal list (or default list)\n\"Review PR for auth service\" → Work or project-specific list\n\nNote: If no list is specified, tasks are added to the user's default Microsoft To Do list."
      },
      {
        "title": "Task Title Matching",
        "body": "complete and delete require exact title match.\ndetail and search support partial/fuzzy keyword match (case-insensitive).\nWhen in doubt, use search first to find the exact title, then use it in subsequent commands."
      },
      {
        "title": "Default List Behavior",
        "body": "When -l is not specified, the tool uses your Microsoft To Do default list (typically \"Tasks\"). To target a specific list, provide the -l option."
      },
      {
        "title": "Quick Examples",
        "body": "# Check existing lists first\nuv run scripts/ms-todo-sync.py lists\n\n# Add task to specific list (list auto-created if needed)\nuv run scripts/ms-todo-sync.py add \"Report\" -l \"Work\" -p high -d 3 -D \"Q4 financials\"\n\n# Add task to default list (no -l option)\nuv run scripts/ms-todo-sync.py add \"Buy milk\"\n\n# Add task with reminder in 2 hours\nuv run scripts/ms-todo-sync.py add \"Call client\" -r 2h\n\n# Add task with specific reminder date and time\nuv run scripts/ms-todo-sync.py add \"Meeting\" -d 2026-03-15 -r \"2026-03-15 14:30\"\n\n# Add recurring tasks\nuv run scripts/ms-todo-sync.py add \"Daily standup\" -l \"Work\" -R daily -d 7\nuv run scripts/ms-todo-sync.py add \"Weekly review\" -R weekly -d 2026-02-17\nuv run scripts/ms-todo-sync.py add \"Gym\" -R weekdays -l \"Personal\"  \nuv run scripts/ms-todo-sync.py add \"Monthly report\" -R monthly -p high -d 30\n\n# Search then complete (use exact title from search results)\nuv run scripts/ms-todo-sync.py search \"report\"\nuv run scripts/ms-todo-sync.py complete \"Report\" -l \"Work\"\n\n# Delete (use -y only when user intent is clear)\nuv run scripts/ms-todo-sync.py delete \"Old task\" -y\n\n# Views\nuv run scripts/ms-todo-sync.py -v pending -g          # all pending, grouped\nuv run scripts/ms-todo-sync.py -v detail \"report\"      # task detail with fuzzy match\nuv run scripts/ms-todo-sync.py export -o \"backup.json\"  # export all"
      }
    ],
    "body": "ms-todo-sync\n\nA Microsoft To Do command-line client for managing tasks and lists via Microsoft Graph API.\n\nPrerequisites\nPython >= 3.9 must be installed.\nuv (Python package manager) must be installed. Install via pip install uv or see https://docs.astral.sh/uv/.\nWorking directory: All commands MUST be run from the root of this skill (the directory containing this SKILL.md file).\nNetwork access: Requires internet access to Microsoft Graph API endpoints.\nAuthentication: First-time use requires interactive login via browser. See Authentication section.\nToken cache: ~/.mstodo_token_cache.json (persists across sessions, auto-refreshed)\nDevice flow cache: ~/.mstodo_device_flow.json (temporary)\nInstallation & Setup\nFirst-Time Setup\n\nBefore using this skill for the first time, dependencies must be installed:\n\n# Navigate to skill directory\ncd <path-to-ms-todo-sync>\n\n# Install dependencies using uv (recommended - creates isolated environment)\nuv sync\n\n# Alternative: Install dependencies with pip (uses global/active Python environment)\npip install -r requirements.txt\n\n\nDependencies:\n\nRequires msal (Microsoft Authentication Library) and requests\nSpecified in requirements.txt\nuv creates an isolated virtual environment to avoid conflicts\nEnvironment Verification\n\nAfter installation, verify the setup:\n\n# Check if uv can find the script\nuv run scripts/ms-todo-sync.py --help\n\n# Expected: Command help text should be displayed\n\n\nTroubleshooting:\n\nIf uv: command not found, install uv: pip install uv\nIf Python not found, install Python 3.9 or higher from https://python.org\nIf script fails with import errors, ensure dependencies are installed: uv sync or pip install -r requirements.txt\nSecurity Notes\nUses official Microsoft Graph API via Microsoft's msal library\nAll code is plain Python (.py files), readable and auditable\nTokens stored locally in ~/.mstodo_token_cache.json\nAll API calls go directly to Microsoft endpoints\nCommand Reference\n\nAll commands follow this pattern:\n\nuv run scripts/ms-todo-sync.py [GLOBAL_OPTIONS] <command> [COMMAND_OPTIONS]\n\nGlobal Options\nOption\tDescription\n-v, --verbose\tShow detailed information (IDs, dates, notes). Must be placed BEFORE the subcommand.\n--debug\tEnable debug mode to display API requests and responses. Useful for troubleshooting. Must be placed BEFORE the subcommand.\n\n⚠️ Common mistake: Global options MUST come before the subcommand.\n\n✅ uv run scripts/ms-todo-sync.py -v lists\n✅ uv run scripts/ms-todo-sync.py --debug add \"Task\"\n❌ uv run scripts/ms-todo-sync.py lists -v\nAuthentication\n\nAuthentication uses a two-step device code flow designed for non-interactive/agent environments.\n\nlogin get — Get verification code\nuv run scripts/ms-todo-sync.py login get\n\n\nOutput example:\n\n✓ Verification code generated\n\nPlease visit the following link to log in:\nhttps://microsoft.com/devicelogin\n\nEnter verification code: ABC123XYZ\n\nVerify with command: ms-todo-sync.py login verify\n\n\nAgent behavior: Present the URL and verification code to the user. Wait for the user to confirm they have completed the browser login before proceeding.\n\nlogin verify — Complete login\nuv run scripts/ms-todo-sync.py login verify\n\n\nOutput on success:\n\n✓ Authentication successful! Login information saved, you will be logged in automatically next time.\n\n\nOutput on failure:\n\n✗ Authentication failed: <error description>\n\n\n⚠️ This command blocks until Microsoft's server confirms the user completed browser authentication. Do NOT run this until the user confirms they have completed the browser step.\n\nExit code: 0 on success, 1 on failure.\n\nlogout — Clear saved login\nuv run scripts/ms-todo-sync.py logout\n\n\nOnly use when the user explicitly asks to switch accounts or clear login data. Under normal circumstances, the token is cached and login is automatic.\n\nList Management\nlists — List all task lists\nuv run scripts/ms-todo-sync.py lists\nuv run scripts/ms-todo-sync.py -v lists  # with IDs and dates\n\n\nOutput example:\n\n📋 Task Lists (3 total):\n\n1. Tasks\n2. Work\n3. Shopping\n\ncreate-list — Create a new list\nuv run scripts/ms-todo-sync.py create-list \"<name>\"\n\nArgument\tRequired\tDescription\nname\tYes\tName of the new list\n\nOutput: ✓ List created: <name>\n\ndelete-list — Delete a list\nuv run scripts/ms-todo-sync.py delete-list \"<name>\" [-y]\n\nArgument/Option\tRequired\tDescription\nname\tYes\tName of the list to delete\n-y, --yes\tNo\tSkip confirmation prompt\n\n⚠️ This is a destructive operation. Without -y, the command will prompt for confirmation. Consider asking the user before deleting important lists.\n\nOutput: ✓ List deleted: <name>\n\nTask Operations\nadd — Add a new task\nuv run scripts/ms-todo-sync.py add \"<title>\" [options]\n\nOption\tRequired\tDefault\tDescription\ntitle\tYes\t—\tTask title (positional argument)\n-l, --list\tNo\t(default list)\tTarget list name. If not specified, uses your Microsoft To Do default list.\n-p, --priority\tNo\tnormal\tPriority: low, normal, high\n-d, --due\tNo\t—\tDue date. Accepts days from now (3 or 3d) or date (2026-02-15). Note: Only date is supported, not time.\n-r, --reminder\tNo\t—\tReminder datetime. Formats: 3h (hours), 2d (days), 2026-02-15 14:30 (date+time with space, needs quotes), 2026-02-15T14:30:00 (ISO format), 2026-02-15 (date only, defaults to 09:00).\n-R, --recurrence\tNo\t—\tRecurrence pattern. Formats: daily (every day), weekdays (Mon-Fri), weekly (every week), monthly (every month). With interval: daily:2 (every 2 days), weekly:3 (every 3 weeks), monthly:2 (every 2 months). Note: Automatically sets start date.\n-D, --description\tNo\t—\tTask description/notes\n-t, --tags\tNo\t—\tComma-separated tags (e.g., \"work,urgent\")\n\nBehavior: If the specified list doesn't exist, it will be automatically created.\n\nOutput example:\n\n✓ List created: Work\n✓ Task added: Complete report\n\ncomplete — Mark a task as completed\nuv run scripts/ms-todo-sync.py complete \"<title>\" [-l \"<list>\"]\n\nOption\tRequired\tDefault\tDescription\ntitle\tYes\t—\tExact task title\n-l, --list\tNo\t(default list)\tList name where the task resides. If not specified, uses your default list.\n\nOutput: ✓ Task completed: <title>\n\ndelete — Delete a task\nuv run scripts/ms-todo-sync.py delete \"<title>\" [-l \"<list>\"] [-y]\n\nOption\tRequired\tDefault\tDescription\ntitle\tYes\t—\tExact task title\n-l, --list\tNo\t(default list)\tList name. If not specified, uses your default list.\n-y, --yes\tNo\t—\tSkip confirmation prompt\n\n⚠️ This is a destructive operation. Without -y, the command will prompt for confirmation. For routine cleanup or when user intent is clear, -y can be used to avoid blocking.\n\nOutput: ✓ Task deleted: <title>\n\nTask Views\ntasks — List tasks in a specific list\nuv run scripts/ms-todo-sync.py tasks \"<list>\" [-a]\n\nOption\tRequired\tDefault\tDescription\nlist\tYes\t—\tList name (positional argument)\n-a, --all\tNo\t—\tInclude completed tasks (default: only incomplete)\n\nOutput example:\n\n📋 Tasks in list \"Work\" (2 total):\n\n1. [In Progress] Write documentation ⭐\n2. [In Progress] Review PR\n\npending — All incomplete tasks across all lists\nuv run scripts/ms-todo-sync.py pending [-g]\n\nOption\tRequired\tDescription\n-g, --group\tNo\tGroup results by list\n\nOutput example (with -g):\n\n📋 All incomplete tasks (3 total):\n\n📂 Work:\n  [In Progress] Write documentation ⭐\n  [In Progress] Review PR\n\n📂 Shopping:\n  [In Progress] Buy groceries\n\ntoday — Tasks due today\nuv run scripts/ms-todo-sync.py today\n\n\nLists incomplete tasks with due date matching today. Output: 📅 No tasks due today if none found.\n\noverdue — Overdue tasks\nuv run scripts/ms-todo-sync.py overdue\n\n\nOutput example:\n\n⚠️  Overdue tasks (1 total):\n\n[In Progress] Submit report ⭐\n   List: Work\n   Overdue: 3 days\n\ndetail — View full task details\nuv run scripts/ms-todo-sync.py detail \"<title>\" [-l \"<list>\"]\n\nOption\tRequired\tDefault\tDescription\ntitle\tYes\t—\tTask title (supports partial/fuzzy match)\n-l, --list\tNo\t(default list)\tList name. If not specified, uses your default list.\n\nWhen multiple tasks match, returns the most recently modified incomplete task. If all matches are completed, returns the most recently modified completed task.\n\nsearch — Search tasks by keyword\nuv run scripts/ms-todo-sync.py search \"<keyword>\"\n\n\nSearches across all lists in both task titles and notes (case-insensitive).\n\nOutput example:\n\n🔍 Search results (1 found):\n\n[In Progress] Write documentation ⭐\n   List: Work\n\nstats — Task statistics\nuv run scripts/ms-todo-sync.py stats\n\n\nOutput example:\n\n📊 Task Statistics:\n\n  Total lists: 3\n  Total tasks: 15\n  Completed: 10\n  Pending: 5\n  High priority: 2\n  Overdue: 1\n\n  Completion rate: 66.7%\n\nexport — Export all tasks to JSON\nuv run scripts/ms-todo-sync.py export [-o \"<filename>\"]\n\nOption\tRequired\tDefault\tDescription\n-o, --output\tNo\ttodo_export.json\tOutput file path\n\nOutput: ✓ Tasks exported to: <filename>\n\nError Handling\nExit Codes\nCode\tMeaning\n0\tSuccess\n1\tFailure (not logged in, API error, invalid arguments, etc.)\nCommon Error Messages\nError\tCause\tResolution\n❌ Not logged in\tNo cached token or token expired\tRun login get then login verify\nModuleNotFoundError: No module named 'msal'\tDependencies not installed\tRun uv sync or pip install -r requirements.txt\n❌ List not found: <name>\tSpecified list does not exist\tCheck list name with lists command\n❌ Task not found: <name>\tNo task with exact matching title\tCheck task title with tasks or search\n❌ Error: <message>\tAPI or network error\tRetry; check network; use --debug for details\nAgent Usage Guidelines\nCritical Rules\nWorking directory: Always cd to the directory containing this SKILL.md before running commands.\nDependency installation: Before first use or when encountering import errors, run uv sync to ensure all dependencies are installed.\nTask list organization: When adding tasks:\nFirst, run lists to see available task lists\nIf user doesn't specify a list, tasks will be added to their default list (wellknownListName: \"defaultList\")\nIntelligently categorize tasks into appropriate lists (e.g., \"Work\", \"Personal\", \"Shopping\")\nIf user mentions a context (work, home, shopping, etc.), use or create an appropriate list\nLists will be auto-created if they don't exist, so feel free to use meaningful list names\nDestructive operations: For delete and delete-list commands:\nThese commands will prompt for confirmation by default (blocking behavior)\nUse -y flag to skip confirmation ONLY when:\nUser has explicitly requested to delete without confirmation\nThe deletion intent is unambiguous and confirmed through conversation\nWhen in doubt, ask the user for confirmation instead of using -y\nGlobal option placement: -v and --debug must come BEFORE the subcommand, not after.\nDo not retry login verify automatically: This command blocks waiting for user browser interaction. Only call it after the user confirms completion.\nCheck login status first: Before performing any task operations, run a lightweight command (e.g., lists) to verify authentication. Handle the \"Not logged in\" error gracefully.\nRecommended Workflow for Agents\n1. cd <skill_directory>\n2. uv sync                                       # Ensure dependencies are installed (first time or after updates)\n3. uv run scripts/ms-todo-sync.py lists          # Test auth & see available lists\n   → If fails with exit code 1 (\"Not logged in\"):\n     a. uv run scripts/ms-todo-sync.py login get  # Get code\n     b. Present URL + code to user\n     c. Wait for user confirmation\n     d. uv run scripts/ms-todo-sync.py login verify\n4. When adding tasks:\n   → Analyze task context from user's description\n   → Choose or create appropriate list name:\n     - Work-related → \"Work\" list\n     - Personal errands → \"Personal\" list  \n     - Shopping items → \"Shopping\" list\n     - Project-specific → Use project name as list\n   → Add task with appropriate list via `-l` option\n5. Verify results (e.g., list tasks after adding)\n\n\nExample task categorization:\n\n\"Buy milk\" → Shopping list (or default list if no context)\n\"Prepare report for meeting\" → Work list\n\"Call dentist\" → Personal list (or default list)\n\"Review PR for auth service\" → Work or project-specific list\n\nNote: If no list is specified, tasks are added to the user's default Microsoft To Do list.\n\nTask Title Matching\ncomplete and delete require exact title match.\ndetail and search support partial/fuzzy keyword match (case-insensitive).\nWhen in doubt, use search first to find the exact title, then use it in subsequent commands.\nDefault List Behavior\n\nWhen -l is not specified, the tool uses your Microsoft To Do default list (typically \"Tasks\"). To target a specific list, provide the -l option.\n\nQuick Examples\n# Check existing lists first\nuv run scripts/ms-todo-sync.py lists\n\n# Add task to specific list (list auto-created if needed)\nuv run scripts/ms-todo-sync.py add \"Report\" -l \"Work\" -p high -d 3 -D \"Q4 financials\"\n\n# Add task to default list (no -l option)\nuv run scripts/ms-todo-sync.py add \"Buy milk\"\n\n# Add task with reminder in 2 hours\nuv run scripts/ms-todo-sync.py add \"Call client\" -r 2h\n\n# Add task with specific reminder date and time\nuv run scripts/ms-todo-sync.py add \"Meeting\" -d 2026-03-15 -r \"2026-03-15 14:30\"\n\n# Add recurring tasks\nuv run scripts/ms-todo-sync.py add \"Daily standup\" -l \"Work\" -R daily -d 7\nuv run scripts/ms-todo-sync.py add \"Weekly review\" -R weekly -d 2026-02-17\nuv run scripts/ms-todo-sync.py add \"Gym\" -R weekdays -l \"Personal\"  \nuv run scripts/ms-todo-sync.py add \"Monthly report\" -R monthly -p high -d 30\n\n# Search then complete (use exact title from search results)\nuv run scripts/ms-todo-sync.py search \"report\"\nuv run scripts/ms-todo-sync.py complete \"Report\" -l \"Work\"\n\n# Delete (use -y only when user intent is clear)\nuv run scripts/ms-todo-sync.py delete \"Old task\" -y\n\n# Views\nuv run scripts/ms-todo-sync.py -v pending -g          # all pending, grouped\nuv run scripts/ms-todo-sync.py -v detail \"report\"      # task detail with fuzzy match\nuv run scripts/ms-todo-sync.py export -o \"backup.json\"  # export all"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/xiaoski/ms-todo-sync",
    "publisherUrl": "https://clawhub.ai/xiaoski/ms-todo-sync",
    "owner": "xiaoski",
    "version": "1.0.2",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/ms-todo-sync",
    "downloadUrl": "https://openagent3.xyz/downloads/ms-todo-sync",
    "agentUrl": "https://openagent3.xyz/skills/ms-todo-sync/agent",
    "manifestUrl": "https://openagent3.xyz/skills/ms-todo-sync/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/ms-todo-sync/agent.md"
  }
}