> deno
Assists with building secure JavaScript and TypeScript applications using the Deno runtime. Use when creating servers, CLI tools, or scripts with Deno's built-in tooling, permission model, and web standards APIs. Trigger words: deno, deno deploy, deno serve, deno kv, deno permissions, secure runtime, jsr.
curl "https://skillshub.wtf/TerminalSkills/skills/deno?format=md"Deno
Overview
Deno is a secure JavaScript/TypeScript runtime with built-in tooling including a formatter, linter, test runner, and bundler. It features a permissions model that restricts file, network, and environment access by default, native TypeScript support without transpilation, and full web standards compatibility.
Instructions
- When creating servers, use
Deno.serve()for high-performance HTTP handling with Web Standards Request/Response, and enable parallel workers withdeno serve --parallelfor multi-core utilization. - When configuring security, specify permissions explicitly (
--allow-read,--allow-net,--allow-env) scoped to specific paths, hosts, or variable names. Never deploy with--allow-all. - When managing dependencies, use JSR (
jsr:) for versioned, type-checked packages,npm:specifier for npm packages, and configure import maps indeno.jsonfor clean paths. - When writing tests, use
Deno.test()with@std/assertassertions,@std/testingfor mocking, anddeno test --coveragefor coverage reports. Deno's sanitizers detect resource leaks automatically. - When building CLI tools, use
deno compileto produce standalone executables that cross-compile for Linux, macOS, and Windows with no runtime dependency. - When deploying to the edge, use Deno Deploy with Deno KV for key-value storage,
Deno.cron()for scheduled tasks, and queues for background processing. - When using Deno KV, structure keys hierarchically (
["users", id, "profile"]), useatomic()for transactions, and configure TTL withexpireInfor automatic expiration.
Examples
Example 1: Build a REST API with Deno KV
User request: "Create an API with Deno that stores data in Deno KV"
Actions:
- Create HTTP server with
Deno.serve()and route matching - Open KV store with
Deno.openKv()and define key structure - Implement CRUD operations using
kv.get(),kv.set(), andkv.atomic() - Set explicit permissions in
deno.jsontask definitions
Output: A secure API with embedded key-value storage, ready for Deno Deploy.
Example 2: Compile a CLI tool for distribution
User request: "Create a Deno CLI tool that can be distributed as a single binary"
Actions:
- Build the CLI with argument parsing using
@std/cli - Add file and network permissions scoped to required resources
- Write tests with
Deno.test()and run withdeno test - Compile to standalone binaries with
deno compile --targetfor each platform
Output: Cross-platform standalone executables with no runtime dependency.
Guidelines
- Always specify permissions explicitly in production; never deploy with
--allow-all. - Use
deno.jsonimports map for clean import paths instead of raw URLs. - Prefer JSR (
jsr:) over URL imports for versioned, type-checked, immutable packages. - Use
npm:specifier for npm packages instead of CDN URLs. - Run
deno fmtanddeno lintin CI for zero-config formatting and linting. - Use
Deno.serve()over third-party frameworks for simple APIs; it is faster and lighter. - Compile to standalone binary with
deno compilefor distribution with no runtime dependency.
> related_skills --same-repo
> zustand
You are an expert in Zustand, the small, fast, and scalable state management library for React. You help developers manage global state without boilerplate using Zustand's hook-based stores, selectors for performance, middleware (persist, devtools, immer), computed values, and async actions — replacing Redux complexity with a simple, un-opinionated API in under 1KB.
> zod
You are an expert in Zod, the TypeScript-first schema declaration and validation library. You help developers define schemas that validate data at runtime AND infer TypeScript types at compile time — eliminating the need to write types and validators separately. Used for API input validation, form validation, environment variables, config files, and any data boundary.
> xero-accounting
Integrate with the Xero accounting API to sync invoices, expenses, bank transactions, and contacts — and generate financial reports like P&L and balance sheet. Use when: connecting apps to Xero, automating bookkeeping workflows, syncing accounting data, or pulling financial reports programmatically.
> windsurf-rules
Configure Windsurf AI coding assistant with .windsurfrules and workspace rules. Use when: customizing Windsurf for a project, setting AI coding standards, creating team-shared Windsurf configurations, or tuning Cascade AI behavior.