Skip to content

DeliciousBuding/dida-cli

Repository files navigation

DidaCLI

DidaCLI

JSON-first CLI for Dida365 / TickTick

License: MIT Go 1.26+ Latest Release CI npm

中文 · Website · Commands


DidaCLI builds as a single Go binary with no external Go modules. It keeps Web API cookie auth, Official MCP tokens, and OpenAPI OAuth separate. Commands return a consistent JSON envelope.

$ dida task today --compact --json

Install

npm i -g @delicious233/dida-cli          # npm
curl -fsSL https://raw.githubusercontent.com/DeliciousBuding/dida-cli/main/install.sh | sh
iwr https://raw.githubusercontent.com/DeliciousBuding/dida-cli/main/install.ps1 -UseB | iex
All install options

npm (recommended)

npm install -g @delicious233/dida-cli

macOS / Linux

curl -fsSL https://raw.githubusercontent.com/DeliciousBuding/dida-cli/main/install.sh | sh

Windows (PowerShell)

iwr https://raw.githubusercontent.com/DeliciousBuding/dida-cli/main/install.ps1 -UseB | iex

Go

go install github.com/DeliciousBuding/dida-cli/cmd/dida@latest

Pin a specific version

DIDA_VERSION=vX.Y.Z curl -fsSL https://raw.githubusercontent.com/DeliciousBuding/dida-cli/main/install.sh | sh

After install:

dida version && dida doctor --json
dida doctor --check-upgrade --json

Quick Start

# 1. Login with the Dida365 browser cookie named "t"
dida auth cookie set --token-stdin --json

# Optional browser capture path
dida auth login --browser --json

# 2. Verify
dida doctor --verify --json

# Optional update check
dida doctor --check-upgrade --json

# 3. See today
dida task today --compact --json

# 4. Create a task (preview first)
dida task create --project <id> --title "Ship v1" --dry-run --json

Feature Coverage

DidaCLI exposes 140 local command contracts through dida schema list --compact --json. The main feature groups are:

Area What it covers Entry points
Output and safety Stable JSON envelope, compact task output, local schema discovery, write previews, destructive confirmations, token redaction --json, --compact, --dry-run, --yes, schema
Auth and diagnostics Browser cookie login, stdin cookie import, auth verification, logout, local config and endpoint checks auth, doctor
Channel selection Separate Web API, Official MCP, and Official OpenAPI auth models with local guidance for agents channel list
Agent context One-call context pack with projects, folders, tags, filters, today, upcoming, quadrant buckets, and outline mode agent context
Sync Full sync and checkpoint-based incremental sync with normalized views and raw-compatible deltas sync all, sync checkpoint
Tasks Today, latest captured tasks, active lists, task detail, search, upcoming, due counts, create, update, complete, delete, move, parent/subtask assignment task
Task fields Content, rich description, start and due dates, timezone, priority, tags, checklist items, column, reminders, repeat metadata, all-day, floating task create, task update
Projects and organization Project list/tasks/CRUD, folder CRUD, tag CRUD/rename/merge, filters, Kanban column list and experimental create project, folder, tag, filter, column
Comments and files Comment list/create/update/delete, comment attachment upload, attachment quota, existing task attachment download comment, attachment
History Completed tasks, closed-history items, and deleted tasks from trash completed, closed, trash
Productivity Pomodoro preferences, records, timing, stats, timeline, task records, habit preferences, habits, sections, check-ins, Eisenhower quadrants pomo, habit, quadrant
Account metadata Settings, daily reminders, share contacts, project sharing state, calendar subscriptions/accounts, account stats, project templates, global search, user profile/status/sessions settings, reminder, share, calendar, stats, template, search, user
Official MCP Token management, tool discovery, schema display, raw tool call, project reads, task search/filter/batch writes, habit reads/writes, focus reads/delete official
Official OpenAPI OAuth client config, browser/manual OAuth, project/task/focus/habit wrappers, completed and filtered task reads openapi
Raw read probes Read-only GET escape hatch for verified Web API exploration with structured error details raw get
Distribution and upgrade Single binary builds, shell completion scripts, npm/install scripts, packaging templates, release archives, checksum-verified self-upgrade completion, upgrade

Command Examples

Web API reads
dida task today --json
dida task latest --limit 10 --project inbox --compact --json
dida task list --filter all --limit 50 --compact --json
dida task upcoming --days 14 --json
dida task search --query "exam" --json
dida task due-counts --json
dida project list --json
dida project tasks <project-id> --limit 50 --compact --json
dida folder list --json
dida tag list --json
dida filter list --json
dida column list <project-id> --json
dida completed today --json
dida closed list --status 2 --limit 50 --json
dida trash list --cursor 20 --compact --json
dida settings get --include-web --json
dida reminder daily --json
dida attachment quota --json
dida share contacts --json
dida share project shares <project-id> --json
dida calendar subscriptions --json
dida stats general --json
dida template project list --limit 50 --json
dida search all --query "exam" --limit 20 --json
dida user profile --json
dida pomo stats --json
dida habit list --json
dida quadrant list --json
dida sync all --json

Latest captured tasks

When several related tasks are captured from WeChat or another inbox flow with their context and materials, use task latest to read the newest captured items first:

dida task latest --limit 10 --project inbox --compact --json

The command sorts active tasks by creation time, maps --project inbox to the real inbox project from sync data, and falls back to modified time when creation metadata is missing. Omit --project inbox to read the newest active tasks across all projects.

Web API writes
dida task create --project <id> --title "New task" --dry-run --json
dida task update <id> --project <p> --title "Updated" --dry-run --json
dida task complete <id> --project <p> --dry-run --json
dida task move <id> --from <p> --to <p> --dry-run --json
dida task parent <id> --parent <parent-id> --project <p> --dry-run --json
dida task delete <id> --project <p> --dry-run --yes --json
dida project create --name "New project" --dry-run --json
dida folder create --name "Work" --dry-run --json
dida tag rename old-name new-name --dry-run --json
dida column create --project <p> --name "Doing" --dry-run --json
dida comment create --project <p> --task <id> --text "Looks good" --dry-run --json
dida comment create --project <p> --task <id> --text "See file" --file ./probe.png --dry-run --json
dida attachment download --project <p> --task <id> --attachment <a> --output ./file.doc --json
Official MCP and OpenAPI
# MCP (token)
DIDA365_TOKEN=dp_xxx dida official project list --json
dida official tools --limit 20 --json
dida official task filter --project <id> --status 0 --json
dida official task batch-add --args-json '{"tasks":[{"title":"Task"}]}' --dry-run --json
dida official habit list --json
dida official focus list --from-time 2026-05-01T00:00:00+08:00 --to-time 2026-05-09T23:59:59+08:00 --type 1 --json

# OpenAPI (OAuth)
dida openapi client set --id <id> --secret-stdin --json
dida openapi login --browser --json
dida openapi project list --json
dida openapi task create --args-json '{"projectId":"<project-id>","title":"Task"}' --dry-run --json
dida openapi task filter --args-json '{"projectIds":["<project-id>"],"status":[0]}' --json
dida openapi habit checkins --habit-ids <habit-id> --from 20260401 --to 20260407 --json
Agent, schema, raw reads, and upgrade
dida schema list --compact --json
dida schema show task.create --json
dida completion bash
dida channel list --json
dida agent context --outline --json
dida raw get /user/preferences/settings --json
dida doctor --check-upgrade --json
dida upgrade --check --json

Full reference: docs/commands.md. Machine-readable reference: dida schema list --compact --json.

Auth Channels

Web API Official MCP Official OpenAPI
Auth Browser cookie Token OAuth
Coverage Web API resources outside official channels MCP tool-based Standard REST
Setup One login Get token Register app

The three auth channels stay separate.

Agent Integration

dida schema list --compact --json        # discover commands
dida agent context --outline --json      # build context
dida task create ... --dry-run --json    # preview writes
Agent Install
Claude Code Copy skills/dida-cli/SKILL.md
Codex / Others See docs/skill-installation.md

Preview resource writes with --dry-run when supported. Destructive commands require --yes. The CLI does not print full token values. See Agent Usage.

Docs

Contributing

git clone https://github.com/DeliciousBuding/dida-cli.git && cd dida-cli
go test ./... && go build -o bin/dida ./cmd/dida

See CONTRIBUTING.md.

Security and Conduct

Report vulnerabilities through the private advisory process in SECURITY.md. Do not post live cookies, tokens, private task exports, or full API response dumps in public issues.

Project discussion follows CODE_OF_CONDUCT.md.

License

MIT


DidaCLI is an independent open-source CLI for Dida365 / TickTick-compatible workflows. Use it with accounts and automations you control, subject to the upstream services' terms.

About

Agent-friendly CLI for Dida365 / TickTick

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

7 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors