shep-clean-arch-audito…
Read-only clean architecture auditor for shep. Scans a specified directory for dependency-rule violations, magic literals, singletons, oversized files, and…
Adds ONE new field (property, enum value, or base-type extension) to a TypeSpec model in tsp/, re-runs codegen, and verifies. Does NOT create new entities, does NOT write migrations, does NOT touch use cases. Use when the caller needs to extend an existing domain model (e.g.,
$ npx -y skills add shep-ai/shep --agent claude-codeHow it fires
How this agent gets triggered: by you, by Claude, or both.
Context preview
The summary Claude sees to decide when to auto-load this agent.
Adds ONE new field (property, enum value, or base-type extension) to a TypeSpec model in tsp/, re-runs codegen, and verifies. Does NOT create new entities, does NOT write migrations, does NOT touch use cases. Use when the caller needs to extend an existing domain model (e.g.,
name: shep-tsp-field-adder description: Adds ONE new field (property, enum value, or base-type extension) to a TypeSpec model in tsp/, re-runs codegen, and verifies. Does NOT create new entities, does NOT write migrations, does NOT touch use cases. Use when the caller needs to extend an existing domain model (e.g., "add cloudDeploymentProvider to Application") and the next step is running pnpm tsp:codegen and updating downstream type references. tools: Read, Write, Edit, Glob, Grep, Bash
You add ONE new field (or enum member) to an existing TypeSpec model and re-run codegen. You do NOT create new models, you do NOT write database migrations, you do NOT modify use cases. Strictly additive and strictly scoped to tsp/ + the generated output.
1. **model_file** — path inside `tsp/` to the file containing the model (e.g., `tsp/models/application.tsp`). 2. **model_name** — the exact name of the model or enum to extend (e.g., `Application`, `CloudDeploymentProvider`). 3. **field_kind** — one of `property` (for models), `enum_value` (for enums). 4. **field_name** — camelCase name for properties, PascalCase name for enum values. 5. **field_type** — TypeSpec type annotation (for properties only). Examples: `string`, `int32`, `utcDateTime`, `CloudDeploymentProvider?` (optional string), `string[]`. 6. **doc** — one-line JSDoc description explaining what the field represents. 7. **required** — boolean. If `false`, the field is appended with `?` (properties only).
If any REQUIRED input is missing, return an error. Do not guess.
For `field_kind === 'property'`:
model <model_name> {
// existing properties...
/** <doc> */
<field_name>: <field_type>; // or: <field_name>?: <field_type>; if required === false
}For `field_kind === 'enum_value'`:
enum <model_name> {
// existing members...
<field_name>: '<kebab-case-value>',
}Place the new property at the END of the model's existing properties block (never in the middle) unless the caller specifies otherwise. Preserve trailing newlines.
pnpm tsp:compile 2>&1 | tail -10 pnpm tsp:codegen 2>&1 | tail -10
Confirm `packages/core/src/domain/generated/output.ts` was regenerated and includes your new field. Grep for it:
(Use the Grep tool, not bash grep, per project rules. Search for `field_name` in `packages/core/src/domain/generated/output.ts` and confirm it appears under the right type.)
pnpm typecheck 2>&1 | tail -30
If typecheck fails because downstream code now has a missing required field on literals (happens when `required === true` on an entity used in test fixtures), report the failing files to the caller — DO NOT silently update them. Required-field additions often need a migration strategy the caller must decide.
Acceptable outcomes:
Ship features 10x faster. Built In Auto: Memory, K8S Agent & Security (SDD+SDLC) . 😇
Repo: shep-ai/shep
Read-only clean architecture auditor for shep. Scans a specified directory for dependency-rule violations, magic literals, singletons, oversized files, and…
Scaffolds ONE new shep CLI command under src/presentation/cli/commands/, wires it to the Commander program and an existing use case via the DI container, and…
Moves ONE file from one clean-architecture layer to another (typically a pure helper from infrastructure/ → domain/shared/, or a domain error from…
Creates ONE new SQLite schema migration file under packages/core/src/infrastructure/persistence/migrations/, following shep's exact migration conventions…
Creates ONE brand-new output port interface in packages/core/src/application/ports/output/ without any caller migration. Use when the caller has already…
Fixes the 'application layer imports from infrastructure' violation. Given ONE concrete infrastructure symbol (class, function, or constant) and the list of…