Add a domain entity/aggregate with EF configuration and a migration to an existing FSH module.

MITAuto-check passedDevelopment

Install Add Entity

skills CLI
$ npx skills add fullstackhero/dotnet-starter-kit --skill add-entity -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install fullstackhero/dotnet-starter-kit add-entity --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/fullstackhero/dotnet-starter-kit.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/add-entity .claude/skills/add-entity && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
add-entity
GitHub stars
6.8k
Token cost
~1.2k tokens
SKILL.md length
200 words
Files
1
Skills in repo
11
Repo updated
First seen
Licence
MIT

At a glance

Add a domain entity/aggregate with EF configuration and a migration to an existing FSH module.

  • Adding a new database-backed entity
  • SKILL.md covers Entity — AggregateRoot (or…, Domain event — inherit…, EF configuration and Register in the module DbContext, plus 2 more sections
  • Calls dotnet
  • Tasks that involve Project scaffolding

What it does

Add Entity is an agent skill from fullstackhero/dotnet-starter-kit. Add a domain entity/aggregate with EF configuration and a migration to an existing FSH module. Use when adding a new database-backed entity. Pairs with add-feature and create-migration.

Its SKILL.md is about 1.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development, covering Project scaffolding. The repository describes itself as: Production Grade Cloud-Ready .NET 10 Starter Kit (Web API + React Client) with Multitenancy Support, and Clean/Modular Architecture that saves roughly 200+ Development Hours! All… The licence is MIT.

When your agent uses it

  • Adding a new database-backed entity
  • Tasks that involve Project scaffolding

Example prompts

  • “/add-entity”

What it can do on your machine

Read from SKILL.md and the folder at commit 0bd98e3. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • dotnet

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Add Entity loads about 1.2k tokens when it runs. Until then it costs about 49 tokens; SKILL.md has 200 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~49
When it runs · the whole SKILL.md, loaded when a task matches
~1.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from fullstackhero/dotnet-starter-kit at commit 0bd98e3, republished under its MIT licence (© fullstackhero). 200 words, ~1,209 tokens.

Download SKILL.mdSave it as .claude/skills/add-entity/SKILL.md (or your agent's skills folder).
name
add-entity
description
Add a domain entity/aggregate with EF configuration and a migration to an existing FSH module. Use when adding a new database-backed entity. Pairs with add-feature and create-migration.
argument-hint
[ModuleName] [EntityName]

Add Entity

Rich domain model: sealed aggregate, private EF ctor, static factory, behavior via methods, domain events. DB conventions: .agents/rules/database.md.

Entity — AggregateRoot<Guid> (or BaseEntity<Guid>)

BaseEntity<TId> gives only Id + domain-event machinery. Audit/tenant/soft-delete are opt-in via marker interfaces (the base does NOT carry those fields). New ids use Guid.CreateVersion7().

csharp
public sealed class {Entity} : AggregateRoot<Guid>, IHasTenant, IAuditableEntity, ISoftDeletable
{
    public string Name { get; private set; } = default!;
    public Money Price { get; private set; } = default!;

    // IHasTenant
    public string TenantId { get; private set; } = default!;
    // IAuditableEntity
    public DateTimeOffset CreatedOnUtc { get; set; }
    public string? CreatedBy { get; set; }
    public DateTimeOffset? LastModifiedOnUtc { get; set; }
    public string? LastModifiedBy { get; set; }
    // ISoftDeletable
    public bool IsDeleted { get; set; }
    public DateTimeOffset? DeletedOnUtc { get; set; }
    public string? DeletedBy { get; set; }

    private {Entity}() { }   // EF

    public static {Entity} Create(string name, Money price)
    {
        ArgumentException.ThrowIfNullOrWhiteSpace(name);
        ArgumentNullException.ThrowIfNull(price);

        var entity = new {Entity} { Id = Guid.CreateVersion7(), Name = name.Trim(), Price = price };
        entity.AddDomainEvent(DomainEvent.Create((id, ts) =>
            new {Entity}CreatedDomainEvent(entity.Id, entity.Name, id, ts)));
        return entity;
    }

    public void Rename(string name)
    {
        ArgumentException.ThrowIfNullOrWhiteSpace(name);
        Name = name.Trim();
    }
}

Notes: setters are private set; TenantId/audit/soft-delete members are settable by the framework (interceptor + Finbuckle) so they aren't private set. Use Guid.CreateVersion7(), never Guid.NewGuid().

Domain event — inherit DomainEvent (abstract record)

csharp
public sealed record {Entity}CreatedDomainEvent(
    Guid {Entity}Id, string Name, Guid EventId, DateTimeOffset OccurredOnUtc)
    : DomainEvent(EventId, OccurredOnUtc);

Raise with the DomainEvent.Create((id, ts) => …) helper + AddDomainEvent(...) (not QueueDomainEvent).

EF configuration

csharp
public sealed class {Entity}Configuration : IEntityTypeConfiguration<{Entity}>
{
    public void Configure(EntityTypeBuilder<{Entity}> builder)
    {
        ArgumentNullException.ThrowIfNull(builder);
        builder.ToTable("{Entities}");                       // schema is set once on the DbContext
        builder.HasKey(x => x.Id);
        builder.Property(x => x.Name).IsRequired().HasMaxLength(200);

        // soft-deletable unique field → filter on live rows only
        builder.HasIndex(x => x.Name).IsUnique().HasFilter("\"IsDeleted\" = FALSE");

        // owned value object
        builder.OwnsOne(x => x.Price, m =>
        {
            m.Property(p => p.Amount).HasColumnName("PriceAmount").HasPrecision(18, 4);
            m.Property(p => p.Currency).HasColumnName("PriceCurrency").HasMaxLength(3);
        });

        builder.Ignore(x => x.DomainEvents);
    }
}
  • Do NOT add a manual HasQueryFilter for soft-delete or tenant — BaseDbContext applies both automatically.
  • A child entity reached only via a parent nav-collection needs builder.Property(x => x.Id).ValueGeneratedNever() in its config, or EF inserts it as Modified → 0-row UPDATE. See database.md.

Register in the module DbContext

Add a DbSet; configurations are picked up by ApplyConfigurationsFromAssembly:

csharp
public DbSet<{Entity}> {Entities} => Set<{Entity}>();

The DbContext already extends BaseDbContext and calls base.OnModelCreating last — don't change that.

Migration

Use the create-migration skill (build first, correct --context):

bash
dotnet ef migrations add Add{Entity} \
  --project src/Host/FSH.Starter.Migrations.PostgreSQL \
  --startup-project src/Host/FSH.Starter.Api \
  --context {X}DbContext

Checklist

  • sealed, AggregateRoot<Guid> (+ IHasTenant/IAuditableEntity/ISoftDeletable as needed), private ctor, static Create using Guid.CreateVersion7()
  • Domain event inherits DomainEvent; raised via DomainEvent.Create + AddDomainEvent
  • EF config: no manual soft-delete/tenant filter; ValueGeneratedNever() on nav-collection children
  • DbSet added; build green; migration created with --context {X}DbContext

© fullstackhero, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/add-entity of fullstackhero/dotnet-starter-kit.

Open the folder on GitHubat commit 0bd98e3

Compare with similar skills

Add Entity next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Add Entity compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Add Entity this skillfullstackhero/dotnet-starter-kit6.8k—~1.2kAutomated safety check: PassMIT
AzureML Project ScaffoldingKilo-Org/kilo-marketplace189—~3.1kAutomated safety check: NotesMIT
New Resourcemondoohq/mql411—~5.6kAutomated safety check: PassCustom licence
Dynamo Webview Component ScaffoldDynamoDS/Dynamo2k—~991Automated safety check: PassApache-2.0
Deployjustrach/merjs356—~171Automated safety check: PassMIT
Upgrade Harnessruvnet/metaharness688—~497Automated safety check: PassMIT

Similar skills

  • AzureML Project Scaffolding

    Kilo-Org/kilo-marketplace

    Sets up and maintains AzureML-ready Python projects as uv workspaces with devcontainers, a Makefile and job YAML, so local runs match cloud jobs and experiments stay reproducible.

    189 GitHub stars~3.1k tokensUpdated 9 days ago
    DevelopmentAuto-check: notes
  • New Resource

    mondoohq/mql

    Add or change a resource in an existing mql provider — schema, codegen, implementation, tests, and verification against a real target.

    411 GitHub stars~5.6k tokensUpdated today
    DevelopmentAuto-check passed
  • Scaffolds a new Dynamo package repo that hosts a view extension with a WebView2-embedded React frontend.

    2k GitHub stars~991 tokensUpdated today
    DevelopmentAuto-check passed
  • Deploy

    justrach/merjs

    Full production build — codegen, compile, prerender, and prepare for deployment.

    356 GitHub stars~171 tokensUpdated 1 mo ago
    DevelopmentAuto-check passed
  • Upgrade Harness

    ruvnet/metaharness

    Drift detection + apply for a scaffolded harness. An agent skill from ruvnet/metaharness.

    688 GitHub stars~497 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Start Temps

    gotempsh/temps

    Start (or restart) a local Temps control plane built from this checkout, and the web dev server (bun dev) in <checkout/web.

    822 GitHub stars~5.4k tokensUpdated today
    DevelopmentAuto-check passed

More from fullstackhero/dotnet-starter-kit

All 11 skills in this repo
  • Add Feature

    fullstackhero/dotnet-starter-kit

    Add a vertical-slice feature (command/query + handler + validator + endpoint) to an existing FSH module.

    6.8k GitHub stars~1.1k tokensUpdated 7 days ago
    Auto-check passed
  • Add Full Slice

    fullstackhero/dotnet-starter-kit

    Build a capability end-to-end — backend vertical slice (Contracts→handler→validator→endpoint) AND the React page wired to it.

    6.8k GitHub stars~783 tokensUpdated 7 days ago
    Auto-check passed
  • Add Integration Event

    fullstackhero/dotnet-starter-kit

    Publish a cross-module integration event via the Outbox and handle it idempotently in another module.

    6.8k GitHub stars~1.1k tokensUpdated 7 days ago
    Auto-check passed
  • Add Module

    fullstackhero/dotnet-starter-kit

    Create a new module (bounded context) — runtime + Contracts projects, IModule, DbContext, permissions, migrations, and the four registration sites.

    6.8k GitHub stars~1.5k tokensUpdated 7 days ago
    Auto-check passed
  • Add Permission

    fullstackhero/dotnet-starter-kit

    Add a new permission end-to-end — server constant + endpoint gate, and (admin app) mirror it into the permissions catalog + route guard.

    6.8k GitHub stars~849 tokensUpdated 7 days ago
    Auto-check passed
  • Add React Page

    fullstackhero/dotnet-starter-kit

    Add a list+create page to a React app (clients/admin or clients/dashboard) — API module, page, lazy route, (admin) permission gate, Playwright test.

    6.8k GitHub stars~1.5k tokensUpdated 7 days ago
    Auto-check passed

Questions about Add Entity

What does Add Entity do?

Add a domain entity/aggregate with EF configuration and a migration to an existing FSH module. Add Entity is an agent skill from fullstackhero/dotnet-starter-kit. Add a domain entity/aggregate with EF configuration and a migration to an existing FSH module.

When should I use Add Entity?

Add Entity fits situations like: adding a new database-backed entity; tasks that involve Project scaffolding.

How do I install Add Entity in Claude Code?

Run `npx skills add fullstackhero/dotnet-starter-kit --skill add-entity -a claude-code`. Or copy the skill folder (.agents/skills/add-entity in fullstackhero/dotnet-starter-kit) into .claude/skills/add-entity in your project. Claude Code loads it when a task matches its description.

How do I install Add Entity in Codex?

Run `npx skills add fullstackhero/dotnet-starter-kit --skill add-entity -a codex`. Or copy the skill folder (.agents/skills/add-entity in fullstackhero/dotnet-starter-kit) into .agents/skills/add-entity in your project. Codex loads it when a task matches its description.

Can I use Add Entity in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add fullstackhero/dotnet-starter-kit --skill add-entity -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/add-entity, .gemini/skills/add-entity, .github/skills/add-entity and .opencode/skills/add-entity in your project.

What does Add Entity need to run?

Going by SKILL.md and its folder, Add Entity needs the command-line tools its instructions call (dotnet).

Does Add Entity access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Add Entity safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Add Entity use?

Add Entity is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Add Entity use?

About 1.2k tokens (SKILL.md is roughly 4.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Add Entity?

Skills that share tags, products or a category with Add Entity: AzureML Project Scaffolding (Kilo-Org/kilo-marketplace, 189 stars), New Resource (mondoohq/mql, 411 stars), Dynamo Webview Component Scaffold (DynamoDS/Dynamo, 2k stars) and Deploy (justrach/merjs, 356 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Add Entity?

fullstackhero (a GitHub organization) maintains it in fullstackhero/dotnet-starter-kit, which has 6,813 GitHub stars. The repository holds 11 skills in this directory. The repository was last updated on September 30, 2026.

Source: fullstackhero/dotnet-starter-kit on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.