滴答清单
Manage tasks and projects in 滴答清单. Use when user asks for tasks, to-dos, reminders, or event.
Damon
@ilooch
What This Skill Does
Command-line tool for managing tasks, projects, and reminders in the 滴答清单 (Dida365) productivity platform. Supports creating, listing, updating, completing, deleting, and moving tasks across projects, with OAuth PKCE authentication.
Replaces manually using the 滴答清单 web or mobile app for task management by providing a scriptable CLI interface for all common operations.
When to Use It
- Create a new task in a specific project
- List all tasks or projects in your 滴答清单 account
- Mark a task as completed from the command line
- Move a task between different projects
- Update a task's due date or priority
- Delete a task or project that is no longer needed
Install
$ openclaw skills install @ilooch/dida-cliDida CLI — How Agents Should Install, Login, and Use
This skill describes how an agent should reliably use @suibiji/dida-cli
to help the user install the CLI, log in with OAuth (PKCE), and perform common task/project operations.
Use this skill whenever the user wants to manage Dida via CLI (e.g. "use dida-cli to create a task").
1. Scope & Intent
- This skill focuses on:
- Installing
@suibiji/dida-cli - Logging in via OAuth PKCE
- Common project and task workflows (list, create, update, complete, delete, move)
- Installing
- This skill does not cover:
- Rare/advanced or extremely destructive operations
- Internal development commands or debugging-only flows
When in doubt, prefer safe, narrow actions and ask the user to clarify ambiguous intent.
2. Prerequisites & Environment
- The user should have:
- Node.js + npm (preferably latest LTS)
- The CLI is expected to be installed globally.
Always follow this order:
-
Check if the CLI already exists:
dida --version- If this succeeds, the CLI is installed and usable.
- If this fails (command not found or similar), proceed to install.
-
Install the CLI globally (if needed):
npm install -g @suibiji/dida-cli -
Verify installation:
dida --help dida --version
If installation fails due to environment issues (e.g. missing Node, permissions), explain the error to the user and suggest they fix their Node/npm setup first.
3. Authentication (OAuth PKCE)
The CLI uses OAuth PKCE in a browser to log in.
Standard login flow:
-
Start login:
dida auth login- This should open a browser window/tab.
- The user logs in and authorizes the app.
Alternative methods
API token: Get your API token from Settings > Account > API Keys:
dida auth token <token> # set access token directly (for headless environments)
-
Confirm login status:
dida auth status- If logged in, you can proceed with project/task operations.
- If not logged in, clearly tell the user and suggest retrying
dida auth login.
-
Logout (only when explicitly requested):
dida auth logout
Guidelines:
- Do not log the user out unless they explicitly ask for it.
- If login fails (e.g. browser blocked, network error), inform the user and suggest:
- Checking that the browser window actually opened.
- Making sure pop-up blockers or firewalls are not blocking the OAuth page.
- Trying again later if the API seems temporarily unavailable.
4. Using Projects and Tasks — Typical Workflows
4.1 Listing Projects
To list all projects:
dida project list
For structured data suitable for filtering:
dida project list --json
Agent rule:
- When you need to select a project programmatically (by name or other fields),
always prefer the
--jsonvariant.
4.2 Selecting a Project by Name
When the user refers to a project by name (e.g. "Inbox", "Work"):
-
Fetch projects with JSON:
dida project list --json -
Find the project with a matching
namefield.- If no project matches, tell the user and ask them to confirm the name.
- If multiple projects share the same name, show them to the user and ask which one to use.
- Once a single project is selected, use its
idin subsequent commands.
Rule:
- Never guess or invent project IDs.
- Always derive them from actual
project list --jsonoutput or from explicit user input.
4.3 Creating a Task in a Project
When the user says "create a task in project X":
-
Resolve
Xto a projectid(see 4.2). -
Use:
dida task create --title "<task title>" --project <projectId>
Optional recommended flags (only if supported by the CLI and relevant to the request):
--content "<detailed description>"--dueDate "<ISO 8601 date/time>"- Other fields as documented in the CLI/README.
After creation, you may run (if needed):
dida project list --json
# or a specific command to fetch the created task if available
and summarize the created task (id, title, project, due date) to the user.
4.4 Getting / Updating / Completing / Deleting a Task
Get a task (when you know both projectId and taskId):
dida task get <projectId> <taskId>
Update a task:
dida task update <taskId> \
--id <taskId> \
--project <projectId> \
--title "New title"
Add more flags as needed (content, due date, etc.), based on the user’s request.
Complete a task:
dida task complete <projectId> <taskId>
Delete a task (destructive):
dida task delete <projectId> <taskId>
Safety rules:
- For delete and other destructive operations, the user must clearly ask for it.
- If the instruction is vague (e.g. "clean up old tasks"), first:
- Show a short list of candidate tasks (titles, due dates, ids).
- Ask the user to confirm which ones to complete/delete.
4.5 Moving a Task Between Projects
To move a task from one project to another:
dida task move \
--from <sourceProjectId> \
--to <destProjectId> \
--task <taskId>
Workflow:
- Resolve both projects by name (if supplied as names).
- Confirm the taskId (either from user or by listing/searching).
- Execute the move command.
- Optionally confirm the move by fetching the task and summarizing the result.
5. JSON Mode and Structured Handling
Most commands support a --json flag.
When to use --json:
- Any time you need to:
- Filter by name.
- Select from multiple candidates.
- Chain commands based on
idor other fields.
Examples:
dida project list --json
dida task get <projectId> <taskId> --json
Agent behavior:
- Use
--jsonfor internal decision-making and selection. - Convert JSON results into a short, human-readable summary when responding to the user:
- E.g. "Found project: id=…, name=…, color=…".
6. ID and Selection Rules
-
Projects
- Prefer matching by
namefromproject list --json. - If more than one project matches, present options to the user.
- Once a project is chosen, use its
idand keep it consistent for this operation.
- Prefer matching by
-
Tasks
- If the user gives a concrete
taskId, use it directly. - If the user describes a task (e.g. by title or due date) and multiple tasks may match:
- Fetch candidate tasks (via appropriate list/get operations).
- Show a small selection (id, title, due date).
- Ask the user to choose which one(s) to act on.
- If the user gives a concrete
-
Never fabricate IDs and never assume "the first one" is correct unless:
- You transparently explain what "first" means (e.g. "sorted by creation time, using the most recent one"),
- And the user implicitly or explicitly accepts this.
7. Safety & Destructive Operations
- Treat the following as destructive and require explicit, unambiguous user confirmation:
task delete- Bulk completion or deletion (if supported)
- Any operation that may remove or irreversibly change multiple tasks
Guidelines:
- If the user uses vague terms like "remove useless tasks", ask:
- What criteria define "useless"?
- Whether they want to see a preview list first.
- Prefer showing a preview (ids, titles, due dates) before executing bulk changes.
Do not:
- Log the user out spontaneously (
auth logout) without a request. - Perform repeated, aggressive retries on failing API calls.
8. Error Handling & Recovery
Common error categories and recommended behavior:
-
Authentication errors (e.g. 401, invalid token):
-
Explain that authentication may have expired.
-
Suggest rerunning:
dida auth login dida auth status
-
-
Network / connectivity errors:
- Tell the user that the error may be temporary or network-related.
- Suggest they check their connection and try again later.
-
Not found / invalid IDs:
- Inform the user that the project or task could not be found.
- Show any relevant context (e.g. available projects) and ask them to re-check the ID or name.
-
Ambiguous selections:
- If multiple matching items are found (project or task), show them and ask the user which one they intend.
In all cases, prefer clear explanations and minimal retries over silent failure.
9. Style Notes for Agents
- Use commands from this skill as your primary reference for Dida CLI usage.
- When the user asks for "what happened" or "what did you do", respond with:
- A short description of the commands you ran (in natural language).
- A short summary of their effects (e.g. "Created task 'Buy milk' in project 'Inbox'").
If existing documentation (such as the package README) disagrees with this skill, follow this skill’s safer, more conservative interpretation unless the user explicitly asks otherwise.
Related skills
Todoist
@mjrussellManage tasks and projects in Todoist. Use when user asks about tasks, to-dos, reminders, or productivity.
Things Mac
@steipeteManage Things 3 via the `things` CLI on macOS (add/update projects+todos via URL scheme; read/search/list from the local Things database). Use when a user asks Clawdbot to add a task to Things, list inbox/today/upcoming, search tasks, or inspect projects/areas/tags.
Todoist CLI
@buddyhManage Todoist tasks, projects, labels, and sections via the `todoist` CLI. Use when a user asks to add/complete/list tasks, show today's tasks, search tasks, or manage projects.
Smart Model Switching
@millibusAuto-route tasks to the cheapest Claude model that works correctly. Three-tier progression: Haiku → Sonnet → Opus. Classify before responding. HAIKU (default): factual Q&A, greetings, reminders, status checks, lookups, simple file ops, heartbeats, casual chat, 1-2 sentence tasks. ESCALATE TO SONNET: code >10 lines, analysis, comparisons, planning, reports, multi-step reasoning, tables, long writing >3 paragraphs, summarization, research synthesis, most user conversations. ESCALATE TO OPUS: architecture decisions, complex debugging, multi-file refactoring, strategic planning, nuanced judgment, deep research, critical production decisions. Rule: If a human needs >30 seconds of focused thinking, escalate. If Sonnet struggles with complexity, go to Opus. Save 50-90% on API costs by starting cheap and escalating only when needed.
Linear
@byungkyuLinear API integration with managed OAuth. Query and manage issues, projects, teams, cycles, and labels using GraphQL. Use this skill when users want to create, update, or query Linear issues, search for tasks, manage projects, or track work. For other third party apps, use the api-gateway skill (ht
Mission Control
@rdsthomasKanban-style task management dashboard for AI assistants. Manage tasks via CLI or dashboard UI. Use when user mentions tasks, kanban, task board, mission con...