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

bun-nuxt — скилл для Claude Code: Nuxt 3 на рантайме Bun

Скилл объясняет агенту, как поднять Nuxt 3 на Bun: скрипты, пресет Nitro, серверные маршруты и деплой. Пригодится, если проект уже на Nuxt и вы хотите уйти с Node.

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

Что делает bun-nuxt

Скилл даёт агенту готовые шаблоны для связки Nuxt 3 и Bun. Внутри — команды запуска (bunx nuxi@latest init, bun install, bun run dev), вариант скриптов с флагом bun --bun и настройка nuxt.config.ts с nitro.preset: "bun". Без этого пресета серверные импорты вроде bun:sqlite падают с ошибкой Cannot find bun:sqlite — это повод проверить конфиг, если сборка ругается на модуль.

Отдельный блок про серверную часть: маршруты server/api, middleware, работа с файлами через Bun.file, утилиты на bun:sqlite, плагины Nitro и задачи по расписанию. Есть таблица частых ошибок и раздел с деплоем — сборка с NITRO_PRESET=bun, запуск .output/server/index.mjs и Dockerfile на образе oven/bun:1.

Про установку пакетов сказано честно: bunx nuxi init тянет и выполняет удалённый код. Bun по умолчанию блокирует post-install скрипты, разрешать их предлагается точечно через trustedDependencies в package.json. Ещё советуют настроить minimumReleaseAge в bunfig.toml и прогнать проверку пакетов через Socket CLI. Для полной настройки автор отсылает к скиллу dependency-upgrade.

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

  • перевести существующий Nuxt-проект на рантайм Bun
  • настроить пресет Nitro, чтобы работали серверные API Bun
  • подключить bun:sqlite в серверных маршрутах и утилитах
  • собрать production-образ Nuxt в Docker на базе Bun
  • разобраться с ошибками вроде Cannot find bun:sqlite или Hydration mismatch

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

  • Настрой Nuxt 3 на Bun: скрипты dev и build через bun --bun, пресет Nitro bun
  • Добавь серверный маршрут на bun:sqlite, который отдаёт список пользователей
  • Собери Dockerfile для Nuxt на образе oven/bun:1 и запусти .output/server/index.mjs

Как установить bun-nuxt

1Через Skills CLI (Vercel)

npx skills add secondsky/claude-skills --skill bun-nuxt -a claude-code

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

~/.claude/skills/bun-nuxt/SKILL.md

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

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

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

nuxt-core Скилл для ИИ-агента: подсказывает, как устроен Nuxt 4 — структура каталогов, конфиг, роутинг, SEO и обработка ошибок. CX Codex +1 390установок bun-jest-migration Скилл ведёт миграцию тестов с Jest на встроенный раннер Bun: импорты, моки, таймеры, конфиг. CX Codex +1 386установок nuxt-data Скилл для работы с данными в Nuxt 4: композаблы, useFetch и useAsyncData, состояние через useState и Pinia. CX Codex +1 388установок bun-macros Скилл объясняет, как выполнять JavaScript во время бандлинга и подставлять результат прямо в код. Пригодится, когда версия, git-хэш или файл нужны в сборке, а не в рантайме. CX Codex +1 385установок multi-ai-consultant Скилл зовёт сторонние ИИ на помощь, когда Claude застрял на баге или выбирает архитектуру. Ответы сводятся в один разбор. CX Codex +1 384установок graphql-implementation Скилл для сборки GraphQL API: схема, резолверы, обработка ошибок и защита от N+1. Пригодится при переходе с REST и при подписках в реальном времени. CX Codex +1 380установок model-deployment Скилл для вывода обученной модели в прод: FastAPI-сервер, Docker, Kubernetes, мониторинг и отлов дрейфа. Пригодится, когда модель уже готова, а сервинг ещё нет. CX Codex +1 379установок cloudflare-agents Скилл для сборки ИИ-агентов на Cloudflare Workers: инструменты, MCP, провайдеры LLM. Пригодится, когда агент живёт прямо в воркере. CX Codex +1 378установок

Похожие

nuxt Anthony Fu Скилл добавляет поддержку Nuxt 5 — полнофункционального Vue-фреймворка с серверным рендерингом, файловой маршрутизацией и автоимпортами. Помогает агенту писать серверные маршруты, работать с useFetch, middleware и гибридным рендерингом. CX Codex +1 24 100установок clerk-nuxt-patterns clerk Скилл подсказывает агенту паттерны авторизации @clerk/nuxt для Nuxt 3. Пригодится при настройке серверных роутов Nitro, SSR-гидратации и защите страниц. CX Codex +1 13 900установок Expert Nuxt Developer официальный github Помогает разрабатывать приложения на Nuxt 3 и Nitro с типизацией на TypeScript. Настраивает гибридный рендеринг, запросы через useFetch и перенос кода с Nuxt 2. ★ 40 418звёзд репо nuxt-modules onmax Скилл помогает создавать модули для Nuxt: локальные расширения в папке modules/, пакеты для npm, серверные роуты и плагины с настройкой тестов и CI/CD. CX Codex +1 2 700установок nuxt-ui nuxt Помогает агенту собирать интерфейсы на базе @nuxt/ui v4, настраивать темы Tailwind CSS и правильно выбирать компоненты библиотеки. CX Codex +1 19 800установок nuxt-content onmax Скилл для работы с @nuxt/content: коллекции, схемы, запросы и рендер Markdown. Пригодится, когда проект на Nuxt растёт и контент пора приводить к типам. CX Codex +1 2 800установок

Рядом в теме «Фронтенд и UI»

Всё по теме «Фронтенд и UI» →

Вопросы о bun-nuxt

Как установить bun-nuxt в Claude?

Выполните npx skills add secondsky/claude-skills --skill bun-nuxt -a claude-code. После этого файл скилла лежит в ~/.claude/skills/bun-nuxt/SKILL.md.

Что делает скилл bun-nuxt?

Он подсказывает агенту, как запускать Nuxt 3 на Bun: скрипты, конфиг Nitro, серверные маршруты, работа с базой и деплой. Плюс разбор частых ошибок.

Что нужно учесть при установке зависимостей?

bunx nuxi init скачивает и выполняет удалённый код. Post-install скрипты в Bun отключены по умолчанию, разрешать их стоит точечно через trustedDependencies, а новые версии пакетов — придерживать через minimumReleaseAge.

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

SKILL.md · MIT
---
name: bun-nuxt
description: Use when running Nuxt 3 with Bun runtime, building Vue/Nuxt apps with Bun, or configuring Nuxt projects to use Bun for development and production.
license: MIT
---

# Bun Nuxt

Run Nuxt 3 applications with Bun for faster development.

## Quick Start

```bash
# Create new Nuxt project
bunx nuxi@latest init my-app
cd my-app

# Install dependencies
bun install

# Development
bun run dev

# Build
bun run build

# Preview production
bun run preview
```

## Secure Installation

Scaffolding tools like `bunx nuxi init` download and execute remote code. Before running, follow supply chain security best practices:

- **Block post-install scripts** — Bun disables them by default; allow specific packages via `trustedDependencies` in `package.json`
- **Cooldown period** — Configure `minimumReleaseAge` in `bunfig.toml` to wait 7 days for new versions
- **Audit before installing** — Run `socket package score npm <pkg>` or use `socket npm install <pkg>` to check packages

Load the `dependency-upgrade` skill for full security configuration including Socket CLI integration, cooldown setup, lockfile validation, and CI enforcement.

## Project Setup

### package.json

```json
{
  "scripts": {
    "dev": "nuxt dev",
    "build": "nuxt build",
    "generate": "nuxt generate",
    "preview": "nuxt preview",
    "postinstall": "nuxt prepare"
  },
  "dependencies": {
    "nuxt": "^4.0.0",
    "vue": "^3.5.0"
  }
}
```

### Use Bun Runtime

```json
{
  "scripts": {
    "dev": "bun --bun nuxt dev",
    "build": "bun --bun nuxt build",
    "preview": "bun --bun .output/server/index.mjs"
  }
}
```

## Configuration

### nuxt.config.ts

```typescript
export default defineNuxtConfig({
  // Enable SSR
  ssr: true,

  // Nitro configuration
  nitro: {
    // Use Bun preset
    preset: "bun",

    // External packages
    externals: {
      external: ["bun:sqlite"],
    },
  },

  // Development
  devServer: {
    port: 3000,
  },

  // Modules
  modules: ["@nuxt/ui", "@pinia/nuxt"],
});
```

## Using Bun APIs

### Server Routes

```typescript
// server/api/users.ts
import { Database } from "bun:sqlite";

export default defineEventHandler(async (event) => {
  const db = new Database("data.sqlite");
  const users = db.query("SELECT * FROM users").all();
  db.close();

  return users;
});
```

### Server Middleware

```typescript
// server/middleware/auth.ts
export default defineEventHandler(async (event) => {
  const token = getHeader(event, "Authorization");

  if (!token && event.path.startsWith("/api/protected")) {
    throw createError({
      statusCode: 401,
      message: "Unauthorized",
    });
  }
});
```

### File Operations

```typescript
// server/api/files/[name].ts
export default defineEventHandler(async (event) => {
  const name = getRouterParam(event, "name");
  const file = Bun.file(`./data/${name}`);

  if (!(await file.exists())) {
    throw createError({
      statusCode: 404,
      message: "File not found",
    });
  }

  return file.text();
});
```

## Composables

### useFetch with Server Data

```vue
<script setup lang="ts">
// Fetches from server/api/users.ts
const { data: users, pending, error } = await useFetch("/api/users");
</script>

<template>
  <div v-if="pending">Loading...</div>
  <div v-else-if="error">Error: {{ error.message }}</div>
  <ul v-else>
    <li v-for="user in users" :key="user.id">{{ user.name }}</li>
  </ul>
</template>
```

### Server-Only Composables

```typescript
// composables/useDatabase.ts
export const useDatabase = () => {
  // Only runs on server
  if (process.server) {
    const { Database } = require("bun:sqlite");
    return new Database("data.sqlite");
  }
  return null;
};
```

## Server Utilities

### H3 Event Handling

```typescript
// server/api/users.post.ts
export default defineEventHandler(async (event) => {
  // Read body
  const body = await readBody(event);

  // Get query params
  const query = getQuery(event);

  // Get headers
  const auth = getHeader(event, "Authorization");

  // Get cookies
  const session = getCookie(event, "session");

  // Set cookie
  setCookie(event, "visited", "true", {
    httpOnly: true,
    maxAge: 60 * 60 * 24,
  });

  return { success: true };
});
```

### Database Utility

```typescript
// server/utils/db.ts
import { Database } from "bun:sqlite";

let db: Database | null = null;

export function getDb() {
  if (!db) {
    db = new Database("data.sqlite");
    db.run(`
      CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY,
        name TEXT NOT NULL
      )
    `);
  }
  return db;
}
```

```typescript
// server/api/users.ts
export default defineEventHandler(() => {
  const db = getDb();
  return db.query("SELECT * FROM users").all();
});
```

## Nitro Features

### Server Plugins

```typescript
// server/plugins/database.ts
export default defineNitroPlugin((nitroApp) => {
  // Initialize on startup
  console.log("Database initialized");

  // Cleanup on shutdown
  nitroApp.hooks.hook("close", () => {
    console.log("Closing database");
  });
});
```

### Scheduled Tasks

```typescript
// server/tasks/cleanup.ts
export default defineTask({
  meta: {
    name: "cleanup",
    description: "Clean old data",
  },
  run() {
    const db = getDb();
    db.run("DELETE FROM logs WHERE created_at < ?", [
      Date.now() - 7 * 24 * 60 * 60 * 1000,
    ]);
    return { result: "Cleaned" };
  },
});
```

## Deployment

### Build for Bun

```bash
# Build with Bun preset
NITRO_PRESET=bun bun run build

# Run production server
bun .output/server/index.mjs
```

### Docker

```dockerfile
FROM oven/bun:1 AS builder

WORKDIR /app
COPY package.json bun.lockb ./
RUN bun install --frozen-lockfile

COPY . .
RUN bun run build

FROM oven/bun:1

WORKDIR /app
COPY --from=builder /app/.output /app/.output

EXPOSE 3000

CMD ["bun", ".output/server/index.mjs"]
```

### Environment Variables

```bash
# .env
NUXT_PUBLIC_API_URL=https://api.example.com
DATABASE_URL=./data.sqlite
```

```typescript
// Access in code
const config = useRuntimeConfig();
console.log(config.public.apiUrl);
console.log(config.databaseUrl); // Server only
```

```typescript
// nuxt.config.ts
export default defineNuxtConfig({
  runtimeConfig: {
    databaseUrl: "",
    public: {
      apiUrl: "",
    },
  },
});
```

## Common Errors

| Error | Cause | Fix |
|-------|-------|-----|
| `Cannot find bun:sqlite` | Wrong preset | Set `nitro.preset: "bun"` |
| `Module parse failed` | Build issue | Clear `.nuxt` and rebuild |
| `Hydration mismatch` | Server/client diff | Check async data |
| `EADDRINUSE` | Port in use | Change port or kill process |

## When to Load References

Load `references/nitro.md` when:
- Advanced Nitro configuration
- Storage drivers
- Cache handlers

Load `references/deployment.md` when:
- Edge deployment
- Cloudflare Workers
- Vercel/Netlify

© secondsky · MIT · secondsky/claude-skills

Смотрите также

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

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