OpenTasks
OpenTasks is a Markdown-first task memory workflow for AI coding agents.
It preserves the daily-tasks-template model:
info-for-agent/tasks.md is the human-readable task ledger.
info-for-agent/memories.md is the durable memory file.
info-for-agent/aone.md is the optional Aone people/project index.
info-for-agent/dingtalk-docs.md is the optional DingTalk document link index.
info-for-agent/repo-index.md is the local repository index.
info-for-agent/repo-map.md records cross-repo projects, relationships, and check rules.
tasks/{task-name}/brief.md keeps each task's brief and iterations.
tasks/{task-name}/progress.md keeps execution checkpoints and close-out evidence.
OpenTasks adds a CLI/core layer and plugin hooks so Codex, Claude Code, and QoderWork can call the same task rules.
The plugin follows the Superpowers-style skill model:
using-opentasks is the lightweight router for non-atomic OpenTasks work.
opentasks-task-lifecycle handles task start, continue, iteration, finish, and progress checkpoints.
opentasks-memory handles durable memory writes.
opentasks-recall handles current status, previous sessions, and handoff context.
opentasks-repo-index handles local repository lookup and Markdown repo-index maintenance.
opentasks-repo-map handles durable project/repo relationships and cross-repo check rules.
opentasks-trash handles soft delete, restore, and cleanup.
- hooks provide deterministic support such as initialization, context injection,
context-loaded checkpoints, Stop-time close-check reminders, and session archive.
.mcp.json registers Playwright MCP for browser/page inspection when the client supports MCP.
Simple repo management is a fast path: repo list/add/remove/update/validate should run the matching CLI command and validate without loading full task or memory context. Task rows, Aone work items, and DingTalk documents are created only when the user explicitly asks for them. aone.md and dingtalk-docs.md are read only for those explicit tool workflows.
Quick Start
For standalone CLI use:
uv tool install git+https://github.com/ZichaoJin/opentasks.git
opentasks workspace setup --path ~/Desktop/OpenTasks
opentasks repo add /path/to/repo
opentasks context --current-cwd /path/to/repo
When installed through openplugin, selecting the opentasks plugin automatically installs the CLI with uv tool install git+https://github.com/ZichaoJin/opentasks.git if opentasks is missing. You can still set OPENTASKS_BIN to an explicit executable path.
OpenTasks hooks are global, but automatic OpenTasks context and archive only activate for repositories listed in the configured workspace's info-for-agent/repo-index.md. Unmanaged repositories are left alone.
Start a task:
opentasks task start \
--name "插件化任务系统" \
--slug "plugin-task-system" \
--brief "保留 Markdown 工作流并添加 hooks" \
--repo "opentasks" \
--project "plugin-platform" \
--step "work" \
--step "verify" \
--step "git-commit" \
--date "2026-06-16"
Repeat --repo / --project to record all task-local associations in tasks/{slug}/brief.md. Repeat --step to define a task-specific plan; without it, OpenTasks uses context-loaded, work, and verify.
Record progress checkpoints and external evidence:
opentasks task checkpoint \
--task-id T001 \
--step verify \
--status done \
--evidence "uv run pytest: 105 passed" \
--date "2026-06-17"
opentasks task status --task-id T001
opentasks task close-check --task-id T001
opentasks task checkpoint \
--task-id T001 \
--step git-commit \
--status done \
--evidence "abc1234 core logic implemented"
brief.md is the task definition. progress.md is the durable plan and execution ledger: planned steps, current step state, and append-only checkpoint evidence such as Aone links, DingTalk docs, commits, PRs, test reports, and releases. Do not create separate plan.md or reviews.md by default; put short plan/review notes in brief.md or progress.md, and place long deliverables under tasks/{slug}/artifacts/ only when needed.
Iterations reuse the same task directory and append a new Plan vN section to progress.md when opentasks task iterate --step ... is used; old plans and ledger entries stay as the recovery trail.
Append memory:
opentasks memory append \
--section "任务经验" \
--content "hooks 只调用 opentasks CLI"
Archive a hook payload:
opentasks session archive --payload /path/to/payload.json
Prune archived sessions:
opentasks session prune --keep-days 30 --keep-last 100 --max-db-mb 50
Soft delete and restore:
opentasks task remove --task-id T001
opentasks memory remove --section "任务经验" --content "old memory"
opentasks trash list
opentasks trash restore --id trash-...