Skip to content

Guide ​

Day-to-day path: install → scaffold → edit → inspect → verify → run → read artifacts.

Also: install · concepts · commands

Install (short) ​

bash
pnpm add -g gform
pnpm exec playwright install chromium

From the repo: pnpm install && pnpm build && pnpm i -g . — full detail in install.

Data: ~/.local/share/gform/ (override with GFORM_HOME).

First form lifecycle ​

bash
gform init 'https://docs.google.com/forms/d/e/…/viewform' -n <form>
gform edit <form> --ask
gform inspect <form>
gform verify <form>
gform verify <form> --check          # optional: sync safe fields from live form
gform run <form> --policy demo       # headed watch + soft-wall assist on TTY
gform run last
StepWhat you get
initYAML scaffold from live public metadata (placeholders to review)
edit --askInteractive REPL for steps, pools, options
inspectRisk flags: login, captcha, file upload, closed, …
verifyZod schema check against the local contract
verify --checkRe-inspect live form; propose accept / stub updates
runSubmit (or batch); write artifacts under $GFORM_HOME/artifacts/
run last / run viewAnswers, submit outcome, paths, reasons

File-upload forms often need auth on inspect/init/check:

bash
gform init '<url>' -n <form> --auth
gform verify <form> --check --auth
gform run <form> --auth --policy demo

Reading the first artifact ​

After a run:

text
id  a3f9c1e2b4d60718
→   gform run view a3f9c1e2b4d60718
bash
gform run last
gform run list
gform run view <id>

Expect: resolved Answers, Submit outcome, optional Content for file steps, config.yaml snapshot, fail screenshots by default. Deep dive: artifacts.

Commands at a glance ​

CommandAliasPurpose
gform listlsResolvable forms
gform viewvResolved form config
gform init <url>—Scaffold YAML
gform add <source>—Install into library
gform renamerenRename library form
gform edit—Editor / --ask
gform verifyverSchema (+ optional --check)
gform inspectinspLive metadata / risks
gform run—Execute / browse artifacts
gform restorersRestore YAML from artifact
gform auth …cre/act/ls/v/rm/verSessions
gform browsers …br + ls/chk/def/setLaunch browsers
gform doctor—Host health
gform policiespolNamed presets
gform deletermRemove library forms
gform clean …art/histPurge generated data
gform version-VVersion / update check

Full reference: commands/. Global flags and alias notes: commands/help.

<form> is a library name or a path (./forms/<form>.yaml). Lookup order: portable.

Edit ​

bash
gform edit <form>                  # $EDITOR, else detected IDE
gform edit <form> --editor cursor
gform edit <form> --ask            # interactive config REPL (-ak)
gform edit <form> --ask --editor code
gform edit <form> --print          # resolved path only

edit --ask REPL ​

Ctrl+C / Ctrl+Z cancel the session once. Esc = back a level. Prefer Quit for a clean footer.

text
Main
  Preview changes / Save
  Form meta (name, url)
  Options (headed, repeat starters, timeouts, variantMode, unique, …)
  Steps (edit / insert / delete / reorder / pools)
  Open in $EDITOR
  Quit

File steps: source.type local | gdrive | remote, or leave empty for headed assist. Map: file-uploads. YAML contract: schema.

Common recovery ​

SymptomTry
Soft wall (CAPTCHA / login / validation)--headed (or --policy demo) on a TTY; finish in browser, press Enter
Login-walled formgform auth create → gform run … --auth
Google rejects Playwright Chromium sign-ingform auth create work --open chrome — auth
Schema / unknown keygform verify <form>; fix YAML
Live form driftedgform verify <form> --check (add --auth for file forms)
Failed rungform run last / gform run view <id> — screenshots, reason, run.log
Host / browser confusiongform doctor --browser · gform br list
Need YAML from an old rungform restore <id>

Unattended checklist ​

  • [ ] All pages answered in YAML; last step is submit (not pause)
  • [ ] gform verify clean; pools if you use --repeat + dedupe
  • [ ] Headless default or --policy load / safe
  • [ ] Soft walls: either none expected, or --no-assist and accept hard fails
  • [ ] Auth only when needed: auth create → --auth / --profile
  • [ ] You own or are authorized to submit to the form

Next ​