domain-rule

A set of rules for organising a domain layer by business areas such as users, orders, and products. The domain layer contains core business concepts and rules; DDD, or domain-driven design, is an approach that structures software around those business areas.

In plain words
What is it for?
Use it when designing Go domain packages, defining entities, value objects, repository interfaces, domain services, and shared types around clear business boundaries.
Why use it?
It keeps separate business areas from becoming mixed together and makes the project's package structure reflect how the business works.

Cursor rule for Cursor

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add rules/showcase-gig-platform/cursor-rules-initializer/domain-rule
Clone the repo
git clone --depth 1 https://github.com/showcase-gig-platform/cursor-rules-initializer

Made for: Cursor.

Per session 0 Nothing until a file matches its globs; then the whole rule loads.
When invoked 1,134 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00000 $0.01134
Opus 5 $0.00000 $0.00567
Sonnet 5 $0.00000 $0.00227
Haiku 4.5 $0.00000 $0.00113

Measured 2d ago against content hash e272bb29ac11, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

domain-rule scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.cursor/commands/cursor-rules-initializer/sample/rules/app/domain-rule.mdc · 73 lines

How it starts

The opening of the file, as written. The whole thing — 73 lines — stays where its author put it; the contents beside it link to each section on GitHub.

domain層の修正をする際に適用するルール

役割

  • ビジネスロジックの中心
  • エンティティと値オブジェクトの定義
  • リポジトリインターフェースの定義
  • ドメインサービスの実装

詳細構造と命名規則

DDDの戦略的設計に従い、ドメイン境界(集約単位) でパッケージを分割します。 EntityやValue Objectといった戦術パターンではなく、ビジネスドメインの境界を優先します。

domain/
├── user/                       # ユーザードメイン
│   ├── user.go                 # Userエンティティ(集約ルート)
│   ├── user_id.go              # UserID値オブジェクト
│   ├── email.go                # Email値オブジェクト
│   ├── user_repository.go      # Userリポジトリインターフェース
│   └── user_service.go         # ユーザードメインサービス(必要な場合)
├── order/                      # 注文ドメイン
│   ├── order.go                # Orderエンティティ(集約ルート)
│   ├── order_id.go             # OrderID値オブジェクト
│   ├── order_item.go           # OrderItemエンティティ
│   ├── order_repository.go     # Orderリポジトリインターフェース
│   └── order_service.go        # 注文ドメインサービス(必要な場合)
├── product/                    # 商品ドメイン
│   ├── product.go              # Productエンティティ(集約ルート)
│   ├── product_id.go           # ProductID値オブジェクト
│   └── product_repository.go   # Productリポジトリインターフェース
└── shared/                     # 共通の型定義(複数ドメインで使用)
    └── money.go                # Money値オブジェクト

パッケージ設計の原則

  • ドメイン境界を優先: Entity/VO/Repositoryではなく、ビジネスドメイン(user, order, product等)でパッケージを分ける
  • 集約単位で凝集: 1つの集約に関連するEntity、VO、Repository、Domain Serviceは同じパッケージに配置
  • shared/は最小限に: 複数ドメインで本当に共有が必要な型のみ配置(安易な共通化を避ける)

実装ポイント

  • ドメイン駆動設計のプリンシパルに従い、振る舞いを適切に設計しビジネスルールはドメイン層に集約します
  • エンティティは状態と振る舞いを持ち、ビジネスルールを実装します
  • 値オブジェクトは不変であり、等価性で比較されます
  • ドメインサービスはエンティティに属さないドメインロジックを実装します
  • リポジトリインターフェースはデータの永続化と取得の抽象を提供します
  • 集約ルートを通じてのみ集約内のエンティティにアクセスします

テストのルール

  • domain層のファイルを修正、メソッドや関数を追加した場合した場合は、以下に従って同じタスク内でテストを作成してください
    • 新規追加の場合
      • テストを追加する
      • testファイルがない場合は、Goの慣習に従い修正しているファイルと同じフォルダにテストファイルを作成してからテストを追加すること
    • 修正の場合
      • テストを修正する
      • 該当するtestがない場合は、新規追加の場合と同様に新しくテストを作成すること
  • test作成のルール
    • テーブル駆動テストで書くこと
    • 正常系、異常系、エッジケースを含め網羅的に作成すること

実装例

Read the full file on GitHub · 73 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 73 lines · 0 tokens per session scan A e272bb29ac11

Subscribe to this mod's changes

domain-rule is a cursor rule published in the GitHub repository showcase-gig-platform/cursor-rules-initializer (7 stars, last pushed 9mo ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 1,134 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.