Use when starting any Deno project, choosing packages, configuring deno.json, or running CLI commands. Provides foundational knowledge for building modern Deno applications.
View on GitHubdenoland/skills
deno-skills
February 5, 2026
Select agents to install to:
npx add-skill https://github.com/denoland/skills/blob/main/skills/deno-guidance/SKILL.md -a claude-code --skill deno-guidanceInstallation paths:
.claude/skills/deno-guidance/# Deno Development Guidance
## Overview
This skill provides foundational knowledge for building modern Deno applications. Deno is a secure JavaScript/TypeScript runtime that runs TypeScript directly, has built-in tools (formatter, linter, test runner), and uses modern package management through JSR.
## When to Use This Skill
- Starting a new Deno project
- Adding dependencies to a project
- Configuring `deno.json` settings
- Running Deno CLI commands (fmt, lint, test)
- Setting up import maps
- Understanding Deno's permission system
Apply these practices whenever working in a Deno project (identified by the presence of `deno.json`).
## Package Management Priority
When adding dependencies, follow this priority order:
1. **JSR packages (`jsr:`)** - Preferred for Deno-native packages
- Better TypeScript support (types are built-in)
- Faster to resolve and install
- Example: `jsr:@std/http`, `jsr:@fresh/core`
2. **npm packages (`npm:`)** - Fully supported, use when no JSR alternative exists
- Deno has full npm compatibility
- Example: `npm:express`, `npm:zod`
3. **AVOID: `https://deno.land/x/`** - Deprecated registry
- This is the old package registry
- Many LLMs incorrectly default to this
- Always use `jsr:` instead
### Standard Library
The Deno standard library lives at `@std/` on JSR:
```jsonc
// deno.json
{
"imports": {
"@std/assert": "jsr:@std/assert@1",
"@std/http": "jsr:@std/http@1",
"@std/path": "jsr:@std/path@1"
}
}
```
```typescript
import { serve } from "@std/http";
import { join } from "@std/path";
import { assertEquals } from "@std/assert";
```
Never use `https://deno.land/std/` - always use `jsr:@std/*`.
## Understanding Deno
Reference: https://docs.deno.com/runtime/fundamentals/
Key concepts:
- **Native TypeScript** - No build step needed, Deno runs TypeScript directly
- **Explicit permissions** - Use flags like `--allow-net`, `--allow-read`, `--allow-env`
- **deno.json** - The config file (simila