Skip to content
Back to skills

Protean Overview

ASecurity

Orient a coding agent to a Protean domain before it writes code. Explains the core building blocks (aggregates, entities, value objects, events, commands, handlers) and the rules that hold across them. Use when starting work in a Protean project, when unsure which element to reach for, or when the user asks "how is a Protean domain put together".

  • 46 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 3, 2026
developmentpythongo

Security analysis

A100/100

Scanned September 24, 2026

npx -y skills add proteanhq/protean --skill protean-overview --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Protean Overview?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Protean Overview
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/proteanhq-protean-overview/badge)](https://www.skillsdirectory.com/skills/proteanhq-protean-overview)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: protean-overview
description: Orient a coding agent to a Protean domain before it writes code. Explains the core building blocks (aggregates, entities, value objects, events, commands, handlers) and the rules that hold across them. Use when starting work in a Protean project, when unsure which element to reach for, or when the user asks "how is a Protean domain put together".
license: Apache-2.0
compatibility: Requires Python 3.11+, protean framework
metadata:
  author: proteanhq
  version: "0.1"
  category: orientation
  diagnostic_codes:
    - AGGREGATE_NO_INVARIANTS
---

# Protean overview

<!-- dx-pack-seed: minimal seed skill; the full teaching corpus lands with the
developer-experience epic. -->

Protean is a domain-driven framework. A domain is a registry of elements you
declare with decorators on a `Domain` object.

## Building blocks

- **Aggregate** (`@domain.aggregate`): the root entity of a consistency
  boundary. It owns its child entities and value objects and enforces the
  invariants that must hold whenever it changes.
- **Entity** (`@domain.entity`): an object with identity that lives inside an
  aggregate and is reached through it.
- **Value object** (`@domain.value_object`): an immutable value with no
  identity, compared by its attributes.
- **Event** (`@domain.event`): a record of something that happened. An
  aggregate raises one with `self.raise_(...)`.
- **Command** (`@domain.command`): an intent to change state, processed by a
  command handler.
- **Handlers** (`@domain.command_handler`, `@domain.event_handler`): load an
  aggregate, invoke a method on it, and persist the result.

## Rules that hold across elements

- One aggregate changes per transaction. Consistency between aggregates is
  eventual, carried by events.
- Business rules live in the domain layer: field constraints, value-object
  invariants, and aggregate invariants.
- An aggregate has a single identity. Composite keys have no place in the model.

## Verify your work

- [Verify with check](../../references/verify-with-check.md): run `check` and resolve what it reports

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.