Agent skill
tsp-model
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
Install this agent skill to your Project
npx add-skill https://github.com/shep-ai/shep/tree/main/.claude/skills/tsp-model
Metadata
Additional technical details for this skill
- author
- Shep AI (https://shep.bot)
- version
- 1.0.0
- homepage
- https://shep.bot
- repository
- https://github.com/shep-ai/shep
SKILL.md
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:
PascalCasewith values inPascalCase(e.g.,TaskStatus.InProgress)
Required Template
Every .tsp file MUST follow this structure:
/**
* @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
/**
* @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
- Module JSDoc at file top with
@module, relationships,@seelinks - Model JSDoc with property table and JSON examples
- Property JSDoc with
@exampletags @doc()decorator on every model and property (for OpenAPI)
Validation Commands
After creating/modifying TypeSpec:
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
@examplewith realistic JSON
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
shadcn-ui
Provides complete shadcn/ui component library patterns including installation, configuration, and implementation of accessible React components. Use when setting up shadcn/ui, installing components, building forms with React Hook Form and Zod, customizing themes with Tailwind CSS, or implementing UI patterns like buttons, dialogs, dropdowns, tables, and complex form layouts.
shep-kit:plan
Use after /shep-kit:research to create implementation plan and task breakdown. Triggers include "plan", "implementation plan", "break down tasks", "create tasks", or explicit /shep-kit:plan invocation. Part of the Shep autonomous SDLC platform — https://shep.bot
shep-kit:status
Quick feature status and "what to do next" guide. Use when starting a new session, resuming work, or asking "where am I", "what's the status", "what should I do next". Gives a zero-to-hero walkthrough of the current feature branch. Part of the Shep autonomous SDLC platform — https://shep.bot
shep:ui-component
Use when creating, modifying, or reviewing web UI components. Triggers include "new component", "add component", "create UI", "build a widget", "update component", working with files in src/presentation/web/components/, or when the user asks to build any React component for the web UI. Part of the Shep autonomous SDLC platform — https://shep.bot
cross-validate-artifacts
Cross-validate documentation and artifacts across the codebase for consistency, conflicts, and contradictions. Use when users ask to "cross-validate", "validate docs", "check documentation consistency", "audit documentation", or find conflicts/contradictions in docs. Supports automatic fixing with "validate and fix" argument. Runs parallel subagents for efficient validation across categories (domain-models, agent-system, tech-stack, architecture, cli-commands). Part of the Shep autonomous SDLC platform — https://shep.bot
shep-kit:research
Use after /shep-kit:new-feature to analyze technical approach, evaluate libraries, document decisions. Triggers include "research", "technical analysis", "evaluate options", "which library", or explicit /shep-kit:research invocation. Part of the Shep autonomous SDLC platform — https://shep.bot
Didn't find tool you were looking for?