mcpField
A
adonisjs

adonisjs

github.com/filipebraida開発279 回インストール39 週間前に更新
リポジトリ

adonisjs について

adonisjs は、AdonisJS 6 の TypeScript アプリを構築、デバッグ、保守するための開発スキルです。入力検証、サービス、テスト、パフォーマンスに関するタスク別ワークフローと設計資料を提供します。

主な機能

  1. 01タスクに応じたワークフロー選択
  2. 02コントローラーとサービスの分離指針
  3. 03VineJS による入力検証
  4. 04アーキテクチャとモデルの資料
  5. 05変更後の型・テスト・Lint確認

活用シーン

  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>

コメント