mcpField
A
adonisjs

adonisjs

github.com/filipebraida开发279 次安装39 周前更新
代码仓库

关于 adonisjs

adonisjs 是面向 AdonisJS 6 项目的开发技能,适用于构建、调试和维护 TypeScript 应用。它提供分步骤工作流与架构参考,涵盖验证、服务、测试和性能优化。

主要功能

  1. 01按任务选择开发工作流
  2. 02控制器与服务分层指导
  3. 03使用 VineJS 验证输入
  4. 04提供架构与模型参考
  5. 05变更后检查类型、测试和代码风格

适用场景

  1. 01从头构建功能或 API 端点
  2. 02排查并修复应用问题
  3. 03编写测试或优化性能

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/filipebraida/skills --skill adonisjs

安装后在 Claude Code 中输入/adonisjs确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
anti-patterns.md
architecture.md
background-jobs.md
controllers.md
models.md
multi-tenant.md
performance.md
serialization.md
testing.md
validations-callbacks.md
workflows/
build-feature.md
debug.md
optimize-performance.md
refactor.md
write-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>

**你想做什么?**
  1. 构建新功能/端点
  2. 调试现有问题
  3. 编写/运行测试
  4. 优化性能
  5. 重构代码
  6. 其他

然后阅读 workflows/ 中对应的工作流并遵循它。

| 回复 | 工作流 | |----------|----------| | 1、"new"、"create"、"build"、"feature"、"endpoint"、"api" | `workflows/build-feature.md` | | 2、"broken"、"fix"、"debug"、"crash"、"bug"、"error" | `workflows/debug.md` | | 3、"test"、"tests"、"spec"、"coverage" | `workflows/write-tests.md` | | 4、"slow"、"optimize"、"performance"、"fast"、"n+1" | `workflows/optimize-performance.md` | | 5、"refactor"、"clean"、"improve"、"restructure" | `workflows/refactor.md` | | 6、其他 | 先澄清,再选择工作流或参考资料 |

<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