Skip to content
m4bwav edited this page Oct 25, 2026 · 3 revisions

askwright is a skill and a small command-line tool for the moments when an AI agent needs a person to decide things. The agent writes its questions as data (questions.json), ask.py checks them and serves them on 127.0.0.1 one question per screen, the person answers when they have a minute, and the agent reads the answers back from files in the same folder. It is not a survey tool, a hosted form service or a chat prompt: nothing leaves the machine, and a quick yes or no in chat needs no page.

It needs Python 3.9 or later and nothing else. Install it as a Claude Code plugin:

/plugin marketplace add m4bwav/askwright
/plugin install askwright@askwright

The smallest round trip

ask.py new writes an empty set; you fill in the questions, lint them, serve the page, and read what came back. On a fresh folder:

$ python ask.py new ask/first --title "Try askwright"
{
  "ok": true,
  "path": "/work/proj/ask/first/questions.json",
  "next": "add questions (references/schema.md), then lint"
}
$ echo $?
0

With two questions written into it (Getting started has the file), the lint passes. This is the one place the pages show ask.py's real form, one line of JSON:

$ python ask.py lint ask/first
{"ok": true, "set": "first", "errors": [], "warnings": []}
$ echo $?
0

Every other page shows the JSON indented, with the scratch folder as /work/proj and times, PIDs and ports masked (<time>, <pid>, <port>). The outputs come from the askwright 0.1.1 release zip, run on Linux (Ubuntu under WSL, Python 3.14.4). The same run on Windows with Python 3.14.6 and 3.9.25 printed the same, except that relative paths in error messages use backslashes there (ask\\first inside the JSON string).

The pages

  • Getting started: every way to install it, the first set from empty to answered, and removing it.
  • Commands: each ask.py command, its options, its output and its exit code.
  • Question set format: every field of questions.json, the seven kinds, guesses, and what read and status give back.
  • Lint rules and errors: every rule lint applies, with its exact message, and the errors the commands print.
  • Server and security: what the local server serves, the token, Host and Origin checks, media ranges, uploads and how stop finds its process.
  • Recipes: waiting for answers from a script, a second round, changing a question that may be answered, small sets in chat.
  • Versions and upgrading: each release and what changed.
  • FAQ: short answers, with links to the detail.
  • Development: tests, CI, evals and how a release is made.

Elsewhere: the README, the CHANGELOG, the releases and the issues. The current version is 0.1.1, released on 2026-10-24.

Clone this wiki locally