The most successful CLIs follow a core principle:
Minimize surface area. Maximize momentum.
Protoflow’s purpose is simple but powerful: Help builders stay in flow while turning tasks into working, testable prototypes.
Let’s start from use cases, distill the mental model, and then define a minimal CLI that truly serves its purpose.
🔁 Distilled Workflow (Mental Model) Here’s what users are actually trying to do:
Kick off a feature idea – I know what I want: “add user login.”
Get a working version – I want to see it run, not just code.
Iterate with teammates – I want feedback fast.
Merge it cleanly – If it works, ship it. If it doesn’t, trash it.
That’s it.
They don’t want to manage sessions, branches, previews, or config files. They want to create, view, iterate, finish, or delete.
So…
🔧 Proposed Minimal CLI bash Copy Edit protoflow [args] Only five user-facing commands:
Command Purpose start Create a new task-based prototype (branch + session) view Show current tasks, previews, or open a prototype in browser tweak Refine a task with an AI-directed prompt ship Merge the task branch into main and mark it complete drop Delete the task, branch, and environment
Bonus:
init (first-time setup, GitHub link, auth keys, etc)
config (edit protoflow/worklet config)
version / help
🧠 What This Unlocks
- protoflow start "Add login form" Creates a pf42 task + branch marty/add-login-form
Sets up a worklet container
Generates and boots a prototype
Returns a live preview URL
- protoflow view Shows:
bash Copy Edit ACTIVE TASKS pf42 Add login form https://marty-add-login-form.pf.run pf43 Add logout logic [not running]
Use protoflow view pf42
to open preview
3. protoflow tweak pf42 "Add forgot password button"
AI reviews context + code
Applies changes
Updates preview
Logs changes to context history
- protoflow ship pf42 Merges branch cleanly into main
Pushes to origin
Marks task complete
Optionally cleans up preview/env
- protoflow drop pf43 Deletes local worktree
Removes preview + context
Cleans up container + branch
🪄 Why This Works Intuitive: Every command aligns with a developer’s natural phrasing: “start”, “view”, “tweak”, “ship”, “drop”
Focused: Only one core object: task. You don’t need to think about sessions or branches unless you want to.
Invisible plumbing: Worklet, Docker, AI agents, Git branching—all encapsulated under task lifecycle.
Context-aware: Protoflow uses your current Git repo, user, and local state to reduce cognitive load.
🔚 Final Thought Protoflow’s superpower is momentum—capturing intent and delivering a running prototype before the user loses interest. The CLI should reflect that: frictionless, expressive, and minimal.
Stick to 5 verbs: start → view → tweak → ship or drop.
That’s all a developer really wants.