docket.md
The execution forge. Tasks, milestones, documents, Definition of Done.
Named for a court's docket: the queue of cases ready for resolution. Planning happens elsewhere; the docket is where work gets scheduled, dispatched, and closed. (Previously codenamed ike, after Eisenhower — same discipline, different metaphor.)
The Trilogy
docket.md is the third leg of a three-tool system for AI-driven work:
| Tool | Role | When to use |
|---|---|---|
| research.md | Decide with evidence | Before making architectural choices |
| visionlog | Record vision, goals, guardrails, ADRs | Contracts all execution must honor |
| docket.md | Execute within those contracts | Daily work: tasks, milestones, docs |
The trilogy is one loop with three stages:
research.md → visionlog → docket.md
DECIDE CONTRACT EXECUTE
↑ │
└───────────────────────────┘
execution reveals gaps
When docket.md reveals that a strategy is wrong — a task fails, a pattern repeats, a direction proves misguided — the feedback loop doesn't short-circuit back to visionlog directly. It goes all the way back to research.md:
- docket.md — execution surfaces a gap or contradiction
- research.md — earn the new answer with evidence before acting on it
- visionlog — record the decision as an ADR
- docket.md — execute the new direction
Skipping research.md means ADRs written under pressure, strategy updated on instinct, decisions that contradict each other three sessions later. The loop must complete fully to be trustworthy.
Session protocol: Read visionlog first (it tells you where the ladder points and what you must not cross). Then open docket.md and work. If execution reveals a gap in strategy, go back to research.md before updating visionlog.
Install
uv tool install docket-md
# or: pip install docket-md
Add to your .mcp.json:
{
"mcpServers": {
"docket": {
"type": "stdio",
"command": "docket-md"
}
}
}
GUID Workflow
docket.md uses a stable GUID registry — not fragile CWD scanning.
- New project:
project_init→ writes.docket/docket.jsonwith a stable GUID - Existing project:
project_set→ registers path→GUID in session memory - Every other call: pass
project_id(the GUID)
If you forget the GUID, the error message tells you exactly what to call to recover.
File Structure
your-project/
└── .docket/
├── docket.json ← project config + stable GUID
├── tasks/ ← active tasks (TASK-0001 - slug.md)
├── completed/ ← Done tasks
├── archive/ ← Cancelled / superseded tasks
├── milestones/ ← MS-0001 - slug.md
└── documents/ ← DOC-0001 - slug.md
All files are plain markdown with YAML frontmatter — readable without docket.md.
Tool Reference
Project
| Tool | What |
|---|---|
project_init |
Initialize new project, get GUID |
project_set |
Register existing project for session |
project_list |
List registered projects |
project_info |
Stats: task counts, milestones, docs |
Tasks
| Tool | What |
|---|---|
task_create |
Create task with optional priority, milestone, DoD |
task_list |
List with status/milestone/assignee/tag filters |
task_view |
Full detail for one task |
task_edit |
Update any field; append notes |
task_complete |
Mark Done, move to completed/ |
task_archive |
Cancel/supersede, move to archive/ |
task_search |
Keyword search across title + notes |
Milestones
| Tool | What |
|---|---|
milestone_create |
New milestone with optional due date |
milestone_list |
All milestones (open + closed) |
milestone_view |
Full detail |
milestone_close |
Mark complete |
Documents
| Tool | What |
|---|---|
document_create |
New doc with content + tags |
document_list |
All documents |
document_view |
View by DOC-XXXX |
document_update |
Replace or append content |
Task Frontmatter
---
id: TASK-0001
title: Build the thing
status: To Do # To Do | In Progress | Done | Draft
priority: high # high | medium | low
milestone: MS-0001
assignees: [daniel]
tags: [infra, core]
dependencies: [TASK-0000]
acceptance-criteria:
- Users can log in
definition-of-done:
- Tests passing
- Deployed to staging
created: 2026-03-20
updated: 2026-03-20
---
Notes go here as markdown body.
Philosophy
Tasks without contracts drift. Contracts without tasks are wishes.
docket.md is where the two meet. Before you create a task, the visionlog guardrail has already told you what you cannot do. The Definition of Done field is the contract written before the work begins — machine-checkable, not vibes.
19 tools across project, task, milestone, and document management. Inspired by backlog.md. Zero forked code. Full credit for the concept.
MIT License © 2025 Daniel Shanklin
Metadata
Release files for docket-md 0.4.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| docket_md-0.4.1.tar.gz | 70.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| docket_md-0.4.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 118.6 kB
Release files / docket_md-0.4.1.tar.gz
| Download URL | docket_md-0.4.1.tar.gz |
|---|---|
| Size | 70.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1f407ce61bf32e710f0369f028bbd82027dcc088da901ad528c7e362d0290951
|
|
BLAKE2b-256 checksum How to use checksums |
984ed614e73e41748bcdaee68e23355eb0e584087fd3c9bc1ce3a5b84b291b0c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 14, 2026.
Transparency logRelease files / docket_md-0.4.1-py3-none-any.whl
| Download URL | docket_md-0.4.1-py3-none-any.whl |
|---|---|
| Size | 47.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
aecc4d168d69424d57131b6d116ff90f5c4fded3b8d459c9e7acdffbe820ac7e
|
|
BLAKE2b-256 checksum How to use checksums |
2848ce32a43e65160b612d9ee99acfe1423d5570c4594ccf65669df46482c126
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 14, 2026.
Transparency log