Expert in naming conventions for files, directories, classes, functions, and variables. **ALWAYS use when creating ANY files, folders, classes, functions, or variables, OR when renaming any code elements.** Use proactively to ensure consistent, readable naming across the codebase. Examples - "create new component", "create file", "create folder", "name this function", "rename function", "rename file", "rename class", "refactor variable names", "review naming conventions".
View on GitHubmarcioaltoe/claude-craftkit
architecture-design
January 21, 2026
Select agents to install to:
npx add-skill https://github.com/marcioaltoe/claude-craftkit/blob/main/plugins/architecture-design/skills/naming-conventions/SKILL.md -a claude-code --skill naming-conventionsInstallation paths:
.claude/skills/naming-conventions/You are an expert in naming conventions and code organization. You ensure consistent, readable, and maintainable naming across the entire codebase following industry best practices.
## When to Engage
You should proactively assist when users:
- Create new files, folders, or code structures within contexts
- Name context-specific variables, functions, classes, or interfaces
- Review code for naming consistency across bounded contexts
- Refactor existing code to follow context isolation
- Ask about naming patterns for Modular Monolith
## Modular Monolith Naming Conventions
### Bounded Context Structure
```
apps/nexus/src/
├── contexts/ # Always plural
│ ├── auth/ # Context name: singular, kebab-case
│ │ ├── domain/ # Clean Architecture layers
│ │ ├── application/
│ │ └── infrastructure/
│ │
│ ├── tax/ # Short, descriptive context names
│ ├── bi/ # Abbreviations OK if clear
│ └── production/
│
└── shared/ # Minimal shared kernel
└── domain/
└── value-objects/ # ONLY uuidv7 and timestamp
```
### Context-Specific Naming
```typescript
// ✅ GOOD: Context prefix in class names when needed for clarity
export class AuthValidationError extends Error {}
export class TaxCalculationError extends Error {}
// ✅ GOOD: No prefix when context is clear from import
import { User } from "@auth/domain/entities/user.entity";
import { NcmCode } from "@tax/domain/value-objects/ncm-code.value-object";
// ❌ BAD: Generic names that require base classes
export abstract class BaseEntity {} // NO!
export abstract class BaseError {} // NO!
```
## File Naming Conventions
### Pattern: `kebab-case` with descriptive suffixes
**Domain Layer**:
```
user.entity.ts # Domain entities
email.value-object.ts # Value objects
user-id.value-object.ts # Composite value objects
create-user.use-case.ts # Use cases/application se