From 76a9e7a0cc50754edf8918ef3e81ba47842df60c Mon Sep 17 00:00:00 2001 From: wehub-resource-sync Date: Mon, 13 Jul 2026 12:38:06 +0800 Subject: [PATCH] chore: import upstream snapshot with attribution --- .agent/skills/vhs.md | 101 + .agent/workflows/verify-skills.md | 73 + .changeset/README.md | 8 + .changeset/config.json | 11 + .changeset/sheets-append-range.md | 5 + .claude/settings.json | 5 + .env.example | 29 + .gemini/config.yaml | 7 + .gemini/style_guide.md | 39 + .github/CODEOWNERS | 10 + .github/PULL_REQUEST_TEMPLATE.md | 16 + .github/labeler.yml | 78 + .github/workflows/audit.yml | 45 + .github/workflows/automation.yml | 142 + .github/workflows/ci.yml | 429 ++ .github/workflows/cla.yml | 60 + .github/workflows/coverage.yml | 54 + .github/workflows/generate-skills.yml | 119 + .github/workflows/policy.yml | 67 + .github/workflows/publish-skills.yml | 55 + .github/workflows/release-changesets.yml | 72 + .github/workflows/release.yml | 227 + .github/workflows/stale.yml | 36 + .gitignore | 50 + AGENTS.md | 239 + CHANGELOG.md | 861 ++++ CLAUDE.md | 1 + CONTEXT.md | 74 + Cargo.lock | 3948 ++++++++++++++++ Cargo.toml | 22 + LICENSE | 202 + README.md | 510 +++ README.wehub.md | 7 + SECURITY.md | 6 + art/features.txt | 12 + art/intro.txt | 29 + art/outro.txt | 29 + art/qr.txt | 32 + art/scene1.txt | 12 + art/scene2.txt | 3 + art/scene2b.txt | 3 + art/scene3.txt | 7 + art/scene3b.txt | 3 + art/scene4.txt | 4 + art/scene5.txt | 4 + art/scene6.txt | 4 + art/scene7.txt | 4 + art/scene8.txt | 4 + art/scene9.txt | 8 + crates/google-workspace-cli/Cargo.toml | 80 + crates/google-workspace-cli/README.md | 33 + .../registry/personas.toml | 190 + .../registry/recipes.toml | 496 ++ crates/google-workspace-cli/src/auth.rs | 995 ++++ .../google-workspace-cli/src/auth_commands.rs | 2535 +++++++++++ crates/google-workspace-cli/src/client.rs | 17 + crates/google-workspace-cli/src/commands.rs | 282 ++ .../src/credential_store.rs | 1039 +++++ crates/google-workspace-cli/src/discovery.rs | 33 + crates/google-workspace-cli/src/error.rs | 153 + crates/google-workspace-cli/src/executor.rs | 2401 ++++++++++ crates/google-workspace-cli/src/formatter.rs | 780 ++++ crates/google-workspace-cli/src/fs_util.rs | 166 + .../src/generate_skills.rs | 1403 ++++++ .../src/helpers/README.md | 95 + .../src/helpers/calendar.rs | 772 ++++ .../google-workspace-cli/src/helpers/chat.rs | 282 ++ .../google-workspace-cli/src/helpers/docs.rs | 206 + .../google-workspace-cli/src/helpers/drive.rs | 196 + .../src/helpers/events/mod.rs | 210 + .../src/helpers/events/renew.rs | 283 ++ .../src/helpers/events/subscribe.rs | 945 ++++ .../src/helpers/gmail/forward.rs | 1001 +++++ .../src/helpers/gmail/mod.rs | 3982 +++++++++++++++++ .../src/helpers/gmail/read.rs | 144 + .../src/helpers/gmail/reply.rs | 1578 +++++++ .../src/helpers/gmail/send.rs | 461 ++ .../src/helpers/gmail/triage.rs | 305 ++ .../src/helpers/gmail/watch.rs | 993 ++++ .../google-workspace-cli/src/helpers/mod.rs | 128 + .../src/helpers/modelarmor.rs | 780 ++++ .../src/helpers/script.rs | 290 ++ .../src/helpers/sheets.rs | 525 +++ .../src/helpers/workflows.rs | 777 ++++ crates/google-workspace-cli/src/logging.rs | 112 + crates/google-workspace-cli/src/main.rs | 738 +++ .../google-workspace-cli/src/oauth_config.rs | 257 ++ crates/google-workspace-cli/src/output.rs | 156 + crates/google-workspace-cli/src/schema.rs | 468 ++ crates/google-workspace-cli/src/services.rs | 17 + crates/google-workspace-cli/src/setup.rs | 2344 ++++++++++ crates/google-workspace-cli/src/setup_tui.rs | 1738 +++++++ crates/google-workspace-cli/src/text.rs | 265 ++ crates/google-workspace-cli/src/timezone.rs | 267 ++ .../google-workspace-cli/src/token_storage.rs | 175 + crates/google-workspace-cli/src/validate.rs | 17 + .../templates/modelarmor/jailbreak.json | 8 + crates/google-workspace/Cargo.toml | 40 + crates/google-workspace/README.md | 40 + crates/google-workspace/src/client.rs | 164 + crates/google-workspace/src/discovery.rs | 329 ++ crates/google-workspace/src/error.rs | 262 ++ crates/google-workspace/src/lib.rs | 32 + crates/google-workspace/src/services.rs | 188 + crates/google-workspace/src/validate.rs | 838 ++++ demo.gif | Bin 0 -> 670052 bytes deny.toml | 49 + docs/CODE_OF_CONDUCT.md | 92 + docs/CONTRIBUTING.md | 93 + docs/demo.tape | 197 + docs/logo.jpg | Bin 0 -> 86507 bytes docs/skills.md | 127 + flake.lock | 61 + flake.nix | 77 + gemini-extension.json | 6 + lefthook.yml | 19 + npm/.gitignore | 2 + npm/install.js | 170 + npm/package.json | 79 + npm/platform.js | 86 + npm/run.js | 36 + package.json | 57 + pnpm-lock.yaml | 912 ++++ scripts/coverage.sh | 34 + scripts/show-art.sh | 17 + scripts/tag-release.sh | 17 + scripts/version-sync.sh | 49 + skills/gws-admin-reports/SKILL.md | 58 + skills/gws-calendar-agenda/SKILL.md | 56 + skills/gws-calendar-insert/SKILL.md | 58 + skills/gws-calendar/SKILL.md | 109 + skills/gws-chat-send/SKILL.md | 50 + skills/gws-chat/SKILL.md | 75 + skills/gws-classroom/SKILL.md | 76 + skills/gws-docs-write/SKILL.md | 50 + skills/gws-docs/SKILL.md | 49 + skills/gws-drive-upload/SKILL.md | 53 + skills/gws-drive/SKILL.md | 138 + skills/gws-events-renew/SKILL.md | 49 + skills/gws-events-subscribe/SKILL.md | 60 + skills/gws-events/SKILL.md | 68 + skills/gws-forms/SKILL.md | 46 + skills/gws-gmail-forward/SKILL.md | 69 + skills/gws-gmail-read/SKILL.md | 52 + skills/gws-gmail-reply-all/SKILL.md | 69 + skills/gws-gmail-reply/SKILL.md | 66 + skills/gws-gmail-send/SKILL.md | 67 + skills/gws-gmail-triage/SKILL.md | 51 + skills/gws-gmail-watch/SKILL.md | 59 + skills/gws-gmail/SKILL.md | 61 + skills/gws-keep/SKILL.md | 49 + skills/gws-meet/SKILL.md | 53 + .../gws-modelarmor-create-template/SKILL.md | 54 + .../gws-modelarmor-sanitize-prompt/SKILL.md | 49 + .../gws-modelarmor-sanitize-response/SKILL.md | 49 + skills/gws-modelarmor/SKILL.md | 43 + skills/gws-people/SKILL.md | 68 + skills/gws-script-push/SKILL.md | 52 + skills/gws-script/SKILL.md | 62 + skills/gws-shared/SKILL.md | 82 + skills/gws-sheets-append/SKILL.md | 55 + skills/gws-sheets-read/SKILL.md | 48 + skills/gws-sheets/SKILL.md | 54 + skills/gws-slides/SKILL.md | 44 + skills/gws-tasks/SKILL.md | 57 + skills/gws-workflow-email-to-task/SKILL.md | 48 + skills/gws-workflow-file-announce/SKILL.md | 51 + skills/gws-workflow-meeting-prep/SKILL.md | 48 + skills/gws-workflow-standup-report/SKILL.md | 47 + skills/gws-workflow-weekly-digest/SKILL.md | 47 + skills/gws-workflow/SKILL.md | 45 + skills/persona-content-creator/SKILL.md | 39 + skills/persona-customer-support/SKILL.md | 39 + skills/persona-event-coordinator/SKILL.md | 41 + skills/persona-exec-assistant/SKILL.md | 40 + skills/persona-hr-coordinator/SKILL.md | 38 + skills/persona-it-admin/SKILL.md | 34 + skills/persona-project-manager/SKILL.md | 41 + skills/persona-researcher/SKILL.md | 38 + skills/persona-sales-ops/SKILL.md | 40 + skills/persona-team-lead/SKILL.md | 42 + skills/recipe-backup-sheet-as-csv/SKILL.md | 28 + skills/recipe-batch-invite-to-event/SKILL.md | 27 + skills/recipe-block-focus-time/SKILL.md | 26 + skills/recipe-bulk-download-folder/SKILL.md | 27 + skills/recipe-collect-form-responses/SKILL.md | 27 + skills/recipe-compare-sheet-tabs/SKILL.md | 27 + .../recipe-copy-sheet-for-new-month/SKILL.md | 27 + .../recipe-create-classroom-course/SKILL.md | 27 + .../recipe-create-doc-from-template/SKILL.md | 32 + .../recipe-create-events-from-sheet/SKILL.md | 27 + skills/recipe-create-expense-tracker/SKILL.md | 29 + skills/recipe-create-feedback-form/SKILL.md | 28 + skills/recipe-create-gmail-filter/SKILL.md | 28 + skills/recipe-create-meet-space/SKILL.md | 28 + skills/recipe-create-presentation/SKILL.md | 27 + skills/recipe-create-shared-drive/SKILL.md | 27 + skills/recipe-create-task-list/SKILL.md | 28 + .../recipe-create-vacation-responder/SKILL.md | 27 + skills/recipe-draft-email-from-doc/SKILL.md | 28 + skills/recipe-email-drive-link/SKILL.md | 28 + skills/recipe-find-free-time/SKILL.md | 27 + skills/recipe-find-large-files/SKILL.md | 26 + skills/recipe-forward-labeled-emails/SKILL.md | 29 + .../SKILL.md | 38 + .../recipe-label-and-archive-emails/SKILL.md | 27 + skills/recipe-log-deal-update/SKILL.md | 28 + skills/recipe-organize-drive-folder/SKILL.md | 28 + skills/recipe-plan-weekly-schedule/SKILL.md | 28 + skills/recipe-post-mortem-setup/SKILL.md | 29 + skills/recipe-reschedule-meeting/SKILL.md | 27 + .../recipe-review-meet-participants/SKILL.md | 27 + skills/recipe-review-overdue-tasks/SKILL.md | 27 + skills/recipe-save-email-attachments/SKILL.md | 29 + skills/recipe-save-email-to-doc/SKILL.md | 32 + .../recipe-schedule-recurring-event/SKILL.md | 26 + skills/recipe-send-team-announcement/SKILL.md | 27 + skills/recipe-share-doc-and-notify/SKILL.md | 29 + skills/recipe-share-event-materials/SKILL.md | 28 + skills/recipe-share-folder-with-team/SKILL.md | 28 + skills/recipe-sync-contacts-to-sheet/SKILL.md | 28 + skills/recipe-watch-drive-changes/SKILL.md | 27 + 222 files changed, 47091 insertions(+) create mode 100644 .agent/skills/vhs.md create mode 100644 .agent/workflows/verify-skills.md create mode 100644 .changeset/README.md create mode 100644 .changeset/config.json create mode 100644 .changeset/sheets-append-range.md create mode 100644 .claude/settings.json create mode 100644 .env.example create mode 100644 .gemini/config.yaml create mode 100644 .gemini/style_guide.md create mode 100644 .github/CODEOWNERS create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/labeler.yml create mode 100644 .github/workflows/audit.yml create mode 100644 .github/workflows/automation.yml create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/cla.yml create mode 100644 .github/workflows/coverage.yml create mode 100644 .github/workflows/generate-skills.yml create mode 100644 .github/workflows/policy.yml create mode 100644 .github/workflows/publish-skills.yml create mode 100644 .github/workflows/release-changesets.yml create mode 100644 .github/workflows/release.yml create mode 100644 .github/workflows/stale.yml create mode 100644 .gitignore create mode 100644 AGENTS.md create mode 100644 CHANGELOG.md create mode 100644 CLAUDE.md create mode 100644 CONTEXT.md create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 LICENSE create mode 100644 README.md create mode 100644 README.wehub.md create mode 100644 SECURITY.md create mode 100644 art/features.txt create mode 100644 art/intro.txt create mode 100644 art/outro.txt create mode 100644 art/qr.txt create mode 100644 art/scene1.txt create mode 100644 art/scene2.txt create mode 100644 art/scene2b.txt create mode 100644 art/scene3.txt create mode 100644 art/scene3b.txt create mode 100644 art/scene4.txt create mode 100644 art/scene5.txt create mode 100644 art/scene6.txt create mode 100644 art/scene7.txt create mode 100644 art/scene8.txt create mode 100644 art/scene9.txt create mode 100644 crates/google-workspace-cli/Cargo.toml create mode 100644 crates/google-workspace-cli/README.md create mode 100644 crates/google-workspace-cli/registry/personas.toml create mode 100644 crates/google-workspace-cli/registry/recipes.toml create mode 100644 crates/google-workspace-cli/src/auth.rs create mode 100644 crates/google-workspace-cli/src/auth_commands.rs create mode 100644 crates/google-workspace-cli/src/client.rs create mode 100644 crates/google-workspace-cli/src/commands.rs create mode 100644 crates/google-workspace-cli/src/credential_store.rs create mode 100644 crates/google-workspace-cli/src/discovery.rs create mode 100644 crates/google-workspace-cli/src/error.rs create mode 100644 crates/google-workspace-cli/src/executor.rs create mode 100644 crates/google-workspace-cli/src/formatter.rs create mode 100644 crates/google-workspace-cli/src/fs_util.rs create mode 100644 crates/google-workspace-cli/src/generate_skills.rs create mode 100644 crates/google-workspace-cli/src/helpers/README.md create mode 100644 crates/google-workspace-cli/src/helpers/calendar.rs create mode 100644 crates/google-workspace-cli/src/helpers/chat.rs create mode 100644 crates/google-workspace-cli/src/helpers/docs.rs create mode 100644 crates/google-workspace-cli/src/helpers/drive.rs create mode 100644 crates/google-workspace-cli/src/helpers/events/mod.rs create mode 100644 crates/google-workspace-cli/src/helpers/events/renew.rs create mode 100644 crates/google-workspace-cli/src/helpers/events/subscribe.rs create mode 100644 crates/google-workspace-cli/src/helpers/gmail/forward.rs create mode 100644 crates/google-workspace-cli/src/helpers/gmail/mod.rs create mode 100644 crates/google-workspace-cli/src/helpers/gmail/read.rs create mode 100644 crates/google-workspace-cli/src/helpers/gmail/reply.rs create mode 100644 crates/google-workspace-cli/src/helpers/gmail/send.rs create mode 100644 crates/google-workspace-cli/src/helpers/gmail/triage.rs create mode 100644 crates/google-workspace-cli/src/helpers/gmail/watch.rs create mode 100644 crates/google-workspace-cli/src/helpers/mod.rs create mode 100644 crates/google-workspace-cli/src/helpers/modelarmor.rs create mode 100644 crates/google-workspace-cli/src/helpers/script.rs create mode 100644 crates/google-workspace-cli/src/helpers/sheets.rs create mode 100644 crates/google-workspace-cli/src/helpers/workflows.rs create mode 100644 crates/google-workspace-cli/src/logging.rs create mode 100644 crates/google-workspace-cli/src/main.rs create mode 100644 crates/google-workspace-cli/src/oauth_config.rs create mode 100644 crates/google-workspace-cli/src/output.rs create mode 100644 crates/google-workspace-cli/src/schema.rs create mode 100644 crates/google-workspace-cli/src/services.rs create mode 100644 crates/google-workspace-cli/src/setup.rs create mode 100644 crates/google-workspace-cli/src/setup_tui.rs create mode 100644 crates/google-workspace-cli/src/text.rs create mode 100644 crates/google-workspace-cli/src/timezone.rs create mode 100644 crates/google-workspace-cli/src/token_storage.rs create mode 100644 crates/google-workspace-cli/src/validate.rs create mode 100644 crates/google-workspace-cli/templates/modelarmor/jailbreak.json create mode 100644 crates/google-workspace/Cargo.toml create mode 100644 crates/google-workspace/README.md create mode 100644 crates/google-workspace/src/client.rs create mode 100644 crates/google-workspace/src/discovery.rs create mode 100644 crates/google-workspace/src/error.rs create mode 100644 crates/google-workspace/src/lib.rs create mode 100644 crates/google-workspace/src/services.rs create mode 100644 crates/google-workspace/src/validate.rs create mode 100644 demo.gif create mode 100644 deny.toml create mode 100644 docs/CODE_OF_CONDUCT.md create mode 100644 docs/CONTRIBUTING.md create mode 100644 docs/demo.tape create mode 100644 docs/logo.jpg create mode 100644 docs/skills.md create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 gemini-extension.json create mode 100644 lefthook.yml create mode 100644 npm/.gitignore create mode 100644 npm/install.js create mode 100644 npm/package.json create mode 100644 npm/platform.js create mode 100644 npm/run.js create mode 100644 package.json create mode 100644 pnpm-lock.yaml create mode 100755 scripts/coverage.sh create mode 100755 scripts/show-art.sh create mode 100755 scripts/tag-release.sh create mode 100755 scripts/version-sync.sh create mode 100644 skills/gws-admin-reports/SKILL.md create mode 100644 skills/gws-calendar-agenda/SKILL.md create mode 100644 skills/gws-calendar-insert/SKILL.md create mode 100644 skills/gws-calendar/SKILL.md create mode 100644 skills/gws-chat-send/SKILL.md create mode 100644 skills/gws-chat/SKILL.md create mode 100644 skills/gws-classroom/SKILL.md create mode 100644 skills/gws-docs-write/SKILL.md create mode 100644 skills/gws-docs/SKILL.md create mode 100644 skills/gws-drive-upload/SKILL.md create mode 100644 skills/gws-drive/SKILL.md create mode 100644 skills/gws-events-renew/SKILL.md create mode 100644 skills/gws-events-subscribe/SKILL.md create mode 100644 skills/gws-events/SKILL.md create mode 100644 skills/gws-forms/SKILL.md create mode 100644 skills/gws-gmail-forward/SKILL.md create mode 100644 skills/gws-gmail-read/SKILL.md create mode 100644 skills/gws-gmail-reply-all/SKILL.md create mode 100644 skills/gws-gmail-reply/SKILL.md create mode 100644 skills/gws-gmail-send/SKILL.md create mode 100644 skills/gws-gmail-triage/SKILL.md create mode 100644 skills/gws-gmail-watch/SKILL.md create mode 100644 skills/gws-gmail/SKILL.md create mode 100644 skills/gws-keep/SKILL.md create mode 100644 skills/gws-meet/SKILL.md create mode 100644 skills/gws-modelarmor-create-template/SKILL.md create mode 100644 skills/gws-modelarmor-sanitize-prompt/SKILL.md create mode 100644 skills/gws-modelarmor-sanitize-response/SKILL.md create mode 100644 skills/gws-modelarmor/SKILL.md create mode 100644 skills/gws-people/SKILL.md create mode 100644 skills/gws-script-push/SKILL.md create mode 100644 skills/gws-script/SKILL.md create mode 100644 skills/gws-shared/SKILL.md create mode 100644 skills/gws-sheets-append/SKILL.md create mode 100644 skills/gws-sheets-read/SKILL.md create mode 100644 skills/gws-sheets/SKILL.md create mode 100644 skills/gws-slides/SKILL.md create mode 100644 skills/gws-tasks/SKILL.md create mode 100644 skills/gws-workflow-email-to-task/SKILL.md create mode 100644 skills/gws-workflow-file-announce/SKILL.md create mode 100644 skills/gws-workflow-meeting-prep/SKILL.md create mode 100644 skills/gws-workflow-standup-report/SKILL.md create mode 100644 skills/gws-workflow-weekly-digest/SKILL.md create mode 100644 skills/gws-workflow/SKILL.md create mode 100644 skills/persona-content-creator/SKILL.md create mode 100644 skills/persona-customer-support/SKILL.md create mode 100644 skills/persona-event-coordinator/SKILL.md create mode 100644 skills/persona-exec-assistant/SKILL.md create mode 100644 skills/persona-hr-coordinator/SKILL.md create mode 100644 skills/persona-it-admin/SKILL.md create mode 100644 skills/persona-project-manager/SKILL.md create mode 100644 skills/persona-researcher/SKILL.md create mode 100644 skills/persona-sales-ops/SKILL.md create mode 100644 skills/persona-team-lead/SKILL.md create mode 100644 skills/recipe-backup-sheet-as-csv/SKILL.md create mode 100644 skills/recipe-batch-invite-to-event/SKILL.md create mode 100644 skills/recipe-block-focus-time/SKILL.md create mode 100644 skills/recipe-bulk-download-folder/SKILL.md create mode 100644 skills/recipe-collect-form-responses/SKILL.md create mode 100644 skills/recipe-compare-sheet-tabs/SKILL.md create mode 100644 skills/recipe-copy-sheet-for-new-month/SKILL.md create mode 100644 skills/recipe-create-classroom-course/SKILL.md create mode 100644 skills/recipe-create-doc-from-template/SKILL.md create mode 100644 skills/recipe-create-events-from-sheet/SKILL.md create mode 100644 skills/recipe-create-expense-tracker/SKILL.md create mode 100644 skills/recipe-create-feedback-form/SKILL.md create mode 100644 skills/recipe-create-gmail-filter/SKILL.md create mode 100644 skills/recipe-create-meet-space/SKILL.md create mode 100644 skills/recipe-create-presentation/SKILL.md create mode 100644 skills/recipe-create-shared-drive/SKILL.md create mode 100644 skills/recipe-create-task-list/SKILL.md create mode 100644 skills/recipe-create-vacation-responder/SKILL.md create mode 100644 skills/recipe-draft-email-from-doc/SKILL.md create mode 100644 skills/recipe-email-drive-link/SKILL.md create mode 100644 skills/recipe-find-free-time/SKILL.md create mode 100644 skills/recipe-find-large-files/SKILL.md create mode 100644 skills/recipe-forward-labeled-emails/SKILL.md create mode 100644 skills/recipe-generate-report-from-sheet/SKILL.md create mode 100644 skills/recipe-label-and-archive-emails/SKILL.md create mode 100644 skills/recipe-log-deal-update/SKILL.md create mode 100644 skills/recipe-organize-drive-folder/SKILL.md create mode 100644 skills/recipe-plan-weekly-schedule/SKILL.md create mode 100644 skills/recipe-post-mortem-setup/SKILL.md create mode 100644 skills/recipe-reschedule-meeting/SKILL.md create mode 100644 skills/recipe-review-meet-participants/SKILL.md create mode 100644 skills/recipe-review-overdue-tasks/SKILL.md create mode 100644 skills/recipe-save-email-attachments/SKILL.md create mode 100644 skills/recipe-save-email-to-doc/SKILL.md create mode 100644 skills/recipe-schedule-recurring-event/SKILL.md create mode 100644 skills/recipe-send-team-announcement/SKILL.md create mode 100644 skills/recipe-share-doc-and-notify/SKILL.md create mode 100644 skills/recipe-share-event-materials/SKILL.md create mode 100644 skills/recipe-share-folder-with-team/SKILL.md create mode 100644 skills/recipe-sync-contacts-to-sheet/SKILL.md create mode 100644 skills/recipe-watch-drive-changes/SKILL.md diff --git a/.agent/skills/vhs.md b/.agent/skills/vhs.md new file mode 100644 index 0000000..a65ac71 --- /dev/null +++ b/.agent/skills/vhs.md @@ -0,0 +1,101 @@ +--- +description: Writing and editing VHS `.tape` files for terminal demo GIFs +--- + +# VHS Tape Files + +[VHS](https://github.com/charmbracelet/vhs) records terminal sessions into GIFs/MP4s/WebMs from `.tape` scripts. Run with `vhs demo.tape`. + +## Critical Syntax Rules + +### Type command and inline directives + +`Type`, `Sleep`, `Enter` are **separate directives on the same line**, delimited by the closing `"` of the `Type` string. The most common bug is forgetting to close the `Type` string, which causes `Sleep`/`Enter` to be typed literally into the terminal. + +``` +# ✅ CORRECT — closing " before Sleep +Type "echo hello" Sleep 300ms Enter + +# ❌ WRONG — Sleep and Enter are typed as literal text +Type "echo hello Sleep 300ms Enter +``` + +### Type with @speed override + +Override typing speed per-command with `@