Agent Skillsdifferent-ai/openwork › product-tutorial-pipeline

product-tutorial-pipeline

GitHub

用于端到端复现或刷新产品教程,包括启动云桌面环境、驱动流程并高质量截图、美化图片及编写文档。

.opencode/skills/product-tutorial-pipeline/SKILL.md different-ai/openwork

Trigger Scenarios

redo the tutorial refresh tutorial screenshots make a tutorial/walkthrough with screenshots

Install

npx skills add different-ai/openwork --skill product-tutorial-pipeline -g -y
More Options

Non-standard path

npx skills add https://github.com/different-ai/openwork/tree/dev/.opencode/skills/product-tutorial-pipeline -g -y

Use without installing

npx skills use different-ai/openwork@product-tutorial-pipeline

指定 Agent (Claude Code)

npx skills add different-ai/openwork --skill product-tutorial-pipeline -a claude-code -g -y

安装 repo 全部 skill

npx skills add different-ai/openwork --all -g -y

预览 repo 内 skill

npx skills add different-ai/openwork --list

SKILL.md

Frontmatter
{
    "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."
}

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:

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 " + "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:

# 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:

    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).

Version History

  • ff5d298 Current 2026-08-20 11:35

Same Skill Collection

.opencode/skills/agent-first-screenshots/SKILL.md
.opencode/skills/browser-automation/SKILL.md
.opencode/skills/build-a-witness/SKILL.md
.opencode/skills/cloud-dashboard-walkthrough/SKILL.md
.opencode/skills/create-plugin/SKILL.md
.opencode/skills/daytona-chrome-cdp/SKILL.md
.opencode/skills/daytona-cloud-instance/SKILL.md
.opencode/skills/daytona-cloud-server/SKILL.md
.opencode/skills/daytona-dev/SKILL.md
.opencode/skills/daytona-electron-den/SKILL.md
.opencode/skills/daytona-electron-test/SKILL.md
.opencode/skills/daytona-flow-validator/SKILL.md
.opencode/skills/daytona-recording-artifacts/SKILL.md
.opencode/skills/daytona-secrets-volume/SKILL.md
.opencode/skills/daytona-seeded-cloud-demo/SKILL.md
.opencode/skills/daytona-windows-cert/SKILL.md
.opencode/skills/diagnose-a-red-run/SKILL.md
.opencode/skills/fraimz/SKILL.md
.opencode/skills/get-env-var/SKILL.md
.opencode/skills/openwork-models/SKILL.md
.opencode/skills/prove-a-pr/SKILL.md
.opencode/skills/publish-evidence/SKILL.md
.opencode/skills/run-evals/SKILL.md
.opencode/skills/run-tests/SKILL.md
.opencode/skills/shadcn/SKILL.md
.opencode/skills/upload-photo/SKILL.md
.opencode/skills/write-a-spec/SKILL.md
.warden/skills/desktop-den-sync-review/SKILL.md
.warden/skills/diff-security-review/SKILL.md

Metadata

Files
0
Version
ff5d298
Hash
a6a4e406
Indexed
2026-08-20 11:35

inicio - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-09-17 05:18
浙ICP备14020137号-1