Type System And Domain Modeling Advisor
Strengthens domain models so illegal states are unrepresentable, using the type system to encode invariants.
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
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
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
Run it, then refine. Ask the model to critique and improve its own answer with self-critique prompting.
Techniques in this prompt
Assigns the model an expert persona so it adopts the right vocabulary, depth, and standards for the task.
Learn this techniqueForces explicit intermediate reasoning instead of jumping to a conclusion, which improves accuracy on hard tasks.
Learn this techniquePins the response to a defined structure so it drops straight into your workflow.
Learn this techniqueRecommended models
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
Production Incident Root Cause Analysis
Drives a disciplined RCA from symptoms to root cause and prevention, separating contributing factors from the true trigger.
Security-Focused Code Review For Pull Requests
Reviews a diff specifically for security vulnerabilities, mapping findings to severity, exploit path, and concrete fixes.
Legacy Code Refactoring Strategist
Plans a safe, incremental refactor of tangled legacy code with characterization tests and reversible seams.
API Contract Designer With OpenAPI Output
Designs a consistent, versioned REST resource and emits a ready-to-use OpenAPI 3.1 fragment plus error model.