Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 2 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,9 @@ Or hand the whole thing to your agent — paste this into Claude Code: *"Set me
- **"drafty it."** Tell Claude to drafty the thing it just wrote → you get a `drafty.im/canvas/<slug>` link. Anyone you share it with hovers an element, clicks, and leaves a threaded comment — live cursors, no sign-up needed to comment.
- **Claude closes the loop.** "Address the canvas" → Claude reads each thread, edits the source file, pushes a new version on the same link, replies on the canvas, and marks threads done. Set a canvas `live` and Claude works comments as they arrive.
- **Agent eyes.** `drafty shot` renders a canvas, a local HTML file, or any URL to an image so Claude can *see* what it built — including a commenter's exact view (their viewport width, their revision, the anchored element highlighted) instead of guessing at "looks squished on my phone" from text alone.
- **Site boards.** `drafty present <url>` maps a site (robots → sitemap → homepage links), curates the main screens, captures each at desktop + phone width with local Chrome, and publishes an annotatable board. `--refresh` re-shoots the same screens as a tick — competitor tracking, staging watch.
- **Site boards.** `drafty present <url>` maps a site (robots → sitemap → homepage links), curates the main screens, captures each at desktop + phone width with local Chrome, and publishes an annotatable board for review.
- **Versioned, with a real undo.** Every push snapshots a revision. `revert` rolls the canvas back AND resyncs the local file atomically; `status` reports in-sync / local-ahead / canvas-ahead / diverged; a push that would clobber an edit made elsewhere (browser, another agent) is refused with instructions, never silently applied.
- **Organized, and self-tidying.** Projects, tags, pin, archive — and `drafty tidy --sweep` cross-references your canvases against the repo's git log to flag the ones whose work already shipped, so finished specs get receipted and archived instead of rotting on the list.
- **Self-refreshing dashboards.** The bundled `drafty-cron` skill wires a plain OS cron — no model, no credits at runtime — that re-renders and pushes a data-backed canvas on a timer.

## How it works

Expand All @@ -37,7 +36,6 @@ You talk; Claude runs the commands. You never touch the CLI yourself.

- **The `drafty` skill** — teaches Claude the whole loop: publish, read comments, reply, mark threads done, push revisions, render-and-look before claiming a visual fix, sweep shipped canvases, roll back. Claude loads it on its own when you say "drafty it" / "share this for feedback" / "what did they comment".
- **The `drafty` CLI** — a single-file, thin HTTP client. Every command is a call to drafty.im's public API; ownership and visibility are enforced server-side. No keys ship in the plugin — auth is a browser sign-in (`drafty login`), one sign-in covering web + CLI.
- **The `drafty-cron` skill** — the control plane for self-refreshing canvases (author a deterministic query → render → push script once; launchd runs it forever).

## Modes & visibility

Expand Down Expand Up @@ -88,7 +86,7 @@ Claude drives these; the reference is here so you can audit what it's doing.
| Command | What it does |
|---|---|
| `drafty shot <slug\|file.html\|url> [--width N] [--annotation A] [--full]` | Render to an image, print the path. `--annotation` reproduces a commenter's exact view. Local files/URLs and private canvases render with your own headless Chrome; public canvases use the server's cached render. |
| `drafty present <url> [--screens N] [--urls …] [--slug S --refresh] [--dry-run]` | Site board: map → curate (≤20 screens) → shoot at 1280+390px → publish annotatable board. |
| `drafty present <url> [--screens N] [--urls …] [--slug S] [--dry-run]` | Site board: map → curate (≤20 screens) → shoot at 1280+390px → publish an annotatable snapshot. Reuse `--slug` to publish a new version on the same canvas. |

**Session**

Expand Down
Loading