Agent skill
stack-hono-app
TypeScript backend development with Hono framework. Clean Architecture, layered structure, Repository pattern, Use Case implementation, and error handling for API development.
Install this agent skill to your Project
npx add-skill https://github.com/interactive-inc/skills/tree/main/skills/stack-hono-app
SKILL.md
TypeScript Backend Development
TypeScript バックエンドの設計・実装パターンを定義する。 Clean Architecture に基づくレイヤー構成で、保守性・テスト容易性を重視。
レイヤー構成
api/
├── domain/ # ドメイン層 (ビジネスロジック)
│ ├── entities/ # エンティティ
│ ├── values/ # 値オブジェクト
│ └── errors/ # ドメインエラー
├── application/ # アプリケーション層 (ユースケース)
├── infrastructure/ # インフラ層
│ ├── repositories/ # リポジトリ実装
│ ├── adapters/ # 外部サービスアダプター
│ └── converters/ # データ変換
├── interface/ # インターフェース層
│ ├── routes/ # HTTPハンドラー
│ ├── middlewares/ # ミドルウェア
│ ├── serializers/ # レスポンス変換
│ └── factory.ts # Hono Factory
├── lib/ # 共有ライブラリ (横断的関心事のみ)
│ ├── auth/ # 認証ユーティリティ
│ ├── constants/ # 定数
│ ├── crypto/ # 暗号化ユーティリティ
│ ├── session/ # セッション管理
│ ├── types/ # 型定義
│ ├── utils/ # ユーティリティ
│ └── errors.ts # アプリケーションエラー
├── migrations/ # D1 マイグレーション
├── drizzle.schema.ts # DB スキーマ定義
├── env.d.ts # 型定義
└── index.ts # エントリーポイント
依存関係のルール
Interface → Application → Infrastructure → Domain
↓ ↓ ↓
Lib Lib Lib
- 上位レイヤーは下位レイヤーに依存する
- 下位レイヤーは上位レイヤーを知らない
- Domain は最も内側で、外部依存がない
- Lib は全レイヤーから参照可能 (横断的関心事のみ)
設計原則
Domain 層
- Entity は DB の存在を知らない (
fromRecord()のようなメソッドは定義しない) - DB レコードから Entity への変換は Repository (インフラ層) の責務
- ファクトリメソッドは具体的な名前を使う (
create()よりcreateWithEmail())
Application 層 (Service)
- throw しない。カスタムエラーを return する
- 戻り値は
Promise<Result | NotFoundError | ConflictError | ...>
Infrastructure 層
- 外部サービス連携は全て Adapter として実装 (Lib には含めない)
- メール送信、外部 API は Adapter の責務
Interface 層
result instanceof カスタムエラーでエラー判定- HTTPException に変換してユーザーフレンドリーなメッセージを設定
Lib 層
- 横断的関心事のみ (認証、セッション、定数、ユーティリティ)
- 外部サービス連携は含めない
命名規則
ファイル命名
| レイヤー | パターン | 例 |
|---|---|---|
| Entity | xxx.entity.ts |
customer.entity.ts |
| Value | xxx.value.ts |
email.value.ts |
| Repository | xxx.repository.ts |
customer.repository.ts |
| Adapter | xxx.adapter.ts |
email.adapter.ts, payment.adapter.ts |
| Use Case | 動詞-名詞.ts |
create-customer.ts, update-customer.ts |
| Route | resource.$param.ts |
customers.$customer.ts |
Service (Use Case) 命名
| 操作 | プレフィックス | 例 |
|---|---|---|
| 作成 | create- |
create-customer.ts |
| 更新 | update- |
update-customer.ts |
| 削除 | delete- |
delete-customer.ts |
| 取得 | fetch- / get- |
fetch-customer.ts |
| 一括 | bulk- |
bulk-update-orders.ts |
| 同期 | sync- |
sync-users.ts |
| Upsert | upsert- |
upsert-profile.ts |
Route ファイル命名
| URL | ファイル名 |
|---|---|
/customers |
customers.ts |
/customers/:customer |
customers.$customer.ts |
/customers/:customer/orders |
customers.$customer.orders.ts |
/customers/:customer/orders/:id |
customers.$customer.orders.$id.ts |
/customers/search |
customers.search.ts |
参照ファイル
各パターンの詳細は以下を参照:
ドメイン層
- references/domain-entity.md - Entity の実装パターン
- references/domain-value.md - Value Object の実装パターン
- references/domain-error.md - ドメインエラー
アプリケーション層
- references/application-service.md - Service (Use Case) の実装パターン
インフラ層
- references/infrastructure-repository.md - Repository パターン
- references/infrastructure-adapter.md - Adapter パターン
インターフェース層
- references/interface-route-handler.md - HTTP ハンドラー
- references/interface-entry-point.md - エントリーポイント
- references/interface-error-handling.md - エラーハンドリング
共通
- references/drizzle-schema.md - DB スキーマ定義
- references/lib-structure.md - Lib 層の構造
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
stack-tanstack-app
Build and enhance React applications using the TanStack ecosystem. Use this skill when working with TanStack libraries such as Router, Query, Form, or Table—whether starting a new project or integrating into existing code.
voc
Record customer voice to feedbacks/.
backlog
Analyze and plan product backlogs with vision alignment.
gemini
Get alternative perspectives via Google Gemini on complex design decisions, architecture trade-offs, stuck debugging, or approach evaluation.
docs-architecture-review
Review and evaluate repository architecture covering database, tests, API design, components, security, and dependencies.
plan-backlog
Create or update product backlog content.
Didn't find tool you were looking for?