domain-language-types

Guides naming TypeScript types using domain language instead of structural terms.

Updated Sep 5, 2026
One-click install
npx skills add https://github.com/pohlai88/afenda-xforge-v5 --skill domain-language-types-pohlai88
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: domain-language-types
Source: https://github.com/pohlai88/afenda-xforge-v5/tree/main/.agents/skills/domain-language-types
Command: npx skills add https://github.com/pohlai88/afenda-xforge-v5 --skill domain-language-types-pohlai88

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Type names like IDataEntity or IStringPairList describe structure rather than meaning, making code hard to understand for developers and domain experts alike. This Skill provides rules and examples for naming types with the language of the business domain. ## Core Features & Use Cases - Structural Name Detection: Identifies anti-patterns such as Hungarian I prefixes, redundant Type/Interface suffixes, and generic terms like DataModel or EntityRecord. - Domain Naming Guidance: Shows how to rename types and properties using ubiquitous language from Domain-Driven Design, with before-and-after TypeScript examples. - Use Case: While refactoring an e-commerce codebase, replace ICollection and IEntity with ProductCatalog and Order so that domain experts can read and validate the type definitions. ## Quick Start Review my TypeScript interfaces and rename any types that describe structure instead of domain meaning.

Frequently Asked Questions about domain-language-types

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I name TypeScript interfaces and types?

Name types for what they represent in the business domain, not how they are structured. Use names like `Customer` or `Invoice` instead of `IDataRecord`, and choose terms that domain experts would recognize.

Should TypeScript interfaces use the I prefix naming convention?

No, the `I` prefix adds no meaning and reduces clarity. Write `interface User` instead of `interface IUser`; conventions that reduce clarity should be challenged rather than followed blindly.

When are technical type names acceptable in TypeScript?

Technical names are fine for widely understood concepts like `HttpRequest` or `DatabaseConnection`, truly generic utilities like `Nullable<T>`, and internal implementation details such as `InternalCacheNode<T>`.

What are bad type naming patterns to avoid?

Avoid Hungarian prefixes (`I`, `T`), redundant suffixes (`Type`, `Interface`, `Object`), structural names (`StringArray`, `NumberMap`), and generic terms like `DataModel` or `EntityRecord` that a domain expert would not recognize.

What is ubiquitous language in domain-driven design?

Ubiquitous language is a shared vocabulary between developers and domain experts. If domain experts say "fulfillment", name the type `OrderFulfillment` rather than `OrderProcessingData`, so code and business discussions use the same terms.