Skip to main content
The Docket — better questions from your agent

"Ok, you know what? Please just put all the questions you have for me in a form on an HTML page that saves the answers to a file and I'll answer them all at once."

That was the original request, made mid-session out of irritation at answering a numbered list one item at a time. This is what it became.

tests python dependencies

The Docket collects your coding agent's open questions into one page you clear in a sitting, and keeps the answers as a record you can commit next to the code they decided.

It builds the page on demand, serves it on loopback, and shuts down when you are done. The answers land on disk as JSON the agent reads directly, and as markdown that diffs.

Two modes, and they work in sequence as often as alone.

The form, mid-completion


Install

pipx install the-docket    # or: uv tool install the-docket, or pip install
docket setup

The distribution is the-docket; the command it installs is docket.

docket setup installs the Claude Code skill into ~/.claude/skills/ and prints the one line to add to your global CLAUDE.md. Without the skill an agent has no reason to reach for the tool at all.

Or from a clone, if you want to edit it:

git clone https://github.com/avanrossum/docket.git
cd docket
./install.sh

That symlinks rather than copies, so git pull updates the tool and the skill together.

Python 3.9+ and nothing else. No runtime dependencies, no build step, no lockfile to rot — the dependency list in pyproject.toml is empty and staying that way. Run docket doctor any time to see what is wired up.


A form, when the agent knows what to ask

docket serve session-storage

Every question can carry a why line saying what the answer unblocks, a recommendation to react to, a "Don't know — flag for research" toggle, and a notes box. Conditionals branch properly, evaluated the same way in the browser and on the server. Drafts survive a closed tab, a crashed browser, and a restarted machine.

The response records more than your answers. flagged_unknown separates "I don't know yet" from "I skipped it", so those become research items instead of questions you get asked twice. followed_recommendation records when you overruled the agent. A question you never saw is marked unreachable rather than blank, so the counts mean what they say.

An interview, when each answer should decide the next question

docket interview open outage --domain "incident review"

One question at a time. You answer, the agent reads it, and the next question comes from what you actually said.

Interview mode

The skill tells the agent to conduct it as an expert interviewer in a stated or inferred domain: follow the thread that opened, ask for the concrete when handed an abstraction, ask about contradictions, and stop when it has what it needs rather than at a count. While it reads, the page shows it reading.

The processing state

And then a form, to pin down what the interview turned up

docket interview distill outage

An interview reliably ends with things that have become precise enough to decide rather than discuss. distill scaffolds a questionnaire from the transcript, carrying each exchange across as a marked draft for the agent to rewrite. Serving it shows the interview above the questions, so nobody is reconstructing the conversation from memory.

The tool cannot tell which parts of a conversation became decisions, so it does not pretend to — every question it writes is a TODO the agent is expected to replace.

The form then opens in the tab the interview is already in, if you want it:

The follow-up offer

Declining is a normal answer, and the transcript records which it was.


Why "The Docket"?

A docket is a list of matters awaiting decision, and the record of how each one was disposed of. That is what this hands you, so the name is a description rather than a label.

It was called Question Surface for its first three days, which named the input widget at the moment every agent harness was absorbing input widgets as built-ins. The record is the part worth naming.


Documentation

  • Usage — every command, the question gate, where files land, how an agent drives it.
  • Questionnaire format — every field, all nine question types, conditionals, the response document.
  • Interviews — running one, conducting one well, the transcript format.
  • Design and testing — the constraints, why they hold, and how it is tested.
  • Roadmap · Changelog

Why it should still run in a year

Standard library only, so no dependency can move out from under it. Loopback only, with no auth and no session model, because it must never be reachable off the machine. The server exits on submit, so there is no daemon left running. Validation fails at load, so a broken questionnaire costs you nothing.

It has 117 Python tests and 49 client-side checks that drive a real browser, running on Python 3.9 through 3.13 in CI. Those checks have caught six real defects so far, including two that were passing while testing nothing at all.

That last part was an accident. "No bugs. Make no mistakes." went into the original spec as a joke, and then drove a CI matrix, a browser harness, and a habit of verifying claims rather than asserting them. The tool was built in under a day with Claude Code, which is worth knowing mostly because the joke turned out to be the most productive line in the specification.


The story is in the repo

This README was structured from an interview conducted with the tool itself. The transcript is in .docket/responses/readme-shape/ — the questions, the answers, and what changed because of them. The decisions that shaped the tool are in the same directory, from the questionnaires that settled them.

That is the tool's own argument, applied to itself: a decision that exists only in a chat transcript is a decision nobody can find later.

If you install it, I would genuinely like to hear what happened — including if it was useless to you, or if you used it for something I did not anticipate. Open an issue.


MIT. See LICENSE.

Metadata

Release files for the-docket 2.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for the-docket 2.3.1
File Size Uploaded
the_docket-2.3.1.tar.gz 722.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for the-docket 2.3.1
File Interpreter ABI Platform
the_docket-2.3.1-py3-none-any.whl Python 3 none any Details

Total release size: 793.3 kB

Release files / the_docket-2.3.1.tar.gz

Download URL the_docket-2.3.1.tar.gz
Size 722.8 kB
Tags Source
SHA-256 checksum
How to use checksums
add78fd8e7e4c0a98fd8e542478c193fb75e42395ba4bda080e13bc73869da83
BLAKE2b-256 checksum
How to use checksums
26699e2808509db7d3ccdec1e8cf4d563eb56e8e6a3493bfcc0ff39657cce034
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Aug 20, 2026.

Transparency log

Release files / the_docket-2.3.1-py3-none-any.whl

Download URL the_docket-2.3.1-py3-none-any.whl
Size 70.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
66c264ef16da30c1d97db5b2fdbb2f5a11bd5232542af58deb50be07739c434c
BLAKE2b-256 checksum
How to use checksums
48a428bfb155f9e447f7b635a0ab535b37d500bcde994c2bfd588dbaf6c719ea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Aug 20, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

2.3.1 This release

2 release files

2.3.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page