From my-skills
Daytona sandbox companion. Load for sandbox up/status/push/exec/pull/down/preview/smoke-test requests, adopting existing sandboxes, artifact and git-sync workflows, and sandbox environment variables or secrets.
npx claudepluginhub atomlink-ye/my-claude-plugins --plugin skill-creatorThis skill uses the workspace's default tool permissions.
Daytona provides remote cloud sandboxes for running code, tests, and services in isolation. This skill manages the full sandbox lifecycle — create, push code, execute, pull results, preview, and tear down.
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Processes PDFs: extracts text/tables/images, merges/splits/rotates pages, adds watermarks, creates/fills forms, encrypts/decrypts, OCRs scans. Activates on PDF mentions or output requests.
Share bugs, ideas, or general feedback.
Daytona provides remote cloud sandboxes for running code, tests, and services in isolation. This skill manages the full sandbox lifecycle — create, push code, execute, pull results, preview, and tear down.
This skill is a runtime adapter. It documents how to drive Daytona sandboxes; it does not decide whether a given task should run remotely instead of locally. That decision belongs to the orchestration layer (team-lead-orchestration) and any local routing profile that captures host constraints such as memory pressure, secrets, or quota.
Set the manager script path from this skill path:
SCRIPT="${SKILL_ROOT}/scripts/daytona-manager.mjs"
${SKILL_ROOT} is the path to this daytona-companion skill directory. Set it from the loaded skill path; do not prepend another install root.
From the marketplace root, the direct manager entrypoint is skills/daytona-companion/scripts/daytona-manager.mjs.
The most common end-to-end flow:
# 1. Create (or reconnect to) a sandbox
node "$SCRIPT" up --directory "$WORK_DIR" --task-id "$TASK_ID" --class small
# 2. Push local code to the sandbox. Relative remote paths resolve under the sandbox user's $HOME.
node "$SCRIPT" push --directory "$WORK_DIR" --path "$WORK_DIR" --remote-path "workspace/$TASK_ID"
# 3. Execute tests remotely
node "$SCRIPT" exec --directory "$WORK_DIR" --cwd "workspace/$TASK_ID" -- pnpm test
# 4. Optional: pull stdout/stderr/exit-code artifacts for later inspection
node "$SCRIPT" pull --directory "$WORK_DIR" --output "$WORK_DIR/artifacts/daytona/$TASK_ID"
# 5. Tear down when done
node "$SCRIPT" down --directory "$WORK_DIR"
If a sandbox was created outside this script (e.g. via Daytona CLI directly):
node "$SCRIPT" adopt --directory "$WORK_DIR" --task-id "$TASK_ID" --sandbox-id "$SANDBOX_ID" --remote-path "/workspace/$TASK_ID"
node "$SCRIPT" status --directory "$WORK_DIR" # local cached state
node "$SCRIPT" status --directory "$WORK_DIR" --refresh # force network check
node "$SCRIPT" preview --directory "$WORK_DIR" --port 3000
For a long implementation iteration, use Daytona for sandbox lifecycle and preview, then launch agents through the remote Paseo daemon from the local machine:
# 1. Create/reconnect, then pin the remote workspace path used by this image.
node "$SCRIPT" up --directory "$WORK_DIR" --task-id "$TASK_ID" --class large
node "$SCRIPT" adopt --directory "$WORK_DIR" --task-id "$TASK_ID" --sandbox-id "$SANDBOX_ID" --remote-path "/workspace"
# 2. Bootstrap remote Paseo/OpenCode inside the sandbox.
node "$SCRIPT" exec --directory "$WORK_DIR" --cwd "/workspace" -- \
sh -lc 'PASEO_DAEMON_LISTEN=0.0.0.0:6767 paseo daemon start --listen 0.0.0.0:6767 --hostnames true --no-relay'
# 3. Expose Paseo and use the returned host:port with local paseo commands.
node "$SCRIPT" preview --directory "$WORK_DIR" --port 6767
Do not run daytona exec ... paseo run ... to spawn remote agents. exec is for sandbox bootstrap, direct commands, and artifact probes; remote agents should be addressable from local via paseo run --host "$REMOTE_PASEO_HOST" ....
When you need commit history preserved:
node "$SCRIPT" push --directory "$WORK_DIR" --mode git --branch "daytona/$TASK_ID"
# ... work remotely ...
node "$SCRIPT" pull --directory "$WORK_DIR" --mode git --branch "daytona/$TASK_ID"
Git mode transfers committed history only — uncommitted files are not included.
Validates the entire lifecycle in one command:
node "$SCRIPT" smoke-test --class small --include-git --include-preview
| You need to... | Read |
|---|---|
| Understand sandbox create/adopt/exec/delete in detail | references/sandbox-lifecycle.md |
| Push/pull files, choose bundle vs. git mode, handle artifacts | references/artifact-workflows.md |
| Bootstrap a remote Paseo/OpenCode runtime in one warm sandbox | references/remote-agent-runtime.md |
| Find where state is stored, configure env vars and tokens | references/state-and-secrets.md |
| Debug stale status, command failures, secret leaks | references/troubleshooting.md |
~/.daytona/claude-code/projects/, keyed by project directory. Never store state in the project tree or skill source.--: exec --directory "$WORK_DIR" -- pnpm test.small|medium|large — default to small unless the workload needs more.preview plus local paseo run --host "$REMOTE_PASEO_HOST" for remote agent trees; don't hide agents behind daytona exec.