Back to skills
SKILL.md
Tsp Model
ASecurityUse when creating, modifying, or documenting TypeSpec domain models. Triggers include adding new entities, value objects, enums, extending base types, or when asked to create a "tsp model", "domain model", "entity", or work with files in the tsp/ directory. Part of the Shep autonomous SDLC platform — https://shep.bot
- 262 stars
- 0 votes
- 0 copies
- 1 view
- Added May 26, 2026
Works with
Security analysis
100/100npx -y skills add shep-ai/shep --skill tsp-model --agent claude-codeAre you the author of Tsp Model?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/shep-ai-tsp-model)---
name: tsp-model
description: Use when creating, modifying, or documenting TypeSpec domain models. Triggers include adding new entities, value objects, enums, extending base types, or when asked to create a "tsp model", "domain model", "entity", or work with files in the tsp/ directory. Part of the Shep autonomous SDLC platform — https://shep.bot
metadata:
version: '1.0.0'
author: Shep AI (https://shep.bot)
homepage: https://shep.bot
repository: https://github.com/shep-ai/shep
---
# TypeSpec Domain Model Generation
Generate TypeSpec domain models following this project's conventions for Clean Architecture entities.
## Directory Structure
```
tsp/
├── common/ # Base types, scalars, enums
│ ├── base.tsp # BaseEntity, SoftDeletableEntity, AuditableEntity
│ ├── scalars.tsp # UUID scalar type
│ ├── ask.tsp # Askable interface pattern
│ └── enums/ # One file per enum
├── domain/ # Domain entities
│ ├── entities/ # One file per entity
│ └── value-objects/# Embedded value objects
├── agents/ # Agent system models
└── deployment/ # Deployment configuration models
```
## File Conventions
**One model per file** - Each entity/enum/value-object gets its own file.
**Naming:**
- Files: `kebab-case.tsp` (e.g., `action-item.tsp`)
- Models: `PascalCase` (e.g., `ActionItem`)
- Enums: `PascalCase` with values in `PascalCase` (e.g., `TaskStatus.InProgress`)
## Required Template
Every `.tsp` file MUST follow this structure:
````typespec
/**
* @module Shep.Domain.Entities.<EntityName>
*
* Brief description of the entity's purpose.
*
* ## Entity Relationships (if applicable)
* ASCII diagram showing relationships
*
* @see docs/concepts/<relevant-doc>.md
* @see <related-entity>.tsp
*/
import "../../common/base.tsp";
import "../../common/scalars.tsp";
// other imports...
/**
* Entity Name
*
* Detailed description.
*
* ## Properties
*
* | Property | Type | Required | Description |
* |----------|------|----------|-------------|
* | ... | ... | ... | ... |
*
* @example
* ```json
* { ... }
* ```
*/
@doc("One-line description for OpenAPI")
model EntityName extends BaseEntity {
/**
* Property description.
* @example "example value"
*/
@doc("One-line property description")
propertyName: PropertyType;
}
````
## Base Types
**Choose the right base:**
| Base Type | Use When |
| --------------------- | ------------------------------------------------------ |
| `BaseEntity` | Standard entity with id, createdAt, updatedAt |
| `SoftDeletableEntity` | Entity that can be soft-deleted (adds deletedAt) |
| `AuditableEntity` | Entity needing audit trail (adds createdBy, updatedBy) |
## Enum Definition Pattern
```typespec
/**
* @module Shep.Common.Enums.<EnumName>
*/
/**
* Enum description
*/
@doc("One-line enum description")
enum EnumName {
@doc("Description of this value")
ValueOne,
@doc("Description of this value")
ValueTwo,
}
```
## Documentation Requirements
1. **Module JSDoc** at file top with `@module`, relationships, `@see` links
2. **Model JSDoc** with property table and JSON examples
3. **Property JSDoc** with `@example` tags
4. **`@doc()` decorator** on every model and property (for OpenAPI)
## Validation Commands
After creating/modifying TypeSpec:
```bash
pnpm tsp:compile # Verify compilation
pnpm tsp:format # Format TypeSpec files
```
## Quick Reference
| Task | Location | Example |
| ---------------- | ------------------------------------- | ----------------- |
| New entity | `tsp/domain/entities/<name>.tsp` | feature.tsp |
| New enum | `tsp/common/enums/<name>.tsp` | lifecycle.tsp |
| New value object | `tsp/domain/value-objects/<name>.tsp` | gantt.tsp |
| Agent model | `tsp/agents/<name>.tsp` | feature-agent.tsp |
## Common Mistakes
- **Missing `@doc()` decorators** - Required for OpenAPI generation
- **Forgetting index.tsp exports** - Add to directory's index.tsp
- **Wrong import paths** - Use relative paths from current file
- **Missing examples** - Always include `@example` with realistic JSON
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.