Skip to content

Dashboard and Projects

m4bwav edited this page Nov 1, 2026 · 1 revision

Dashboard and projects

Open a master page for every registered question set on this computer:

python skills/askwright/scripts/ask.py dashboard --detach --open

The command returns a local URL you can bookmark. Calling it again reuses the running dashboard. After a restart it reuses its previous port, unless you pass --port. Restart the command after rebooting. If that port is occupied, the command reports an error rather than changing your bookmark.

Sets register automatically when agents create or serve them, across projects and agent products. The default view shows sessions needing attention. Use All sessions to include answered rounds, or filter by product and search by title, folder or agent. Counts refresh every five seconds from the answer files. Notes without a pick, "not sure" and answers to changed questions still count as needing attention. Conditional questions waiting on another answer are counted separately.

Unavailable sessions (a set whose folder moved or was deleted) are hidden; a checkbox with their count shows them. Two tabs: Sessions and Projects (remembered per browser; /sessions#projects opens Projects). The Projects tab is a table of every project (sets, open questions, last worked on) linking each project's page. Sessions are a table: title, project, last updated and one quick action (Open questions, or Copy prompt once every question is answered). Click a title to expand its row: product, context, counts, a preview of the next five questions, Open questions, Copy continue prompt, Snooze and Archive. The last page of a question set also has a Copy prompt to continue button that hands the answers back to the agent. The Snooze dropdown hides that session for 1 hour, 4 hours, 1 day, 3 days or 1 week. It returns to the inbox when that time expires. Open Snoozed to bring it back early with Unsnooze. Archive moves a session to the Archive list until you choose Unarchive. All sessions includes answered sessions in the inbox; snoozed and archived sessions remain in their own lists. These choices survive page and server restarts, and agents registering a set again do not reset them. They change only dashboard organization, never questions, answers or server processes.

Open questions reuses a running question page or starts it again if it stopped. Existing answers stay in place. Each question page also has an All sessions link, and serve returns its dashboard_url. The independent master page stays up when individual question servers stop.

For older sets, run ask.py register <set>. Registration does not move or change the set. Set product, session and asked_by in the question data to identify the originating agent, or pass --product, --session and --asked-by when using new. Unknown metadata stays blank. Older askwright installations must be updated to register automatically.

The registry and dashboard server details live in ~/.askwright, outside your repositories. All products running under the same user share it; ASKWRIGHT_HOME selects a different location. Missing or unreadable sets show an error on the dashboard. askwright does not scan your disk for question sets. Stop the independent dashboard with ask.py dashboard --stop; this leaves question pages running.

Projects

Every set belongs to a project (ask.py new --project NAME). A project record lives in ~/.askwright/projects/<slug>.json (or under ASKWRIGHT_HOME). Update it with:

python skills/askwright/scripts/ask.py project "Arena" --goal "Ship the arena map" --dir . --repo https://github.com/you/arena
python skills/askwright/scripts/ask.py project "Arena" --needs-direction "One floor or two?"
python skills/askwright/scripts/ask.py project "Arena" --prompt-run ai-docs/plans/2026-10-30-arena-continue-prompt.md
python skills/askwright/scripts/ask.py project "Arena" --note "Blockout done" --status active

Statuses: active, needs-direction (with the question), paused, done. The dashboard's Project filter remembers its choice per browser; /sessions?project=<slug> opens it filtered.

The project page (/projects/<slug>) shows:

  • the status and a Needs you box: the open direction question and how many questions wait for answers;
  • created, last worked on, first and last prompt run (with the run count), question sets with open and answered counts;
  • Next session: the newest *continue-prompt*.md or *next-session-prompt*.md in the project's folders and a Copy start command button (Execute <path>);
  • goals, the opening of each folder's ai-docs/HANDOFF.md (Current state), where it lives;
  • History: notes, status changes, prompt runs and new question sets, merged with the dated ## [YYYY-MM-DD] kind | text entries of each folder's ai-docs/log.md (a checkbox hides those).

Moving a long review page onto sets

Many projects already have a long, scrolling review page: every candidate of a batch on one page, with clicks saved to the project's own picks file that later tools read. Past ten or so items that page gets too long to answer in one sitting. Move the items onto askwright, one per screen, and keep the old picks file as the record.

The bridge

Write a small script in the project (not in askwright) with two commands:

  1. make: read the open items from the page's own source data (not its HTML) and write a set:
    • one question per item; the question id encodes the item's key in the picks file (still.<id>, card.<id>; ids allow letters, digits, -, _ and .);
    • candidates in one labelled image per question (scripts/contact.py), so no candidate hides behind gallery navigation; options name each candidate ("Candidate 2 (s22)") plus the real "none of these" outcome ("Re-render, say why in the note");
    • the person's earlier notes on that item as the hint, so a re-roll is judged against what they asked for;
    • back_link to the old page (ask.py new --back-link URL LABEL), and a sidecar file in the set folder that says which picks file to write to;
    • skip items already decided in the picks file; split sets at about 10 questions.
  2. sync: ask.py read <set>, then write each answer into the picks file in that file's own format. Skip unsure, unanswered and stale answers; map other to the project's redo or re-roll value with the note. Keep entries the picks file already has. Run it before any tool reads the picks file.

Test the round trip on a copy of the picks file: post answers through the served page's API (/api/answer with the page's token), stop the server, sync, and check the copy.

Guesses

Every question needs a guess. Look at the candidates and write real ones (a file mapping question id to guess is easiest to pass to the bridge). An earlier pick from the picks file is a fair guess. A placeholder such as "no guess made" defeats the guess's purpose; use it only when you truly could not look, and say so.

Clone this wiki locally