Repo-native task workflow tool for humans and AI agents that stores state in .tasks/.
Project description
Quick Start • Install • AI Agent Integration • Example Project • DeepWiki
dot-tasks is a simple CLI for managing project-level tasks in a local .tasks/ directory, using human- and agent-readable files.
It started as a personal workflow tool: keep task specs in files, let agents work from those specs, and keep progress updates in the repo instead of chat history. It is shared here in case the same approach is useful to others.
Quick Start
Quick start commands:
# Initialize .tasks/ dir in the current project
dot-tasks init
# Create a new todo task with an initial summary.
dot-tasks create rename-variables-for-vibes --summary "Refactor variable names for maximum vibes"
# Move the task from todo/ to doing/ and create its plan.md.
dot-tasks start rename-variables-for-vibes
# Append a progress note while work is in progress.
dot-tasks log-activity rename-variables-for-vibes --note "Replaced cryptic names with vibes-based naming"
# Mark the task complete and move it to done/.
dot-tasks complete rename-variables-for-vibes
Task directory layout
.tasks/
todo/
doing/
done/
trash/
Each task lives in .tasks/<status-bucket>/<created-date>-<task_name>/ and contains:
task.md(canonical metadata frontmatter + task body)activity.md(append-only audit log)plan.md(created when the task is started)
Typical workflow:
| Step | What happens | Command(s) | Files touched |
|---|---|---|---|
| Make note of new to-do | Write down the task spec. Often I have an agent draft a spec from a rough note. | dot-tasks create |
Creates task dir .tasks/todo/<created-date>-<task_name>/ with task.md, activity.md |
| Choose task to work on | Scan what is in todo/doing and pick the next task to start. |
dot-tasks list |
read-only inspection of .tasks/ |
| Start active work | Move the task to active status when implementation begins. | dot-tasks start |
Move task from .tasks/todo/ to .tasks/doing/; plan.md created |
| Work loop | Log notable progress updates so humans and agents share context. | dot-tasks log-activity |
activity.md |
| Finish and archive state | Mark done when acceptance criteria are met, preserving full history in files. | dot-tasks complete |
task directory moves to .tasks/done/ |
Installation
Install via pip (PyPI)
pip install dot-tasks
Quick check:
dot-tasks --help
Install Latest from GitHub
Install the latest from GitHub:
pip install "git+https://github.com/Awni00/dot-tasks.git"
Development Install (with uv)
git clone https://github.com/Awni00/dot-tasks.git
cd dot-tasks
uv sync --dev
uv run dot-tasks --help
Editable install:
uv pip install -e ".[dev]"
Commands
| Command | Purpose | Typical usage |
|---|---|---|
init |
Create .tasks/ and write/update managed config settings; can also append workflow guidance section AGENTS.md and install the skill via npx skills. |
dot-tasks init |
install-skill |
Install the canonical dot-tasks skill via npx skills. |
dot-tasks install-skill [--yes] |
add-agents-snippet |
Add or update the canonical dot-tasks section in AGENTS policy markdown. |
dot-tasks add-agents-snippet [--agents-file <path>] [--yes] |
create |
Add a new task to todo/. |
`dot-tasks create <task_name> [--spec-readiness unspecified |
start |
Move a task to doing/ and create plan.md. |
dot-tasks start <task_name> |
complete |
Move a task to done/. |
dot-tasks complete <task_name> |
list |
List tasks by status and optional tag filters (rich/plain/JSON depending on context). | `dot-tasks list [todo |
tags |
Show task counts by tag with optional status filter (rich/plain/JSON depending on context). | `dot-tasks tags [todo |
view |
Show full details for one task, including clickable file links for task.md, activity.md, plan.md, and any extra files. |
dot-tasks view <task_name> [--json] |
graph |
Visualize task dependencies as a DAG in terminal output (tree or layers modes). |
`dot-tasks graph [--mode tree |
update |
Update metadata, dependencies, tags, owner, effort, priority, or spec readiness. | dot-tasks update <task_name> ... |
log-activity |
Append a manual activity note with optional actor override. | dot-tasks log-activity <task_name> --note "..." [--actor agent] |
rename |
Rename a task. | dot-tasks rename <task_name> <new_task_name> |
delete |
Move a task to trash/, or delete permanently with --hard. |
dot-tasks delete <task_name> [--hard] |
Interactive create and interactive update use a single tag selector flow with an optional + add new tag(s) path.
Status filter supports todo|doing style multi-select and all. Default is todo|doing.
Tag examples:
dot-tasks list --tag bug
dot-tasks list todo|doing --tag backend --tag api --all-tags
dot-tasks list all
dot-tasks tags
dot-tasks tags todo --sort name
AI Agent Integration
dot-tasks is designed so humans and agents can work from the same file-based task state in .tasks/ instead of relying on chat context.
Typical agent workflow:
- Capture or refine a task spec with
dot-tasks create. - If asked what to work on, check
dot-tasks list(defaults totodo|doing) and propose the top few options with a short rationale. - Move selected work into active state with
dot-tasks start. - Log meaningful progress with
dot-tasks log-activity --note ...as work evolves. - Close the loop with
dot-tasks completewhen acceptance criteria are met.
You can set up agent integration pieces either during dot-tasks init or with standalone commands:
- During
dot-tasks init(interactive flow),dot-taskscan optionally append the AGENTS section and install the skill. - Standalone commands:
dot-tasks install-skill
dot-tasks install-skill --yes
dot-tasks add-agents-snippet
dot-tasks add-agents-snippet --agents-file TEAM_AGENTS.md --yes
Example Project
For a full demo of the workflow, see examples/basic-demo/ and the walkthrough in examples/basic-demo/README.md.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dot_tasks-0.1.7.tar.gz.
File metadata
- Download URL: dot_tasks-0.1.7.tar.gz
- Upload date:
- Size: 63.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
07c8d2c742e3f23f1aa4ca865d9f4cb5f9dd4c3269eff46a59b4dad391521471
|
|
| MD5 |
addd10a55e886561b6d8c229aa8a1fd3
|
|
| BLAKE2b-256 |
82f15707c7860ebef73dda9fe4859e64f997553e189c24c0b2f95b715320cfb0
|
Provenance
The following attestation bundles were made for dot_tasks-0.1.7.tar.gz:
Publisher:
publish.yml on Awni00/dot-tasks
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dot_tasks-0.1.7.tar.gz -
Subject digest:
07c8d2c742e3f23f1aa4ca865d9f4cb5f9dd4c3269eff46a59b4dad391521471 - Sigstore transparency entry: 1137704368
- Sigstore integration time:
-
Permalink:
Awni00/dot-tasks@2ccfee3e43b7110e11aa17245cc5246d8c052cdc -
Branch / Tag:
refs/tags/v0.1.7 - Owner: https://github.com/Awni00
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@2ccfee3e43b7110e11aa17245cc5246d8c052cdc -
Trigger Event:
push
-
Statement type:
File details
Details for the file dot_tasks-0.1.7-py3-none-any.whl.
File metadata
- Download URL: dot_tasks-0.1.7-py3-none-any.whl
- Upload date:
- Size: 39.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
20b622e3400bbb38c87c5bdfe4cc9ba4bd9c6a32b8d14b389d9ee9d705e22efe
|
|
| MD5 |
1faacd0c1d8361f4989d3c38e2340175
|
|
| BLAKE2b-256 |
7e6e69665b9b272c4b66e2b271e0d67780cf1813df38f61cc27661fbb4a221f2
|
Provenance
The following attestation bundles were made for dot_tasks-0.1.7-py3-none-any.whl:
Publisher:
publish.yml on Awni00/dot-tasks
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dot_tasks-0.1.7-py3-none-any.whl -
Subject digest:
20b622e3400bbb38c87c5bdfe4cc9ba4bd9c6a32b8d14b389d9ee9d705e22efe - Sigstore transparency entry: 1137704504
- Sigstore integration time:
-
Permalink:
Awni00/dot-tasks@2ccfee3e43b7110e11aa17245cc5246d8c052cdc -
Branch / Tag:
refs/tags/v0.1.7 - Owner: https://github.com/Awni00
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@2ccfee3e43b7110e11aa17245cc5246d8c052cdc -
Trigger Event:
push
-
Statement type: