AGENTS
Next.jsTypeScript
4 min约 1060 字
AGENTS.md - AI Coding Agents 开发与协作指南
本指南用于约束和指导所有参与本项目(
zickme-blog)开发的 AI Agents(如 Cline、Claude Code、Cursor 等),确保架构一致性、代码规范与有序交付。
🎯 1. 项目核心背景与目标
zickme-blog 是基于 Next.js (App Router) + React 19 + TypeScript + Bun 构建的现代化个人博客与作品集系统。
当前项目正处于从早期架构向 Stage 2 架构 演进的重构阶段:
- 简化运维:免去繁琐的邮件系统维护,管理员密码通过 CLI 脚本重置,普通用户重置请求走管理员后台手动重设。
- 内容架构统一:彻底移除
blogs与projects的双轨结构,全站统一为Post体系(由 tags/category 标识特征)。 - ORM 现代化:从 Prisma 7 逐步迁移至更加轻量、适合 Serverless 的 Drizzle ORM。
- Dashboard 内容掌控力:在后台提供可视化的文章管理(草稿/发布/归档)与导入诊断,减轻对单一 GitHub Actions 的脆弱依赖。
详细路线图请务必参考:documents/development-plan-stage2.md。
🧭 2. Agents 核心行为准则
-
先规划后编码(Plan-Then-Act):
- 涉及任何跨模块、数据模型调整或破坏性修改前,必须先查阅相关文件并梳理调用链。
- 遵循
development-plan-stage2.md中定义的步骤执行,不要跳步或一次性引入过大范围的无关改动。
-
严禁引入未经确认的重型外部服务:
- 不引入邮件发送服务(如 Resend、Nodemailer、SendGrid 等),用户密码重置通过后台手动修改,管理员自救通过 CLI 脚本。
-
代码风格与工具链强制约定:
- 包管理器:优先使用
bun(如bun run build、bun add ...)。 - 代码格式与 Lint:统一使用 Biome(
bun run lint/bun run format),遵循项目根目录biome.json。 - 绝对路径导入:统一使用
@/...路径别名引用src/下模块。
- 包管理器:优先使用
-
安全与健壮性:
- 敏感配置必须且仅能来自环境变量(如
.env),不得硬编码任何 Key/Secret。 - Server Actions 与 API 端点必须进行严格的 Session 与 Role(
ADMIN/USER)权限校验及 Zod 输入验证。
- 敏感配置必须且仅能来自环境变量(如
🗺️ 3. Stage 2 阶段开发任务指引
阶段一:管理员与用户密码重置及运维增强(免邮件方案)
- 目标文件:
scripts/reset-admin-password.ts,src/app/(pages)/dashboard/users/*,src/lib/actions/* - 规范:
- 编写独立的 Bun 脚本
scripts/reset-admin-password.ts,调用 Better-Auth 密码加密哈希工具直接更新指定管理员密码。 - 在 Dashboard 用户管理列表中增加“修改/重置密码”的操作对话框(仅限 ADMIN 角色调用),支持手动为忘记密码的用户设置新密码。
- 在已登录用户的个人设置(
EditProfile.tsx)中补充密码修改面板。
- 编写独立的 Bun 脚本
阶段二:统一内容架构(移除 blogs / projects 分裂)
- 目标文件:
content/posts/,src/lib/slug.ts,src/lib/content-queries.ts,src/app/(pages)/posts/*, 导航与卡片组件 - 规范:
- 将
content/posts/blogs与content/posts/projects统一归集至content/posts/。 - 统一 slug 解析逻辑,移除
blogs-/projects-等硬编码前缀。 - 前端路由统一收拢为
/posts//posts/[slug],并配置旧路由向后兼容重定向。 - 废弃针对 Project 特有的非通用硬编码字段,通过 Markdown 扩展或通用 tags/meta 呈现。
- 将
阶段三:ORM 迁移至 Drizzle ORM
- 目标文件:
src/db/schema/*,src/db/index.ts,drizzle.config.ts, 迁移 Better-Auth 适配器 - 规范:
- 配置
drizzle-orm与 PostgreSQL(Neon)连接池。 - 迁移现有 Prisma Schema(users, accounts, sessions, posts, tags, comments, site_profile)到 Drizzle Schema。
- 重写查询层(
content-queries.ts、actions)与内容同步脚本,确保类型安全。 - 验证完成后彻底卸载 Prisma 相关依赖与生成文件。
- 配置
阶段四:Dashboard 文章管理与可视化导入
- 目标文件:
src/app/(pages)/dashboard/posts/*,src/app/(pages)/dashboard/sync/* - 规范:
- 实现文章列表、状态筛选(PUBLISHED / DRAFT / ARCHIVED)、批量操作与状态切换。
- 实现网页端手动触发同步并分阶段显示进度日志(Frontmatter 校验 ➡️ 图片/Cloudinary 状态 ➡️ 数据库落库)。
🧪 4. 验证与检查清单
在完成任何任务交卷前,Agent 必须在终端运行以下验证:
bash# 1. 检查代码格式与 Lint
bun run lint
# 2. 验证 TypeScript 类型与生产构建
bun run build
确保无未捕获的 TypeScript 错误与 Lint 报错后方可完成交付。