ClaudeMods
☰
EN
● 0 online · Views 0 times
SponsorsSubmit a project
GitHub repositories · by ruvnet

ruflo-ddd

Domain-Driven Design scaffolding plugin for Claude Code with a function-hook guard that blocks secrets in DDD memory writes.

ruvnet@ruvnet

ruvnet/ruflo/tree/main/plugins/ruflo-ddd

Translated

About this mod

ruflo-ddd is a Claude Code plugin that scaffolds Domain-Driven Design artifacts: bounded contexts, aggregate roots, value objects, domain events, repositories, and anti-corruption layers, stored as a navigable graph in AgentDB. It ships a domain-modeler agent, skills (/ddd-context, /ddd-aggregate, /ddd-validate) and six CLI subcommands for context management, aggregate/event scaffolding, validation and context mapping. Since the listed version it also acts as a function-hook mod (requires Claude Code 2.1.287+): a default-on guard refuses domain-model memory writes containing keys, tokens or passwords (naming the secret kind, never the value), a local /ddd-mod command answers status/scan/contexts without a model turn, a status file is written to .claude-flow/ddd-mod/status.json, and a userConfig guard option toggles enforcement. Installation: claude --plugin-dir plugins/ruflo-ddd; verification via bash plugins/ruflo-ddd/scripts/smoke.sh (expected 10 passed, 0 failed). The plugin never calls the network or spawns processes and can only tighten, never loosen, tool calls. MIT licensed.

Installation

Check the author's README for the marketplace and plugin name first. Commands may change as the repository evolves.

claude plugin marketplace add ruvnet/ruflo
claude plugin install ruflo-ddd
Original text / README

ruflo-ddd

Domain-Driven Design scaffolding -- bounded contexts, aggregate roots, domain events, and anti-corruption layers.

Overview

Transforms business domains into well-structured bounded contexts with aggregate roots, value objects, domain events, repositories, and anti-corruption layers. Stores the domain model as a navigable graph in AgentDB with hierarchical nodes and causal edges for context dependencies.

Installation

claude --plugin-dir plugins/ruflo-ddd

Agents

| Agent | Model | Role | |-------|-------|------| | domain-modeler | sonnet | Map domains to bounded contexts, design aggregates with invariants, define domain events, generate ACL interfaces |

Skills

| Skill | Usage | Description | |-------|-------|-------------| | ddd-context | /ddd-context <context-name> | Create a bounded context with standard directory structure | | ddd-aggregate | /ddd-aggregate <context> <aggregate-name> | Scaffold an aggregate root with entity, value objects, repository, events, and test stubs | | ddd-validate | /ddd-validate | Detect cross-context import violations and aggregate invariant issues |

Commands (6 subcommands)

# Context management
ddd context create <name>
ddd context list

# Aggregate scaffolding
ddd aggregate <context> <name>
ddd event <context> <name>

# Validation & visualization
ddd validate                 # Check domain boundary violations
ddd map                      # Visualize context map with relationships

Directory Structure per Context

src/<context-name>/
  domain/
    entities/           # Entities and aggregate root
    value-objects/       # Immutable value objects
    events/             # Domain events
    services/           # Domain services
    repositories/       # Repository interfaces
  application/          # Use cases / application services
  infrastructure/       # Repository implementations, ACL adapters
  index.ts              # Public API of the context

Context Relationships

Detected via import analysis: upstream/downstream, ACL, shared kernel, published language. Boundary violations (direct cross-context imports) are flagged by ddd validate.

Compatibility

  • CLI: pinned to @claude-flow/cli v3.6 major+minor.
  • Verification: bash plugins/ruflo-ddd/scripts/smoke.sh is the contract.

Namespace coordination

This plugin owns the ddd-patterns AgentDB namespace (kebab-case, follows the convention from ruflo-agentdb ADR-0001 §"Namespace convention"). Reserved namespaces (pattern, claude-memories, default) MUST NOT be shadowed.

ddd-patterns stores reusable bounded-context shapes, aggregate templates, and event vocabularies for cross-project reuse. Accessed via memory_* tools (namespace-routed).

Verification

bash plugins/ruflo-ddd/scripts/smoke.sh
# Expected: "10 passed, 0 failed"

Architecture Decisions

Related Plugins

  • ruflo-agentdb — namespace convention owner; backing store for the domain graph
  • ruflo-adr -- Document domain decisions as Architecture Decision Records
  • ruflo-sparc -- Architecture phase leverages DDD bounded context patterns
  • ruflo-migrations -- Align migration boundaries with aggregate roots

License

MIT

As a mod

Since this version the plugin is also a function-hook mod (ADR-445 pattern; needs Claude Code 2.1.287 or later). It never calls the network or spawns a process, and it only tightens: it can refuse a call, never allow one.

  • Guard (default on): refuses domain-model memory writes (ddd-* keys and context:/aggregate: hierarchy edges) that hold a key, token or password. The reason names the kind of secret, never the value.
  • /ddd-mod: answered locally, no model turn: status, scan <text> (would the guard refuse this?), and contexts (folders under src/, src/contexts, src/modules with a domain/ layer).
  • Status file: .claude-flow/ddd-mod/status.json ({version, updatedMs, guard, blocked}), written at session start and when a call is blocked.
  • Option: guard (on | off, default on) in the plugin's userConfig.

Test it: claude plugin test plugins/ruflo-ddd and bash plugins/ruflo-ddd/scripts/smoke.sh.

Similar projects