К основному содержанию
скилл CX Codex

deno-typescript — скилл для Claude Code: что делает и как установить

Скилл с правилами разработки на Deno и TypeScript: архитектура проекта, встроенные инструменты, модель разрешений и работа с Deno KV или Hono.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add Mindrally/skills --skill deno-typescript -a claude-code
Открыть на GitHub

Что делает deno-typescript

Пакет правил задаёт стандарты написания кода под среду Deno. Скилл исключает тип any, требуя строгой типизации параметров и возвращаемых значений функций. Вместо enum предписывается использовать объекты с директивой as const. Файловая структура опирается на модули ES с обязательными расширениями файлов, реестр JSR и управление зависимостями через deps.ts либо deno.json.

В набор входят шаблоны для HTTP-сервера Deno.serve, интеграции с фреймворком Hono и работы с Deno KV. Для проверки кода используются модуль std/assert и встроенные утилиты форматирования.

Среда Deno исполняет программы в изолированной песочнице. Скриптам понадобятся явные флаги запуска вроде --allow-net или --allow-read, иначе рантайм заблокирует сетевые запросы и чтение файлов.

Какие задачи решает

  • организовать структуру каталогов и карту импортов в deno.json
  • сконфигурировать флаги разрешений для доступа к сети и файлам
  • написать серверную логику на Deno.serve, Hono или Fresh
  • внедрить хранилище данных Deno KV
  • подготовить модульные тесты на базе std/assert

Примеры запросов агенту

  • Напиши REST-эндпоинт на Hono для Deno с валидацией через Zod
  • Создай модуль для сохранения и выборки записей из Deno KV по префиксу
  • Сделай BDD-тесты для user_service.ts с проверкой ошибок через assertRejects

Как установить deno-typescript

1Через Skills CLI (Vercel)

npx skills add Mindrally/skills --skill deno-typescript -a claude-code

2Вручную: положить файлы

~/.claude/skills/deno-typescript/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/deno-typescript/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о deno-typescript

Как установить deno-typescript в Claude Code?

Выполните в терминале команду npx skills add Mindrally/skills --skill deno-typescript -a claude-code.

Что делает этот скилл?

Он задаёт правила разработки на Deno: запрет any, сборку зависимостей через deps.ts или deno.json, запуск Deno.serve и тестирование с помощью встроенных средств.

Как в правилах настраивается безопасность?

Скилл требует указывать только необходимые флаги вроде --allow-net или --allow-env при запуске либо запрашивать доступы в коде через Deno.permissions.request.

Исходный текст

SKILL.md · Apache-2.0
---
name: deno-typescript
description: Guidelines for developing with Deno and TypeScript using modern runtime features, security model, and native tooling
metadata:
  maintainer: Mindrally
  source: https://github.com/Mindrally/skills
---

# Deno TypeScript Development

You are an expert in Deno and TypeScript development with deep knowledge of building secure, modern applications using Deno's native TypeScript support and built-in tooling.

## TypeScript General Guidelines

### Basic Principles

- Use English for all code and documentation
- Always declare types for variables and functions (parameters and return values)
- Avoid using `any` type - create necessary types instead
- Use JSDoc to document public classes and methods
- Write concise, maintainable, and technically accurate code
- Use functional and declarative programming patterns
- No configuration needed - Deno runs TypeScript natively

### Nomenclature

- Use PascalCase for classes, types, and interfaces
- Use camelCase for variables, functions, and methods
- Use kebab-case for file and directory names
- Use UPPERCASE for environment variables
- Use descriptive variable names with auxiliary verbs: `isLoading`, `hasError`, `canDelete`
- Start each function with a verb

### Functions

- Write short functions with a single purpose
- Use arrow functions for simple operations
- Use async/await for asynchronous operations
- Prefer the RO-RO pattern for multiple parameters

### Types and Interfaces

- Prefer interfaces over types for object shapes
- Avoid enums; use const objects with `as const`
- Use Zod for runtime validation with inferred types
- Use `readonly` for immutable properties

## Deno-Specific Guidelines

### Project Structure

```
src/
  routes/
    {resource}/
      mod.ts
      handlers.ts
      validators.ts
  middleware/
    auth.ts
    logger.ts
  services/
    {domain}_service.ts
  types/
    mod.ts
  utils/
    mod.ts
  deps.ts
  main.ts
deno.json
```

### Module System

- Use ES modules with explicit file extensions
- Use `deps.ts` pattern for centralized dependency management
- Import from URLs or use import maps in `deno.json`
- Use JSR (jsr.io) for Deno-native packages

```typescript
// deps.ts - centralized dependencies
export { serve } from "https://deno.land/[email protected]/http/server.ts";
export { z } from "https://deno.land/x/[email protected]/mod.ts";

// Using import maps in deno.json
{
  "imports": {
    "std/": "https://deno.land/[email protected]/",
    "hono": "https://deno.land/x/[email protected]/mod.ts"
  }
}
```

### Security Model

Deno is secure by default. Request only necessary permissions:

```bash
# Run with specific permissions
deno run --allow-net --allow-read=./data --allow-env main.ts

# Permission flags
--allow-net=example.com    # Network access to specific domains
--allow-read=./path        # File read access
--allow-write=./path       # File write access
--allow-env=API_KEY        # Environment variable access
--allow-run=cmd            # Subprocess execution
```

```typescript
// Programmatic permission requests
const status = await Deno.permissions.request({ name: "net", host: "api.example.com" });
if (status.state === "granted") {
  // Network access granted
}
```

### HTTP Server with Deno.serve

```typescript
// Simple HTTP server
Deno.serve({ port: 8000 }, (req) => {
  const url = new URL(req.url);

  if (url.pathname === "/api/users" && req.method === "GET") {
    return Response.json({ users: [] });
  }

  return new Response("Not Found", { status: 404 });
});
```

### Using Hono with Deno

```typescript
import { Hono } from "https://deno.land/x/hono/mod.ts";

const app = new Hono();

app.get("/", (c) => c.text("Hello Deno!"));
app.get("/api/users", (c) => c.json({ users: [] }));

Deno.serve(app.fetch);
```

### Using Fresh Framework

```typescript
// routes/index.tsx
import { PageProps } from "$fresh/server.ts";

export default function Home(props: PageProps) {
  return (
    <div>
      <h1>Welcome to Fresh</h1>
    </div>
  );
}

// routes/api/users.ts
import { Handlers } from "$fresh/server.ts";

export const handler: Handlers = {
  async GET(_req, _ctx) {
    const users = await getUsers();
    return Response.json(users);
  },
};
```

### Database Integration

```typescript
// Using Deno KV (built-in key-value store)
const kv = await Deno.openKv();

// Set a value
await kv.set(["users", "1"], { name: "John", email: "[email protected]" });

// Get a value
const result = await kv.get(["users", "1"]);
console.log(result.value);

// List values
const entries = kv.list({ prefix: ["users"] });
for await (const entry of entries) {
  console.log(entry.key, entry.value);
}
```

### Environment Variables

```typescript
// Access environment variables (requires --allow-env)
const apiKey = Deno.env.get("API_KEY");

// Using dotenv
import { load } from "https://deno.land/std/dotenv/mod.ts";
const env = await load();
```

### Testing with Built-in Test Runner

```typescript
// user_test.ts
import { assertEquals, assertRejects } from "https://deno.land/std/assert/mod.ts";
import { describe, it, beforeEach } from "https://deno.land/std/testing/bdd.ts";
import { getUser, createUser } from "./user_service.ts";

describe("User Service", () => {
  beforeEach(() => {
    // Setup
  });

  it("should create a user", async () => {
    const user = await createUser({ name: "John", email: "[email protected]" });
    assertEquals(user.name, "John");
  });

  it("should throw for invalid email", async () => {
    await assertRejects(
      () => createUser({ name: "John", email: "invalid" }),
      Error,
      "Invalid email"
    );
  });
});

// Run tests
// deno test --allow-net --allow-read
```

### Built-in Tooling

```bash
# Formatting
deno fmt

# Linting
deno lint

# Type checking
deno check main.ts

# Bundle
deno bundle main.ts bundle.js

# Compile to executable
deno compile --allow-net main.ts

# Documentation generation
deno doc main.ts

# Dependency inspection
deno info main.ts
```

### Configuration with deno.json

```json
{
  "tasks": {
    "dev": "deno run --watch --allow-net --allow-env main.ts",
    "start": "deno run --allow-net --allow-env main.ts",
    "test": "deno test --allow-net",
    "lint": "deno lint",
    "fmt": "deno fmt"
  },
  "imports": {
    "std/": "https://deno.land/[email protected]/",
    "@/": "./src/"
  },
  "compilerOptions": {
    "strict": true,
    "lib": ["deno.window"]
  },
  "lint": {
    "rules": {
      "tags": ["recommended"]
    }
  },
  "fmt": {
    "indentWidth": 2,
    "singleQuote": true
  }
}
```

### Error Handling

```typescript
class AppError extends Error {
  constructor(
    message: string,
    public statusCode: number = 500,
    public code: string = "INTERNAL_ERROR"
  ) {
    super(message);
    this.name = "AppError";
  }
}

const handleRequest = async (req: Request): Promise<Response> => {
  try {
    return await processRequest(req);
  } catch (error) {
    if (error instanceof AppError) {
      return Response.json(
        { error: error.message, code: error.code },
        { status: error.statusCode }
      );
    }
    console.error(error);
    return Response.json(
      { error: "Internal Server Error" },
      { status: 500 }
    );
  }
};
```

### Web Standards

Deno embraces web standards. Use:

- `fetch()` for HTTP requests
- `Request` and `Response` objects
- `URL` and `URLSearchParams`
- `Web Crypto API` for cryptography
- `Streams API` for data streaming
- `FormData` for multipart data

### Performance

- Use web streams for large data processing
- Leverage Deno KV for fast key-value storage
- Use `Deno.serve` for high-performance HTTP
- Compile to standalone executables for deployment

© Mindrally · Apache-2.0 · Mindrally/skills

Похожие скиллы

Все скиллы по теме «Языки программирования» →
migrate-to-shoehorn Matt Pocock Переводит type assertions с as в тестах на функции из @total-typescript/shoehorn. Нужен для частичных объектов и намеренно неверных данных в проверках. 475 388установок write-swift emilkowalski Скилл помогает писать, проверять и переносить код на Swift с учётом модели языка. Подойдёт, когда нужно разобраться с конкурентностью, ошибкой или циклом удержания объектов. CX Codex +1 119 300установок megacave JuliusBrussee Переводит ответы ассистента на классический китайский язык (вэньянь) для экономии места на экране. Активируется командами /megacave или /caveman wenyan. CX Codex +1 25 400установок find-docs upstash Тянет актуальную документацию, справочники API и примеры кода для любой библиотеки через Context7 CLI. Пригодится, когда агент отвечает по устаревшим данным обучения. CX Codex +1 9 400установок typescript-advanced-types Seth Hobson Помогает агенту писать сложную типизацию TypeScript: generics, conditional types и преобразования типов. Нужен для библиотек, API-клиентов и строгих конфигураций. CX Codex 92 169установок smart-explore thedotmack Структурно ищет функции и классы через tree-sitter. Пригодится, когда нужно разобраться в кодовой базе без чтения всех файлов. CX Codex +1 7 300установок

Из того же набора214

pwa-development Набор правил по разработке PWA: создание веб-манифеста, сервисных воркеров, стратегий кэширования и работы без сети. CX Codex +1 768установок styled-components-best-practices Задаёт правила архитектуры CSS-in-JS в React: изоляцию стилей, структуру файлов, типизацию темы в TypeScript и работу с ThemeProvider. Пригодится при вёрстке дизайн-систем. CX Codex +1 762установок c-sharp Задаёт агенту стиль кода на C#: именование, async, DI, тесты, Blazor и Unity. Пригодится, когда проект на .NET и не хочется каждый раз объяснять конвенции. CX Codex +1 760установок data-analyst Скилл задаёт агенту правила работы с pandas, numpy, matplotlib и seaborn: воспроизводимые пайплайны, проверка качества данных, аккуратные графики. CX Codex +1 759установок bitbucket-workflow Скилл задаёт агенту правила работы с Bitbucket: оформление пул-реквестов, конфигурация Pipelines, связка с Jira и ветвление по Gitflow. CX Codex +1 759установок transformers-huggingface Скилл для работы с библиотекой Hugging Face Transformers: загрузка моделей, токенизация, файнтюнинг через Trainer и оптимизация инференса. CX Codex +1 758установок go Скилл задаёт агенту правила идиоматичного Go: слоистая архитектура, работа с net/http, горутины, табличные тесты. Пригодится, когда пишете бэкенд на Go. CX Codex +1 757установок svelte Инструкция для ИИ-агентов по разработке на Svelte 5 и SvelteKit с рунами, сниппетами, SSR и правилами миграции со Svelte 4. CX Codex +1 753установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой