arch-domain-driven
DDD: bounded contexts, aggregates, entities, value objects, domain events, ubiquitous language
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o arch-domain-driven.zip https://jpskill.com/download/22271.zip && unzip -o arch-domain-driven.zip && rm arch-domain-driven.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/22271.zip -OutFile "$d\arch-domain-driven.zip"; Expand-Archive "$d\arch-domain-driven.zip" -DestinationPath $d -Force; ri "$d\arch-domain-driven.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
arch-domain-driven.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
arch-domain-drivenフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Claude が読む原文 SKILL.md(中身を展開)
この本文は AI(Claude)が読むための原文(英語または中国語)です。日本語訳は順次追加中。
Purpose
This skill implements Domain-Driven Design (DDD) principles to structure code effectively. It helps generate and manage bounded contexts, aggregates, entities, value objects, and domain events, while promoting ubiquitous language for better team alignment.
When to Use
Use this skill for complex applications with rich domain logic, such as e-commerce platforms or financial systems, where clear boundaries reduce coupling. Apply it during architecture design phases to avoid monolithic codebases, especially when dealing with multiple subdomains or legacy integrations.
Key Capabilities
- Generate bounded contexts with isolated modules for specific domains.
- Define aggregates as clusters of entities with a single root for transaction consistency.
- Create entities with identity and value objects for immutable data.
- Handle domain events to trigger reactions, like publishing to event buses.
- Enforce ubiquitous language by embedding domain terms into code and configurations.
Usage Patterns
Always begin by mapping the domain to identify bounded contexts. Use the skill to scaffold structures, then refine aggregates within contexts. For example, integrate with CI/CD by running generation commands in build scripts. Test incrementally: generate an entity, add it to an aggregate, and verify invariants. Avoid over-modeling by limiting contexts to high-cohesion areas, and use events for cross-context communication.
Common Commands/API
Interact via OpenClaw's CLI or REST API. Authentication requires setting $OPENCLAW_API_KEY in your environment.
CLI Commands:
- Generate a bounded context:
openclaw ddd generate-context --name MyContext --description "User management" --language pythonThis creates a directory like./my_context/with subfolders for aggregates and entities. - Define an aggregate:
openclaw ddd generate-aggregate --context MyContext --name AccountAggregate --root EntityName --invariants "balance > 0"Adds files likeaccount_aggregate.pywith the root entity and invariant checks. - Create an entity:
openclaw ddd generate-entity --context MyContext --name UserEntity --properties "id:UUID, name:String" - Handle domain events:
openclaw ddd generate-event --context MyContext --name UserCreatedEvent --payload "user_id:UUID"
API Endpoints:
- POST /api/v1/ddd/contexts with JSON body:
{"name": "MyContext", "description": "User management", "language": "python"}Requires header:Authorization: Bearer $OPENCLAW_API_KEY - POST /api/v1/ddd/aggregates with body:
{"context": "MyContext", "name": "AccountAggregate", "root": "Account", "invariants": ["balance > 0"]}
Config Formats:
Use YAML for configurations, e.g., in a .openclaw/config.yml file:
ddd:
default_language: python
contexts:
- name: MyContext
description: User management
Code Snippets:
- Generate and use a context in Python:
import openclaw.ddd as oc oc.generate_context(name="MyContext", description="User management") context = oc.load_context("MyContext") - Define an aggregate in code:
from openclaw.ddd import Aggregate class AccountAggregate(Aggregate): def __init__(self, account_id): self.root = Entity(account_id) # Assuming Entity is generated
Integration Notes
Integrate by exporting $OPENCLAW_API_KEY=your_api_key before CLI/API calls. Add OpenClaw as a dependency in your project (e.g., pip install openclaw for Python). For IDEs, use plugins like VS Code extensions to trigger commands via keyboard shortcuts, such as binding openclaw ddd generate-context to a key. Chain with other tools: pipe CLI output to Git for auto-commits, or use webhooks to call API endpoints from services like Jenkins. Ensure compatibility by specifying language flags (e.g., --language java) to match your stack.
Error Handling
Always check CLI exit codes; non-zero indicates failure (e.g., if [ $? -ne 0 ]; then echo "Error: Invalid input"; fi). For API calls, handle HTTP errors like 400 for validation failures or 401 for auth issues by checking response status. In code, wrap operations in try-except blocks:
try:
oc.generate_aggregate(context="MyContext", name="InvalidAggregate", invariants=["invalid"])
except oc.DDDValidationError as e: # Specific error for invariant checks
print(f"Error: {e.message} - Fix invariants and retry")
except oc.AuthError as e: # For $OPENCLAW_API_KEY issues
print("Error: Authentication failed - Set $OPENCLAW_API_KEY")
Validate inputs upfront, e.g., ensure context names are alphanumeric via CLI flags like --validate.
Concrete Usage Examples
-
Building a bounded context for an e-commerce order system: First, identify the domain: orders involve aggregates like Order and LineItems. Run:
openclaw ddd generate-context --name OrderContext --description "Manages orders" --modules orders,itemsThis outputs:./order_context/orders.pyand./order_context/items.py. Next, add an aggregate:openclaw ddd generate-aggregate --context OrderContext --name OrderAggregate --root Order --invariants "total > 0"In code, import and use:from order_context.aggregates import OrderAggregate; order = OrderAggregate(order_id=1) -
Handling domain events in a user registration flow: Start by generating the event:
openclaw ddd generate-event --context UserContext --name UserRegisteredEvent --payload "user_id:UUID, email:String"This creates./user_context/events/user_registered_event.py. Then, trigger it via API:curl -H "Authorization: Bearer $OPENCLAW_API_KEY" -X POST /api/v1/ddd/events -d '{"context": "UserContext", "event": "UserRegisteredEvent", "payload": {"user_id": "123"}}'In your application code:oc.publish_event(context="UserContext", event="UserRegisteredEvent", payload={"user_id": "123"})to notify other services.
Graph Relationships
- Related to cluster: se-architecture (e.g., shares dependencies with other architecture skills).
- Connected via tags: ddd (links to domain modeling tools), domain (connects to entity management skills), bounded-context (relates to microservices patterns), architecture (ties into se-architecture cluster for broader design tools).