mcpField
N
n8n-conventions

n8n-conventions

github.com/n8n-io开发208.9k433 次安装今天更新
代码仓库

关于 n8n-conventions

面向 n8n 贡献者的快速参考技能,汇总 TypeScript、前端、后端、测试、数据库和命令方面的关键约定。

主要功能

  1. 01TypeScript 与错误处理规则
  2. 02前端和后端模式
  3. 03测试与数据库指引
  4. 04常用包和命令参考

适用场景

  1. 01修改 n8n 时核对约定
  2. 02为变更选择项目模式
  3. 03查找相关命令和软件包

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/n8n-io/n8n --skill n8n-conventions

安装后在 Claude Code 中输入/n8n-conventions确认已加载。

详细介绍

n8n 快速参考

📚 完整文档:

  • 通用: /AGENTS.md - 架构、命令、工作流
  • 前端: /packages/frontend/AGENTS.md - CSS 变量、时序

需要快速回顾关键模式时,请使用此技能。

关键规则(必须遵守)

TypeScript:

  • 不要使用 any → 使用 unknown
  • 优先使用 satisfies,而非 as(测试除外)
  • 共享类型位于 @n8n/api-types

错误处理:

import { UnexpectedError } from 'n8n-workflow';
throw new UnexpectedError('message', { extra: { context } });
// DON'T use deprecated ApplicationError

前端:

  • Vue 3 Composition API(<script setup lang="ts">)
  • 使用 CSS 变量(不要硬编码 px)——参见 /packages/frontend/AGENTS.md
  • 所有文本均通过 i18n($t('key'))
  • E2E 使用 data-testid(单个值,不含空格)

后端:

  • Controller → Service → Repository
  • 通过 @n8n/di 进行依赖注入
  • 通过 @n8n/config 配置
  • 使用 Zod schemas 进行验证

测试:

  • Vitest(单元测试)、Playwright(E2E)
  • 模拟外部依赖
  • 在 package 目录中运行:pushd packages/cli && pnpm test

数据库:

  • 仅使用 SQLite/PostgreSQL(应用数据库)
  • 例外:DB 节点(MySQL Node 等)可以使用特定于数据库的功能

命令:

pnpm build > build.log 2>&1  # Always redirect
pnpm typecheck               # Before commit
pnpm lint                    # Before commit

主要 package

Package用途
packages/cli后端 API
packages/frontend/editor-uiVue 3 前端
packages/@n8n/api-types共享类型
packages/@n8n/dbTypeORM 实体
packages/workflow核心接口

常见模式

Pinia Store:

import { STORES } from '@n8n/stores';
export const useMyStore = defineStore(STORES.MY_STORE, () => {
  const state = shallowRef([]);
  return { state };
});

Vue 组件:

<script setup lang="ts">
type Props = { title: string };
const props = defineProps<Props>();
</script>

Service:

import { Service } from '@n8n/di';
import { Config } from '@n8n/config';

@Service()
export class MyService {
  constructor(private readonly config: Config) {}
}

📖 需要更多详情? 请阅读 /AGENTS.md 和 /packages/frontend/AGENTS.md

评论

支持 Markdown