n8n:conventions
GitHubn8n开发规范速查,涵盖TS类型、前后端架构、测试及命令等关键模式。
触发场景
安装
npx skills add n8n-io/n8n --skill n8n:conventions -g -y
SKILL.md
Frontmatter
{
"name": "n8n:conventions",
"description": "Quick reference for n8n patterns. Full docs \/AGENTS.md"
}
n8n Quick Reference
📚 Full Documentation:
- General:
/AGENTS.md- Architecture, commands, workflows - Frontend:
/packages/frontend/AGENTS.md- CSS variables, timing
Use this skill when you need quick reminders on critical patterns.
Critical Rules (Must Follow)
Technical writing (comments, PRs, issues, docs):
- Write in ASD-STE100 Simplified Technical English: short sentences, the active voice, one instruction for each sentence
TypeScript:
- Never
any→ useunknown - Prefer
satisfiesoveras(except tests) - Shared types in
@n8n/api-types
Error Handling:
import { UnexpectedError } from 'n8n-workflow';
throw new UnexpectedError('message', { extra: { context } });
// DON'T use deprecated ApplicationError
Frontend:
- Vue 3 Composition API (
<script setup lang="ts">) - CSS variables (never hardcode px) - see
/packages/frontend/AGENTS.md - All text via i18n (
$t('key')) data-testidfor E2E (single value, no spaces)
Backend:
- Controller → Service → Repository
- Dependency injection via
@n8n/di - Config via
@n8n/config - Zod schemas for validation
- Pagination args: use
offset+limitin controllers and services; translate to TypeORMskip/takeonly inside repositories
Testing:
- Vitest (unit), Playwright (E2E)
- Mock external dependencies
- Keep filesystem tests in a test-owned temporary directory
- Set
N8N_USER_FOLDERbefore importing settings code - Trace branches activated by mocks and isolate every reachable mutation
- Work from package directory:
pushd packages/cli && pnpm test
Database:
- SQLite/PostgreSQL only (app DB)
- Exception: DB nodes (MySQL Node, etc.) can use DB-specific features
GitHub Workflows:
- Every workflow declares a least-privilege top-level
permissions:block (usuallycontents: read); jobs needing more override at job level
Commands:
pnpm build > build.log 2>&1 # Always redirect
pnpm typecheck # Before commit
pnpm lint # Before commit
Secrets: pnpm command lines may be recorded verbatim (opt-in dev metrics) — pass sensitive values via env vars, never inline on the command line.
Key Packages
| Package | Purpose |
|---|---|
packages/cli |
Backend API |
packages/frontend/editor-ui |
Vue 3 frontend shell |
packages/modules/<name>/frontend |
Frontend feature modules. Guide: packages/@n8n/module-cli/frontend-module-guide.md |
packages/@n8n/api-types |
Shared types |
packages/@n8n/db |
TypeORM entities |
packages/workflow |
Core interfaces |
Common Patterns
Pinia Store:
import { STORES } from '@n8n/stores';
export const useMyStore = defineStore(STORES.MY_STORE, () => {
const state = shallowRef([]);
return { state };
});
Vue Component:
<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) {}
}
📖 Need more details? Read /AGENTS.md and /packages/frontend/AGENTS.md
版本历史
-
fe0fad5
当前 2026-09-23 10:20
更新Backend部分,增加Zod验证和依赖注入配置;细化Testing部分,补充临时目录和N8N_USER_FOLDER设置;新增Commands和Common Patterns章节。
- c31d0e5 2026-08-20 19:07


