Agent Skillsdifferent-ai/openwork › daytona-cloud-instance

daytona-cloud-instance

GitHub

用于在Daytona云端启动和验证OpenWork Cloud/Den服务器沙箱,收集URL以支持桌面端登录和市场准入演示。涵盖服务健康检查、开发者认证配置及API验证流程。

.opencode/skills/daytona-cloud-instance/SKILL.md different-ai/openwork

触发场景

启动或验证Daytona云沙箱环境 获取服务URL进行桌面端集成测试 验证Den API和健康状态

安装

npx skills add different-ai/openwork --skill daytona-cloud-instance -g -y
更多选项

非标准路径

npx skills add https://github.com/different-ai/openwork/tree/dev/.opencode/skills/daytona-cloud-instance -g -y

不安装直接使用

npx skills use different-ai/openwork@daytona-cloud-instance

指定 Agent (Claude Code)

npx skills add different-ai/openwork --skill daytona-cloud-instance -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": "daytona-cloud-instance",
    "description": "Daytona cloud instance, Den server, OpenWork Cloud, Marketplace onboarding, desktop plus cloud e2e, frame proof. Use when launching, validating, or recording Daytona cloud\/Den flows."
}

Daytona Cloud Instance

Use this skill to launch or validate an OpenWork Cloud/Den Daytona server sandbox and collect useful URLs for desktop sign-in and Marketplace onboarding demos.

Goal

Start the Den cloud stack in Daytona, confirm it is reachable, and return the URLs needed by Electron/Desktop validation.

Fast Path

From the repo root, prefer the existing Daytona server helper when available:

bash .devcontainer/test-server-on-daytona.sh $(git rev-parse --abbrev-ref HEAD)

If the branch is local-only, push it first or apply the local diff manually in the sandbox before validating.

If a sandbox already has manual patches, do not keep stacking new manual edits on top of them. Either stash them in the sandbox and check out the pushed PR branch, or create a fresh sandbox. A common safe sequence is:

daytona exec "$SERVER_SANDBOX" -- 'bash -lc '\''cd /workspace && git fetch origin <branch> && git stash push -u -m sandbox-manual-patch && git checkout -B <branch> FETCH_HEAD'\'''
daytona exec "$ELECTRON_SANDBOX" -- 'bash -lc '\''cd /workspace && git fetch origin <branch> && git stash push -u -m sandbox-manual-patch && git checkout -B <branch> FETCH_HEAD'\'''

Expected Services

The Den server sandbox should expose:

  • Den Web: port 3005
  • Den API: port 8788
  • Worker proxy: port 8789
  • Artifacts server: port 8090 when --artifacts-volume or recording is enabled

Get URLs with:

daytona preview-url "$SERVER_SANDBOX" -p 3005
daytona preview-url "$SERVER_SANDBOX" -p 8788
daytona preview-url "$SERVER_SANDBOX" -p 8789
daytona preview-url "$SERVER_SANDBOX" -p 8090

Dev Auth Defaults

For local and Daytona cloud testing, run Den API with:

OPENWORK_DEV_MODE=1

In dev mode, email verification is disabled by default so seeded/demo users can sign in without a real inbox. Override explicitly when needed:

DEN_REQUIRE_EMAIL_VERIFICATION=true
DEN_REQUIRE_EMAIL_VERIFICATION=false

Production defaults to requiring email verification unless explicitly disabled.

Validate the escape hatch against Den API directly before recording UI:

curl -fsS -X POST "$DEN_API_URL/api/auth/sign-in/email" \
  -H 'Content-Type: application/json' \
  --data '{"email":"alex@acme.test","password":"OpenWorkDemo123!"}'

If this returns 403 asking for verification, Den API is not running the branch or did not restart after the auth change. Restart Den API before recording.

Health Checks

Validate the server before driving UI:

curl -fsS "$DEN_API_URL/health"
curl -fsS "$DEN_WEB_URL/api/den/health"

Validate seeded auth if present:

curl -fsS -X POST "$DEN_WEB_URL/api/auth/sign-in/email" \
  -H 'Content-Type: application/json' \
  --data '{"email":"alex@acme.test","password":"OpenWorkDemo123!"}'

If the Den Web proxy returns 503 but the direct Den API request succeeds, continue debugging the proxy separately. Do not claim the browser sign-in path passed from the direct API response alone.

Den Web Mode

Prefer production Den Web for recordings. Next dev behind a Daytona proxy can leave client-only pages stuck on server-rendered loading states or produce origin/HMR problems.

Build and run production Den Web in the server sandbox:

daytona exec "$SERVER_SANDBOX" -- 'bash -lc '\''cd /workspace && pnpm --filter @openwork-ee/den-web build'\'''
daytona exec "$SERVER_SANDBOX" -- 'bash -lc '\''pkill -f "next dev --hostname 0.0.0.0 --port 3005" || true; pkill -f "next-server" || true'\'''
daytona exec "$SERVER_SANDBOX" -- 'bash -lc '\''cd /workspace && nohup pnpm --filter @openwork-ee/den-web exec next start --hostname 0.0.0.0 --port 3005 > /tmp/den-web-prod.log 2>&1 &'\'''

Then verify:

daytona exec "$SERVER_SANDBOX" -- 'curl -fsS http://127.0.0.1:3005/api/den/health'

If daytona exec appears to hang after starting next start, run a second status command. The server may be running while the original shell remains open because of background-process output handling.

Desktop Den Session Bridge

The gold path is a real Den Web sign-in plus desktop deep-link handoff. If the Daytona proxy breaks browser form submit or custom-protocol handling, you may bridge only after proving direct Den API auth works, and you must report the caveat in the PR evidence.

For a desktop Marketplace proof, inject the validated Den session into the Electron renderer with the exact storage keys the app reads:

localStorage.setItem('openwork.den.baseUrl', DEN_WEB_URL)
localStorage.setItem('openwork.den.apiBaseUrl', DEN_API_URL)
localStorage.setItem('openwork.den.authToken', TOKEN)
localStorage.setItem('openwork.den.activeOrgId', ORG_ID)
localStorage.setItem('openwork.den.activeOrgSlug', ORG_SLUG)
localStorage.setItem('openwork.den.activeOrgName', ORG_NAME)
window.dispatchEvent(new CustomEvent('openwork-den-settings-changed'))
window.dispatchEvent(new CustomEvent('openwork-den-session-updated', { detail: { token: TOKEN } }))

Use this only as a Daytona workaround. The final report must distinguish:

  • Den API auth passed.
  • Den Web/deep-link handoff was bridged because of Daytona proxy behavior.
  • Desktop Marketplace sync/import behavior passed.

Recording Flow

For founder/designer proof, record the actual journey:

  1. Den sign-in page shows clear Cloud value proposition.
  2. User signs in on Den.
  3. Den dashboard explains Marketplaces contain plugins and assigned marketplaces sync to desktop.
  4. Pretend download/open desktop handoff.
  5. Desktop signed-out Marketplace nudge says OpenWork works without an account.
  6. Desktop signs in to OpenWork Cloud.
  7. Marketplace refresh shows OpenWork Marketplace and org marketplaces.
  8. Built-ins show Built-in, with no install/remove actions.
  9. A live org plugin installs and appears in My Extensions as Connected.
  10. Workspace files materialize under .opencode.

Before every screenshot, check native overlays:

daytona exec "$ELECTRON_SANDBOX" -- 'bash -lc '\''DISPLAY=:99 wmctrl -l; ! DISPLAY=:99 wmctrl -l | grep -q "Authorize folder"'\'''

Do not publish a screenshot or video if a native folder picker is visible.

Also inspect at least one representative screenshot locally with the Read tool or another image viewer before sharing links. Window-list checks are not enough: a browser or app window can still obscure the claimed content.

版本历史

  • ff5d298 当前 2026-08-20 11:35

同 Skill 集合

.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-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/product-tutorial-pipeline/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

元信息

文件数
0
版本
757601b
Hash
3fadff20
收录时间
2026-08-20 11:35

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