foolish-bandit/gary: Draft Something shell reusing existing chat plumbing

Commit `7c520d4f` adds a `/draft` page with a two-step UI: choose one of eight document types, fill in description and optional audience/tone, optionally attach a document, then hand off to the existing assistant chat. No backend changes. The PR merged in minutes.

draftingchat-ui

The eight document type options are Email, Letter, Memo, Clause, Summary, Demand letter, Client update, and Custom draft. Each carries a type-specific opening line that becomes the first token of the assembled prompt. The user's description follows under "What I need:", then optional audience and tone lines, then a fixed tail from DEFAULT_INSTRUCTION:

"Draft the requested legal document using the facts provided. Be clear, organized, and practical. Do not invent facts. Flag any missing information that would be needed before finalizing."

Document attachment is optional and goes through the existing uploadStandaloneDocument path. The chat handoff calls useAssistantChat.handleNewChat with the assembled MikeMessage, then router.push to /assistant/chat/{id}. There is no typed "draft" entity, no status tracking, no versioning -- each draft is just a chat thread in Assistant History.

The design is deliberately minimal about what it doesn't add. /workflows is untouched and stays in the sidebar for users who want more control. Tone and Audience are freeform text, not dropdowns. /draft is not in the sidebar; the only entry point is the rewired home card (previously /workflows). A lawyer-facing caution on Step 2 notes that the lawyer remains responsible for the final work.

The page is 562 lines. The only other change is the one-line rewire in InitialView.tsx.

So what Worth a look if you want a structured drafting on-ramp without adding backend complexity. The document type cards are easy to extend or reduce. The main decision before adopting is whether `DEFAULT_INSTRUCTION` matches your product's guidance posture -- it's visible in the page file and simple to change, but it's the one piece that shapes every draft the assistant produces.

View this fork on GitHub →

Spotted something wrong? Or know the PR text has fresher detail than the writeup above?

Commits in this thread

1 commit from foolish-bandit/gary, oldest first. Source extracted verbatim from the harvested git log.

SHA Subject Author Date
7c520d4f Add /draft Draft Something workflow shell Claude 2026-05-07 ↗ GitHub
commit body
Adds a frontend-only drafting flow that mirrors the /review pattern
from PR #8. Reuses the existing assistant chat plumbing - no new
backend routes, no API contract changes.

- New route at /draft with a 3-step lawyer-friendly UI:
    1. Choose draft type (8 cards: Email, Letter, Memo, Clause,
       Summary, Demand letter, Client update, Custom draft, each
       with plain-English helper copy)
    2. Add details (description textarea with the suggested
       placeholder; optional Audience / Tone single-line fields;
       optional Attach a document via existing
       uploadStandaloneDocument; lawyer-facing caution box)
    3. Review draft (handed off to the assistant chat)
- Start Drafting builds a MikeMessage from the option's opening
  line + the user's description + optional metadata, appended with
  the default tail instruction:
    "Draft the requested legal document using the facts provided.
     Be clear, organized, and practical. Do not invent facts.
     Flag any missing information that would be needed before
     finalizing."
  Then reuses useAssistantChat.handleNewChat + router.push to the
  same /assistant/chat/{id} path used by /review and the home.
- Updates the Gary-mode "Draft Something" card to point at /draft
  instead of /workflows. /workflows is unchanged.

No backend changes, no auth/billing/teams, no new providers.
License unchanged.

https://claude.ai/code/session_019pRkhcGDRKQWHjzAnV5yCL

Capture this thread into my fork

Download a single Markdown prompt that tells Claude how to port every commit above into your working tree — adapting paths and structure to match your repo. Run it via claude -p < capture-thread-271.md from inside the repo you want the changes in.

⬇ Download capture-thread-271.md