Agent Skillsdifferent-ai/openwork › daytona-seeded-cloud-demo

daytona-seeded-cloud-demo

GitHub

用于快速启动、种子数据填充及维持 Daytona 云端演示沙箱的自动化技能,提供持久化环境、预置 Acme Robotics 测试账号及健康检查验证。

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

触发场景

用户请求启动或准备 OpenWork Cloud/Den Daytona 演示实例 需要获取演示环境的 URL 和登录凭证 要求保持演示沙箱持续运行

安装

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

非标准路径

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

不安装直接使用

npx skills use different-ai/openwork@daytona-seeded-cloud-demo

指定 Agent (Claude Code)

npx skills add different-ai/openwork --skill daytona-seeded-cloud-demo -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-seeded-cloud-demo",
    "description": "Daytona seeded cloud demo, demo credentials, Acme Robotics seed. Use when the user asks to spin up, keep running, seed, or prepare an OpenWork Cloud\/Den Daytona demo instance."
}

Daytona Seeded Cloud Demo

Use this skill to quickly create a persistent-enough OpenWork Cloud/Den Daytona server demo, seed it with Acme Robotics demo data, validate the login, and return copy-pasteable demo details.

Goal

Start a server-only Daytona sandbox for demos, seed the Den database, keep the sandbox warm, and return URLs plus credentials the user can share.

Fast Path

Run from the repo root. Prefer a stable sandbox name when the user wants to hand this to someone else:

BRANCH="$(git rev-parse --abbrev-ref HEAD)"
SANDBOX="openwork-cloud-demo-seeded"

bash .devcontainer/test-server-on-daytona.sh "$BRANCH" --name "$SANDBOX"

If the sandbox name already exists, choose a dated suffix instead, for example:

SANDBOX="openwork-cloud-demo-seeded-$(date +%Y%m%d-%H%M)"
bash .devcontainer/test-server-on-daytona.sh "$BRANCH" --name "$SANDBOX"

The helper prints these values. Capture them exactly:

DEN_WEB_URL="<printed Den Web URL>"
DEN_API_URL="<printed Den API URL>"

Seed Demo Data

Seed the sandbox after the Den stack is healthy. The seed uses the same encryption and auth secrets as .devcontainer/start-daytona-server.sh.

daytona exec "$SANDBOX" -- 'bash -lc '\''cd /workspace && pnpm --filter @openwork/email build && cd /workspace/ee/apps/den-api && OPENWORK_DEV_MODE=1 DATABASE_URL=mysql://root:password@127.0.0.1:3306/openwork_den DEN_DB_ENCRYPTION_KEY=daytona-den-db-encryption-key-please-change-1234567890 BETTER_AUTH_SECRET=daytona-den-auth-secret-please-change-1234567890 BETTER_AUTH_URL="'"$DEN_WEB_URL"'" pnpm exec tsx scripts/seed-demo-org.ts --reset'\'''

Expected seeded credentials:

Email: alex@acme.test
Password: OpenWorkDemo123!

Expected seed summary:

Org: Acme Robotics
Org slug: acme-robotics-demo
Owner: Alex Chen
Members: 17
Teams: 12
Pending invites: 3
Marketplace plugins: 14
Config objects: 71

Keep It Running

The server helper creates the sandbox with Daytona auto-stop enabled. If the CLI does not support changing auto-stop after creation, start a local keepalive loop that pings Den API every 30 minutes:

KEEPALIVE_DIR="${TMPDIR:-/tmp}/opencode"
mkdir -p "$KEEPALIVE_DIR"
KEEPALIVE_LOG="$KEEPALIVE_DIR/${SANDBOX}-keepalive.log"
nohup sh -c 'while true; do date; daytona exec '"$SANDBOX"' -- "bash -lc '\''curl -fsS http://127.0.0.1:8788/health >/dev/null'\''"; sleep 1800; done' >"$KEEPALIVE_LOG" 2>&1 &

Then confirm it is running:

ps -axo pid,command | rg "$SANDBOX.*8788/health|${SANDBOX}-keepalive"

Stop the keepalive later with the printed PID if the demo is no longer needed.

Validate

Validate public health through both routes:

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

Validate the demo account through Den Web auth. This is the most relevant browser-facing path:

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

Also validate direct Den API auth if the user will connect desktop or debug handoff:

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

Both auth calls should return redirect: false, a token, and user Alex Chen.

Final Response Template

Return concise demo details in this order:

Daytona cloud demo is running and seeded.

**Demo Access**
- Den Web: <DEN_WEB_URL>
- Den API: <DEN_API_URL>
- Sandbox: `<SANDBOX>`
- Sandbox ID: `<id from daytona info>`

**Credentials**
- Email: `alex@acme.test`
- Password: `OpenWorkDemo123!`

**Seeded Data**
- Org: `Acme Robotics`
- Org slug: `acme-robotics-demo`
- Owner: `Alex Chen`
- Members: `17`
- Teams: `12`
- Pending invites: `3`
- Marketplace plugins: `14`
- Config objects: `71`

**Validation**
- Public Den Web health passed.
- Public Den API health passed.
- Seeded login passed through Den Web and Den API auth routes.
- Keepalive loop is running locally and pings the sandbox every 30 minutes.

Troubleshooting

If older docs suggest running the Electron helper in a server-only mode, do not use that path unless this checkout supports it. Use .devcontainer/test-server-on-daytona.sh for server-only cloud demos.

If sign-in returns 403 for email verification, Den API is not running with OPENWORK_DEV_MODE=1 or did not restart after env changes. Restart the Den stack and rerun the seed.

If Den Web health passes but auth through Den Web fails while direct Den API auth passes, report that distinction and debug the Den Web proxy separately. Do not claim the browser-facing demo path passed from direct API auth alone.

版本历史

  • 757601b 当前 2026-08-28 23:00

    重构云组件,移除遗留的 worker proxy 路径及相关配置,统一为单一日程运行时访问入口。

  • 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-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-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
ef0b16ad
收录时间
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