四层各司其职:全局管行为,项目管事实,目录管局部,local 管隐私。以下模板依据官方文档与社区最佳实践编写并刻意保持精简——请以它为骨架填入你的真实信息,而不是原样照贴。
~/.claude/├── CLAUDE.md ← 全局启动加载└── skills/← 个人 Skills · 全项目可用~/work/my-app/← 你在这里运行claude├── CLAUDE.md ← 项目 · 随 git 共享启动加载├── CLAUDE.local.md ← 个人偏好gitignore├── .claude/skills/← 项目 Skills└── src/ └── CLAUDE.md ← 目录级规则懒加载# 启动时自 cwd 向上收集所有 CLAUDE.md;# 子目录的等 Claude 读到该目录文件才注入;# 兄弟目录互不打扰。 # 全局工作准则(适用于本机所有项目)
## 沟通
- 用中文与我交流;代码、命令、报错信息保持英文原样
- 先给结论再给理由;不确定就直说,不要编造 API 或配置项
## 行为边界
- 删除文件、git push --force、数据库迁移、改 CI 配置等
破坏性/高影响操作:先说明影响范围,征得我确认再执行
- 永远不要把密钥、token、密码写进代码或提交历史;
发现 .env / 凭据有泄露风险时主动提醒我
- 不要擅自升级依赖的大版本
## 工程纪律
- 改动最小化:只做被要求的事,不顺手重构、不加多余抽象
- 修完 bug 先运行相关测试再收工
- commit message 用 Conventional Commits(feat/fix/chore/docs…)
- 同一任务连续失败两次时,停下来复述你对问题的理解再继续
## 我的环境
- 时区 Asia/Shanghai;macOS + zsh;Node ≥ 20;包管理器默认 pnpm # MyApp — 项目上下文
> 电商后台管理系统 · Next.js 15 + TypeScript + Prisma + PostgreSQL
> 详细架构见 @docs/architecture.md,不在此复述
## 常用命令(照抄执行,不要自行猜测)
- 开发: pnpm dev
- 全部测试: pnpm test
- 单个测试: pnpm test -- --grep "关键词"
- 质量门: pnpm lint && pnpm typecheck
- 迁移: pnpm db:migrate(仅本地库;线上迁移走 CI)
## 目录速览
- app/ 路由与页面(App Router)
- app/api/ API 路由,鉴权中间件在 app/api/_lib/
- lib/ 领域逻辑与数据访问封装
- prisma/ schema 与迁移
- tests/ e2e;单测与源码同目录 *.test.ts
## 代码约定
- TypeScript strict,禁止 any;组件一律具名导出
- 数据访问只走 lib/db.ts 封装,不要直接 new PrismaClient
- 样式仅用 Tailwind,不写内联 style、不引入新 UI 库
- 新功能必须带 Vitest 用例,放在被测文件同目录
## 雷区(违反会出事故)
- prisma/migrations/ 里已存在的迁移文件一律只读
- app/api/webhooks/* 的签名校验逻辑不许改动
- CI 运行在 Node 20,不要使用更高版本才有的 API
## 工作流
- 涉及 >3 个文件的改动:先给出计划,确认后再动手
- 收工前必须通过:pnpm lint && pnpm typecheck && pnpm test # components/ 目录规则(仅在本目录内工作时生效)
- 每个组件独立文件夹:index.tsx + types.ts + *.test.tsx
- 基础控件只从 @/components/ui 取用,禁止引入新组件库
- 状态优先局部 useState;跨组件共享走 zustand(见 @/stores)
- 服务端数据一律经由 hooks/ 内的 query hook,组件内不 fetch
- 新组件必须补同目录 *.stories.tsx(Storybook)
- 可访问性:交互元素必须有可见焦点态与 aria 标签 # 个人偏好(已 gitignore,不与团队共享)
- 本地数据库:postgresql://localhost:5433/myapp_dev
- 本地服务:web 3000 / api 4000 / mail 预览 8025
- 演示账号:demo@local(密码在团队 1Password「MyApp Dev」)
- 向我解释用中文,commit message 保持英文
- 我用 macOS + zsh,不要给我 Windows 路径或 PowerShell 命令