关于 adonisjs
adonisjs 是面向 AdonisJS 6 项目的开发技能,适用于构建、调试和维护 TypeScript 应用。它提供分步骤工作流与架构参考,涵盖验证、服务、测试和性能优化。
主要功能
- 01按任务选择开发工作流
- 02控制器与服务分层指导
- 03使用 VineJS 验证输入
- 04提供架构与模型参考
- 05变更后检查类型、测试和代码风格
适用场景
- 01从头构建功能或 API 端点
- 02排查并修复应用问题
- 03编写测试或优化性能
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ filipebraida/ skills --skill adonisjs安装后在 Claude Code 中输入/adonisjs确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/anti-patterns.mdarchitecture.mdbackground-jobs.mdcontrollers.mdmodels.mdmulti-tenant.mdperformance.mdserialization.mdtesting.mdvalidations-callbacks.mdworkflows/build-feature.mddebug.mdoptimize-performance.mdrefactor.mdwrite-tests.md详细介绍
<essential_principles>
AdonisJS 6 原则
TypeScript 优先 - 每个请求、服务和模型都有类型。优先使用显式类型,而不是 any。
1. 精简控制器,专注服务
控制器负责协调。业务逻辑放在服务或领域模块中。
// app/controllers/users_controller.ts
import type { HttpContext } from "@adonisjs/core/http";
import CreateUserService from "#services/users/create_user_service";
export default class UsersController {
async store({ request, response }: HttpContext) {
const payload = await request.validateUsing(CreateUserService.validator);
const user = await new CreateUserService().handle(payload);
return response.created({ data: user });
}
}
2. 使用 VineJS 验证每项输入
绝不要信任请求数据。入口处就进行验证。
// app/validators/create_user.ts
import vine from "@vinejs/vine";
export const createUserValidator = vine.compile(
vine.object({
email: vine.string().email(),
fullName: vine.string().minLength(2).maxLength(120),
password: vine.string().minLength(8),
}),
);
3. Lucid 模型负责持久化
使用模型处理持久化和关系。将查询集中在一处。
// app/models/user.ts
import { BaseModel, column } from "@adonisjs/lucid/orm";
export default class User extends BaseModel {
@column({ isPrimary: true })
declare id: number;
@column()
declare email: string;
}
4. 使用中间件处理横切关注点
身份验证、租户范围限定和速率限制应放在中间件中。
// app/middleware/auth_middleware.ts
import type { HttpContext } from "@adonisjs/core/http";
import type { NextFn } from "@adonisjs/core/types/http";
export default class AuthMiddleware {
async handle(ctx: HttpContext, next: NextFn) {
await ctx.auth.check();
return next();
}
}
</essential_principles>
**你想做什么?**- 构建新功能/端点
- 调试现有问题
- 编写/运行测试
- 优化性能
- 重构代码
- 其他
然后阅读 workflows/ 中对应的工作流并遵循它。
<verification_loop>
每次更改后
# 1. Type check
pnpm typecheck
# 2. Run tests
node ace test tests/functional/changed.spec.ts
# 3. Lint
pnpm lint
报告:"类型:OK | 测试:通过 X 项 | Lint:干净" </verification_loop>
<reference_index>
领域知识
全部位于 references/:
架构: architecture.md 模型: models.md 控制器: controllers.md 序列化(DTO): serialization.md 验证: validations-callbacks.md 后台任务: background-jobs.md 性能: performance.md 测试: testing.md 多租户: multi-tenant.md 反模式: anti-patterns.md </reference_index>
<workflows_index>
工作流
全部位于 workflows/:
| 文件 | 用途 |
|---|---|
| build-feature.md | 从头创建新功能/端点 |
| debug.md | 查找并修复错误 |
| write-tests.md | 编写并运行测试 |
| optimize-performance.md | 分析性能并提升速度 |
| refactor.md | 按照模式重构代码 |
| </workflows_index> |
评论
支持 Markdown