create-claude-code-visualizer 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/index.js +393 -0
  2. package/package.json +31 -0
  3. package/templates/CLAUDE.md +108 -0
  4. package/templates/app/.env.local.example +14 -0
  5. package/templates/app/ecosystem.config.js +29 -0
  6. package/templates/app/next-env.d.ts +6 -0
  7. package/templates/app/next.config.ts +16 -0
  8. package/templates/app/package-lock.json +4581 -0
  9. package/templates/app/package.json +38 -0
  10. package/templates/app/postcss.config.js +5 -0
  11. package/templates/app/src/app/agents/[slug]/chat/loading.tsx +26 -0
  12. package/templates/app/src/app/agents/[slug]/chat/page.tsx +579 -0
  13. package/templates/app/src/app/agents/[slug]/loading.tsx +19 -0
  14. package/templates/app/src/app/agents/page.tsx +8 -0
  15. package/templates/app/src/app/api/agents/[slug]/capabilities/route.ts +11 -0
  16. package/templates/app/src/app/api/agents/[slug]/route.ts +57 -0
  17. package/templates/app/src/app/api/agents/route.ts +28 -0
  18. package/templates/app/src/app/api/ai/generate-agent/route.ts +87 -0
  19. package/templates/app/src/app/api/ai/improve-claude-md/route.ts +78 -0
  20. package/templates/app/src/app/api/ai/suggestions/route.ts +64 -0
  21. package/templates/app/src/app/api/ai/title/route.ts +88 -0
  22. package/templates/app/src/app/api/auth/role/route.ts +17 -0
  23. package/templates/app/src/app/api/commands/[slug]/route.ts +61 -0
  24. package/templates/app/src/app/api/commands/route.ts +6 -0
  25. package/templates/app/src/app/api/governance/costs/route.ts +117 -0
  26. package/templates/app/src/app/api/governance/sessions/route.ts +335 -0
  27. package/templates/app/src/app/api/notifications/route.ts +62 -0
  28. package/templates/app/src/app/api/preferences/route.ts +44 -0
  29. package/templates/app/src/app/api/runs/[id]/approve/route.ts +38 -0
  30. package/templates/app/src/app/api/runs/[id]/events/route.ts +28 -0
  31. package/templates/app/src/app/api/runs/[id]/metadata/route.ts +30 -0
  32. package/templates/app/src/app/api/runs/[id]/route.ts +21 -0
  33. package/templates/app/src/app/api/runs/[id]/start/route.ts +61 -0
  34. package/templates/app/src/app/api/runs/[id]/stop/route.ts +16 -0
  35. package/templates/app/src/app/api/runs/[id]/stream/route.ts +201 -0
  36. package/templates/app/src/app/api/runs/route.ts +95 -0
  37. package/templates/app/src/app/api/schedules/[id]/route.ts +81 -0
  38. package/templates/app/src/app/api/schedules/route.ts +75 -0
  39. package/templates/app/src/app/api/settings/access-logs/route.ts +33 -0
  40. package/templates/app/src/app/api/settings/claude-md/route.ts +44 -0
  41. package/templates/app/src/app/api/settings/env-keys/route.ts +271 -0
  42. package/templates/app/src/app/api/settings/users/route.ts +108 -0
  43. package/templates/app/src/app/api/skills/[slug]/route.ts +43 -0
  44. package/templates/app/src/app/api/skills/route.ts +6 -0
  45. package/templates/app/src/app/api/tools/route.ts +65 -0
  46. package/templates/app/src/app/api/uploads/cleanup/route.ts +29 -0
  47. package/templates/app/src/app/api/uploads/route.ts +77 -0
  48. package/templates/app/src/app/auth/callback/route.ts +19 -0
  49. package/templates/app/src/app/globals.css +115 -0
  50. package/templates/app/src/app/layout.tsx +24 -0
  51. package/templates/app/src/app/loading.tsx +16 -0
  52. package/templates/app/src/app/login/page.tsx +64 -0
  53. package/templates/app/src/app/not-authorized/page.tsx +33 -0
  54. package/templates/app/src/app/runs/page.tsx +55 -0
  55. package/templates/app/src/app/schedules/page.tsx +110 -0
  56. package/templates/app/src/app/settings/page.tsx +1294 -0
  57. package/templates/app/src/app/skills/page.tsx +7 -0
  58. package/templates/app/src/components/agent-card.tsx +58 -0
  59. package/templates/app/src/components/agent-grid.tsx +90 -0
  60. package/templates/app/src/components/auth/auth-context.tsx +79 -0
  61. package/templates/app/src/components/chat-thread.tsx +50 -0
  62. package/templates/app/src/components/chat-view.tsx +670 -0
  63. package/templates/app/src/components/commands-browser.tsx +349 -0
  64. package/templates/app/src/components/create-agent-modal.tsx +388 -0
  65. package/templates/app/src/components/governance-dashboard.tsx +397 -0
  66. package/templates/app/src/components/icons.tsx +401 -0
  67. package/templates/app/src/components/layout/agent-sidebar.tsx +504 -0
  68. package/templates/app/src/components/layout/app-shell.tsx +29 -0
  69. package/templates/app/src/components/layout/nav.tsx +87 -0
  70. package/templates/app/src/components/layout/overview-inner.tsx +14 -0
  71. package/templates/app/src/components/layout/profile-menu.tsx +95 -0
  72. package/templates/app/src/components/layout/sidebar.tsx +30 -0
  73. package/templates/app/src/components/markdown.tsx +57 -0
  74. package/templates/app/src/components/message-bar.tsx +161 -0
  75. package/templates/app/src/components/notifications/notification-bell.tsx +104 -0
  76. package/templates/app/src/components/notifications/notification-panel.tsx +116 -0
  77. package/templates/app/src/components/overview/overview-content.tsx +287 -0
  78. package/templates/app/src/components/overview/overview-context.tsx +88 -0
  79. package/templates/app/src/components/preferences-modal.tsx +112 -0
  80. package/templates/app/src/components/run-form.tsx +73 -0
  81. package/templates/app/src/components/run-history-table.tsx +226 -0
  82. package/templates/app/src/components/run-output.tsx +187 -0
  83. package/templates/app/src/components/schedule-form.tsx +148 -0
  84. package/templates/app/src/components/skills-browser.tsx +338 -0
  85. package/templates/app/src/components/tool-tooltip.tsx +82 -0
  86. package/templates/app/src/hooks/use-sse.ts +115 -0
  87. package/templates/app/src/instrumentation.ts +9 -0
  88. package/templates/app/src/lib/agent-cache.ts +19 -0
  89. package/templates/app/src/lib/agent-runner.ts +411 -0
  90. package/templates/app/src/lib/agents.ts +168 -0
  91. package/templates/app/src/lib/ai.ts +40 -0
  92. package/templates/app/src/lib/approval-store.ts +70 -0
  93. package/templates/app/src/lib/auth-guard.ts +116 -0
  94. package/templates/app/src/lib/capabilities.ts +191 -0
  95. package/templates/app/src/lib/line-diff.ts +96 -0
  96. package/templates/app/src/lib/queue.ts +22 -0
  97. package/templates/app/src/lib/redis.ts +12 -0
  98. package/templates/app/src/lib/role-permissions.ts +166 -0
  99. package/templates/app/src/lib/run-agent.ts +442 -0
  100. package/templates/app/src/lib/supabase-browser.ts +8 -0
  101. package/templates/app/src/lib/supabase-middleware.ts +63 -0
  102. package/templates/app/src/lib/supabase-server.ts +28 -0
  103. package/templates/app/src/lib/supabase.ts +6 -0
  104. package/templates/app/src/lib/tool-descriptions.ts +29 -0
  105. package/templates/app/src/lib/types.ts +73 -0
  106. package/templates/app/src/lib/typewriter-animation.ts +159 -0
  107. package/templates/app/src/middleware.ts +13 -0
  108. package/templates/app/tsconfig.json +21 -0
  109. package/templates/app/uploads/.gitkeep +0 -0
  110. package/templates/app/worker/index.ts +342 -0
  111. package/templates/claude/agents/ai-trends-scout.md +66 -0
  112. package/templates/claude/commands/add-to-todos.md +56 -0
  113. package/templates/claude/commands/check-todos.md +56 -0
  114. package/templates/claude/hooks/auto-approve-safe.sh +34 -0
  115. package/templates/claude/hooks/auto-format.sh +25 -0
  116. package/templates/claude/hooks/block-destructive.sh +32 -0
  117. package/templates/claude/hooks/compaction-preserver.sh +16 -0
  118. package/templates/claude/hooks/notify.sh +26 -0
  119. package/templates/claude/settings.local.json +66 -0
  120. package/templates/claude/skills/frontend-design/SKILL.md +127 -0
  121. package/templates/claude/skills/frontend-design/reference/color-and-contrast.md +132 -0
  122. package/templates/claude/skills/frontend-design/reference/interaction-design.md +123 -0
  123. package/templates/claude/skills/frontend-design/reference/motion-design.md +99 -0
  124. package/templates/claude/skills/frontend-design/reference/responsive-design.md +114 -0
  125. package/templates/claude/skills/frontend-design/reference/spatial-design.md +100 -0
  126. package/templates/claude/skills/frontend-design/reference/typography.md +131 -0
  127. package/templates/claude/skills/frontend-design/reference/ux-writing.md +107 -0
  128. package/templates/claude/skills/gws-admin-reports/SKILL.md +57 -0
  129. package/templates/claude/skills/gws-calendar/SKILL.md +108 -0
  130. package/templates/claude/skills/gws-calendar-agenda/SKILL.md +52 -0
  131. package/templates/claude/skills/gws-calendar-insert/SKILL.md +55 -0
  132. package/templates/claude/skills/gws-chat/SKILL.md +73 -0
  133. package/templates/claude/skills/gws-chat-send/SKILL.md +49 -0
  134. package/templates/claude/skills/gws-classroom/SKILL.md +75 -0
  135. package/templates/claude/skills/gws-docs/SKILL.md +48 -0
  136. package/templates/claude/skills/gws-docs-write/SKILL.md +49 -0
  137. package/templates/claude/skills/gws-drive/SKILL.md +137 -0
  138. package/templates/claude/skills/gws-drive-upload/SKILL.md +52 -0
  139. package/templates/claude/skills/gws-events/SKILL.md +67 -0
  140. package/templates/claude/skills/gws-events-renew/SKILL.md +48 -0
  141. package/templates/claude/skills/gws-events-subscribe/SKILL.md +59 -0
  142. package/templates/claude/skills/gws-forms/SKILL.md +45 -0
  143. package/templates/claude/skills/gws-gmail/SKILL.md +59 -0
  144. package/templates/claude/skills/gws-gmail-forward/SKILL.md +53 -0
  145. package/templates/claude/skills/gws-gmail-reply/SKILL.md +56 -0
  146. package/templates/claude/skills/gws-gmail-reply-all/SKILL.md +60 -0
  147. package/templates/claude/skills/gws-gmail-send/SKILL.md +55 -0
  148. package/templates/claude/skills/gws-gmail-triage/SKILL.md +50 -0
  149. package/templates/claude/skills/gws-gmail-watch/SKILL.md +58 -0
  150. package/templates/claude/skills/gws-keep/SKILL.md +48 -0
  151. package/templates/claude/skills/gws-meet/SKILL.md +51 -0
  152. package/templates/claude/skills/gws-modelarmor/SKILL.md +42 -0
  153. package/templates/claude/skills/gws-modelarmor-create-template/SKILL.md +53 -0
  154. package/templates/claude/skills/gws-modelarmor-sanitize-prompt/SKILL.md +48 -0
  155. package/templates/claude/skills/gws-modelarmor-sanitize-response/SKILL.md +48 -0
  156. package/templates/claude/skills/gws-people/SKILL.md +67 -0
  157. package/templates/claude/skills/gws-shared/SKILL.md +66 -0
  158. package/templates/claude/skills/gws-sheets/SKILL.md +53 -0
  159. package/templates/claude/skills/gws-sheets-append/SKILL.md +51 -0
  160. package/templates/claude/skills/gws-sheets-read/SKILL.md +47 -0
  161. package/templates/claude/skills/gws-slides/SKILL.md +43 -0
  162. package/templates/claude/skills/gws-tasks/SKILL.md +56 -0
  163. package/templates/claude/skills/gws-workflow/SKILL.md +44 -0
  164. package/templates/claude/skills/gws-workflow-email-to-task/SKILL.md +47 -0
  165. package/templates/claude/skills/gws-workflow-file-announce/SKILL.md +50 -0
  166. package/templates/claude/skills/gws-workflow-meeting-prep/SKILL.md +47 -0
  167. package/templates/claude/skills/gws-workflow-standup-report/SKILL.md +46 -0
  168. package/templates/claude/skills/gws-workflow-weekly-digest/SKILL.md +46 -0
  169. package/templates/claude/skills/persona-content-creator/SKILL.md +33 -0
  170. package/templates/claude/skills/persona-customer-support/SKILL.md +34 -0
  171. package/templates/claude/skills/persona-event-coordinator/SKILL.md +35 -0
  172. package/templates/claude/skills/persona-exec-assistant/SKILL.md +35 -0
  173. package/templates/claude/skills/persona-hr-coordinator/SKILL.md +33 -0
  174. package/templates/claude/skills/persona-it-admin/SKILL.md +30 -0
  175. package/templates/claude/skills/persona-project-manager/SKILL.md +35 -0
  176. package/templates/claude/skills/persona-researcher/SKILL.md +33 -0
  177. package/templates/claude/skills/persona-sales-ops/SKILL.md +35 -0
  178. package/templates/claude/skills/persona-team-lead/SKILL.md +36 -0
  179. package/templates/claude/skills/recipe-backup-sheet-as-csv/SKILL.md +25 -0
  180. package/templates/claude/skills/recipe-batch-invite-to-event/SKILL.md +25 -0
  181. package/templates/claude/skills/recipe-block-focus-time/SKILL.md +24 -0
  182. package/templates/claude/skills/recipe-bulk-download-folder/SKILL.md +25 -0
  183. package/templates/claude/skills/recipe-collect-form-responses/SKILL.md +25 -0
  184. package/templates/claude/skills/recipe-compare-sheet-tabs/SKILL.md +25 -0
  185. package/templates/claude/skills/recipe-copy-sheet-for-new-month/SKILL.md +25 -0
  186. package/templates/claude/skills/recipe-create-classroom-course/SKILL.md +25 -0
  187. package/templates/claude/skills/recipe-create-doc-from-template/SKILL.md +29 -0
  188. package/templates/claude/skills/recipe-create-events-from-sheet/SKILL.md +24 -0
  189. package/templates/claude/skills/recipe-create-expense-tracker/SKILL.md +26 -0
  190. package/templates/claude/skills/recipe-create-feedback-form/SKILL.md +25 -0
  191. package/templates/claude/skills/recipe-create-gmail-filter/SKILL.md +26 -0
  192. package/templates/claude/skills/recipe-create-meet-space/SKILL.md +25 -0
  193. package/templates/claude/skills/recipe-create-presentation/SKILL.md +25 -0
  194. package/templates/claude/skills/recipe-create-shared-drive/SKILL.md +25 -0
  195. package/templates/claude/skills/recipe-create-task-list/SKILL.md +26 -0
  196. package/templates/claude/skills/recipe-create-vacation-responder/SKILL.md +25 -0
  197. package/templates/claude/skills/recipe-draft-email-from-doc/SKILL.md +25 -0
  198. package/templates/claude/skills/recipe-email-drive-link/SKILL.md +25 -0
  199. package/templates/claude/skills/recipe-find-free-time/SKILL.md +25 -0
  200. package/templates/claude/skills/recipe-find-large-files/SKILL.md +24 -0
  201. package/templates/claude/skills/recipe-forward-labeled-emails/SKILL.md +27 -0
  202. package/templates/claude/skills/recipe-generate-report-from-sheet/SKILL.md +34 -0
  203. package/templates/claude/skills/recipe-label-and-archive-emails/SKILL.md +25 -0
  204. package/templates/claude/skills/recipe-log-deal-update/SKILL.md +25 -0
  205. package/templates/claude/skills/recipe-organize-drive-folder/SKILL.md +26 -0
  206. package/templates/claude/skills/recipe-plan-weekly-schedule/SKILL.md +26 -0
  207. package/templates/claude/skills/recipe-post-mortem-setup/SKILL.md +25 -0
  208. package/templates/claude/skills/recipe-reschedule-meeting/SKILL.md +25 -0
  209. package/templates/claude/skills/recipe-review-meet-participants/SKILL.md +25 -0
  210. package/templates/claude/skills/recipe-review-overdue-tasks/SKILL.md +25 -0
  211. package/templates/claude/skills/recipe-save-email-attachments/SKILL.md +26 -0
  212. package/templates/claude/skills/recipe-save-email-to-doc/SKILL.md +29 -0
  213. package/templates/claude/skills/recipe-schedule-recurring-event/SKILL.md +24 -0
  214. package/templates/claude/skills/recipe-send-team-announcement/SKILL.md +24 -0
  215. package/templates/claude/skills/recipe-share-doc-and-notify/SKILL.md +25 -0
  216. package/templates/claude/skills/recipe-share-event-materials/SKILL.md +25 -0
  217. package/templates/claude/skills/recipe-share-folder-with-team/SKILL.md +26 -0
  218. package/templates/claude/skills/recipe-sync-contacts-to-sheet/SKILL.md +25 -0
  219. package/templates/claude/skills/recipe-watch-drive-changes/SKILL.md +25 -0
  220. package/templates/mcp.json +12 -0
@@ -0,0 +1,30 @@
1
+ ---
2
+ name: persona-it-admin
3
+ version: 1.0.0
4
+ description: "Administer IT — monitor security and configure Workspace."
5
+ metadata:
6
+ openclaw:
7
+ category: "persona"
8
+ requires:
9
+ bins: ["gws"]
10
+ skills: ["gws-gmail", "gws-drive", "gws-calendar"]
11
+ ---
12
+
13
+ # IT Administrator
14
+
15
+ > **PREREQUISITE:** Load the following utility skills to operate as this persona: `gws-gmail`, `gws-drive`, `gws-calendar`
16
+
17
+ Administer IT — monitor security and configure Workspace.
18
+
19
+ ## Relevant Workflows
20
+ - `gws workflow +standup-report`
21
+
22
+ ## Instructions
23
+ - Start the day with `gws workflow +standup-report` to review any pending IT requests.
24
+ - Monitor suspicious login activity and review audit logs.
25
+ - Configure Drive sharing policies to enforce organizational security.
26
+
27
+ ## Tips
28
+ - Always use `--dry-run` before bulk operations.
29
+ - Review `gws auth status` regularly to verify service account permissions.
30
+
@@ -0,0 +1,35 @@
1
+ ---
2
+ name: persona-project-manager
3
+ version: 1.0.0
4
+ description: "Coordinate projects — track tasks, schedule meetings, and share docs."
5
+ metadata:
6
+ openclaw:
7
+ category: "persona"
8
+ requires:
9
+ bins: ["gws"]
10
+ skills: ["gws-drive", "gws-sheets", "gws-calendar", "gws-gmail", "gws-chat"]
11
+ ---
12
+
13
+ # Project Manager
14
+
15
+ > **PREREQUISITE:** Load the following utility skills to operate as this persona: `gws-drive`, `gws-sheets`, `gws-calendar`, `gws-gmail`, `gws-chat`
16
+
17
+ Coordinate projects — track tasks, schedule meetings, and share docs.
18
+
19
+ ## Relevant Workflows
20
+ - `gws workflow +standup-report`
21
+ - `gws workflow +weekly-digest`
22
+ - `gws workflow +file-announce`
23
+
24
+ ## Instructions
25
+ - Start the week with `gws workflow +weekly-digest` for a snapshot of upcoming meetings and unread items.
26
+ - Track project status in Sheets using `gws sheets +append` to log updates.
27
+ - Share project artifacts by uploading to Drive with `gws drive +upload`, then announcing with `gws workflow +file-announce`.
28
+ - Schedule recurring standups with `gws calendar +insert` — include all team members as attendees.
29
+ - Send status update emails to stakeholders with `gws gmail +send`.
30
+
31
+ ## Tips
32
+ - Use `gws drive files list --params '{"q": "name contains \'Project\'"}'` to find project folders.
33
+ - Pipe triage output through `jq` for filtering by sender or subject.
34
+ - Use `--dry-run` before any write operations to preview what will happen.
35
+
@@ -0,0 +1,33 @@
1
+ ---
2
+ name: persona-researcher
3
+ version: 1.0.0
4
+ description: "Organize research — manage references, notes, and collaboration."
5
+ metadata:
6
+ openclaw:
7
+ category: "persona"
8
+ requires:
9
+ bins: ["gws"]
10
+ skills: ["gws-drive", "gws-docs", "gws-sheets", "gws-gmail"]
11
+ ---
12
+
13
+ # Researcher
14
+
15
+ > **PREREQUISITE:** Load the following utility skills to operate as this persona: `gws-drive`, `gws-docs`, `gws-sheets`, `gws-gmail`
16
+
17
+ Organize research — manage references, notes, and collaboration.
18
+
19
+ ## Relevant Workflows
20
+ - `gws workflow +file-announce`
21
+
22
+ ## Instructions
23
+ - Organize research papers and notes in Drive folders.
24
+ - Write research notes and summaries with `gws docs +write`.
25
+ - Track research data in Sheets — use `gws sheets +append` for data logging.
26
+ - Share findings with collaborators via `gws workflow +file-announce`.
27
+ - Request peer reviews via `gws gmail +send`.
28
+
29
+ ## Tips
30
+ - Use `gws drive files list` with search queries to find specific documents.
31
+ - Keep a running log of experiments and findings in a shared Sheet.
32
+ - Use `--format csv` when exporting data for analysis tools.
33
+
@@ -0,0 +1,35 @@
1
+ ---
2
+ name: persona-sales-ops
3
+ version: 1.0.0
4
+ description: "Manage sales workflows — track deals, schedule calls, client comms."
5
+ metadata:
6
+ openclaw:
7
+ category: "persona"
8
+ requires:
9
+ bins: ["gws"]
10
+ skills: ["gws-gmail", "gws-calendar", "gws-sheets", "gws-drive"]
11
+ ---
12
+
13
+ # Sales Operations
14
+
15
+ > **PREREQUISITE:** Load the following utility skills to operate as this persona: `gws-gmail`, `gws-calendar`, `gws-sheets`, `gws-drive`
16
+
17
+ Manage sales workflows — track deals, schedule calls, client comms.
18
+
19
+ ## Relevant Workflows
20
+ - `gws workflow +meeting-prep`
21
+ - `gws workflow +email-to-task`
22
+ - `gws workflow +weekly-digest`
23
+
24
+ ## Instructions
25
+ - Prepare for client calls with `gws workflow +meeting-prep` to review attendees and agenda.
26
+ - Log deal updates in a tracking spreadsheet with `gws sheets +append`.
27
+ - Convert follow-up emails into tasks with `gws workflow +email-to-task`.
28
+ - Share proposals by uploading to Drive with `gws drive +upload`.
29
+ - Get a weekly sales pipeline summary with `gws workflow +weekly-digest`.
30
+
31
+ ## Tips
32
+ - Use `gws gmail +triage --query 'from:client-domain.com'` to filter client emails.
33
+ - Schedule follow-up calls immediately after meetings to maintain momentum.
34
+ - Keep all client-facing documents in a dedicated shared Drive folder.
35
+
@@ -0,0 +1,36 @@
1
+ ---
2
+ name: persona-team-lead
3
+ version: 1.0.0
4
+ description: "Lead a team — run standups, coordinate tasks, and communicate."
5
+ metadata:
6
+ openclaw:
7
+ category: "persona"
8
+ requires:
9
+ bins: ["gws"]
10
+ skills: ["gws-calendar", "gws-gmail", "gws-chat", "gws-drive", "gws-sheets"]
11
+ ---
12
+
13
+ # Team Lead
14
+
15
+ > **PREREQUISITE:** Load the following utility skills to operate as this persona: `gws-calendar`, `gws-gmail`, `gws-chat`, `gws-drive`, `gws-sheets`
16
+
17
+ Lead a team — run standups, coordinate tasks, and communicate.
18
+
19
+ ## Relevant Workflows
20
+ - `gws workflow +standup-report`
21
+ - `gws workflow +meeting-prep`
22
+ - `gws workflow +weekly-digest`
23
+ - `gws workflow +email-to-task`
24
+
25
+ ## Instructions
26
+ - Run daily standups with `gws workflow +standup-report` — share output in team Chat.
27
+ - Prepare for 1:1s with `gws workflow +meeting-prep`.
28
+ - Get weekly snapshots with `gws workflow +weekly-digest`.
29
+ - Delegate email action items with `gws workflow +email-to-task`.
30
+ - Track team OKRs in a shared Sheet with `gws sheets +append`.
31
+
32
+ ## Tips
33
+ - Use `gws calendar +agenda --week --format table` for weekly team calendar views.
34
+ - Pipe standup reports to Chat with `gws chat spaces messages create`.
35
+ - Use `--sanitize` for any operations involving sensitive team data.
36
+
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: recipe-backup-sheet-as-csv
3
+ version: 1.0.0
4
+ description: "Export a Google Sheets spreadsheet as a CSV file for local backup or processing."
5
+ metadata:
6
+ openclaw:
7
+ category: "recipe"
8
+ domain: "productivity"
9
+ requires:
10
+ bins: ["gws"]
11
+ skills: ["gws-sheets", "gws-drive"]
12
+ ---
13
+
14
+ # Export a Google Sheet as CSV
15
+
16
+ > **PREREQUISITE:** Load the following skills to execute this recipe: `gws-sheets`, `gws-drive`
17
+
18
+ Export a Google Sheets spreadsheet as a CSV file for local backup or processing.
19
+
20
+ ## Steps
21
+
22
+ 1. Get spreadsheet details: `gws sheets spreadsheets get --params '{"spreadsheetId": "SHEET_ID"}'`
23
+ 2. Export as CSV: `gws drive files export --params '{"fileId": "SHEET_ID", "mimeType": "text/csv"}'`
24
+ 3. Or read values directly: `gws sheets +read --spreadsheet-id SHEET_ID --range 'Sheet1' --format csv`
25
+
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: recipe-batch-invite-to-event
3
+ version: 1.0.0
4
+ description: "Add a list of attendees to an existing Google Calendar event and send notifications."
5
+ metadata:
6
+ openclaw:
7
+ category: "recipe"
8
+ domain: "scheduling"
9
+ requires:
10
+ bins: ["gws"]
11
+ skills: ["gws-calendar"]
12
+ ---
13
+
14
+ # Add Multiple Attendees to a Calendar Event
15
+
16
+ > **PREREQUISITE:** Load the following skills to execute this recipe: `gws-calendar`
17
+
18
+ Add a list of attendees to an existing Google Calendar event and send notifications.
19
+
20
+ ## Steps
21
+
22
+ 1. Get the event: `gws calendar events get --params '{"calendarId": "primary", "eventId": "EVENT_ID"}'`
23
+ 2. Add attendees: `gws calendar events patch --params '{"calendarId": "primary", "eventId": "EVENT_ID", "sendUpdates": "all"}' --json '{"attendees": [{"email": "alice@company.com"}, {"email": "bob@company.com"}, {"email": "carol@company.com"}]}'`
24
+ 3. Verify attendees: `gws calendar events get --params '{"calendarId": "primary", "eventId": "EVENT_ID"}'`
25
+
@@ -0,0 +1,24 @@
1
+ ---
2
+ name: recipe-block-focus-time
3
+ version: 1.0.0
4
+ description: "Create recurring focus time blocks on Google Calendar to protect deep work hours."
5
+ metadata:
6
+ openclaw:
7
+ category: "recipe"
8
+ domain: "scheduling"
9
+ requires:
10
+ bins: ["gws"]
11
+ skills: ["gws-calendar"]
12
+ ---
13
+
14
+ # Block Focus Time on Google Calendar
15
+
16
+ > **PREREQUISITE:** Load the following skills to execute this recipe: `gws-calendar`
17
+
18
+ Create recurring focus time blocks on Google Calendar to protect deep work hours.
19
+
20
+ ## Steps
21
+
22
+ 1. Create recurring focus block: `gws calendar events insert --params '{"calendarId": "primary"}' --json '{"summary": "Focus Time", "description": "Protected deep work block", "start": {"dateTime": "2025-01-20T09:00:00", "timeZone": "America/New_York"}, "end": {"dateTime": "2025-01-20T11:00:00", "timeZone": "America/New_York"}, "recurrence": ["RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR"], "transparency": "opaque"}'`
23
+ 2. Verify it shows as busy: `gws calendar +agenda`
24
+
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: recipe-bulk-download-folder
3
+ version: 1.0.0
4
+ description: "List and download all files from a Google Drive folder."
5
+ metadata:
6
+ openclaw:
7
+ category: "recipe"
8
+ domain: "productivity"
9
+ requires:
10
+ bins: ["gws"]
11
+ skills: ["gws-drive"]
12
+ ---
13
+
14
+ # Bulk Download Drive Folder
15
+
16
+ > **PREREQUISITE:** Load the following skills to execute this recipe: `gws-drive`
17
+
18
+ List and download all files from a Google Drive folder.
19
+
20
+ ## Steps
21
+
22
+ 1. List files in folder: `gws drive files list --params '{"q": "'\''FOLDER_ID'\'' in parents"}' --format json`
23
+ 2. Download each file: `gws drive files get --params '{"fileId": "FILE_ID", "alt": "media"}' -o filename.ext`
24
+ 3. Export Google Docs as PDF: `gws drive files export --params '{"fileId": "FILE_ID", "mimeType": "application/pdf"}' -o document.pdf`
25
+
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: recipe-collect-form-responses
3
+ version: 1.0.0
4
+ description: "Retrieve and review responses from a Google Form."
5
+ metadata:
6
+ openclaw:
7
+ category: "recipe"
8
+ domain: "productivity"
9
+ requires:
10
+ bins: ["gws"]
11
+ skills: ["gws-forms"]
12
+ ---
13
+
14
+ # Check Form Responses
15
+
16
+ > **PREREQUISITE:** Load the following skills to execute this recipe: `gws-forms`
17
+
18
+ Retrieve and review responses from a Google Form.
19
+
20
+ ## Steps
21
+
22
+ 1. List forms: `gws forms forms list` (if you don't have the form ID)
23
+ 2. Get form details: `gws forms forms get --params '{"formId": "FORM_ID"}'`
24
+ 3. Get responses: `gws forms forms responses list --params '{"formId": "FORM_ID"}' --format table`
25
+
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: recipe-compare-sheet-tabs
3
+ version: 1.0.0
4
+ description: "Read data from two tabs in a Google Sheet to compare and identify differences."
5
+ metadata:
6
+ openclaw:
7
+ category: "recipe"
8
+ domain: "productivity"
9
+ requires:
10
+ bins: ["gws"]
11
+ skills: ["gws-sheets"]
12
+ ---
13
+
14
+ # Compare Two Google Sheets Tabs
15
+
16
+ > **PREREQUISITE:** Load the following skills to execute this recipe: `gws-sheets`
17
+
18
+ Read data from two tabs in a Google Sheet to compare and identify differences.
19
+
20
+ ## Steps
21
+
22
+ 1. Read the first tab: `gws sheets +read --spreadsheet-id SHEET_ID --range 'January!A1:D'`
23
+ 2. Read the second tab: `gws sheets +read --spreadsheet-id SHEET_ID --range 'February!A1:D'`
24
+ 3. Compare the data and identify changes
25
+
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: recipe-copy-sheet-for-new-month
3
+ version: 1.0.0
4
+ description: "Duplicate a Google Sheets template tab for a new month of tracking."
5
+ metadata:
6
+ openclaw:
7
+ category: "recipe"
8
+ domain: "productivity"
9
+ requires:
10
+ bins: ["gws"]
11
+ skills: ["gws-sheets"]
12
+ ---
13
+
14
+ # Copy a Google Sheet for a New Month
15
+
16
+ > **PREREQUISITE:** Load the following skills to execute this recipe: `gws-sheets`
17
+
18
+ Duplicate a Google Sheets template tab for a new month of tracking.
19
+
20
+ ## Steps
21
+
22
+ 1. Get spreadsheet details: `gws sheets spreadsheets get --params '{"spreadsheetId": "SHEET_ID"}'`
23
+ 2. Copy the template sheet: `gws sheets spreadsheets sheets copyTo --params '{"spreadsheetId": "SHEET_ID", "sheetId": 0}' --json '{"destinationSpreadsheetId": "SHEET_ID"}'`
24
+ 3. Rename the new tab: `gws sheets spreadsheets batchUpdate --params '{"spreadsheetId": "SHEET_ID"}' --json '{"requests": [{"updateSheetProperties": {"properties": {"sheetId": 123, "title": "February 2025"}, "fields": "title"}}]}'`
25
+
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: recipe-create-classroom-course
3
+ version: 1.0.0
4
+ description: "Create a Google Classroom course and invite students."
5
+ metadata:
6
+ openclaw:
7
+ category: "recipe"
8
+ domain: "education"
9
+ requires:
10
+ bins: ["gws"]
11
+ skills: ["gws-classroom"]
12
+ ---
13
+
14
+ # Create a Google Classroom Course
15
+
16
+ > **PREREQUISITE:** Load the following skills to execute this recipe: `gws-classroom`
17
+
18
+ Create a Google Classroom course and invite students.
19
+
20
+ ## Steps
21
+
22
+ 1. Create the course: `gws classroom courses create --json '{"name": "Introduction to CS", "section": "Period 1", "room": "Room 101", "ownerId": "me"}'`
23
+ 2. Invite a student: `gws classroom invitations create --json '{"courseId": "COURSE_ID", "userId": "student@school.edu", "role": "STUDENT"}'`
24
+ 3. List enrolled students: `gws classroom courses students list --params '{"courseId": "COURSE_ID"}' --format table`
25
+
@@ -0,0 +1,29 @@
1
+ ---
2
+ name: recipe-create-doc-from-template
3
+ version: 1.0.0
4
+ description: "Copy a Google Docs template, fill in content, and share with collaborators."
5
+ metadata:
6
+ openclaw:
7
+ category: "recipe"
8
+ domain: "productivity"
9
+ requires:
10
+ bins: ["gws"]
11
+ skills: ["gws-drive", "gws-docs"]
12
+ ---
13
+
14
+ # Create a Google Doc from a Template
15
+
16
+ > **PREREQUISITE:** Load the following skills to execute this recipe: `gws-drive`, `gws-docs`
17
+
18
+ Copy a Google Docs template, fill in content, and share with collaborators.
19
+
20
+ ## Steps
21
+
22
+ 1. Copy the template: `gws drive files copy --params '{"fileId": "TEMPLATE_DOC_ID"}' --json '{"name": "Project Brief - Q2 Launch"}'`
23
+ 2. Get the new doc ID from the response
24
+ 3. Add content: `gws docs +write --document-id NEW_DOC_ID --text '## Project: Q2 Launch
25
+
26
+ ### Objective
27
+ Launch the new feature by end of Q2.'`
28
+ 4. Share with team: `gws drive permissions create --params '{"fileId": "NEW_DOC_ID"}' --json '{"role": "writer", "type": "user", "emailAddress": "team@company.com"}'`
29
+
@@ -0,0 +1,24 @@
1
+ ---
2
+ name: recipe-create-events-from-sheet
3
+ version: 1.0.0
4
+ description: "Read event data from a Google Sheets spreadsheet and create Google Calendar entries for each row."
5
+ metadata:
6
+ openclaw:
7
+ category: "recipe"
8
+ domain: "productivity"
9
+ requires:
10
+ bins: ["gws"]
11
+ skills: ["gws-sheets", "gws-calendar"]
12
+ ---
13
+
14
+ # Create Google Calendar Events from a Sheet
15
+
16
+ > **PREREQUISITE:** Load the following skills to execute this recipe: `gws-sheets`, `gws-calendar`
17
+
18
+ Read event data from a Google Sheets spreadsheet and create Google Calendar entries for each row.
19
+
20
+ ## Steps
21
+
22
+ 1. Read event data: `gws sheets +read --spreadsheet-id SHEET_ID --range 'Events!A2:D'`
23
+ 2. For each row, create a calendar event: `gws calendar +insert --summary 'Team Standup' --start '2025-01-20T09:00' --duration 30 --attendees alice@company.com,bob@company.com`
24
+
@@ -0,0 +1,26 @@
1
+ ---
2
+ name: recipe-create-expense-tracker
3
+ version: 1.0.0
4
+ description: "Set up a Google Sheets spreadsheet for tracking expenses with headers and initial entries."
5
+ metadata:
6
+ openclaw:
7
+ category: "recipe"
8
+ domain: "productivity"
9
+ requires:
10
+ bins: ["gws"]
11
+ skills: ["gws-sheets", "gws-drive"]
12
+ ---
13
+
14
+ # Create a Google Sheets Expense Tracker
15
+
16
+ > **PREREQUISITE:** Load the following skills to execute this recipe: `gws-sheets`, `gws-drive`
17
+
18
+ Set up a Google Sheets spreadsheet for tracking expenses with headers and initial entries.
19
+
20
+ ## Steps
21
+
22
+ 1. Create spreadsheet: `gws drive files create --json '{"name": "Expense Tracker 2025", "mimeType": "application/vnd.google-apps.spreadsheet"}'`
23
+ 2. Add headers: `gws sheets +append --spreadsheet-id SHEET_ID --range 'Sheet1' --values '["Date", "Category", "Description", "Amount"]'`
24
+ 3. Add first entry: `gws sheets +append --spreadsheet-id SHEET_ID --range 'Sheet1' --values '["2025-01-15", "Travel", "Flight to NYC", "450.00"]'`
25
+ 4. Share with manager: `gws drive permissions create --params '{"fileId": "SHEET_ID"}' --json '{"role": "reader", "type": "user", "emailAddress": "manager@company.com"}'`
26
+
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: recipe-create-feedback-form
3
+ version: 1.0.0
4
+ description: "Create a Google Form for feedback and share it via Gmail."
5
+ metadata:
6
+ openclaw:
7
+ category: "recipe"
8
+ domain: "productivity"
9
+ requires:
10
+ bins: ["gws"]
11
+ skills: ["gws-forms", "gws-gmail"]
12
+ ---
13
+
14
+ # Create and Share a Google Form
15
+
16
+ > **PREREQUISITE:** Load the following skills to execute this recipe: `gws-forms`, `gws-gmail`
17
+
18
+ Create a Google Form for feedback and share it via Gmail.
19
+
20
+ ## Steps
21
+
22
+ 1. Create form: `gws forms forms create --json '{"info": {"title": "Event Feedback", "documentTitle": "Event Feedback Form"}}'`
23
+ 2. Get the form URL from the response (responderUri field)
24
+ 3. Email the form: `gws gmail +send --to attendees@company.com --subject 'Please share your feedback' --body 'Fill out the form: FORM_URL'`
25
+
@@ -0,0 +1,26 @@
1
+ ---
2
+ name: recipe-create-gmail-filter
3
+ version: 1.0.0
4
+ description: "Create a Gmail filter to automatically label, star, or categorize incoming messages."
5
+ metadata:
6
+ openclaw:
7
+ category: "recipe"
8
+ domain: "productivity"
9
+ requires:
10
+ bins: ["gws"]
11
+ skills: ["gws-gmail"]
12
+ ---
13
+
14
+ # Create a Gmail Filter
15
+
16
+ > **PREREQUISITE:** Load the following skills to execute this recipe: `gws-gmail`
17
+
18
+ Create a Gmail filter to automatically label, star, or categorize incoming messages.
19
+
20
+ ## Steps
21
+
22
+ 1. List existing labels: `gws gmail users labels list --params '{"userId": "me"}' --format table`
23
+ 2. Create a new label: `gws gmail users labels create --params '{"userId": "me"}' --json '{"name": "Receipts"}'`
24
+ 3. Create a filter: `gws gmail users settings filters create --params '{"userId": "me"}' --json '{"criteria": {"from": "receipts@example.com"}, "action": {"addLabelIds": ["LABEL_ID"], "removeLabelIds": ["INBOX"]}}'`
25
+ 4. Verify filter: `gws gmail users settings filters list --params '{"userId": "me"}' --format table`
26
+
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: recipe-create-meet-space
3
+ version: 1.0.0
4
+ description: "Create a Google Meet meeting space and share the join link."
5
+ metadata:
6
+ openclaw:
7
+ category: "recipe"
8
+ domain: "scheduling"
9
+ requires:
10
+ bins: ["gws"]
11
+ skills: ["gws-meet", "gws-gmail"]
12
+ ---
13
+
14
+ # Create a Google Meet Conference
15
+
16
+ > **PREREQUISITE:** Load the following skills to execute this recipe: `gws-meet`, `gws-gmail`
17
+
18
+ Create a Google Meet meeting space and share the join link.
19
+
20
+ ## Steps
21
+
22
+ 1. Create meeting space: `gws meet spaces create --json '{"config": {"accessType": "OPEN"}}'`
23
+ 2. Copy the meeting URI from the response
24
+ 3. Email the link: `gws gmail +send --to team@company.com --subject 'Join the meeting' --body 'Join here: MEETING_URI'`
25
+
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: recipe-create-presentation
3
+ version: 1.0.0
4
+ description: "Create a new Google Slides presentation and add initial slides."
5
+ metadata:
6
+ openclaw:
7
+ category: "recipe"
8
+ domain: "productivity"
9
+ requires:
10
+ bins: ["gws"]
11
+ skills: ["gws-slides"]
12
+ ---
13
+
14
+ # Create a Google Slides Presentation
15
+
16
+ > **PREREQUISITE:** Load the following skills to execute this recipe: `gws-slides`
17
+
18
+ Create a new Google Slides presentation and add initial slides.
19
+
20
+ ## Steps
21
+
22
+ 1. Create presentation: `gws slides presentations create --json '{"title": "Quarterly Review Q2"}'`
23
+ 2. Get the presentation ID from the response
24
+ 3. Share with team: `gws drive permissions create --params '{"fileId": "PRESENTATION_ID"}' --json '{"role": "writer", "type": "user", "emailAddress": "team@company.com"}'`
25
+
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: recipe-create-shared-drive
3
+ version: 1.0.0
4
+ description: "Create a Google Shared Drive and add members with appropriate roles."
5
+ metadata:
6
+ openclaw:
7
+ category: "recipe"
8
+ domain: "productivity"
9
+ requires:
10
+ bins: ["gws"]
11
+ skills: ["gws-drive"]
12
+ ---
13
+
14
+ # Create and Configure a Shared Drive
15
+
16
+ > **PREREQUISITE:** Load the following skills to execute this recipe: `gws-drive`
17
+
18
+ Create a Google Shared Drive and add members with appropriate roles.
19
+
20
+ ## Steps
21
+
22
+ 1. Create shared drive: `gws drive drives create --params '{"requestId": "unique-id-123"}' --json '{"name": "Project X"}'`
23
+ 2. Add a member: `gws drive permissions create --params '{"fileId": "DRIVE_ID", "supportsAllDrives": true}' --json '{"role": "writer", "type": "user", "emailAddress": "member@company.com"}'`
24
+ 3. List members: `gws drive permissions list --params '{"fileId": "DRIVE_ID", "supportsAllDrives": true}'`
25
+
@@ -0,0 +1,26 @@
1
+ ---
2
+ name: recipe-create-task-list
3
+ version: 1.0.0
4
+ description: "Set up a new Google Tasks list with initial tasks."
5
+ metadata:
6
+ openclaw:
7
+ category: "recipe"
8
+ domain: "productivity"
9
+ requires:
10
+ bins: ["gws"]
11
+ skills: ["gws-tasks"]
12
+ ---
13
+
14
+ # Create a Task List and Add Tasks
15
+
16
+ > **PREREQUISITE:** Load the following skills to execute this recipe: `gws-tasks`
17
+
18
+ Set up a new Google Tasks list with initial tasks.
19
+
20
+ ## Steps
21
+
22
+ 1. Create task list: `gws tasks tasklists insert --json '{"title": "Q2 Goals"}'`
23
+ 2. Add a task: `gws tasks tasks insert --params '{"tasklist": "TASKLIST_ID"}' --json '{"title": "Review Q1 metrics", "notes": "Pull data from analytics dashboard", "due": "2024-04-01T00:00:00Z"}'`
24
+ 3. Add another task: `gws tasks tasks insert --params '{"tasklist": "TASKLIST_ID"}' --json '{"title": "Draft Q2 OKRs"}'`
25
+ 4. List tasks: `gws tasks tasks list --params '{"tasklist": "TASKLIST_ID"}' --format table`
26
+
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: recipe-create-vacation-responder
3
+ version: 1.0.0
4
+ description: "Enable a Gmail out-of-office auto-reply with a custom message and date range."
5
+ metadata:
6
+ openclaw:
7
+ category: "recipe"
8
+ domain: "productivity"
9
+ requires:
10
+ bins: ["gws"]
11
+ skills: ["gws-gmail"]
12
+ ---
13
+
14
+ # Set Up a Gmail Vacation Responder
15
+
16
+ > **PREREQUISITE:** Load the following skills to execute this recipe: `gws-gmail`
17
+
18
+ Enable a Gmail out-of-office auto-reply with a custom message and date range.
19
+
20
+ ## Steps
21
+
22
+ 1. Enable vacation responder: `gws gmail users settings updateVacation --params '{"userId": "me"}' --json '{"enableAutoReply": true, "responseSubject": "Out of Office", "responseBodyPlainText": "I am out of the office until Jan 20. For urgent matters, contact backup@company.com.", "restrictToContacts": false, "restrictToDomain": false}'`
23
+ 2. Verify settings: `gws gmail users settings getVacation --params '{"userId": "me"}'`
24
+ 3. Disable when back: `gws gmail users settings updateVacation --params '{"userId": "me"}' --json '{"enableAutoReply": false}'`
25
+