TreeMap
무료 오픈소스 디스크 사용량 시각화 도구로, 사각형 트리맵·중복 파일 탐색·디스크 가득 예측·정리 시 파일을 휴지통으로만 이동한다
Agent-friendly CLI for Dida365 / TickTick
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗DidaCLI builds as a single Go binary with no external Go modules. It keeps Web API cookie auth, Official MCP tokens, and OpenAPI personal-token/OAuth credentials separate. Commands return a consistent JSON envelope.
$ dida task today --compact --json
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
npm install -g @delicious233/dida-cli
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
go install github.com/DeliciousBuding/dida-cli/cmd/dida@latest
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
The repository ships a lightweight Codex/Claude Code plugin containing the DidaCLI workflow skill and the official Dida365 MCP server.
python3 scripts/install-agent-plugin.py codex
python3 scripts/install-agent-plugin.py claude
On Windows, replace python3 with python. The installer uses the native
plugin marketplace commands, bootstraps and updates the CLI when dida is
missing, and verifies both the enabled plugin and official MCP registration.
It installs GitHub main by default; pass --local to test the current
checkout. MCP account authorization remains an explicit host login step. See
plugins/dida-cli/README.md for manual commands
and trust boundaries.
# 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
DidaCLI exposes 143 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, , |
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
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.
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
# 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 (Personal Token or OAuth)
DIDA365_OPENAPI_TOKEN=personal_token_xxx dida openapi project list --json
# Or configure the OAuth app:
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
dida openapi call GET /tag --json
dida openapi call GET /countdown --json
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.
| Web API | Official MCP | Official OpenAPI | |
|---|---|---|---|
| Auth | Browser cookie | Token | Personal API token or 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.
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.
git clone https://github.com/DeliciousBuding/dida-cli.git && cd dida-cli
go test ./... && go build -o bin/dida ./cmd/dida
See CONTRIBUTING.md.
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.
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.
habitquadrant| 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, live tool discovery, focused project/task/habit/focus wrappers, generic dry-run call for the current 57-tool catalog | official |
| Official OpenAPI | Personal API token or OAuth, project/task/focus/habit wrappers, constrained generic call for newer tag/countdown/calendar resources | 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 |