deno-deploy
Deploy simple web pages and HTML apps live to the internet using the Deno Deploy REST API. Use this skill whenever the user wants to make something "live", "hosted", "shareable via URL", "deployed", or "accessible online" — even if they don't mention Deno explicitly. Also trigger when the user asks to build a web page, interactive app, or HTML project that would benefit from a live URL. Does not require the Deno MCP tool — this skill is fully standalone and uses the Deno API directly.
Install via CLI (Recommended)
clawhub install openclaw/skills/skills/hosainnet/deno-subhosting-deploy-skillDeno Deploy Skill (Standalone)
Deploy simple web pages and HTML apps to Deno Deploy using a bundled Python script that calls the Deno REST API directly. No MCP tool required.
Credentials Setup (First Time)
Before deploying, the user must create a Deno Subhosting organization and retrieve their credentials:
- Go to dash.deno.com/subhosting/new_auto and create a new subhosting org
- From the org dashboard, copy the org ID and access token
Then save them as config files under ~/.config/deno-deploy/:
mkdir -p ~/.config/deno-deploy
echo "your_token_here" > ~/.config/deno-deploy/access_token
echo "your_org_id_here" > ~/.config/deno-deploy/org_id
If these files don't exist, the deploy script will print a clear error with setup instructions. Direct the user to dash.deno.com/subhosting/new_auto to get started.
Step 1: Plan the App
Before writing code, think about:
- What HTML/CSS/JS is needed?
- Does it need external libraries? (Use CDN links — no npm installs)
- Is it purely static, or does it need a simple backend (e.g., an API route)?
For simple pages: serve everything from a single main.ts file with inline HTML.
Step 2: Write Good Deno-Compatible Code
Standard Pattern
All Deno Deploy apps must export a fetch handler:
export default {
async fetch(req: Request): Promise<Response> {
const html = `<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My App</title>
</head>
<body>
<!-- content here -->
</body>
</html>`;
return new Response(html, {
headers: { "Content-Type": "text/html; charset=utf-8" },
});
},
};
Key Rules
- No Node.js APIs — no
require(), nofs, nopath - No npm packages — use CDN links (e.g.
https://cdn.tailwindcss.com) - Single file — inline all HTML, CSS, JS as template literals in
main.ts - Always set Content-Type — include
charset=utf-8for HTML responses - Routing — use
new URL(req.url).pathnamefor multi-route apps
Useful CDN Libraries
| Purpose | URL |
|---|---|
| Tailwind CSS | https://cdn.tailwindcss.com |
| Alpine.js | https://cdn.jsdelivr.net/npm/alpinejs@3/dist/cdn.min.js |
| Chart.js | https://cdn.jsdelivr.net/npm/chart.js |
| Marked (markdown) | https://cdn.jsdelivr.net/npm/marked/marked.min.js |
Step 3: Save the Code to a File
Write the TypeScript code to a temporary file, e.g. /tmp/main.ts:
cat > /tmp/main.ts << 'EOF'
export default {
async fetch(req: Request): Promise<Response> {
...
},
};
EOF
Step 4: Deploy Using the Script
Run the bundled deploy script:
python scripts/deploy.py \
--name <project-name> \
--code /tmp/main.ts
Metadata
Not sure this is the right skill?
Describe what you want to build — we'll match you to the best skill from 16,000+ options.
Find the right skillPaste this into your clawhub.json to enable this plugin.
{
"plugins": {
"official-hosainnet-deno-subhosting-deploy-skill": {
"enabled": true,
"auto_update": true
}
}
}