Reproduce or refresh a product tutorial with polished screenshots end-to-end — cloud dashboard flows, desktop app flows, Screen.Studio-style framing, tutorial doc, PR. Use when asked to \"redo the tutorial\", \"refresh tutorial screenshots\", \"make a tutorial/walkthrough with screenshots\", or to document a cloud + desktop flow like the OpenWork Cloud team quickstart.
Scanned 9/12/2026
Install to Claude Code
npx -y skills add thedixitjain/the-mega-skill-library --skill product-tutorial-pipeline --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Product Tutorial Pipeline?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/thedixitjain-product-tutorial-pipeline)More formats (shields.io, HTML) on the badges page.
---
name: product-tutorial-pipeline
description: "Reproduce or refresh a product tutorial with polished screenshots end-to-end — cloud dashboard flows, desktop app flows, Screen.Studio-style framing, tutorial doc, PR. Use when asked to \"redo the tutorial\", \"refresh tutorial screenshots\", \"make a tutorial/walkthrough with screenshots\", or to document a cloud + desktop flow like the OpenWork Cloud team quickstart."
category: devops-and-infra
source_repo: different-ai/openwork
source_path: ".opencode/skills/product-tutorial-pipeline/SKILL.md"
source_url: https://github.com/different-ai/openwork/blob/HEAD/.opencode/skills/product-tutorial-pipeline/SKILL.md
---
# Product Tutorial Pipeline
The end-to-end recipe behind `packages/docs/cloud/team-quickstart.mdx`.
Follow it to refresh that tutorial after product changes or to produce a new
one. Companion skills: `cloud-dashboard-walkthrough` (web flows),
`daytona-electron-den` (desktop), `agent-first-screenshots` (capture quality
bar + beautifier).
## 0. Branch
Fresh worktree from latest dev — never the user's checkout:
```bash
git fetch origin
git worktree add ../_worktrees/<name> -b docs/<tutorial-branch> origin/dev
```
## 1. Stand up the product
- **Cloud**: `bash .devcontainer/test-server-on-daytona.sh dev --name <name>`
→ Den Web/API URLs. Verify `orgMode:"multi_org"` via `/api/runtime-config`.
- **Desktop**: `bash .devcontainer/test-on-daytona.sh dev
--den-base-url <DEN_WEB_URL> --den-api-base-url <DEN_API_URL>` → Electron
CDP + noVNC URLs. Resize the window from the renderer for generous shots:
`window.resizeTo(1600, 1000)`.
- Do NOT run the desktop app locally on macOS from an agent shell —
`app.whenReady()` never fires (window-server/keychain quirk); the Daytona
Electron sandbox is the paved path.
- Provider keys for real model runs come from the `openwork-eval-secrets`
volume (mounted automatically) or Infisical (`get-env-var` skill).
## 2. Drive and capture
Walk the flows as the persona (e.g. owner "Simon Green" of "Acme Labs"), one
tutorial beat per screenshot. Quality bar and verification loop live in
`agent-first-screenshots`. Practical rules that mattered:
- Capture at 2x (`--force-device-scale-factor=2` Chrome; Electron sandbox is
1x — fine after downscaling to 1600px).
- Fill forms *before* shooting them; screenshots of filled forms teach better.
- Hide dev-only chrome only: `nextjs-portal` badge (web), "Connected to
<sandbox-url>" + "Daytona folder path" boxes (desktop welcome).
- Close stray panels via their real close buttons before shooting.
- Name raws by step: `raw/01-signin-email.png … raw/NN-final.png`.
Desktop-specific moves (details in `daytona-electron-den`): sign in by
dispatching the handoff deep link event; verify org extensions at
`#/workspace/<ws>/settings/cloud-marketplaces`; insert composer prompts with
`document.execCommand("insertText", …)` (never synthetic paste — it becomes an
attachment chip); wait for "Ready for new tasks" before the final shot.
## 3. Beautify
Frame every raw with the repo beautifier
(`.opencode/skills/agent-first-screenshots/scripts/beautify.mjs`). House
style:
```bash
# cloud/dashboard shots — browser chrome with the canonical URL
node beautify.mjs raw/NN.png out/NN.png \
--chrome browser --url app.openworklabs.com --bg paper --width 1600
# desktop shots — macOS chrome, contrasting background
node beautify.mjs raw/NN.png out/NN.png \
--chrome mac --title OpenWork --bg indigo --width 1600
```
Run from a repo root that has `node_modules` (the script resolves `sharp`
from the pnpm store). Spot-check outputs visually before writing the doc.
## 4. Write the doc
- Doc: `packages/docs/<tab>/<name>.mdx` with `title` and `description`
frontmatter.
- Images: `packages/docs/images/<tutorial-name>/NN-step.png`; reference them
absolute as `/images/<tutorial-name>/…` and wrap each in `<Frame>`.
- Register the page in `packages/docs/docs.json` under the right tab/group.
- One image per beat, numbered in flow order; short imperative sections that
mirror the product's exact labels (**Add member**, **Create plugin**, …).
- Verify every referenced image exists:
```bash
for img in $(grep -oE '/images/[a-z0-9/-]+\.png' packages/docs/<tab>/<name>.mdx); do
[ -f "packages/docs$img" ] || echo "MISSING: $img"; done
```
## 5. Ship
Commit in story-shaped commits (fixes discovered along the way separate from
docs), push, open a PR against `dev` with `gh pr create`, and embed 2–3 key
screenshots in the PR body via `raw.githubusercontent.com/<org>/<repo>/<branch>/packages/docs/images/...`
links. State exactly what was validated (driven E2E) and what tests ran.
## Cleanup
`daytona delete <server-sandbox> <electron-sandbox>` when done; kill local
headless Chromes (`pkill -f remote-debugging-port=9223`).
---
**Source:** [`different-ai/openwork`](https://github.com/different-ai/openwork) → `.opencode/skills/product-tutorial-pipeline/SKILL.md`
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!