Skip to content
Skillpedia
General coding40k · #5130

efcore-d2-db-diagram

Has your agent generate D2 database diagrams from Entity Framework Core models. It's useful for visualizing table relationships and schemas.

What it does

This tool creates a visual diagram of your database from your project's code. It understands how you've defined your tables and the relationships between them using Entity Framework Core.

When to use it

  • ✓When you want to see how your database tables connect.
  • ✓To document the database structure of a C# project.
  • ✓To understand complex relationships like many-to-many.

Example of what to ask your AI

“Generate a database diagram for my project using Entity Framework Core.”

Want more? Open the sections below.

How to use

The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.

Skill link

https://github.com/github/awesome-copilot/blob/main/skills/efcore-d2-db-diagram/SKILL.md

Ready-to-paste message

Use this skill to help me: https://github.com/github/awesome-copilot/blob/main/skills/efcore-d2-db-diagram/SKILL.md Read the SKILL.md file at that link and follow its instructions for my task.
How it works

The tool analyzes your C# code that uses Entity Framework Core. It looks for table and column definitions and how they relate to draw the diagram.

Installation

Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.

In the terminal (Claude Code, Codex, Cursor), in your project folder:

npx skills add github/awesome-copilot --skill efcore-d2-db-diagram

Or download just the file:

curl -L https://raw.githubusercontent.com/github/awesome-copilot/main/skills/efcore-d2-db-diagram/SKILL.md -o SKILL.md
Technical content (original SKILL.md)

Original text by the author, straight from GitHub.

EF Core D2 Database Diagram Generator

When to Use

Use this skill when the user wants to generate a database / ERD diagram from an Entity Framework Core codebase.

Typical requests:

  • Generate a D2 database diagram from EF Core entities.
  • Visualize tables, columns, primary keys, foreign keys and relationships.
  • Analyze DbContext, DbSet<T>, IEntityTypeConfiguration<T>, Fluent API and migrations.
  • Produce a .d2 file renderable to SVG/PNG with the d2 CLI.
  • Document the database model of an ASP.NET Core / .NET project.

Goal

Create a readable D2 entity-relationship diagram that reflects the actual EF Core persistence model, not only the raw C# class shape.

The diagram must prioritize:

  1. Database tables and relationships.
  2. Primary keys, foreign keys, required/optional columns.
  3. Owned types and value objects.
  4. Many-to-many relationships and join tables.
  5. Indexes, unique constraints and table names.
  6. EF Core conventions only when explicit mapping is absent.

Output is .d2 source code. It can be rendered to SVG or PNG via the d2 CLI.

Tools

  • d2 CLI: render .d2 files to SVG/PNG.
    • d2 input.d2 output.svg
    • d2 --layout=elk input.d2 output.svg
  • d2 fmt: format D2 files.
    • d2 fmt input.d2
  • No MCP server is required. The skill generates D2 source code as text.

Recommended Workflow

  1. Read the EF Core project structure.
  2. Locate all DbContext classes.
  3. Locate all DbSet<T> declarations.
  4. Locate entity classes, owned types, enum types and value objects.
  5. Read OnModelCreating and all IEntityTypeConfiguration<T> classes.
  6. Read migrations when available to confirm table names, join tables, indexes and delete behaviors.
  7. Build a normalized database model before writing D2.
  8. Ask the mandatory diagram questionnaire before generation.
  9. Generate the .d2 file using the database model, not raw class nesting.
  10. Validate D2 syntax with d2 fmt before delivery.
  11. Render with d2 --layout=elk schema.d2 schema.svg when possible.
  12. If regenerating, re-read EF Core mappings and migrations first.

Mandatory Questions Before Diagram Generation

Ask these questions for every new diagram and every regeneration unless the user already answered them in the same request.

  1. Which DbContext should be diagrammed? (auto-detect/all/specific name)
  2. Display columns? (all/key-only/none)
  3. Display column types? (Yes/No)
  4. Display nullable/required markers? (Yes/No)
  5. Display indexes and unique constraints? (Yes/No)
  6. Display enum values? (Yes/No)
  7. Display owned types? (inline/separate/hide)
  8. Display many-to-many join tables? (explicit/compact/hide)
  9. Display audit/technical tables? (Yes/No)
  10. Display migration-only tables not present as entities? (Yes/No)
  11. Which grouping mode? (bounded-context/schema/namespace/flat)
  12. Which layout engine? (elk/dagre/tala)
  13. Which output format? (d2/svg/png)

Default values, when the user asks for a quick generation:

  • DbContext: auto-detect
  • Columns: key-only
  • Column types: Yes
  • Nullable markers: Yes
  • Indexes: Yes
  • Enums: No
  • Owned types: inline
  • Join tables: explicit
  • Audit/technical tables: No
  • Migration-only tables: Yes
  • Grouping: bounded-context
  • Layout: elk
  • Output: d2

Reference Documents

Load these on demand when needed:

Reference When to load
references/efcore-model-extraction.md Rules for reading DbContext, DbSet, Fluent API, configurations and migrations
references/d2-erd-style.md D2 syntax and visual conventions for ERD diagrams
references/relationship-rules.md How to infer one-to-one, one-to-many, many-to-many and owned relationships
references/grouping-modes.md Rules for bounded-context, schema, namespace and flat grouping
references/quality-gate.md Final checklist before delivering the generated diagram

EF Core Extraction Rules

Source Priority

Use this priority order when sources disagree:

  1. Latest applied migration / migration snapshot.
  2. Fluent API configuration in OnModelCreating or IEntityTypeConfiguration<T>.
  3. Data annotations.
  4. EF Core conventions.
  5. Raw C# class shape.

Required EF Core Concepts to Detect

Detect and represent:

  • DbContext and DbSet<T>.
  • Entity class names and actual table names from ToTable.
  • Schema names from ToTable("Table", "schema").
  • Primary keys from HasKey, [Key], conventions and migrations.

…

FAQ

What is an ERD diagram?

ERD stands for Entity-Relationship Diagram. It's a drawing that shows database tables and how they link to each other.

What is Entity Framework Core?

It's a tool that helps developers work with databases in C# projects without having to write all the SQL code manually.

What is a .d2 file?

It's a text file that describes the diagram. It can be turned into images like SVG or PNG using another tool called the 'd2 CLI'.

Details

Original description by the author

Generate D2 database diagrams from Entity Framework Core models. USE FOR: EF Core database diagram, Entity Framework Core ERD, DbContext diagram, C# entity relationship diagram, PostgreSQL schema visualization, generate .d2 file from EF Core entities, Fluent API mapping diagram, migrations-based database diagram, table relationships, owned types, many-to-many join tables, indexes and constraints.

repo: github/awesome-copilot

Popularity

GitHub stars
40k
Ranking position
#5130
License
MIT
Updated
10/15/2026

Is this skill useful?

0

Sign in to vote.

Comments

  • …

More skills from this repository

Similar skills