复制下面这句话,粘贴给 Claude Code、Codex、Cursor 等 AI 编程工具,它会读取安装说明并在你确认后完成安装。
请阅读 https://ai.atlankj.com/install/asset/gh-conventions-a58081384cab ,按照其中的说明把「n8n:conventions」安装到你(当前 AI 工具)中。执行前先告诉我将运行的命令和写入的位置,等我确认。
查看 AI 将读取的安装说明正在读取 GitHub 原文…
内容来自 GitHub 原始文件,由原作者维护。在 GitHub 查看
📚 Full Documentation:
/AGENTS.md - Architecture, commands, workflows/packages/frontend/AGENTS.md - CSS variables, timingUse this skill when you need quick reminders on critical patterns.
Technical writing (comments, PRs, issues, docs):
TypeScript:
any → use unknownsatisfies over as (except tests)@n8n/api-typesError Handling:
import { UnexpectedError } from 'n8n-workflow';
throw new UnexpectedError('message', { extra: { context } });
// DON'T use deprecated ApplicationError
Frontend:
<script setup lang="ts">)/packages/frontend/AGENTS.md$t('key'))data-testid for E2E (single value, no spaces)Backend:
@n8n/di@n8n/configoffset + limit in controllers and services; translate to TypeORM skip/take only inside repositoriesTesting:
N8N_USER_FOLDER before importing settings codepushd packages/cli && pnpm testDatabase:
GitHub Workflows:
permissions: block
(usually contents: read); jobs needing more override at job levelCommands:
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.
| 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 |
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