Skills Plugins MCP Prompt Model 博客 我的中心

v3-ddd-architecture

Domain-Driven Design architecture for claude-flow v3. Implements modular, bounded context architecture with clean separation of concerns and microkernel pattern.

DeepseekModel キュレーション済みスキル 品質 優秀 · 90 v1.0.0

取得

https://deepseekmodel.com/api/download.php?id=ruvnet-ruview-claude-skills-v3-ddd-architecture-skill-md&format=skill
ダウンロード .skill 標準形式。system_prompt と model_config を収録し、任意の Agent で利用可能
.skill ファイルの system_prompt フィールドの実際の内容。
name V3 DDD Architecture description Domain-Driven Design architecture for claude-flow v3. Implements modular, bounded context architecture with clean separation of concerns and microkernel pattern. V3 DDD Architecture What This Skill Does Designs and implements Domain-Driven Design (DDD) architecture for claude-flow v3, decomposing god objects into bounded contexts, implementing clean architecture patterns, and enabling modular, testable code structure. Quick Start # Initialize DDD architecture analysis Task( "Architecture analysis" , "Analyze current architecture and design DDD boundaries" , "core-architect" ) # Domain modeling (parallel) Task( "Domain decomposition" , "Break down orchestrator god object into domains" , "core-architect" ) Task( "Context mapping" , "Map bounded contexts and relationships" , "core-architect" ) Task( "Interface design" , "Design clean domain interfaces" , "core-architect" ) DDD Implementation Strategy Current Architecture Analysis ├── PROBLEMATIC: core/orchestrator.ts (1,440 lines - GOD OBJECT) │ ├── Task management responsibilities │ ├── Session management responsibilities │ ├── Health monitoring responsibilities │ ├── Lifecycle management responsibilities │ └── Event coordination responsibilities │ └── TARGET: Modular DDD Architecture ├── core/domains/ │ ├── task-management/ │ ├── session-management/ │ ├── health-monitoring/ │ ├── lifecycle-management/ │ └── event-coordination/ └── core/shared/ ├── interfaces/ ├── value-objects/ └── domain-events/ Domain Boundaries 1. Task Management Domain // core/domains/task-management/ interface TaskManagementDomain { // Entities Task : TaskEntity ; TaskQueue : TaskQueueEntity ; // Value Objects TaskId : TaskIdVO ; TaskStatus : TaskStatusVO ; Priority : PriorityVO ; // Services TaskScheduler : TaskSchedulingService ; TaskValidator : TaskValidationService ; // Repository TaskRepository : ITaskRepository ; } 2. Session Management Domain // core/domains/session-management/ interface SessionManagementDomain { // Entities Session : SessionEntity ; SessionState : SessionStateEntity ; // Value Objects SessionId : SessionIdVO ; SessionStatus : SessionStatusVO ; // Services SessionLifecycle : SessionLifecycleService ; SessionPersistence : SessionPersistenceService ; // Repository SessionRepository : ISessionRepository ; } 3. Health Monitoring Domain // core/domains/health-monitoring/ interface HealthMonitoringDomain { // Entities HealthCheck : HealthCheckEntity ; Metric : MetricEntity ; // Value Objects HealthStatus : HealthStatusVO ; Threshold : ThresholdVO ; // Services HealthCollector : HealthCollectionService ; AlertManager : AlertManagementService ; // Repository MetricsRepository : IMetricsRepository ; } Microkernel Architecture Pattern Core Kernel // core/kernel/claude-flow-kernel.ts export class ClaudeFlowKernel { private domains : Map < string , Domain > = new Map (); private eventBus : DomainEventBus ; private dependencyContainer : Container ; async initialize (): Promise < void > { // Load core domains await this . loadDomain ( 'task-management' , new TaskManagementDomain ()); await this . loadDomain ( 'session-management' , new SessionManagementDomain ()); await this . loadDomain ( 'health-monitoring' , new HealthMonitoringDomain ()); // Wire up domain events this . setupDomainEventHandlers (); } async loadDomain ( name : string , domain : Domain ): Promise < void > { await domain. initialize ( this . dependencyContainer ); this . domains . set (name, domain); } getDomain<T extends Domain >( name : string ): T { const domain = this . domains . get (name); if (!domain) { throw new DomainNotLoadedError (name); } return domain as T; } } Plugin Architecture // core/plugins/ interface DomainPlugin { name : string ; version : string ; dependencies : string []; initialize ( kernel : ClaudeFlowKernel ): Promise < void >; shutdown (): Promise < void >; } // Example: Swarm Coordination Plugin export class SwarmCoordinationPlugin implements DomainPlugin { name = 'swarm-coordination' ; version = '3.0.0' ; dependencies = [ 'task-management' , 'session-management' ]; async initialize ( kernel : ClaudeFlowKernel ): Promise < void > { const taskDomain = kernel. getDomain < TaskManagementDomain >( 'task-management' ); const sessionDomain = kernel. getDomain < SessionManagementDomain >( 'session-management' ); // Register swarm coordination services this . swarmCoordinator = new UnifiedSwarmCoordinator (taskDomain, sessionDomain); kernel. registerService ( 'swarm-coordinator' , this . swarmCoordinator ); } } Domain Events & Integration Event-Driven Communication // core/shared/domain-events/ abstract class DomainEvent { public readonly eventId : string ; public readonly aggregateId : string ; public readonly occurredOn : Date ; public readonly eventVersion : number ; constructor ( aggregateId : string ) { this . eventId = crypto. randomUUID (); this . aggregateId = aggregateId; this . occurredOn = new Date (); this . eventVersion = 1 ; } } // Task domain events export class TaskAssignedEvent extends DomainEvent { constructor ( taskId : string , public readonly agentId : string , public readonly priority : Priority ) { super (taskId); } } export class TaskCompletedEvent extends DomainEvent { constructor ( taskId : string , public readonly result : TaskResult , public readonly duration : number ) { super (taskId); } } // Event handlers @EventHandler ( TaskCompletedEvent ) export class TaskCompletedHandler { constructor ( private metricsRepository : IMetricsRepository , private sessionService : SessionLifecycleService ) {} async handle ( event : TaskCompletedEvent ): Promise < void > { // Update metrics await this . metricsRepository . recordTaskCompletion ( event. aggregateId , event. duration ); // Update session state await this . sessionService . markTaskCompleted ( event. aggregateId , event. result ); } } Clean Architecture Layers // Architecture layers ┌─────────────────────────────────────────┐ │ Presentation │ ← CLI , API , UI ├─────────────────────────────────────────┤ │ Application │ ← Use Cases , Commands ├─────────────────────────────────────────┤ │ Domain │ ← Entities , Services , Events ├─────────────────────────────────────────┤ │ Infrastructure │ ← DB , MCP , External APIs └─────────────────────────────────────────┘ // Dependency direction: Outside → Inside // Domain layer has NO external dependencies Application Layer (Use Cases) // core/application/use-cases/ export class AssignTaskUseCase { constructor ( private taskRepository : ITaskRepository , private agentRepository : IAgentRepository , private eventBus : DomainEventBus ) {} async execute ( command : AssignTaskCommand ): Promise < TaskResult > { // 1. Validate command await this . validateCommand (command); // 2. Load aggregates const task = await this . taskRepository . findById (command. taskId ); const agent = await this . agentRepository . findById (command. agentId ); // 3. Business logic (in domain) task. assignTo (agent); // 4. Persist changes await this . taskRepository . save (task); // 5. Publish domain events task. getUncommittedEvents (). forEach ( event => this . eventBus . publish (event) ); // 6. Return result return TaskResult . success (task); } } Module Configuration Bounded Context Modules // core/domains/task-management/module.ts export const taskManagementModule = { name : 'task-management' , entities : [ TaskEntity , TaskQueueEntity ], valueObjects : [ TaskIdVO , TaskStatusVO , PriorityVO ], services : [ TaskSchedulingService , TaskValidationService ], repositories : [ { provide : ITaskRepository , useClass : SqliteTaskRepository } ], eventHandlers : [ TaskAssignedHandler , TaskCompletedHandler ] }; Migration Strategy Phase 1: Extract Domain Services // Extract services from orchestrator.ts const extractionPlan = { week1 : [ 'TaskManager → task-management domain' , 'SessionManager → session-management domain' ], week2 : [ 'HealthMonitor → health-monitoring domain' , 'LifecycleManager → lifecycle-management domain' ], week3 : [ 'EventCoordinator → event-coordination domain' , 'Wire up domain events' ] }; Phase 2: Implement Clean Interfaces // Clean separation with dependency injection export class TaskController { constructor ( @Inject ( 'AssignTaskUseCase' ) private assignTask : AssignTaskUseCase , @Inject ( 'CompleteTaskUseCase' ) private completeTask : CompleteTaskUseCase ) {} async assign ( request : AssignTaskRequest ): Promise < TaskResponse > { const command = AssignTaskCommand . fromRequest (request); const result = await this . assignTask . execute (command); return TaskResponse . fromResult (result); } } Phase 3: Plugin System // Enable plugin-based extensions const pluginSystem = { core : [ 'task-management' , 'session-management' , 'health-monitoring' ], optional : [ 'swarm-coordination' , 'learning-integration' , 'performance-monitoring' ] }; Testing Strategy Domain Testing (London School TDD) // Pure domain logic testing describe ( 'Task Entity' , () => { let task : TaskEntity ; let mockAgent : jest. Mocked < AgentEntity >; beforeEach ( () => { task = new TaskEntity ( TaskId . create (), 'Test task' ); mockAgent = createMock< AgentEntity >(); }); it ( 'should assign to agent when valid' , () => { mockAgent. canAcceptTask . mockReturnValue ( true ); task. assignTo (mockAgent); expect (task. assignedAgent ). toBe (mockAgent); expect (task. status . value ). toBe ( 'assigned' ); }); it ( 'should emit TaskAssignedEvent when assigned' , () => { mockAgent. canAcceptTask . mockReturnValue ( true ); task. assignTo (mockAgent); const events = task. getUncommittedEvents (); expect (events). toHaveLength ( 1 ); expect (events[ 0 ]). toBeInstanceOf ( TaskAssignedEvent ); }); }); Success Metrics God Object Elimination : orchestrator.ts (1,440 lines) → 5 focused domains (<300 lines each) Bounded Context Isolation : 100% domain independence Plugin Architecture : Core + optional modules loading Clean Architecture : Dependency inversion maintained Event-Driven Communication : Loose coupling between domains Test Coverage : >90% domain logic coverage Related V3 Skills v3-core-implementation - Implementation of DDD domains v3-memory-unification - AgentDB integration within bounded contexts v3-swarm-coordination - Swarm coordination as domain plugin v3-performance-optimization - Performance optimization across domains Usage Examples Complete Domain Extraction # Full DDD architecture implementation Task( "DDD architecture implementation" , "Extract orchestrator into DDD domains with clean architecture" , "core-architect" ) Plugin Development # Create domain plugin npm run create:plugin -- --name swarm-coordination --template domain
このスキルを起動するキーワード。クリックでコピーできます。

このスキルにはトリガーワードがありません。

ダウンロードした .skill に含まれるフィールド。
フィールド 説明
formatフォーマット識別子(skill/v1)
skill_idスキル固有 ID
nameスキル名
versionバージョン
description説明
categoryカテゴリ(配列)
trigger_wordsトリガーワード
tagsタグ
sourceソース
source_urlソース URL(本ページ)
exported_atエクスポート日時(ダウンロード毎)
system_promptシステムプロンプト本文
model_configモデル設定:provider / model / temperature / max_tokens / top_p
examplesサンプル
install_guide各プラットフォームの導入説明(Coze / Dify / Claude / カスタム)
同じスキルを各プラットフォーム形式で出力できます。
.skill 標準形式。system_prompt と model_config を収録し、任意の Agent で利用可能 ダウンロード
.skillpro 拡張形式。scripts / tools / dependencies / hooks を含む ダウンロード
.json 純粋な JSON 出力。system_prompt とモデル設定のみ ダウンロード
Coze frontmatter 付き Markdown。Coze へのインポート用 ダウンロード
Dify Dify DSL。アプリ作成後にそのままインポート ダウンロード

每日精选 Skill 推荐,免费送到你邮箱

输入邮箱,每天接收一个精选 AI Agent 技能推荐。完全免费,持续更新。

提交后我们会发送一封确认邮件,点击邮件里的链接才会开始收信。

完全免费,取消任意时间。我们不会发送垃圾邮件。