π¦ ClawHub
Deno
by @ivangdavila
Build with Deno runtime avoiding permission gotchas, URL import traps, and Node.js migration pitfalls.
TERMINAL
clawhub install denoπ About This Skill
name: Deno slug: deno version: 1.0.0 description: "Build with Deno runtime avoiding permission gotchas, URL import traps, and Node.js migration pitfalls." metadata: {"clawdbot":{"emoji":"π¦","requires":{"bins":["deno"]},"os":["linux","darwin","win32"]}}
When to Use
User needs Deno expertise β secure TypeScript runtime with permissions model. Agent handles permission configuration, dependency management via URLs/npm, and migration from Node.js.
Quick Reference
| Topic | File |
|-------|------|
| Permission system | permissions.md |
| Imports and dependencies | imports.md |
| Node.js migration | node-compat.md |
Permission Traps
--allow-all in development β then production crashes because you don't know what permissions you actually need--allow-read without path β grants access to entire filesystem, security hole--allow-run without list β subprocess can run anything, specify: --allow-run=git,npm--allow-env without list β leaks all env vars, specify: --allow-env=API_KEY,DATABASE_URL--allow-net without list β can connect anywhere, specify hosts: --allow-net=api.example.com--no-promptImport Traps
deno.lock@^1.0.0 semver syntax doesn't exist β use exact URLs or import mapsdeno.json, not separate file (Deno 2.x)TypeScript Traps
.ts extension required in imports β model generates extensionless imports that failtsconfig.json paths ignored β Deno uses import maps in deno.json, not tsconfigimport type or bundler may fail/// β handled differently than tsc, may be ignoredDeployment Traps
deno compile includes runtime β binary is 50MB+ minimum--cached-only requires prior cache β fresh server needs deno cache firstDeno.env.get("VAR") not process.env.VARDeno.addSignalListener not process.on("SIGTERM")Testing Traps
Deno.test different from Jest β no describe, different assertionsnpm Compatibility Traps
npm: specifier β works for most packages but native addons failnode: specifier required β import fs from 'fs' fails, need import fs from 'node:fs'node_modules optional β enable with "nodeModulesDir": true in deno.jsonpackage.json scripts β not automatically supported, use deno.json tasksRuntime Differences
Deno.readTextFile vs fs.readFile β different API, different error typesfetch is global β no import needed, unlike Node 18-β‘ When to Use
User needs Deno expertise β secure TypeScript runtime with permissions model. Agent handles permission configuration, dependency management via URLs/npm, and migration from Node.js.