スキル一覧に戻る
aniftyco

kubit-expanding-skeleton

by aniftyco

[IDEA] TypeScript-first MVC full-stack framework for the modern web

32🍴 2📅 2026年1月8日
GitHubで見るManusで実行

SKILL.md


name: kubit-expanding-skeleton description: Use when adding new files, patterns, or examples to skeleton/. Use when creating new controller, model, job, mailable, migration, view, or component in the skeleton app.

Expanding the Kubit Skeleton

Overview

The skeleton/ directory is the ideal Kubit app. Add patterns here first, then add types to make them compile.

When to Use

  • Adding new file to skeleton/ (controller, model, etc.)
  • Adding new pattern or convention
  • Demonstrating new framework feature
  • User asks to show how something would work

Directory Structure

skeleton/
├── app/
│   ├── routes.ts           # Route definitions
│   ├── controllers/        # Class-based controllers
│   ├── models/             # ORM models with decorators
│   ├── jobs/               # Job classes
│   └── mail/               # Mailable classes
├── components/             # Shared React components
├── views/                  # React page components (SSR)
├── config/                 # Runtime configuration
├── database/migrations/    # Migration classes
├── public/                 # Static assets
└── tests/                  # Test files

Conventions by File Type

Controllers: Class with async methods, receive HttpContext, return view() or values

export default class FooController {
  public async index({ request, response }: HttpContext) {
    return view('foo/index', { data });
  }
}

Models: Class extending Model with @column decorators

@use(SoftDeletes)
export class Foo extends Model {
  @column({ primary: true }) public id: number;
  @column() public name: string;
  @column.dateTime({ autoCreate: true }) public createdAt: DateTime;
}

Jobs: Class extending Job with @property and handle()

export class FooJob extends Job {
  @property() public data: string;
  async handle() { /* ... */ }
}

Mailables: Class extending Mailable with view rendering

export class FooMail extends Mailable {
  @property() public name: string;
  async handle() { return this.view('emails.foo', { name: this.name }); }
}

Migrations: Class extending Migration with up/down

export default class extends Migration {
  async up() { return schema.createTable('foos', (t) => { /* ... */ }); }
  async down() { return schema.dropTableIfExists('foos'); }
}

Views: React FC with typed props, default export

const Foo: FC<{ data: string }> = ({ data }) => <div>{data}</div>;
export default Foo;

Components: React FC with named export

export const Button: FC<Props> = ({ children }) => <button>{children}</button>;

Import Conventions

ImportSource
kubitCore: defineConfig, env, use
kubit:routerrouter
kubit:inertiaview
kubit:serverHttpContext
kubit:ormModel, decorators, relations
kubit:dbMigration, schema
kubit:queueJob, property
kubit:mailMailable
@app/*App-level imports

Checklist When Adding to Skeleton

  • Follows existing conventions (class-based, decorators)
  • Uses correct import paths
  • Types exist in packages/core/ (add if needed)
  • tsc --noEmit passes
  • Update SKELETON_APP.md if structure changes

スコア

総合スコア

60/100

リポジトリの品質指標に基づく評価

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

+10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

レビュー

💬

レビュー機能は近日公開予定です