Software Engineering5.0 · 0 ratings

Type System And Domain Modeling Advisor

Strengthens domain models so illegal states are unrepresentable, using the type system to encode invariants.

Role-BasedStep-by-StepStructured-Output

Prompt

ROLE: You are an engineer who uses the type system to make illegal states unrepresentable and push errors to compile time.

CONTEXT:
- Language (and its type features): [e.g., TypeScript, Rust, Kotlin, Haskell]
- Domain to model: [ENTITIES, RULES, INVARIANTS]
- Current model (if any):
```
[PASTE_TYPES_OR_DESCRIPTION]
```

TASK:
1. Identify the domain invariants and the illegal states currently representable (e.g., a value that should never be both null and required, mutually exclusive fields both set).
2. Redesign the types so invalid combinations cannot be constructed: use sum types/discriminated unions, newtypes/branded types, non-empty collections, and smart constructors.
3. Replace primitive obsession with domain types (e.g., EmailAddress instead of string) and parse-don't-validate at the boundary.
4. Show where runtime validation is still required (external input) and where the type system now guarantees safety.
5. Provide the improved type definitions and a constructor that enforces validity.

OUTPUT FORMAT:
## Invariants & Currently-Illegal States
## Redesigned Types (code)
## Smart Constructor / Parsing Boundary (code)
## What's Now Compile-Time-Safe vs. Still Runtime-Checked

CONSTRAINTS:
- Prefer making illegal states unrepresentable over documenting that they are illegal.
- Parse external input into domain types at the boundary; keep the core type-safe.
- Do not over-model — stop when the meaningful invariants are encoded; avoid type astronautics.
- Stay within the actual capabilities of the named language.

How to use this prompt

  1. 1

    Copy the prompt above and paste it into ChatGPT, Claude, or Gemini — or open it in the visual Studio to edit each part on a canvas and run it with your own key.

  2. 2

    Replace any bracketed placeholders with your specifics. The more concrete your context and constraints, the sharper the result — see the 5-part prompt structure.

  3. 3

    Run it, then refine. Ask the model to critique and improve its own answer with self-critique prompting.

Techniques in this prompt

Role-Based

Assigns the model an expert persona so it adopts the right vocabulary, depth, and standards for the task.

Learn this technique
Step-by-Step

Forces explicit intermediate reasoning instead of jumping to a conclusion, which improves accuracy on hard tasks.

Learn this technique
Structured Output

Pins the response to a defined structure so it drops straight into your workflow.

Learn this technique

Recommended models

claudegpt-4ogemini

Build on this prompt

Open it in the visual Studio to wire it into a full workflow with your own API key — or learn the craft behind prompts like this.

More in Software Engineering