Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Electron and Den, desktop plus cloud, two-sandbox e2e, cloud auth, marketplace, org policy, worker proxy, provider sync, desktop handoff. Validate Electron against a Daytona Den server with unified proof.
.claude/skills/devin-axis-daytona-electron-den/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 3% | 0% |
| case-05 | ✗→✓ | ▲ Improved | -8% | 0% |
| case-06 | ✗→✓ | ▲ Improved | -40% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -23% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -12% | 0% |
Use this skill for full-stack cloud behavior: one Daytona sandbox runs Den, and a separate Daytona sandbox runs the real Electron app pointed at that Den server.
Use the server skill first:
bashbash .devcontainer/test-server-on-daytona.sh <branch-or-commit>
Record the printed values:
SERVER_SANDBOXDEN_WEB_URLDEN_API_URLDEN_WORKER_PROXY_URLValidate server health:
bashcurl -sf "$DEN_WEB_URL/api/den/health" curl -sf "$DEN_API_URL/health"
bashbash .devcontainer/test-on-daytona.sh <branch-or-commit> \ --den-base-url "$DEN_WEB_URL" \ --den-api-base-url "$DEN_API_URL" \ --artifacts-volume
Add --require-signin when the expected behavior must be signed-out until cloud auth completes. Add --record-video --recording-name <name> when PR evidence is needed.
Before testing cloud behavior, prove Electron is using the Daytona Den server:
jsJSON.stringify({ hash: location.hash, text: document.body.innerText.slice(0, 1000) })
Then inspect the desktop bootstrap file:
bashdaytona exec "$SANDBOX" -- 'cat /workspace/.ipollowork-daytona/desktop-bootstrap.json'
Expected: baseUrl is DEN_WEB_URL and apiBaseUrl is DEN_API_URL, not production.
For seeded/demo auth, create the handoff URL from the Den API, then paste it into Electron's Cloud Account sign-in code field. Do not rely on browser navigation alone as proof that desktop auth completed.
Validate all of these:
/v1/me/orgs.For each cloud feature, use the fraimz loop:
Minimum assertions:
Report both server and Electron proof:
/tmp/den-*.log snippets.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 17,825 | 60,340 | +239% | 1 | 1 | 0% | 273 | 1,045 | +283% | 0 | 0 | — |
case-02 | fail→fail | 38,611 | 20,153 | -48% | 1 | 1 | 0% | 3,254 | 1,305 | -60% | 0 | 0 | — |
case-03 | fail→fail | 14,834 | 15,515 | +5% | 1 | 1 | 0% | 224 | 974 | +335% | 0 | 0 | — |
case-04 | fail→pass | 7,129 | 3,343 | -53% | 1 | 1 | 0% | 1,174 | 1,205 | +3% | 0 | 0 | — |
case-05 | fail→pass | 15,473 | 9,041 | -42% | 1 | 1 | 0% | 1,674 | 1,548 | -8% | 0 | 0 | — |
case-06 | fail→pass | 15,271 | 8,726 | -43% | 1 | 1 | 0% | 1,854 | 1,120 | -40% | 0 | 0 | — |
case-07 | fail→pass | 15,650 | 9,311 | -41% | 1 | 1 | 0% | 1,955 | 1,502 | -23% | 0 | 0 | — |
case-08 | fail→pass | 13,079 | 8,331 | -36% | 1 | 1 | 0% | 1,449 | 1,280 | -12% | 0 | 0 | — |
case-09 | fail→pass | 8,685 | 8,042 | -7% | 1 | 1 | 0% | 1,582 | 1,320 | -17% | 0 | 0 | — |
case-10 | fail→pass | 14,480 | 7,187 | -50% | 1 | 1 | 0% | 1,725 | 1,145 | -34% | 0 | 0 | — |
case-11 | fail→pass | 19,339 | 8,231 | -57% | 1 | 1 | 0% | 2,594 | 1,266 | -51% | 0 | 0 | — |
case-12 | fail→pass | 16,359 | 4,784 | -71% | 1 | 1 | 0% | 2,818 | 1,570 | -44% | 0 | 0 | — |
case-13 | fail→pass | 19,451 | 7,327 | -62% | 1 | 1 | 0% | 3,323 | 2,142 | -36% | 0 | 0 | — |
case-14 | fail→pass | 13,737 | 3,279 | -76% | 1 | 1 | 0% | 2,370 | 1,254 | -47% | 0 | 0 | — |
case-15 | fail→pass | 30,504 | 7,594 | -75% | 1 | 1 | 0% | 1,095 | 1,939 | +77% | 0 | 0 | — |
case-16 | fail→pass | 20,115 | 13,825 | -31% | 1 | 1 | 0% | 2,857 | 3,123 | +9% | 0 | 0 | — |
case-17 | fail→pass | 12,980 | 6,113 | -53% | 1 | 1 | 0% | 2,142 | 1,653 | -23% | 0 | 0 | — |
case-18 | pass→pass | 21,373 | 12,603 | -41% | 1 | 1 | 0% | 3,480 | 2,777 | -20% | 0 | 0 | — |
case-19 | fail→fail | 16,954 | 8,987 | -47% | 1 | 1 | 0% | 2,565 | 2,465 | -4% | 0 | 0 | — |
case-20 | pass→pass | 16,131 | 15,611 | -3% | 1 | 1 | 0% | 2,979 | 3,574 | +20% | 0 | 0 | — |
case-21 | pass→pass | 7,729 | 4,169 | -46% | 1 | 1 | 0% | 648 | 1,456 | +125% | 0 | 0 | — |
case-22 | pass→pass | 15,738 | 16,076 | +2% | 1 | 1 | 0% | 2,970 | 3,837 | +29% | 0 | 0 | — |
case-23 | fail→pass | 19,104 | 1,654 | -91% | 1 | 1 | 0% | 2,711 | 963 | -64% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 20 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +65 percentage points is the difference between those two pass rates over the 20 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.