返回顶部
m

ms-todo-oauth

>

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.4
安全检测
已通过
808
下载量
0
收藏
概述
安装方式
版本历史

ms-todo-oauth

# ms-todo-oauth A fully-tested Microsoft To Do command-line client for managing tasks and lists via Microsoft Graph API. ## ⚠️This is a oauth based script. It contains a generated Azure Client ID and Secret ID IF YOU WORRIED ABOUT YOUR PRIVACY, CONSIDER REPLACING THEM TO YOUR OWN IN `scripts\ms-todo-oauth.py`. Just search for values below: `client_id="ca6ec244……` `client_secret="TwQ8Q……` ## ✨ Features - ✅ **Full Task Management**: Create, complete, delete, and search tasks - 🗂️ **List Organization**: Create and manage multiple task lists - ⏰ **Rich Task Options**: Priorities, due dates, reminders, descriptions, tags - 🔄 **Recurring Tasks**: Daily, weekly, monthly patterns with custom intervals - 📊 **Multiple Views**: Today, overdue, pending, statistics - 🔍 **Powerful Search**: Find tasks across all lists - 💾 **Data Export**: Export all tasks to JSON - 🧪 **Fully Tested**: 29 comprehensive automated tests - 🌐 **Unicode Support**: Full support for Chinese characters and emojis ## Prerequisites 1. **Python >= 3.9** must be installed 2. **Working directory**: All commands MUST be run from the root of this skill (the directory containing this SKILL.md file) 3. **Network access**: Requires internet access to Microsoft Graph API endpoints 4. **Microsoft Account**: Personal Microsoft account (Hotmail, Outlook.com) or work/school account 5. **Authentication**: First-time use requires OAuth2 login via browser. See [Authentication](#authentication) section - **Token cache**: `~/.mstodo_token_cache.json` (persists across sessions, auto-refreshed) ## Installation & Setup ### First-Time Setup Before using this skill for the first time, dependencies must be installed: ```bash # Navigate to skill directory cd <path-to-ms-todo-oauth> # Create a venv in the project (creates '.venv' folder) python3 -m venv .venv # Activate the venv choose based on platforms: #- Bash/Zsh: source .venv/bin/activate # - Fish: source .venv/bin/activate.fish # - Windows (PowerShell): .venv\Scripts\Activate.ps1 pip install --upgrade pip pip install -r requirements.txt # Alternative (global python env, not recommended): # pip install -r requirements.txt ``` **Dependencies:** - `msal` (Microsoft Authentication Library) - Official Microsoft OAuth library - `requests` - HTTP client for API calls - Specified in `requirements.txt` ### Environment Verification After installation, verify the setup: ```bash # If using native venv (activate as above): python3 scripts/ms-todo-oauth.py --help # Expected: Command help text should be displayed ``` **Troubleshooting:** - If `Python not found`, install Python 3.9 or higher from https://python.org ### Testing (Optional but Recommended) Verify all functionality works correctly: ```bash # Run comprehensive automated test suite (29 tests) python3 test_ms_todo_oauth.py # Expected: All tests pass (100% pass rate) ``` See [Testing](#testing) section for details. ### Security Notes - Uses official Microsoft Graph API via Microsoft's `msal` library - All code is plain Python (.py files), readable and auditable - Tokens stored locally in `~/.mstodo_token_cache.json` - All API calls go directly to Microsoft endpoints (graph.microsoft.com) - OAuth2 standard authentication flow - No third-party services involved ## Command Reference All commands follow this pattern: ``` python3 scripts/ms-todo-oauth.py [GLOBAL_OPTIONS] <command> [COMMAND_OPTIONS] ``` ### Global Options | Option | Description | | ----------------- | ----------------------------------------------------------------------------------------------------------------------------------- | | `-v, --verbose` | Show detailed information (IDs, dates, notes).**Must be placed BEFORE the subcommand.** | | `--debug` | Enable debug mode to display API requests and responses. Useful for troubleshooting.**Must be placed BEFORE the subcommand.** | | `--reauth` | Force re-authentication by clearing the token cache and starting fresh login | > ⚠️ **Common mistake**: Global options MUST come before the subcommand. > > - ✅ `python3 scripts/ms-todo-oauth.py -v lists` > - ✅ `python3 scripts/ms-todo-oauth.py --debug add "Task"` > - ❌ `python3 scripts/ms-todo-oauth.py lists -v` --- ### Authentication Authentication uses OAuth2 authorization code flow, designed for both interactive and automated environments. #### `login get` — Get OAuth2 authorization URL ```bash python3 scripts/ms-todo-oauth.py login get ``` **Output example:** ``` ====================================================================== 🔐 OAuth2 Authorization Required ====================================================================== Please visit the following URL to authorize the application: https://login.microsoftonline.com/consumers/oauth2/v2.0/authorize?... After authorization, you will be redirected to a callback URL. Copy the 'code' parameter from the callback URL and run: ms-todo-oauth.py login verify <authorization_code> ====================================================================== ``` **What to do:** 1. Open the provided URL in your browser 2. Sign in with your Microsoft account 3. Grant permissions when prompted 4. You'll be redirected to a URL like: `http://localhost:8000/callback?code=M.R3_BAY.abc123...` 5. Copy the entire code after `code=` (usually a long string starting with `M.R3_BAY.`) **Agent behavior**: Present the URL to the user and explain they need to: 1. Visit the URL 2. Complete the login 3. Copy the authorization code from the callback URL 4. Provide it to you #### `login verify` — Complete login with authorization code ```bash python3 scripts/ms-todo-oauth.py login verify <authorization_code> ``` **Example:** ```bash python3 scripts/ms-todo-oauth.py login verify "M.R3_BAY.abc123def456..." ``` **Output on success:** ``` ✓ Authentication successful! ✓ Login information saved, you will be logged in automatically next time. ``` **Output on failure:** ``` ❌ Token acquisition failed Error: invalid_grant Description: AADSTS54005: OAuth2 Authorization code was already redeemed... ``` **Exit code**: 0 on success, 1 on failure. **Important notes:** - Each authorization code can only be used ONCE - If verification fails, you need to run `login get` again to get a new code - Once successfully logged in, the token is cached and you won't need to login again unless: - You run `logout` - You run `--reauth` - The token expires and cannot be auto-refreshed #### `logout` — Clear saved login ```bash python3 scripts/ms-todo-oauth.py logout ``` Output: `✓ Login information cleared` Only use when the user explicitly asks to switch accounts or clear login data. Under normal circumstances, the token is cached and login is automatic. --- ### List Management #### `lists` — List all task lists ```bash python3 scripts/ms-todo-oauth.py lists python3 scripts/ms-todo-oauth.py -v lists # with IDs and creation dates ``` **Output example:** ``` 📋 Task Lists (3 total): 1. 任务 ID: AQMkADAwATYwMAItYTQwZC04OThhLTAwAi0wMAoALgAAA0QJKpxW32BIsIlHaM... Created: 2024-12-15T08:30:00Z 2. Work 3. Shopping ``` #### `create-list` — Create a new list ```bash python3 scripts/ms-todo-oauth.py create-list "<name>" ``` | Argument | Required | Description | | -------- | -------- | ----------------------------------------------- | | `name` | Yes | Name of the new list (supports Unicode/Chinese) | **Example:** ```bash python3 scripts/ms-todo-oauth.py create-list "项目 A" ``` Output: `✓ List created: 项目 A` #### `delete-list` — Delete a list ```bash python3 scripts/ms-todo-oauth.py delete-list "<name>" [-y] ``` | Argument/Option | Required | Description | | --------------- | -------- | -------------------------- | | `name` | Yes | Name of the list to delete | | `-y, --yes` | No | Skip confirmation prompt | > ⚠️ **This is a destructive operation**. Without `-y`, the command will prompt for confirmation. All tasks in the list will be deleted. Consider asking the user before deleting important lists. Output: `✓ List deleted: <name>` **Exit code**: 1 if list not found, 0 on success --- ### Task Operations #### `add` — Add a new task ```bash python3 scripts/ms-todo-oauth.py add "<title>" [options] ``` | Option | Required | Default | Description | | --------------------- | -------- | -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `title` | Yes | — | Task title (positional argument, supports Unicode/Chinese/emojis) | | `-l, --list` | No | (default list) | Target list name. If not specified, uses your Microsoft To Do default list. | | `-p, --priority` | No | `normal` | Priority:`low`, `normal`, `high` | | `-d, --due` | No | — | Due date. Accepts days from now (`3` or `3d`) or date (`2026-02-15`). **Note:** Only date is supported by Microsoft To Do API, not time. | | `-r, --reminder` | No | — | Reminder datetime. Formats:`3h` (hours from now), `2d` (days from now), `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, --recurrence` | No | — | 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). | | `-D, --description` | No | — | Task description/notes (supports multiline with quotes) | | `-t, --tags` | No | — | Comma-separated tags/categories (e.g.,`"work,urgent"`) | | `--create-list` | No | False | Create the list if it doesn't exist (deprecated, lists auto-create now) | **Auto-created lists**: If the specified list doesn't exist, it will be automatically created. **Output example:** ``` ✓ Task added: Complete report ``` **With recurrence:** ``` ✓ Task added: Daily standup 🔄 Recurring task created ``` **Examples:** ```bash # Simple task python3 scripts/ms-todo-oauth.py add "Buy milk" -l "Shopping" # High priority task due in 3 days python3 scripts/ms-todo-oauth.py add "Submit report" -l "Work" -p high -d 3 # Task with reminder in 2 hours python3 scripts/ms-todo-oauth.py add "Call client" -r 2h # Task with specific date and time reminder python3 scripts/ms-todo-oauth.py add "Meeting" -d 2026-03-15 -r "2026-03-15 14:30" # Daily recurring task python3 scripts/ms-todo-oauth.py add "Daily standup" -l "Work" -R daily # Weekday recurring task python3 scripts/ms-todo-oauth.py add "Gym" -R weekdays -l "Personal" # Task with all options python3 scripts/ms-todo-oauth.py add "Project Review" \ -l "Work" \ -p high \ -d 7 \ -r "2026-02-20 14:00" \ -D "Review Q1 deliverables and prepare presentation" \ -t "work,important,meeting" # Chinese task with emoji python3 scripts/ms-todo-oauth.py add "🎉 完成项目" -l "任务" -p high ``` #### `complete` — Mark a task as completed ```bash python3 scripts/ms-todo-oauth.py complete "<title>" [-l "<list>"] ``` | Option | Required | Default | Description | | -------------- | -------- | -------------- | -------------------------------- | | `title` | Yes | — | **Exact** task title | | `-l, --list` | No | (default list) | List name where the task resides | **Title matching**: Requires **exact match**. If unsure of exact title, use `search` first. Output: `✓ Task completed: <title>` **Exit code**: 1 if task not found, 0 on success #### `delete` — Delete a task ```bash python3 scripts/ms-todo-oauth.py delete "<title>" [-l "<list>"] [-y] ``` | Option | Required | Default | Description | | -------------- | -------- | -------------- | -------------------------------- | | `title` | Yes | — | **Exact** task title | | `-l, --list` | No | (default list) | List name where the task resides | | `-y, --yes` | No | — | Skip confirmation prompt | > ⚠️ **Destructive operation**. Without `-y`, will prompt for confirmation. Output: `✓ Task deleted: <title>` **Exit code**: 1 if task not found, 0 on success --- ### Task Views #### `tasks` — List tasks in a specific list ```bash python3 scripts/ms-todo-oauth.py tasks "<list>" [-a] ``` | Option | Required | Description | | ------------- | -------- | -------------------------------------------------- | | `list` | Yes | List name (exact match) | | `-a, --all` | No | Include completed tasks (default: incomplete only) | **Output example:** ``` 📋 Tasks in list "Work" (2 total): 1. [In Progress] Write documentation ⭐ 2. [In Progress] Review PR ``` **With `-a` flag:** ``` 📋 Tasks in list "Work" (3 total): 1. [In Progress] Write documentation ⭐ 2. [Completed] Submit report 3. [In Progress] Review PR ``` **Exit code**: 1 if list not found, 0 on success #### `pending` — All incomplete tasks across all lists ```bash python3 scripts/ms-todo-oauth.py pending [-g] ``` | Option | Required | Description | | --------------- | -------- | --------------------- | | `-g, --group` | No | Group results by list | **Output example (with `-g`):** ``` 📋 All incomplete tasks (3 total): 📂 Work: [In Progress] Write documentation ⭐ [In Progress] Review PR 📂 Shopping: [In Progress] Buy groceries ``` **Without `-g`:** ``` 📋 All incomplete tasks (3 total): [In Progress] Write documentation ⭐ List: Work [In Progress] Review PR List: Work [In Progress] Buy groceries List: Shopping ``` #### `today` — Tasks due today ```bash python3 scripts/ms-todo-oauth.py today ``` Lists incomplete tasks with due date matching today's date. **Output example:** ``` 📅 Tasks due today (2 total): [In Progress] Submit report ⭐ List: Work [In Progress] Buy groceries List: Shopping ``` If no tasks: `📅 No tasks due today` #### `overdue` — Overdue tasks ```bash python3 scripts/ms-todo-oauth.py overdue ``` Lists incomplete tasks past their due date, sorted by days overdue. **Output example:** ``` ⚠️ Overdue tasks (1 total): [In Progress] Submit report ⭐ List: Work Overdue: 3 days ``` If no overdue tasks: `✓ No overdue tasks` #### `detail` — View full task details ```bash python3 scripts/ms-todo-oauth.py detail "<title>" [-l "<list>"] ``` | Option | Required | Default | Description | | -------------- | -------- | -------------- | -------------------------------------------------- | | `title` | Yes | — | Task title (supports**partial/fuzzy match**) | | `-l, --list` | No | (default list) | List name | **Fuzzy matching**: Matches tasks containing the search string (case-insensitive). When multiple tasks match: - Prefers **incomplete** tasks over completed - Returns most recently modified task **Output example:** ``` ============================================================ 📌 Task Details ============================================================ 📋 Title: Complete Q1 Report 🔖 Status: [In Progress] ⚡ Priority: ⭐ High 📅 Created: 2026-01-15 08:30:00 📝 Modified: 2026-02-10 14:22:00 ⏰ Due: 2026-02-20 00:00:00 🔔 Reminder: 2026-02-20 09:00:00 📝 Notes: - Review sales figures - Include charts - Prepare for board meeting 🏷️ Categories: work, important, Q1 🔄 Recurrence: Every week on Monday Start date: 2026-02-17 No end date ============================================================ ``` #### `search` — Search tasks by keyword ```bash python3 scripts/ms-todo-oauth.py search "<keyword>" ``` Searches across **all lists** in both task titles and descriptions (case-insensitive). **Output example:** ``` 🔍 Search results for "report" (2 found): [In Progress] Complete Q1 Report ⭐ List: Work Notes: Review sales figures... [Completed] Submit weekly report List: Work ``` #### `stats` — Task statistics ```bash python3 scripts/ms-todo-oauth.py stats ``` Shows aggregate statistics across all lists. **Output example:** ``` 📊 Task Statistics: Total lists: 3 Total tasks: 15 Completed: 10 Pending: 5 High priority: 2 Overdue: 1 Completion rate: 66.7% ``` #### `export` — Export all tasks to JSON ```bash python3 scripts/ms-todo-oauth.py export [-o "<filename>"] ``` | Option | Required | Default | Description | | ---------------- | -------- | -------------------- | ---------------- | | `-o, --output` | No | `todo_export.json` | Output file path | Exports complete task data from all lists in JSON format. **Output:** `✓ Tasks exported to: <filename>` **JSON structure:** ```json { "Work": [ { "id": "AQMkADAwATYwMAItYTQw...", "title": "Complete report", "status": "notStarted", "importance": "high", "createdDateTime": "2026-01-15T08:30:00Z", "dueDateTime": { "dateTime": "2026-02-20T00:00:00.0000000", "timeZone": "UTC" }, "body": { "content": "Review Q1 numbers", "contentType": "text" }, "categories": ["work", "important"] } ], "Shopping": [...] } ``` --- ## Error Handling ### Exit Codes | Code | Meaning | | ----- | ------------------------------------------------------------------------- | | `0` | Success | | `1` | Failure (not logged in, API error, invalid arguments, resource not found) | | `2` | Invalid command-line arguments | ### Common Error Messages | Error | Cause | Resolution | | ----------------------------------------------- | --------------------------------- | --------------------------------------------------------------------------- | | `❌ Not logged in` | No cached token or token expired | Run `login get` then `login verify <code>` | | `ModuleNotFoundError: No module named 'msal'` | Dependencies not installed | Run `pip install -r requirements.txt` | | `❌ List not found: <name>` | Specified list does not exist | Check list name with `lists` command. Note: exact match required. | | `❌ Task not found: <name>` | No task with exact matching title | Use `search` to find exact title, or `tasks "<list>"` to list all tasks | | `❌ Error: Invalid isoformat string` | DateTime parsing error | This should not occur in v1.1.0+. If you see this, report as bug. | | `❌ Error: Unsupported HTTP method` | Internal API error | This should not occur in v1.1.0+. If you see this, report as bug. | | `❌ Error: <API error message>` | Microsoft Graph API error | Retry; check network; use `--debug` for full details | | `Network error` / `Connection timeout` | No internet or API unreachable | Check network connection; verify access to graph.microsoft.com | --- ## Testing This skill includes a comprehensive test suite to ensure reliability. ### Automated Testing Run the full test suite: ```bash cd <skill-directory> python3 test_ms_todo_oauth.py ``` **Prerequisites:** - Must be authenticated (logged in) before running tests - Internet connection required - Approximately 2-3 minutes to complete **Test Coverage** (29 tests): - ✅ Authentication (login/logout) - ✅ List management (create, delete, list) - ✅ Basic task operations (add, complete, delete, list) - ✅ Task options (priorities, due dates, reminders, descriptions, tags) - ✅ Recurring tasks (daily, weekly, weekdays, monthly, custom intervals) - ✅ Task views (today, overdue, pending, search, stats) - ✅ Data export and validation - ✅ Error handling (non-existent resources) - ✅ Unicode support (Chinese characters, emojis) **Expected output:** ``` ======================================================================== TEST SUMMARY ======================================================================== Total tests: 29 Passed: 29 Failed: 0 Pass rate: 100.0% ======================================================================== 🎉 ALL TESTS PASSED! 🎉 ======================================================================== ``` ### Manual Testing For manual verification, see `MANUAL_TEST_CHECKLIST.txt` which provides: - Step-by-step test procedures - Expected outcomes - 9 test categories covering all functionality ### Test Cleanup The automated test suite: - Creates a temporary test list (e.g., `🧪 Test List 14:23:45`) - Runs all tests in isolation - Deletes the test list on completion - Cleans up any temporary files If tests are interrupted, you may need to manually delete leftover test lists. --- ## Agent Usage Guidelines ### Critical Rules 1. **Working directory**: Always `cd` to the directory containing this SKILL.md before running commands. 2. **Dependency installation**: Before first use or when encountering import errors, ensure all dependencies are installed. 3. **Check authentication first**: Before any operation, verify authentication status: ```bash python3 scripts/ms-todo-oauth.py lists ``` If this returns "Not logged in" error (exit code 1), initiate the login flow. 4. **Task list organization**: When adding tasks: - First, run `lists` to see available task lists - If user doesn't specify a list, tasks will be added to their **default list** (usually "Tasks" or "任务") - Intelligently categorize tasks into appropriate lists: - Work tasks → "Work" list - Personal errands → "Personal" or default list - Shopping → "Shopping" list - Project-specific → Use project name as list - Lists will be auto-created if they don't exist - Support Chinese list names and Unicode characters 5. **Destructive operations**: For `delete` and `delete-list`: - These commands prompt for confirmation by default (blocking behavior) - Use `-y` flag ONLY when: - User has explicitly requested to delete without confirmation - The deletion intent is unambiguous and confirmed through conversation - When in doubt, ask the user for confirmation instead of using `-y` - These operations return exit code 1 on failure (resource not found) 6. **Global option placement**: `-v`, `--debug`, and `--reauth` must come BEFORE the subcommand: - ✅ `python3 scripts/ms-todo-oauth.py -v lists` - ❌ `python3 scripts/ms-todo-oauth.py lists -v` 7. **Login flow**: - Do NOT call `login verify` until user confirms they've completed browser authentication - Each authorization code can only be used once - If verify fails, you must run `login get` again for a new code 8. **Error handling**: - Check exit codes: 0 = success, 1 = failure, 2 = invalid arguments - Parse error messages to provide helpful guidance - Use `--debug` flag when troubleshooting API issues ### Recommended Workflow for Agents ``` Step 1: Setup and Authentication Check --------------------------------------- cd <skill_directory> python3 scripts/ms-todo-oauth.py lists # Test auth & see available lists If exit code is 1 and output contains "Not logged in": a. python3 scripts/ms-todo-oauth.py login get b. Present URL to user c. Explain: "Visit this URL, login, and copy the 'code' parameter from callback URL" d. Wait for user to provide authorization code e. python3 scripts/ms-todo-oauth.py login verify "<code>" f. Verify success (exit code 0) Step 2: Task Analysis and List Selection ----------------------------------------- When user requests to add task(s): a. Analyze task context from user's description b. Review available lists (from Step 1 output) c. Choose appropriate list or use default: - Work-related → "Work" - Personal errands → "Personal" or default - Shopping items → "Shopping" - Project-specific → "<ProjectName>" d. If list doesn't exist, it will be auto-created Step 3: Execute Operation -------------------------- Add task with appropriate options: python3 scripts/ms-todo-oauth.py add "Task Title" \ -l "Work" \ -p high \ -d 3 \ -r 2h \ -D "Detailed description" \ -t "tag1,tag2" Step 4: Verify and Report -------------------------- Check exit code: - 0: Success → Confirm to user - 1: Failure → Parse error, provide guidance - 2: Invalid args → Fix command syntax Optionally verify: python3 scripts/ms-todo-oauth.py tasks "<list>" # Show updated list ``` ### Task Title Matching Rules - **Exact match required**: `complete`, `delete` commands - **Partial/fuzzy match supported**: `detail`, `search` commands - **Case-insensitive**: All search operations - **Best practice**: Use `search` first to find exact title, then use it in subsequent commands **Example workflow:** ```bash # Find task with fuzzy search python3 scripts/ms-todo-oauth.py search "report" # Output shows: "Complete Q1 Report" # Use exact title from search results python3 scripts/ms-todo-oauth.py complete "Complete Q1 Report" -l "Work" ``` ### Default List Behavior - When `-l` is not specified, operations use the Microsoft To Do default list - The default list is typically named "Tasks" (English) or "任务" (Chinese) - To target a specific list, always provide `-l "<ListName>"` ### Example Task Categorization **User request:** "Add these tasks: buy milk, finish report, call dentist" **Agent approach:** ```bash # First check available lists python3 scripts/ms-todo-oauth.py lists # Categorize intelligently: python3 scripts/ms-todo-oauth.py add "Buy milk" -l "Shopping" python3 scripts/ms-todo-oauth.py add "Finish report" -l "Work" -p high -d 2 python3 scripts/ms-todo-oauth.py add "Call dentist" -l "Personal" # Or use default list if no specific context: add "Call dentist" ``` --- ## Quick Reference ### Common Workflows **Daily task review:** ```bash python3 scripts/ms-todo-oauth.py today # Check today's tasks python3 scripts/ms-todo-oauth.py overdue # Check overdue tasks python3 scripts/ms-todo-oauth.py -v pending -g # Review all pending, grouped ``` **Adding various task types:** ```bash # Simple task (default list) python3 scripts/ms-todo-oauth.py add "Buy milk" # Work task with priority and deadline python3 scripts/ms-todo-oauth.py add "Quarterly review" -l "Work" -p high -d 7 # Task with reminder python3 scripts/ms-todo-oauth.py add "Call client" -r 3h # Detailed task with all options python3 scripts/ms-todo-oauth.py add "Project meeting" \ -l "Work" \ -p high \ -d 2026-03-15 \ -r "2026-03-15 14:30" \ -D "Discuss Q1 goals and resource allocation" \ -t "meeting,important,Q1" # Recurring tasks python3 scripts/ms-todo-oauth.py add "Daily standup" -R daily -l "Work" python3 scripts/ms-todo-oauth.py add "Weekly review" -R weekly -d 7 python3 scripts/ms-todo-oauth.py add "Gym" -R weekdays -l "Personal" python3 scripts/ms-todo-oauth.py add "Monthly report" -R monthly -p high ``` **Task completion workflow:** ```bash # Search for task python3 scripts/ms-todo-oauth.py search "report" # Complete using exact title from search results python3 scripts/ms-todo-oauth.py complete "Quarterly review" -l "Work" ``` **Data management:** ```bash # Export for backup python3 scripts/ms-todo-oauth.py export -o "backup_$(date +%Y%m%d).json" # View statistics python3 scripts/ms-todo-oauth.py stats ``` --- ## Changelog ### Version 1.1.0 (Current) - ✅ **Fixed**: DateTime parsing errors (Microsoft's 7-decimal format) - ✅ **Fixed**: HTTP method parameter order bugs - ✅ **Fixed**: Missing `start_date` parameter in `create_task()` - ✅ **Fixed**: Missing `complete_task()` method - ✅ **Fixed**: Error exit codes now correctly return 1 on failure - ✅ **Added**: Comprehensive test suite (29 automated tests) - ✅ **Added**: Better error messages and troubleshooting - ✅ **Improved**: OAuth2 authentication flow documentation - ✅ **Improved**: Unicode and emoji support documentation - ✅ **Improved**: Agent usage guidelines ### Version 1.0.2 (Previous) - Initial release with OAuth2 authentication - Basic task and list management - Recurring task support - Multiple task views - Data export functionality --- ## Troubleshooting ### Authentication Issues **Problem:** `❌ Not logged in` - **Solution**: Run `login get`, complete browser flow, then `login verify <code>` **Problem:** `❌ Token acquisition failed: invalid_grant` - **Cause**: Authorization code already used or expired - **Solution**: Run `login get` again to get a fresh code **Problem:** Login worked but now getting "Not logged in" again - **Cause**: Token expired and auto-refresh failed - **Solution**: Run `--reauth` to force fresh login: ```bash python3 scripts/ms-todo-oauth.py --reauth lists ``` ### Import/Dependency Issues **Problem:** `ModuleNotFoundError: No module named 'msal'` - **Solution**: Install dependencies: `pip install -r requirements.txt` ### API/Network Issues **Problem:** Connection timeout or network errors - **Check**: Internet connection - **Check**: Can you access https://graph.microsoft.com in browser? - **Try**: Using `--debug` flag to see full API request/response **Problem:** Unexpected API errors - **Try**: Re-authenticate: `python3 scripts/ms-todo-oauth.py --reauth lists` - **Try**: Debug mode: `python3 scripts/ms-todo-oauth.py --debug <command>` ### Task/List Not Found **Problem:** `❌ Task not found: <title>` - **Solution**: Use `search` to find exact title - **Note**: `complete` and `delete` require exact title match **Problem:** `❌ List not found: <name>` - **Solution**: Run `lists` to see exact list names - **Note**: List names are case-sensitive ### Test Failures **Problem:** Tests failing with datetime errors - **Solution**: Ensure you've applied all v1.1.0 fixes - **Check**: Verify `_parse_ms_datetime()` helper function exists **Problem:** Tests failing with "Not logged in" - **Solution**: Authenticate before running tests: ```bash python3 scripts/ms-todo-oauth.py login get # Complete browser flow python3 scripts/ms-todo-oauth.py login verify <code> # Then run tests python3 test_ms_todo_oauth.py ``` --- ## Additional Resources - **Test Suite**: `test_ms_todo_oauth.py` - Automated tests - **Manual Tests**: `MANUAL_TEST_CHECKLIST.txt` - Step-by-step testing guide - **Quick Reference**: `QUICK_REFERENCE.txt` - Command cheat sheet - **Bug Fixes**: `COMPLETE_FIX_PATCH.txt` - Documentation of v1.1.0 fixes --- ## Support & Contributing **Reporting Issues:** - Provide error message and command used - Include output from `--debug` flag if applicable - Note your Python version: `python3 --version` - Note your OS: Windows/Mac/Linux **Testing New Features:** - Always run the test suite after code changes - Add new test cases to `test_ms_todo_oauth.py` for new features - Update `MANUAL_TEST_CHECKLIST.txt` with manual test procedures --- ## License MIT License - See LICENSE file for details --- **Version**: 1.1.0 **Last Updated**: 2026-02-13 **Status**: ✅ Fully Tested & Production Ready

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 ms-todo-oauth-1776420088 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 ms-todo-oauth-1776420088 技能

通过命令行安装

skillhub install ms-todo-oauth-1776420088

下载 Zip 包

⬇ 下载 ms-todo-oauth v1.0.4

文件大小: 31.88 KB | 发布时间: 2026-4-17 18:20

v1.0.4 最新 2026-4-17 18:20
- Added _meta.json file for enhanced metadata support.
- Introduced test_ms_todo_oauth.py at project root to streamline testing.
- Removed obsolete test script from scripts directory.
- Updated SKILL.md with simplified setup instructions (native venv usage) and removed references to the "uv" tool.
- All commands and documentation now reference Python's built-in venv for installation and running the CLI.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部